1、设备通讯协议设备通信协议1.适用范围本协议定义WiFi模块与MCU控制单元,WiFi模块与云APP间,以及主从模块之间的通讯协议框架。2.协议框架协议基于二进制协议框架,完成命令发送接收、命令上报、内部组网等功能。3.协议内容设备内部组网协议(或者MCU透传模式协议)备内部组网协议包括设备配对、连接、心跳机制等,目的是将一个子设备加入到设备组中,并保持连接。 通讯命令格式采用二进制的通讯协议格式,包格式如下表:同步头HeadOption包长度(变长)加密随机数(Option)源设备类型(Option)源设备编码(Option)CMD KeyCMD IDPayloadCRC(Option)2B1
2、B12 B1B1B3B1B1BNB2B详细的包格式在后续章节介绍 配对机制配对机制仅适用于设备内组网模式,MCU透传模式不需要组网协议。进入配对模式由主从设备分别触发,只有在进入配对模式后,才处理相关的配对命令。从设备进入配对模式后定时发送配对请求,直到收到请求回应。主设备收到请求后分配一个设备ID给从设备,标识此ID被占用,并等待采集器的上线通知,一定时间内收到通知之后确认存入设备列表,如果没有上线通知,则认为设备没有配对成功,从子设备中删除。从设备收到配对回应后存储设备ID,并且发送上线通知,收到上线通知后完成配对。配对的过程如下图所示: 连接机制设备每次上电连接需要发送上线通知以及连接所
3、需要的参数给主设备,如下图所示: 心跳机制使用对等的心跳机制,主设备和从设备都可以发现对方的异常状态。 设备与云端通讯协议设备与云端通讯协议基于MQTT协议,数据包使用MQTT协议传输,数据加密方式采用SSL加密,命令码采用2进制命令格式同设备间通讯协议。 MQTT通讯框架本协议是针对与设备的数据通信,目前通信节点包括:设备、云端和APP终端三方。WIFI上的协议采用MQTT协议框架,串口上的通信采用包含包头和校验的二进制协议,通信包采用二进制格式传输,高位在前低位在后。 此协议定义的MQTT Topic类型有以下2种:1单播,unicast/u/TargetType/TargetID2广播,
4、broadcast/b/SourceType/SourceID注释:TargetType:目标设备类型,TargetID:目标设备编码SourceType:源设备类型,SourceID:源设备编码 通讯命令格式设备与云端、APP的通讯命令分为4种:请求与回应、通知命令、广播命令,具体的命令以及格式在后面章节介绍。 连接流程设备连接云端的步骤如下图: 数据包格式定义数据包的格式根据通讯双方的不同、数据链路的差异会有不同的包格式,本协议为尽量保证数据包格式的统一,做了几点规划:1.数据包格式中核心的部分包括CMD ID和CMD Payload,这两部分格式所有的包中保持一致,CMD ID 1个字节
5、,CMD Payload紧跟CMD ID长度N字节。2.设备间通讯,包括内部命令、外部转发命令等的数据包格式虽然可能不一样,但是都可以通过包头中的Option字节进行区分,可以公用相同的解析函数3.外部串口通讯的命令格式与设备间通讯格式保持一致。3.3.1设备间通讯数据格式同步头HeadOption包长度(变长)加密随机数(Option)源设备类型(Option)源设备编码(Option)CMD KeyCMD IDPayloadCRC(Option)2B1B12 B1B1B3B1B1BNB2B Fix header固定帧头,格式如下表:同步头Head Option包长度(变长)2Byte1By
6、te12 Byte同步头:0x5CFEHead Option:Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0预留预留预留预留CheckSum校验广播类型链路CRC校验加密选项typedef enum OPTIONAL_ENCRYPT_BIT = (10), OPTIONAL_CRC_BIT = (11), OPTIONAL_BROADCAST_DATALINK_BIT = (12), OPTIONAL_CHECKSUM_BIT = (1设备同步头HeadOption包长度(变长)加密随机数(Option)源设备类型(Option)源设备编码(Option)源设备GUID目标设
7、备GUIDCMD IDPayloadCRC(Option)2B1B12 B1B1B3B34字节1BNB2B上行数据格式,设备-PAD同步头HeadOption包长度(变长)加密随机数(Option)源设备类型(Option)源设备编码(Option)源设备GUIDCMD IDPayloadCRC(Option)2B1B12 B1B1B3B34字节1BNB2B4.公共命令定义下表是公共命令码以及命令数据的定义,此表仅涉及到上文提到的CMD ID和命令信息码(或回复码),命令中的其他部分数据请参考上文中的数据包定义。命令码命令描述通信方命令组成备注设备内部命令起始1请求配对从设备-主设备 CMD
8、Key1Byte,0x01 CMD ID1Byte 业务设备类型5Byte 当前的内部设备类型1Byte 当前的内部设备编码3Byte,全0表示未配置过,非全0表示之前配置过 设备业务编码长度1Byte 设备业务编码N Byte 5个字节的业务设备类型,需要向乐君申请,并且保存在从设备中设备业务编码是用从设备自行定义的设备ID字符串,不超过32字节2请求配对回应主设备-从设备 CMD Key,0x01 CMD ID1Byte RC1Byte,参考RC表 分配的设备类型1Byte 分配的设备ID3Byte3设备启动通知MCU/从设备-主设备 CMD Key1Byte, 0x01 CMD ID1B
9、yte 版本号1Byte 子设备类型1Byte,参考章节:子设备类型表 业务设备类型5Byte 内部设备类型1Byte 内部设备编码3Byte 设备业务编码长度1Byte 设备业务编码N Byte 4设备启动通知的回应主设备-MCU/从设备 CMD Key1Byte, 0x01 CMD ID1Byte RC1Byte, 参考RC表5WiFi就绪通知主设备-MCU/从设备 CMD Key1Byte, 0x01 CMD ID1Byte 6WiFi断开通知主设备-MCU/从设备 CMD Key1Byte, 0x01 CMD ID1Byte 7云就绪通知主设备-MCU/从设备 CMD Key1Byte
10、, 0x01 CMD ID1Byte 8云断开通知主设备-MCU/从设备 CMD Key1Byte, 0x01 CMD ID1Byte 9WiFi模块上电通知WiFi模块-MCU CMD Key1Byte, 0x01 CMD ID1Byte WiFi模块上电后定时发送上电通知给MCU,直至MCU上报上线通知给WiFi模块(适用于用于透传模式)10WiFi模块配置完成通知WiFi模块-MCU CMD Key1Byte, 0x01 CMD ID1Byte RC1Byte,0成功,3超时,4退出11退出WiFi模块配置MCU-WiFi模块 CMD Key1Byte, 0x01 CMD ID1Byte
11、 12退出WiFi模块配置回应WiFi模块-MCU CMD Key1Byte, 0x01 CMD ID1Byte RC1Byte,0成功,1失败13重新配置WiFi模块MCU-WiFi模块 CMD Key1Byte, 0x01 CMD ID1Byte 14重新配置WiFi模块回应WiFi模块-MCU CMD Key1Byte, 0x01 CMD ID1Byte RC1Byte,0成功,1失败15设置WiFi模块串口波特率MCU-WiFi模块 CMD Key1Byte, 0x01 CMD ID1Byte Baudrate4ByteBaudrate取值:9600192003840057600115
12、200其他值返回fail默认值是960016设置WiFi模块串口波特率回应WiFi模块-MCU CMD Key1Byte, 0x01 CMD ID1Byte RC1Byte,0成功,1失败返回值以新设置的波特率发送17查询WiFi模块串口波特率MCU-WiFi模块 CMD Key1Byte, 0x01 CMD ID1Byte 18查询WiFi模块串口波特率回应WiFi模块-MCU CMD Key1Byte, 0x01 CMD ID1Byte RC1Byte,0成功,1失败 Baudrate4Byte WiFi模块命令起始32设备信息上报WiFi模块- Cloud/APP CMD ID1Byte
13、 Num1Byte,设备个数 设备拥有者的小智IDstring, 10字节 WiFi模块Mac地址ASCII,12字节 GUIDASCII,17字节、设备业务编码长度1Byte、设备业务编码N Byte、固件版本1BYTE、设备硬件架构类型1BYTE、设置是否在线1Byte,若干MQTT主题:/b/SourceType/SourceID第一个设备是主设备设备硬件架构类型参考“设备硬件架构类型编码表”设备是否在线,0不在线,1在线33WiFi配置完成通知WiFi模块-APP CMD ID1Byte 设备GUIDASCII,17字节 用户的小智IDstring, 10字节 设备业务编码长度1Byt
14、e 设备业务编码N ByteMQTT主题:/u/TargetType/TargetID34获取WiFi模块监控数据Cloud/APP-WiFi模块 CMD ID1Byte 35获取WiFi模块监控数据回应WiFi模块-Cloud/APP CMD ID1Byte WiFi模块连接信号强度1Byte,有符号的1个字节,一般范围在-100Dbm0Dbm WiFi模块型号16byte, 小于16字节的字符串36设置WiFi配置信息APP/Cloud/串口控制端-设备 CMD ID1Byte 是否设置拥有者ID1Byte,0不设置,1设置 设备拥有者的小智IDstring, 10字节 是否设置路由器信息
15、1Byte,0不设置,1设置 SSID Len,用户名长度1 BYTE,用户名长度小于等于32字节 PWD Len,密码长度1 BYTE,密码小于等于64字节 SSID PWD37设置WiFi配置信息回应设备-APP/Cloud/串口控制端 CMD ID1Byte RC(参考命令回应编码表:0成功,1失败 38删除子设备APP/Cloud/串口控制端-设备 CMD ID1Byte GUIDASCII,17字节 39删除子设备回应设备- APP/Cloud/串口控制端 CMD ID1Byte RC(参考命令回应编码表:0成功,1失败 40获取设备列表APP/Cloud/串口控制端-主设备 CMD
16、 ID1Byte 41获取设备列表回应主设备-APP/Cloud/串口控制端 CMD ID1Byte Num1Byte,设备个数 设备拥有者的小智IDstring, 10字节 WiFi模块Mac地址ASCII,12字节 GUIDASCII,17字节、设备业务编码长度1Byte、设备业务编码N Byte、固件版本1BYTE、设备硬件架构类型1BYTE、设置是否在线1Byte,若干 设备是否在线,0不在线,1在线44设置设备进入配对模式App/Cloud/串口控制端-设备 CMD ID1Byte 45设置设备进入配对模式回应设备- App/Cloud/串口控制端 CMD ID1Byte RC(参考
17、命令回应编码表:0成功,1失败) BYTE 47设置设备退出配对模式App/Cloud/串口控制端-设备 CMD ID1Byte 48设置设备退出配对模式回应设备- App/Cloud/串口控制端 CMD ID1Byte RC(参考命令回应编码表:0成功,1失败) BYTE49请求同步时间设备-Cloud CMD ID1Byte 50请求同步时间回应Cloud-设备 CMD ID1Byte RC(参考命令回应编码表:0成功,1失败) BYTE RTC时间67Byte,格式是秒-分-时-日-月-年-星期几,各一个字节 星期几的范围从17,1表示星期一51扫描AP列表控制端-设备 CMD ID1B
18、yte 52扫描AP列表回应设备到控制端 CMD ID1Byte RC(参考命令回应编码表:0成功,1失败) BYTE AP Number1Byte,扫描到的AP数量 AP信息 32Byte,SSID1Byte,RSSI信号强度若干SSID为字符串,最大32字节,返回数据中固定32字节位置存放SSID。信号强度取值范围0100所有设备公共命令起始64主MCU OTA传输文件Cloud-设备 CMD ID1Byte 总包数2Byte 当前包号2Byte 包内容N BYTE,最大长度102465主MCU OTA传输文件回应设备-Cloud CMD ID1Byte RC(参考命令回应编码表:0成功,
19、1失败,32包号错误,33数据校验错误) 1 BYTE 当前包号2Byte66设置出厂信息App/Cloud-设备 CMD ID1Byte 设备ID12 Byte 设备业务ID长度1 Byte 设备业务IDN Byte设备业务ID长度为0表示不需要设备业务ID暂时只需要工厂测试程序支持67设置出厂信息回应设备-App/Cloud CMD ID1Byte RC(参考命令回应编码表:0成功,1失败 68Debug Log输出控制App/Cloud-设备 CMD ID1Byte Debug Log开关1Byte,0关,1开 是否掉电保存1Byte,0掉电不保存,1掉电保存暂时云端实现69Debug Log输出控制回应设备- App/Cloud CMD ID1Byte RC(参考命令回应编码表:0成功,1失败
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1