AbleCloud 串口通信协议v2-7
版本日志
版本 | 修改描述 | 修订人 | 修订日期 |
---|---|---|---|
2-0 | 初始版本 | JACK | 2015-11-5 |
2-1 | 增加设备注册类消息 | JACK | 2015-11-27 |
2-2 | 支持局域网控制消息、支持设备通知类消息 | JACK | 2015-12-29 |
2-3 | 增加AP配网、串口波特率修改为9600-8-N-1 | JACK | 2016-07-25 |
2-4 | 修改设备注册消息中设备回复消息,增加云端环境配置,增加NTP,CRC参考算法 | JACK | 2016-08-29 |
2-5 | 增加获取信号质量接口 | JACK | 2016-12-01 |
2-6 | 增加支持第三方云接口和上报回响应 | JACK | 2017-01-01 |
2-7 | 增加产测、订阅上报和局域网推送设备状态接口 | JACK | 2017-05-23 |
一 基本数据格式
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据 | 校验 | 包尾 |
内容 | 0x5A | 0x?? | 0x?? | 0x?? | 0x?? | 0x?? | 0x???? | 0x?? | 5B |
- 串口通讯默认参数:9600-8-N-1
包头:数据包起始标识,固定为0x5A
-
包长度:整个数据包的长度(包括包头、包长度、包序号、附加码、功能码、数据、校验和、包尾)
-
包序号:取值范围[0x00,0xff],
上报无响应填0x00
上报有响应和回复填[0x01,0xff],
响应填入查询或控制数据包的相同值。
- 功能码:取值范围[0x00,0xff]
系统定义范围:[0,0x40],
用户自定义取值范围:
控制与查询消息:[0x41, 0xC7]
设备主动上报:[0xC8,0xFF],UDS 收到MsgCode与功能码一致
-
附加码:在控制查询指令中,云端消息,固定0x00;局域网,固定0x01;京东消息,固定0x02;
-
数据:用户通信实际内容,上报数据最大500 Byte。
-
校验和:整个数据包的数据和(包括包长度、包序号、附加码、功能码、数据),超过0xff取低8位(1B)。
参考代码:
uint8t calc_sum(uint8t *src, uint16_t len)
{
uint8_t sum = 0;
int i;
for(i = 0; i < len; i++)
{
sum += src[i];
}
return sum;
}
二 设备注册
1.wifi模块获取设备注册消息
Wifi模块->MCU
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据H | 数据L | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x0A | 0x01 | 0x00 | 0x02 | 0x F0 | 0x 0F | 0x0C | 0x5B |
2.设备回复设备信息
MCU->WIFI模块
包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 服务器环境 | 设备版本H3 | 设备版本H2 | 设备版本H1 | 设备版本H0 | 主域ID H5 | 主域ID H4 | 主域ID H3 | 主域ID H2 | 主域ID H1 | 主域ID H0 | 子域ID H | 子域ID L | 设备密钥(112Byte) | 校验和 | 包尾 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x5A | 0x00 | 0x85 | 0x00 | 0x00 | 0x07 | 0x?? | 0x?? | 0x?? | 0x?? | 0x?? | 0x?? | 0x?? | 0x?? | 0x?? | 0x?? | 0x?? | 0x?? | 0x?? | 0x???? | 0x?? | 0x5B |
服务器环境:
国内测试环境:0xFF
国内生产环境:0x00
北美生产环境:0x01
欧洲生产环境:0x02
亚太生产环境:0x03
设备连接生产环境之前需要联系ablecloud进行设备迁移,迁移之后注意使用配置环境是设备密钥使用对应环境云端后台产生的密钥
设备版本:H3云端后台不显示
云端后台显示0-1-2 对应数据内容 H3:0x0 H2:0x0 H1:0x1 H0:0x2
主域ID:ablecloud管理后台自动生成
子域ID:创建产品自动生成
设备密钥:在产品管理-》管理-》设备密钥 注意使用对应环境云端后台产生的密钥
三 云端控制查询指令
1.查询
Wifi模块->MCU
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据 | 校验和 | 包尾 |
内容 | 0x5A | 0x?? | 0x?? | 0x?? | 0x00 | 0x?? | 0x???? | 0x?? | 0x5B |
2.回复数据
MCU->WIFI模块
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据 | 校验和 | 包尾 |
内容 | 0x5A | 0x?? | 0x?? | 0x?? | 0x00 | 0x?? | 0x???? | 0x?? | 0x5B |
注意:
- 数据内容与格式用户自定义
- 云端下发的控制与查询,设备必须回复响应且消息序号与云端下发的一致
- 功能范围[0x41,0xC7]
- AbleCloud云附加码为00,京东云附加码为02(需联网固件支持)
四 设备上报
1.无响应上报
MCU->WIFI模块
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据 | 校验和 | 包尾 |
内容 | 0x5A | 0x?? | 0x?? | 0x00 | 0x00 | 0x?? | 0x???? | 0x?? | 0x5B |
注意:
-
数据内容与格式用户自定义
-
包序号:0
-
功能范围[0xC8,0xFF]
-
uds收到msgCode与功能码一致
2.有响应上报
上报
MCU->WIFI模块
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据 | 校验和 | 包尾 |
内容 | 0x5A | 0x?? | 0x?? | 0x?? | 0x00 | 0x?? | 0x???? | 0x?? | 0x5B |
响应
WIFI->MCU模块
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据 | 校验和 | 包尾 |
内容 | 0x5A | 0x?? | 0x?? | 0x?? | 0x00 | 0x?? | 0x???? | 0x?? | 0x5B |
注意:
- 数据内容与格式用户自定义
- 包序号范围[0x1,0xFF]
- 功能范围[0xC8,0xFF]
- uds收到msgCode与功能码一致
- 数据超时和重传需要应用层结合业务场景实现
- 响应数据需要通过uds下发给设备端
3.订阅上报
云端订阅
WIFI->MCU模块
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B |
---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x08 | 0x00 | 0x00 | 0x3F | 0x47 | 0x5B |
响应
MCU>WIFI模块
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据 | 校验和 | 包尾 |
内容 | 0x5A | 0x?? | 0x?? | 0x?? | 0x00 | 0x?? | 0x???? | 0x?? | 0x5B |
- 数据内容与格式建议开发者上报全部属性
- 包序号:0
- 功能范围[0xC8,0xFF]
- 用户打开APP后,WIFI收到云端收到的订阅消息,会定时给MCU触发订阅,MCU收到订阅请求,上报全部属性,保证APP能够同步更新设备状态。
局域网订阅
WIFI->MCU模块
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 4B | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 客户端ID | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x0C | 0x00 | 0x01 | 0x3F | 0XFFFFFFFF | 0x48 | 0x5B |
响应
MCU>WIFI模块
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 4B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 客户端ID | 数据 | 校验和 | 包尾 |
内容 | 0x5A | 0x?? | 0x?? | 0x?? | 0x01 | 0x?? | 0XFFFFFFFF | 0x???? | 0x?? | 0x5B |
- 数据内容与格式建议开发者上报全部属性
- 包序号:0,附加码:1
- 功能范围[0xC8,0xFF]
- 用户打开APP后,WIFI收到云端收到的订阅消息,会定时给MCU触发订阅,MCU收到订阅请求,上报全部属性,保证APP能够同步更新设备状态。
五操作类消息
1. WIFI配网指令
MCU->WIFI
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据H | 数据L | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x0A | 0x00 | 0x00 | 0x08 | 0xD8 | 0x8D | 0x77 | 0x5B |
2. WIFI AP配网指令
MCU->WIFI
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | Ap名称 | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x?? | 0x00 | 0x00 | 0x0C | 0x???? | 0x?? | 0x5B |
备注: 热点名称(SSID): 最大27字节,生成的AP热点名称是“Ap名称-XXXX”,其中XXXX是wifi模块MAC地址后四位大写 密码:123456789; IP地址:10.10.100.254
3.WIFI强制解绑指令
MCU->WIFI
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据H | 数据L | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x0A | 0x00 | 0x00 | 0x24 | 0xA6 | 0x6A | 0x3E | 0x5B |
4. WIFI休眠指令(可选)
MCU->WIFI
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据H | 数据L | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x0A | 0x00 | 0x00 | 0x09 | 0xE9 | 0x9E | 0x9A | 0x5B |
5. WIFI唤醒指令(可选)
MCU->WIFI
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据H | 数据L | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x0A | 0x00 | 0x00 | 0x0A | 0xFA | 0xAF | 0xBD | 0x5B |
6. WIFI重启指令(可选)
MCU->WIFI
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据H | 数据L | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x0A | 0x00 | 0x00 | 0x0B | 0xB7 | 0x7B | 0x47 | 0x5B |
六 产测命令
1. 下位发送命令
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据H | 数据L | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x0A | 0x00 | 0x00 | 0x01 | 0xF0 | 0x0F | 0x0A | 0x5B |
2. 上位回复命令
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据H | 数据L | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x0A | 0x00 | 0x00 | 0x01 | 0xF0 | 0x0F | 0x0A | 0x5B |
七 通知类消息
1.联网通知
Wifi模块->MCU
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据H | 数据L | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x0A | 0x01 | 0x00 | 0x2 | 0x F0 | 0x 0F | 0x0C | 0x5B |
2.断网通知
Wifi模块->MCU
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据H | 数据L | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x0A | 0x01 | 0x00 | 0x3 | 0XF1 | 0x1F | 0x1E | 0x5B |
3.联云通知
Wifi模块->MCU
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据H | 数据L | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x0A | 0x01 | 0x00 | 0x4 | 0XF2 | 0x 2F | 0x30 | 0x5B |
4.断云通知
Wifi模块->MCU
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据H | 数据L | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x0A | 0x01 | 0x00 | 0x5 | 0x F3 | 0x3F | 0x42 | 0x5B |
八 设备OTA类消息(可选)
1.OTA确认消息
MCU->WIFI
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B |
---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x08 | 0x?? | 0x00 | 0xF | 0x?? | 0x5B |
2.OTA错误消息
MCU->WIFI
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 子错误号 | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x09 | 0x?? | 0x00 | 0x10 | 0x? | 0x?? | 0x5B |
3.OTA启动消息
WIFI->MCU
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | OTA下发文件数目 | 预留 | 预留 | 预留 | 校验和 | 包尾 |
内容 | 0x5A | x00 | 0x0C | 0x?? | 0x00 | 0x11 | 0x? | 0x0 | 0x0 | 0x0 | 0x?? | 0x5B |
MCU->WIFI
成功:OTA确认消息
失败:OTA错误消息
4.OTA文件传输消息
WIFI->MCU
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 预留 | 功能码 | 固件类型 | 预留 | 文件CRC H | 文件CRC L | 文件长度H3 | 文件长度H2 | 文件长度H1 | 文件长度H0 | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x10 | 0x?? | 0x00 | 0x00 | 0x12 | 0x?? | 0x00 | 0x00 | 0x00 | 0x?? | 0x?? | 0x?? | 0x?? | 0x?? | 0x5B |
MCU->WIFI
成功:OTA确认消息
失败:OTA错误消息
crc参考算法
#define CRC_CCITT 0x1021 //CRC-CCITT多项式
unsigned int crc16_ccitt_segment(unsigned int precrc, const unsigned char* ptr, unsigned int len)
{
unsigned int crc = precrc;
unsigned char i;
while(len-- != 0)
{
for(i = 0x80; i != 0; i /= 2)
{
crc *= 2;
if((crc&0x10000) !=0) //上一位CRC乘 2后,若首位是1,则除以 0x11021
crc ^= 0x11021;
if((*ptr&i) != 0) //如果本位是1,那么CRC = 上一位的CRC + 本位/CRC_CCITT
crc ^= CRC_CCITT;
}
ptr++;
}
return crc;
}
5.OTA文件块传输消息
整个升级文件会被拆分成若干文件块进行传输,一次升级会有若干文件块。
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 文件偏移H3 | 文件偏移H2 | 文件偏移H1 | 文件偏移H0 | 文件内容 | 校验和 | 包尾 |
内容 | 0x5A | 0x?? | 0x?? | 0x?? | 0x00 | 0x13 | 0x?? | 0x?? | 0x?? | 0x?? | 0x???? | 0x?? | 0x5B |
MCU->WIFI
成功:OTA确认消息
失败:OTA错误消息
6.OTA文件传输结束消息
WIFI->MCU
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B |
---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 校验和 | 包尾 |
内容 | 0x5A | x00 | 0x08 | 0x?? | 0x00 | 0x14 | 0x?? | 0x5B |
MCU->WIFI
成功:OTA确认消息
失败:OTA错误消息
7.OTA结束消息
WIFI->MCU
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B |
---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 校验和 | 包尾 |
内容 | 0x5A | x00 | 0x08 | 0x?? | 0x00 | 0x15 | 0x?? | 0x5B |
MCU->WIFI
成功:OTA确认消息
失败:OTA错误消息
8.OTA用户确认升级消息
WIFI->MCU
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B |
---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 校验和 | 包尾 |
内容 | 0x5A | x00 | 0x08 | 0x?? | 0x00 | 0x23 | 0x?? | 0x5B |
MCU->WIFI
成功:OTA确认消息
失败:OTA错误消息
九 局域网控制查询消息(可选)
1.上位发送数据
Wifi模块->MCU
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 4B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 客户端ID | 数据 | 校验和 | 包尾 |
内容 | 0x5A | 0x?? | 0x?? | 0x?? | 0x01 | 0x?? | 0x?? | 0x???? | 0x?? | 0x5B |
2.下位回复数据
MCU->Wifi模块
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 4B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 客户端ID | 数据 | 校验和 | 包尾 |
内容 | 0x5A | 0x?? | 0x?? | 0x?? | 0x01 | 0x?? | 0x?? | 0x???? | 0x?? | 0x5B |
注意:
- 数据内容与格式用户自定义
- 云端下发的控制与查询,设备必须回复响应且消息序号与云端下发的一致
- 功能范围[0x41,0xC7]
- 附加码01表示本地局域网消息
- 客户端ID:回复的数据的客户端ID必须与发送数据保持一致
十 局域网推送状态消息(可选)
MCU->Wifi模块
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 4B | nB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 客户端ID | 数据 | 校验和 | 包尾 |
内容 | 0x5A | 0x?? | 0x?? | 0x?? | 0x01 | 0x?? | 0xFFFFFFFF | 0x???? | 0x?? | 0x5B |
注意:
- 数据内容与格式建议开发者上报全部属性
- 包序号:0,附加码:1
- 功能范围[0xC8,0xFF]
十一 NTP查询指令(可选)
1.下位查询数据
MCU->Wifi模块
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据H | 数据L | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x0A | 0x00 | 0x00 | 0x0D | 0x F0 | 0x 0F | 0x16 | 0x5B |
2.上位回复数据
Wifi模块->MCU
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 2B | 1B | 1B | 1B | 1B | 1B | 1B | 4B | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 年 | 月 | 日 | 星期 | 时 | 分 | 秒 | NTP时间 | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x14 | 0x?? | 0x00 | 0x0D | 0x???? | 0x?? | 0x?? | 0x?? | 0x?? | 0x?? | 0x?? | 0x???????? | 0x?? | 0x5B |
wifi端回复的是UTC时间
NTP是1970年1月1日至今的秒数
十二 查询信号质量(可选)
1.下位查询数据
MCU->Wifi模块
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 数据H | 数据L | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x0A | 0x00 | 0x00 | 0x0E | 0x F0 | 0x 0F | 0x17 | 0x5B |
2.上位回复数据
Wifi模块->MCU
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 信号质量 | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x09 | 0x00 | 0x00 | 0x0E | 0x?? | 0x?? | 0x5B |
设备已连接无线路由器,回复信号质量,范围0~100
如果设备断开无线路由器,回复断网通知消息
十三 第三方云支持(可选,需提供支持第三方云平台固件)
1.下位配置第三方云设备类型
MCU->Wifi模块
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | NB | 1B | 1B |
---|---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 设备类型 | 校验和 | 包尾 |
内容 | 0x5A | 0x?? | 0x?? | 0x00 | 0x0? | 0x00 | 0x ?? | 0x?? | 0x5B |
1.客户开发京东或微信,需要联系我司,提供对接对应平台的固件版本,默认版本是不支持第三方云平台的
2.设备第一次启动配置设备型号到WIFI模块,WIFI模块回复ACK消息表示设备型号存储到内部FLASH中,回复error配置出错。
3.WIFI模块启动读取到有第三方云平台型号配置,直接启动连接第三方云平台
4.附加码:0对应微信,1对应京东,两个都支需要配置两次
2.上位回复响应
Wifi模块->MCU
字节数 | 1B | 1B | 1B | 1B | 1B | 1B | 1B | 1B |
---|---|---|---|---|---|---|---|---|
含义 | 包头 | 包长度H | 包长度L | 包序号 | 附加码 | 功能码 | 校验和 | 包尾 |
内容 | 0x5A | 0x00 | 0x08 | 0x00 | 0x00 | 0xF | 0x17 | 0x5B |
MCU收到WIFI回复下次启动无需配置对应第三方云平台型号