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