UDP远程升级文档

来自东骏科技波塞冬平台开发者文档
跳转至: 导航搜索

总则

协议概述

UDP 接口是杭州东骏科技有限公司通讯模块用户连接、上报运行信息、接受模块控制命令、模块远程升级功能的接口。

协议命令

命令结构

起始标识 长度字段 命令 分隔符 数据 结束标识
1byte 4byte 1byte 1byte 0-1024byte 2byte

1:起始标识:固定值“$”

2:字段长度::ASCII 数字,从起始标识到结束标识,不足4byte 在前面补0

3:命令:当前指令的命令编码

4:分隔符:固定值”/”

5:数据:命令的具体内容

6:结束标识:\r\n

远程升级-导引

该指令用来模块定时询问服务器是否需要升级,我们建议询问频率为1 次/小时。

设备发送查询命令:

命令编码 C 命令编号 0x01
数据方向 上行
序号 参数名称 数据类型 长度或分割方式 备注
1 IMEI ASCII #/#分割
2 项目名称 ASCII #/#分割
3 PROJECT_KEY ASCII #/#分割
4 平台号 ASCII #/#分割
5 版本号 ASCII

长度或分割方式:可以是按照长度分割字段或者按照分隔符分割字段,按照长度分割即该字段为定长字段,字段前后不需要加分隔符,按照分隔符分割则该字段与下一个字段之间插入指定的分隔符。

服务端下发查询结果:

命令编码 C 命令编号 0x01
数据方向 下行
序号 参数名称 数据类型 长度或分割方式 备注
1 是否需要升级 ASCII 1byte S-需要,F-不需要
2 升级包总块数 ASCII 3byte 不需要升级为0
3 升级包总字节数 ASCII 6byte 不需要升级为0
4 升级包名称 ASCII 10byte 不需要升级为0
5 MD5值 ASCII 32byte 整个升级包做校验,大写
6 IMEI值 ASCII 15byte 设备的IMEI值

查询:

$ 0098 C / 868619040039495 #/# GZJ_DJ_4G #/# fH3fehhlYYpLUnQW4II87jLD3JJZTEkN #/# LONGSHANG_M25_4G #/# 0.2.2 <0x0D><0x0A>

升级应答:

$ 0076 C / S 116 059112 0000000140 9875f44a93717d3fdd8943aa175bb562 868619040039495 <0x0D><0x0A>

不升级应答:

$ 0076 C / F 000 000000 0000000000 00000000000000000000000000000000 868142041815052 <0x0D><0x0A>

远程升级-下载

当模块询问远程升级-导引时需要升级,则模块主动通过该指令逐个下载升级包,升级包分块下载,每一块大小为512 字节,最后一块为实际剩余大小。

请求下载升级块:

命令编码 U 命令编号 0x02
数据方向 上行
序号 参数名称 数据类型 长度或分割方式 备注
1 IMEI ASCII #/#分割
2 升级包名称 ASCII #/#分割
3 当前下载的块编号 ASCII #/#分割 块编号从1 开始,3 字节不足在前面补零
4 会话ID ASCII 6 字节长度,不足在前面补零,模块生成,服务器应答时下发模块上报的会话ID

服务器下发升级块:

命令编码 U 命令编号 0x02
数据方向 下行
序号 参数名称 数据类型 长度或分割方式 备注
1 会话ID ASCII 6byte 下发模块上报的会话ID
2 升级包名称 ASCII 10byte 没有查询到下载的内容则为全”0”
3 当前块编号 ASCII 3byte 不足3byte 在前面补0,没有查询到下载的内容则为0
4 当前块MD5 ASCII 32byte 不足3 字节在前面补0,没有查询到下载的内容为全"0"
5 升级块内容 ASCII 1-1024byte 升级数据的base64 值,没有升级数据为空

查询第一个升级包:

$ 0052 U / 868619040039495 #/# 0000000140 #/# 001 #/ # 000001 <0x0D><0x0A>

应答查询第一个升级包:

$ 0744 U / 000001 0000000140 001 a1f6b2366630a54fdc35245322178c8d ILAAIA2JAQhNBQEITwUBCFEFAQhTBQEIVQUBCAAAAAAAAAAAAAAAAAAAAABXBQEIWQUBCAAA AAC3wwEImV8BCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCGEyAQgniQEIJ4kBCCeJ AQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgniQEIny8BCCeJAQgniQEIJ4kBCCeJAQ gniQEIo0EBCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgbYgEI8WIBCA9kAQg3MgEIJ4kBCCeJAQ gniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQiNZQEIjWYBCCeJAQgniQEIJ4kBCCeJAQgn iQEIJ4kBCN/4DNAM8Ej9AEgAR/sCAQggsAAgCLWOSAB4OLmNoACQjqORopOhikgM8DL+iEmYoAz wHv6ZoqKhpqAM8Bn+qkqqSaugDPAU/qxKrUmtoAzwD/696AhArqKuobCgDPAIvnG2s0gBaLNKAfT gYRFDAWC/80CP/ucQtQLw+f0C8Cr+A/Du+KxIACHA+KARASLA+KQhwPiMEalKwvi8EcD4lBEQvfC1h bAK8Hz9CfC6+gzww/gHRqKgDPDb/U/0AHaqSM3pAQYJIAAlAJADJM3pA1Q= <0x0D><0x0A>

查询最后一个升级包:

$ 0052 U / 868619040039495 #/# 0000000140 #/# 116 #/# 000116 <0x0D><0x0A>

应答查询最后一个升级包:

$ 0372 U / 000116 0000000140 1161ec029851e8a8060322d65f91a3e8 6d8Z2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8AAAAAROYBCAAAACC8IwAASM0BCOj mAQi8IwAgZIwAABTPAQgRhKJKBAAKHwECAwQGBwgJAiU5ODc2ABYcMC5xYS10Y3AuaWRvbmdq dW4uY29tAlABGYgiOCo1iAsodWSIAREev3wBCNcEAf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/w H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8BJgY/4OUBCIBFAgQGCC0BAgME BAVUBgcICQ= <0x0D><0x0A>

升级完之后需要发确认心跳包:

$ 0035 A / 868619040039495 #/# 2 #/# UPOK ^_^ <0x0D><0x0A>

心跳

心跳数据时由模块主动发起,用于确认UDP 链路是否有效以及上报升级系统的运行情况,以及实时连网小区信息信号值,该指令每5 分钟1 次

设备上报心跳:

命令编码 A 命令编号 0x02
数据方向 上行
序号 参数名称 数据类型 长度或分割方式 备注
1 IMEI ASCII #/#分割
2 心跳内容版本号 ASCII #/#分割
3 内容 ASCII #/#分割 日志内容中不得带有\r\n,#/#符号

如果只是上报心跳没有业务数据则心跳版本为0,内容为空,升级系统启动计数为导引的询问次数,升级系统的升级次数为升级固件的次数。

版本对应的内容:

心跳版本号 1 用于模块 M25
说明 上报服务端设备的基站位置信息,升级情况
序号 参数名称 数据类型 长度或分割方式 备注
1 升级系统启动计数 ASCII "_"分割
2 升级次数计 ASCII "_"分割
3 Lac ASCII "_"分割
4 Cellid ASCII "_"分割
5 Bcch ASCII "_"分割
6 Bsic ASCII "_"分割
7 Dbm ASCII

$ 0035 A / 868619040039495 #/# 1 #/# 1 ^_^ 1 ^_^ D103 ^_^ 66ED ^_^ 146 ^_^ 64 ^_^ -127 <0x0D><0x0A>

心跳版本号 2 用于模块 M25
说明 上报升级错误日志
序号 参数名称 数据类型 长度或分割方式 备注
1 错误类型 ASCII "_"分割 UPERR01:升级导引错误

UPERR02-升级下载错误

UPERR03-固件校验错误

UPERR04-硬件写入错误

UPERR05-升级未成功

UPOK-升级成功

2 外加说明 ASCII "_"分割 外加说明简单说明错误的内容,错误的具体判断原因,只能为英文,不得带有#/^$\r\n 等符号

$ 0035 A / 868619040039495 #/# 2 #/# UPOK ^_^ Upgrade_Success <0x0D><0x0A>

心跳版本号 100 用于模块 M25
说明 对时
序号 参数名称 数据类型 长度或分割方式 备注
1 时间类型 ASCII 0:单位为秒

1:单位为毫秒

$ 0034 A / 868619040039495 #/# 100 #/# 0 <0x0D><0x0A>

服务端应答心跳:

命令编码 A 命令编号 0x02
数据方向 下行,心跳内容版本号>=100,需要回复,否则不需要回复
序号 参数名称 数据类型 长度或分割方式 备注
1 心跳内容版本号 ASCII 3byte
2 消息体长度 ASCII 3byte
3 具体心跳回复内容 ASCII nbyte

$ 0025 A / 100 010 1603766452 <0x0D><0x0A>

心跳版本号 100 用于模块 M25
说明 对时
序号 参数名称 数据类型 长度或分割方式 备注
1 Unix 时间戳 ASCII 10-13byte 根据时间戳类型,单位为秒或毫秒

$ 0025 A / 100 010 1603766452 <0x0D><0x0A>

请求服务端消息数据

请求服务端消息数据协议,是用于模块目前连网信息的上报,以及请求服务端的模块控制指令,该消息建议每15 分钟发送一次

请求服务端消息数据:

命令编码 B 命令编号 0x03
数据方向 上行
序号 参数名称 数据类型 长度或分割方式 备注
1 IMEI ASCII #/#分割
2 当前联网地址 ASCII #/#分割
3 当前联网端口 ASCII #/#分割
4 模块是否重启 ASCII #/#分割 S-启用,F-禁用
5 ICCID ASCII #/#分割
6 信号值 ASCII #/#分割
7 网络制式 ASCII #/#分割
8 联网状态 ASCII #/#分割 1-已连网,2-已注网未连网,3-已注网未获取承载,4-未注网
9 开机后连接失败次数 ASCII #/#分割
10 开机后总运行时 ASCII #/#分割 单位为秒
11 开机后总连网时间 ASCII #/#分割 单位为秒
12 模组供电电压当前值 ASCII #/#分割 单位0.1V,没有为0V
13 本次测量周期的最大值 ASCII #/#分割 单位0.1V,没有为0V
14 本次测量周期的最小值 ASCII #/#分割 单位0.1V,没有为0V
15 开机之后传输上行的业务数据字节数 ASCII #/#分割
16 开机之后传输下行的业务数据字节数 ASCII #/#分割
17 模组的温度 ASCII #/#分割 1℃为单位,偏移50,即0 度为50,没有温度则为0

$ 0162 B / 868619040039495 #/# 0.qa-tcp.idongjun.com #/# 9876 #/# S #/# 89860459041990141892 #/# 4G #/# 21 #/# 1 #/# 0 #/# 2750 #/# 2708 #/# DJ-00025_VA_GD32F103RCT6_GZJ_DJ_4G_DJS_V0.2.3 <0x0D><0x0A>

服务端下发消息:

命令编码 D 命令编号 0x03
数据方向 下行
序号 参数名称 数据类型 长度或分割方式 备注
1 IMEI ASCII 15byte
2 消息类型 ASCII 1byte 消息类型为小写字母
3 消息体长度 ASCII 3byte
4 消息体 ASCII 0-999byte


 定义消息体:

消息体类型 a 说明 无下发内容,该指令无消息体
序号 参数名称 数据类型 长度或分割方式 备注

$ 0028 D / 868619040039495 a 000 <0x0D><0x0A>

消息体类型 b 说明 修改IP 和端口
序号 参数名称 数据类型 长度或分割方式 备注
1 通讯协议标识 ASCII 1byte T-TCP,U-UDP,M-Mqtt
2 IP 或域名标识 ASCII 1byte P-IP,Y-域名
3 连接地址 ASCII nbyte
4 端口 ASCII 5byte 不足5 字节在前面补0

$ 0028 D / 868619040039495 b 022 T P www.dongjun.org 09876 <0x0D><0x0A>

消息体类型 c 说明 模块使能或失能
序号 参数名称 数据类型 长度或分割方式 备注
1 是否使能 ASCII 1byte

$ 0028 D / 868619040039495 c 001 1 <0x0D><0x0A>

消息体类型 d 说明 重启模块
序号 参数名称 数据类型 长度或分割方式 备注
1 是否重启 ASCII 1byte 1-重启,2-不重启,3-软件重启,4-关机

$ 0028 D / 868619040039495 d 001 1 <0x0D><0x0A>

消息体类型 e 说明 修改设备id(需业务支持)
序号 参数名称 数据类型 长度或分割方式 备注
1 设备id ASCII nbyte 需要修改的新设备ID

$ 0028 D / 868619040039495 e 010 D000000001 <0x0D><0x0A>

服务器消息应答:

当模块接受到服务器消息,消息类型不为a 时,需要应答服务器

命令编码 D 命令编号 0x04
数据方向 上行
序号 参数名称 数据类型 长度或分割方式 备注
1 IMEI ASCII #/#分割
2 应答类型 ASCII #/#分割 应答类型为小写字母
3 消息体长度 ASCII #/#分割
4 消息体 ASCII


应答类型 b 说明 应答修改IP 和端口
序号 参数名称 数据类型 长度或分割方式 备注
1 结束标识 ASCII “_”分割 1-成功,2-失败,3-参数异常
2 异常原因 ASCII 可以为空,说明异常的原因

$ 0028 D / 868619040039495 #/# b #/# 004 1 ^_^ <0x0D><0x0A>

应答类型 c 说明 应答模块使能或失能
序号 参数名称 数据类型 长度或分割方式 备注
1 结束标识 ASCII “_”分割 1-成功,2-失败,3-参数异常
2 异常原因 ASCII 可以为空,说明异常的原因

$ 0028 D / 868619040039495 #/# c #/# 004 1 ^_^ <0x0D><0x0A>

应答类型 d 说明 应答重启模块
序号 参数名称 数据类型 长度或分割方式 备注
1 结束标识 ASCII “_”分割 1-成功,2-失败,3-参数异常
2 异常原因 ASCII 可以为空,说明异常的原因

$ 0028 D / 868619040039495 #/# d #/# 004 1 ^_^ <0x0D><0x0A>

应答类型 e 说明 应答模块ID修改
序号 参数名称 数据类型 长度或分割方式 备注
1 结束标识 ASCII “_”分割 1-成功2-不支持3-ID非法

$ 0028 D / 868619040039495 #/# e #/# 001 1 <0x0D><0x0A>

设备网络质量统计上报

设备应该没一个小时上报一次该接口,该接口统计以天为单位,每天0 点清空统计,服务端以当天最后一次上报作为采用数据,如果设备有实时时钟,则及时以实时时钟加上服务端校时为准,如果设备没有实时时钟,已服务端校时和定时器计时为准,服务器每次应答时间后设备应该校对其时间戳

命令编码 J 命令编号 0x05
数据方向 上行
序号 参数名称 数据类型 长度或分割方式 备注
1 IMEI ASCII #/#分割
2 设备时间戳 ASCII #/#分割 单位为秒,如果设备时间戳与服务器时间戳相差大于1 小时则该条数据无效,服务器应答时间戳让设备对时
3 设备在线时间计数 ASCII #/#分割 单位为分钟
4 设备离线时间计数 ASCII #/#分割 单位为分钟
3 设备信号值最低 ASCII #/#分割 0-31
4 设备信号值最高 ASCII #/#分割 0-31
3 注网失败统计 ASCII #/#分割
4 承载失败统计 ASCII #/#分割
3 心跳无回应统计 ASCII #/#分割
4 联网失败统计 ASCII #/#分割
4 设备自计算评分 ASCII #/#分割 0-优良,1-良好,2-一般,3-异常

$ 0028 J / 868619040039495 #/# 1603766452 #/# 10 #/# 8 #/# 25 #/# 31 #/# 2 #/# 6 #/# 2 #/# 6 #/# 0 <0x0D><0x0A>

服务端下发消息:

命令编码 J 命令编号 0x05
数据方向 下行
序号 参数名称 数据类型 长度或分割方式 备注
1 IMEI ASCII 15byte
2 设服务器时间戳 ASCII 10byte 单位为秒
3 服务端设备评分 ASCII 1byte 0-优良,1-良好,2-一般,3-异常

$ 0028 J / 868619040039495 #/# 1603766452 #/# 0 <0x0D><0x0A>

远程升级-导引(DF_LARGE_FIRMWARE)

该指令用来模块定时询问服务器是否需要升级,我们建议询问频率为1 次/小时。

设备发送查询命令:

命令编码 X 命令编号 0x01
数据方向 上行
序号 参数名称 数据类型 长度或分割方式 备注
1 IMEI ASCII #/#分割
2 项目名称 ASCII #/#分割
3 PROJECT_KEY ASCII #/#分割
4 平台号 ASCII #/#分割
5 版本号 ASCII

服务端下发查询结果:

命令编码 X 命令编号 0x01
数据方向 下行
序号 参数名称 数据类型 长度或分割方式 备注
1 是否需要升级 ASCII 1byte S-需要,F-不需要
2 升级包总块数 ASCII 5byte 不需要升级为0
3 升级包总字节数 ASCII 6byte 不需要升级为0
4 升级包名称 ASCII 10byte 不需要升级为0
5 MD5值 ASCII 32byte 整个升级包做校验,大写
6 IMEI值 ASCII 15byte 设备的IMEI值

查询:

$ 0098 X / 868619040039495 #/# GZJ_DJ_4G #/# fH3fehhlYYpLUnQW4II87jLD3JJZTEkN #/# LONGSHANG_M25_4G #/# 0.2.2 <0x0D><0x0A>

升级应答:

$ 0078 X / S 00116 059112 0000000140 9875f44a93717d3fdd8943aa175bb562 868619040039495 <0x0D><0x0A>

不升级应答:

$ 0078 X / F 00000 000000 0000000000 00000000000000000000000000000000 868142041815052 <0x0D><0x0A>

远程升级-下载(DF_LARGE_FIRMWARE)

当模块询问远程升级-导引时需要升级,则模块主动通过该指令逐个下载升级包,升级包分块下载,每一块大小为512 字节,最后一块为实际剩余大小。

请求下载升级块:

命令编码 Y 命令编号 0x02
数据方向 上行
序号 参数名称 数据类型 长度或分割方式 备注
1 IMEI ASCII #/#分割
2 升级包名称 ASCII #/#分割
3 当前下载的块编号 ASCII #/#分割 块编号从1 开始,3 字节不足在前面补零
4 会话ID ASCII 6 字节长度,不足在前面补零,模块生成,服务器应答时下发模块上报的会话ID

服务器下发升级块:

命令编码 Y 命令编号 0x02
数据方向 下行
序号 参数名称 数据类型 长度或分割方式 备注
1 会话ID ASCII 6byte 下发模块上报的会话ID
2 升级包名称 ASCII 10byte 没有查询到下载的内容则为全”0”
3 当前块编号 ASCII 5byte 不足3byte 在前面补0,没有查询到下载的内容则为0
4 当前块MD5 ASCII 32byte 不足3 字节在前面补0,没有查询到下载的内容为全"0"
5 升级块内容 ASCII 1-4096byte 升级数据的base64 值,没有升级数据为空

查询第一个升级包:

$ 0054 Y / 868619040039495 #/# 0000000140 #/# 00001 #/ # 000001 <0x0D><0x0A>

应答查询第一个升级包:

$ 0746 Y / 000001 0000000140 00001 a1f6b2366630a54fdc35245322178c8d ILAAIA2JAQhNBQEITwUBCFEFAQhTBQEIVQUBCAAAAAAAAAAAAAAAAAAAAABXBQEIWQUBCAAA AAC3wwEImV8BCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCGEyAQgniQEIJ4kBCCeJ AQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgniQEIny8BCCeJAQgniQEIJ4kBCCeJAQ gniQEIo0EBCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgbYgEI8WIBCA9kAQg3MgEIJ4kBCCeJAQ gniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQgniQEIJ4kBCCeJAQiNZQEIjWYBCCeJAQgniQEIJ4kBCCeJAQgn iQEIJ4kBCN/4DNAM8Ej9AEgAR/sCAQggsAAgCLWOSAB4OLmNoACQjqORopOhikgM8DL+iEmYoAz wHv6ZoqKhpqAM8Bn+qkqqSaugDPAU/qxKrUmtoAzwD/696AhArqKuobCgDPAIvnG2s0gBaLNKAfT gYRFDAWC/80CP/ucQtQLw+f0C8Cr+A/Du+KxIACHA+KARASLA+KQhwPiMEalKwvi8EcD4lBEQvfC1h bAK8Hz9CfC6+gzww/gHRqKgDPDb/U/0AHaqSM3pAQYJIAAlAJADJM3pA1Q= <0x0D><0x0A>

查询最后一个升级包:

$ 0054 Y / 868619040039495 #/# 0000000140 #/# 00116 #/# 000116 <0x0D><0x0A>

应答查询最后一个升级包:

$ 0372 Y / 000116 0000000140 1161ec029851e8a8060322d65f91a3e8 6d8Z2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8AAAAAROYBCAAAACC8IwAASM0BCOj mAQi8IwAgZIwAABTPAQgRhKJKBAAKHwECAwQGBwgJAiU5ODc2ABYcMC5xYS10Y3AuaWRvbmdq dW4uY29tAlABGYgiOCo1iAsodWSIAREev3wBCNcEAf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/w H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8BJgY/4OUBCIBFAgQGCC0BAgME BAVUBgcICQ= <0x0D><0x0A>

升级完之后需要发确认心跳包:

$ 0035 A / 868619040039495 #/# 2 #/# UPOK ^_^ <0x0D><0x0A>