设备通讯协议_第1页
设备通讯协议_第2页
设备通讯协议_第3页
设备通讯协议_第4页
设备通讯协议_第5页
已阅读5页,还剩29页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 . 设备通信协议22 / 1 . 目录 1.适用范围 . 3 2.协议框架 . 3 3.协议内容 . 3 3.1设备内部组网协议(或者MCU透传模式协议) . 3 3.1.1 通讯命令格式 . 3 3.1.2 配对机制 . 3 3.1.3 连接机制 . 4 3.1.4 心跳机制 . 5 3.2 设备与云端通讯协议 . 5 3.2.1 通讯命令格式 . 5 3.2.2 连接流程 . 5 3.3 数据包格式定义. 6 3.3.1 设备间通讯数据格式 . 6 3.3.2 设备与云、APP通讯数据格式. 11 4.公共命令定义 . 12 5.编码表 . 19 5.1节点类型编码表 . 19 5.2命

2、令回应编码表 . 19 22 / 2 . 1. 适用范围 本协议定义WiFi模块与MCU控制单元,WiFi模块与云APP间,以及主从模块之间的通讯协议框架。 2. 协议框架 协议基于二进制协议框架,完成命令发送接收、命令上报、内部组网等功能。 3. 协议内容 3.1设备内部组网协议(或者MCU透传模式协议) 备内部组网协议包括设备配对、连接、心跳机制等,目的是将一个子设备加入到设备组中,并保持连接。 3.1.1 通讯命令格式 采用二进制的通讯协议格式,包格式如下表: 同步头 Head 包长度(变加密随源设备源设备CMD CMD ID Payload CRC(OptiOption Key 编类长

3、) 型数机码on) (Option) (Option) (Option) 2B 1B 1B 1B 12 B 2B 1B 3B NB 1B 详细的包格式在后续章节介绍 3.1.2 配对机制 配对机制仅适用于设备内组网模式,MCU透传模式不需要组网协议。 进入配对模式由主从设备分别触发,只有在进入配对模式后,才处理相关的配对命令。 从设备进入配对模式后定时发送配对请求,直到收到请求回应。 主设备收到请求后分配一个设备ID给从设备,标识此ID被占用,并等待采集器的上线通知,一定时间内收到通知之后确认存入设备列表,如果没有上线通知,则认为设备没有配对成功,从子设备中删除。 从设备收到配对回应后存储设备

4、ID,并且发送上线通知,收到上线通知后完成配对。 22 / 3 . 配对的过程如下图所示: 主模从模进入配对模从设备发送配请主设备回应请从设备上主设备回应设备上线配对结束 3.1.3 连接机制 设备每次上电连接需要发送上线通知以及连接所需要的参数给主设备,如下图所示: WiFi模块MCU/从模块上线通知上线通知回应WiFi通路配置(仅用于透传模式)云连接成功(仅用于透传模式)命令交互状态上报 22 / 4 . 3.1.4 心跳机制 使用对等的心跳机制,主设备和从设备都可以发现对方的异常状态。 3.2 设备与云端通讯协议 设备与云端通讯协议基于MQTT协议,数据包使用MQTT协议传输,数据加密方

5、式采用SSL加密,命令码采用2进制命令格式同设备间通讯协议。 3.2.1 MQTT通讯框架 本协议是针对与设备的数据通信,目前通信节点包括:设备、云端和APP终端三方。WIFI上的协议采用MQTT协议框架,串口上的通信采用包含包头和校验的二进制协议,通信包采用二进制格式传输,高位在前低位在后。 ? 此协议定义的MQTT Topic类型有以下2种: 单播,unicast /u/TargetType/TargetID 广播,broadcast /b/SourceType/SourceID 注释: TargetType:目标设备类型,TargetID:目标设备编码 SourceType:源设备类型,

6、SourceID:源设备编码 3.2.2 通讯命令格式 设备与云端、APP的通讯命令分为4种: 请求与回应、通知命令、广播命令,具体的命令以及格式在后面章节介绍。 3.2.2 连接流程 设备连接云端的步骤如下图: 22 / 5 . 模WiF等待连接路MC等电,获取密servehttp获信servehttp发信连建MQT订阅设备主命令交状态上报 数据包格式定义3.3 本协议为尽量保证数据链路的差异会有不同的包格式,数据包的格式根据通讯双方的不同、 数据包格式的统一,做了几点规划:这两部分格式所有的包中保持,和CMD Payload1. 数据包格式中核心的部分包括CMD ID 字节。长度紧跟CMD

7、 IDN个字节,一致,CMD ID 1CMD Payload设备间通讯,包括内部命令、外部转发命令等的数据包格式虽然可能不一样,但是都可 2. Option以通过包头中的字节进行区分,可以公用相同的解析函数 外部串口通讯的命令格式与设备间通讯格式保持一致。 3. 3.3.1设备间通讯数据格式 22 / 6 . CRCPayloadCMD KeyHead同步(OptOption)Don)(Option)(Option)(Option)ID2B12 B1B1B3B1B2B1B1BNB Fix header 固定帧头,格式如下表: ) (变长 Head Option 包长度同步头12

8、 Byte 2Byte 1Byte 同步头:0x5CFE :Head Option Bit0 Bit1 Bit4 Bit3 Bit2 Bit7 Bit6 Bit5 加密选项类校验预留 CRC预留 预留 CheckSu广 预留播 型链路m校验 enum typedef OPTIONAL_ENCRYPT_BIT = (10), OPTIONAL_CRC_BIT = (11), TALINK_BIT = (12), OPTIONAL_BROADCAST_DA OPTIONAL_CHECKSUM_BIT = (1PAD 类数机码编型Key (Option) (Option) (Option) 1B 1

9、B NB 3B 1B 1B 2B 1B 12 B 同步头 Head 包长度(变加密随源设备源设备源设备GUID CMD PayloCR(Opton)2B 数据组包实例 校验,并且加密的数据包的组包过程:CRC以下是使用22 / 10 . 假设命令包是1 2 3 4,4个字节,现在要组包 1:CRC 第一步计算这4个字节的crc值,假设算出来是5、6 第一步CRC之后的数据包就变成了1、2、3、4、5、6, 6个字节 2:加密 加入一个随机数,假设这个随机数是0 ,现在包就是7个字节了,0 加密第一步:、1、2、3、4、5、6 异或 ,将除加密随机数外的其他数据都和加密随机数进行异

10、或,加密第二步: 得到得数据应该是0、1、2、3、4、5、6 机密第三步:查表加密,假设表中0对应的是6、1对应的是5依次类推,那么查表之后的数据变为了6、5、4、3、2、1、0 加密结束,payload最终就是6、5、4、3、2、1、0了 3:加入包头 Payload是7个字节,optional是CRC和加密,那么包头为FE 5C 03 07 最终包数据为:FE 5C 03 07 06 05 04 03 02 01 00 解包的过程与组包相反 3.3.2 设备与云、APP通讯数据格式 命令数据格式: 源设备类型 源设备ID CMD ID N Byte 12Byte 1Byte 5Byte 3

11、.3.2 Pad串口通讯数据格式 下行数据格式,PAD-设备 同步头 Head 包长度(变加密随源设备源设备源设备GUID CMD PayloCRC(Option) 机目标设备GUID 类型数Option ad ID 编长) 码(Option) (Option) (Option)2B CRC(Option) 编ad 码ID 型Option ) 长数机类(Option) (Option) (Option) 2B NB 1B 2B 1B 12 B 1B 1B 343B 字节 22 / 11 . 4. 公共命令定义 下表是公共命令码以及命令数据的定义,此表仅涉及到上文提到的CMD ID和命令信息码(

12、或回复码),命令中的其他部分数据请参考上文中的数据包定义。 命令码 命令描述 通信方设备内部命令起始 命令组成 备注 5个字节的业务设备 类型,需要向乐君申请,并且保存在从设 备中 设备业务编码是用从设备自行定义的设备ID字符串,不超过表示未配置字节 1Byte RC表1Byte 参考 1Byte RC表CMD Key1Byte,0x01 ? CMD ID1Byte ? 5Byte 业务设备类型? 当前的内部设备类型? 1 请求配对 1Byte 从设备-主设备 当前的内部设备编码 ?3Byte,全0表示之前配置过过,非全0? 设备业务编码长度N Byte ? 设备业务编码 ? CMD Key,

13、0x01 ?2 请求配对回应 CMD ID1Byte ? 从设备-主设备参考RC1Byte,? ? 分配的设备类型ID3Byte 分配的设备? CMD Key1Byte, 0x01 ?CMD ID1Byte ? 1Byte ? 版本号?1Byte, 子设备类型章节:子设备类型表5.3主设MCU/-从设备5Byte 3 设备启动通知 ? 业务设备类型 备1Byte ? 内部设备类型3Byte 内部设备编码?设备业务编码长度? N Byte ? 设备业务编码 ? ?CMD Key1Byte, 0x01 从设-MCU/主设备CMD ID1Byte ? 设备启动通知的回应4 备参考 ?RC1Byte,

14、 3222 / 12 . WiFi就绪通知 CMD Key1Byte, 0x01 ? 主设备5 从设-MCU/CMD ID1Byte ? 备 ?CMD Key1Byte, 0x01 ? WiFi断开通知 从设-MCU/主设备CMD ID1Byte ? 6 备 ? ? CMD Key1Byte, 0x01 从设主设备-MCU/CMD ID1Byte ? 7 云就绪通知 备 ? CMD Key1Byte, 0x01 ? 从设主设备-MCU/CMD ID1Byte ? 8 云断开通知 备 ? 模块上电后定时发? CMD Key1Byte, 0x01 WiFi,直至CMD ID1Byte MCU送上电

15、通知给? WiFi上报上线通知给 MCU WiFi模块-MCU ?9 WiFi模块上电通知模块(适用于用于透传模 式) CMD Key1Byte, 0x01 ? CMD ID1Byte ?WiFi模块配置完成通-MCU 模块10 WiFi超时,3? RC1Byte,0知 成功, 退出4 CMD Key1Byte, 0x01 ? CMD ID1Byte ? 模块 MCU-WiFi退出11 WiFi模块配置 ? CMD Key1Byte, 0x01 ?模块配置回退出WiFiCMD ID1Byte ? -MCU 12 WiFi模块 应 失败1? RC1Byte,0成功, CMD Key1Byte,

16、0x01 ? CMD ID1Byte ? WiFi重新配置模块 MCU-WiFi模块13 ? CMD Key1Byte, 0x01 ? 模块回WiFi重新配置CMD ID1Byte ?-MCU WiFi14 模块 应 ?RC1Byte,0成功,1失败 取值:BaudrateCMD Key1Byte, 0x01 ? 9600 CMD ID1Byte ? 19200 WiFi设置模块串口波Baudrate4Byte ? MCU-WiFi模块15 38400 特率 57600 115200 22 / 13 . fail 其他值返回 9600 默认值是返回值以新设置的波特 CMD Key1Byte,

17、0x01 ?16 17 18 模块串口波WiFi设置 特率回应模块串口波查询WiFi 特率模块串口波WiFi查询 特率回应-MCU WiFi模块 MCU-WiFi模块模块WiFi-MCU ? CMD ID1Byte 1失败? RC1Byte,0成功,CMD Key1Byte, 0x01 ? CMD ID1Byte ? ? ? CMD Key1Byte, 0x01 CMD ID1Byte ? 成功,1失败? RC1Byte,0Baudrate4Byte ? ? 率发送 模块命令起始WiFi CMD ID1Byte ? 1Byte,设备个数 ? Num 设备拥有者的小智? 主题:MQTT/b/So

18、urceType/SourceID 32 设备信息上报 - 模块WiFiCloud/APP IDstring, 10字节? WiFi模块Mac地址ASCII,12字节 、设备? GUIDASCII,17字节业务编码长度、设备1ByteN Byte业务编码、固件版本1BYTE、设备硬件架构、类型1BYTE设置是否在线 若干1Byte, ?CMD ID1Byte 第一个设备是主设备 设备硬件架构类型参考“设备硬件架构类型编 码表”不在线,0设备是否在线, 在线1 MQTT主题:33 配置完成通知WiFi -APP WiFi模块 字节设备? GUIDASCII,17IDstring, 10 用户的小

19、智?字节 1Byte ? 设备业务编码长度/u/TargetType/TargetID N Byte ?设备业务编码 ? CMD ID1Byte 模Cloud/APP-WiFi模块监控数获取WiFi ? 34 据块 22 / 14 . 35 获取WiFi模块监控数模块WiFi CMD ID1Byte ?模块连接信号强度WiFi? 个字11Byte,有符号的节,一般范围在 据回应-Cloud/APP -100Dbm0Dbm 小16byte, WiFi模块型号? 字节的字符串于16CMD ID1Byte ? , 是否设置拥有者ID1Byte? 不设置,1设置0设备拥有者的小智? 36 配置信息设置

20、WiFiAPP/Cloud/串口 IDstring, 10字节是否设置路由器信息? 1设置1Byte,0不设置,控制端-设备 1 SSID Len,用户名长度? 用户名长度小于等于BYTE, 32字节,BYTEPWD Len,密码长度1 ? 字节密码小于等于6437 设置WiFi配置信息回设备-APP/Cloud/SSID ?PWD ?CMD ID1Byte ? 0?参考命令回应编码表: RC( 38 应 删除子设备串口控制端 串口控APP/Cloud/ 失败成功,1 ?CMD ID1Byte ? 字节? GUIDASCII,17 39 删除子设备回应 设备制端- APP/Cloud/设备 ?

21、 ?CMD ID1Byte 0参考命令回应编码表:? RC( 串口控制端 串口控APP/Cloud/ 失败成功,1 ? ? CMD ID1Byte ? 40 获取设备列表 -主设备制端? CMD ID1Byte 1Byte? Num,设备个数 不在线,设备是否在线,0 1在线41 获取设备列表回应主设备串口-APP/Cloud/ 控制端设备拥有者的小智? 字节IDstring, 10地址Mac模块 ?WiFi 字节ASCII,12、设备字节GUIDASCII,17 ?设备、1Byte业务编码长度22 / 15 . 、固件版业务编码N Byte、设备硬件架构1BYTE本设置是否在线、类型1BYT

22、E ,若干1Byte44 设置设备进入配对模串口控App/Cloud/ ?CMD ID1Byte ? ? 45 式设置设备进入配对模 设备制端- App/Cloud/设备CMD ID1Byte ? 0参考命令回应编码表:? RC( 式回应 串口控制端 ) BYTE 1成功,失败? CMD ID1Byte ? 串口控设置设备退出配对模App/Cloud/ ?47 -式 设备制端48 设置设备退出配对模式回应 - App/Cloud/设备 串口控制端CMD ID1Byte ? 0参考命令回应编码表: ?RC() BYTE 失败1成功, 22 / 16 . 49 50 请求同步时间请求同步时间回应

23、-Cloud 设备 Cloud-设备 CMD ID1Byte ? ? CMD ID1Byte 0? RC(参考命令回应编码表: 成功,1失败) BYTE,格式是? RTC时间67Byte 表17,1星期几的范围从 示星期一51 52 扫描AP列表 列表回应 扫描AP 控制端-设备 设备到控制端星期年-月-分秒-时-日 ,各一个字节几 ? CMD ID1Byte ? ? CMD ID1Byte ? RC(参考命令回应编码表:0? 1成功,失败) BYTE ? AP Number1Byte,扫描到 AP的数量 AP信息? SSID , 32Byte 32SSID为字符串,最大32字节,返回数据中固

24、定 SSID。字节位置存放0100 信号强度取值范围信号RSSI1Byte, 强度 若干所有设备公共命令起始 CMD ID1Byte ? 64 传输文主MCU OTA 件 Cloud-设备 2Byte? 总包数 2Byte? 当前包号最大长度包内容N BYTE,? 1024 CMD ID1Byte ? 0 RC(参考命令回应编码表:? 65 66 传输文主MCU OTA 件回应设置出厂信息 设备-Cloud 设备App/Cloud-包号错误,失败,32成功,1) 1 BYTE 数据校验错误33 2Byte? 当前包号? CMD ID1Byte ID12 Byte ?设备长度ID ?设备业务1

25、Byte 表长度为0ID设备业务ID 示不需要设备业务暂时只需要工厂测试程22 / 17 . IDN Byte ? 设备业务 CMD ID1Byte ?0参考命令回应编码表:? RC( 序支持 67 设置出厂信息回应-App/Cloud 设备 失败成功,1 ? CMD ID1Byte ? 暂时云端实现68 Debug Log输出控制App/Cloud-设备 1Byte,0开关? Debug Log 开关,1掉1Byte,0? 是否掉电保存 掉电保存电不保存,169 Debug Log输出控制回应 - App/Cloud 设备 ?CMD ID1Byte 0参考命令回应编码表:? RC( 失败成功

26、,1 70 信息输出Debug Log 设备- App/Cloud ?CMD ID1Byte ? version1Byte 固件版本? ? 日志类型LogType1Byte NByte,? Log内容字符串 ? ? CMD ID1Byte 架构下MCU用于升级主从 MUC固件的从 2Byte 总包数?传输文MCU OTA从 Cloud-71 设备 件 2Byte? 当前包号最大长度N BYTE,? 包内容 1024 ?CMD ID1Byte 0 RC(参考命令回应编码表:?包号错误,成功,从MCU OTA传输文失败,321-Cloud 72 设备 件回应) 1 BYTE33数据校验错误 2By

27、te当前包号? ?CMD ID1Byte 推送信息内容? nByte 云端推送通知信息Cloud设备APP/73 ? 22 / 18 . ?CMD ID1Byte ? 云端以这个命令作为真正完成的判断标OTA1失败 ? RC1Byte, 0成功,- Cloud/APP 设备升级完成上报 76 OTA 准 编码表5. 节点类型编码表5.1节点类型编码 类型 名称 命令回应编码表5.2 ,公共错误码031命令回应编码命令回应含义 0 1 2 3 4 531 成功 失败配对失败,设备满WiFi配置(Easy link)WiFi配置(Easylink)内部通讯公共内部通讯公共 超时 退出 值预留RC

28、RC值起始32 33 34 OTA包号错误OTA数据校验错误当前状态不允许外部通讯公共 OTA RC值起始3563 64255 外部通讯公共业务错误码 值预留RCRC业务 值起始 子设备类型表5.3 描述 子设备类型22 / 19 . 设备透传模式下的MCU1 组网模式下的从设备2 设备硬件架构类型编码表5.4 描述设备硬件结构类型0 架构 单MCU1 控架构(WiFi模块+双MCU 制MCU模块) 附录6. 6.1 CRC校验算法 位查表static const uint8 c_crc_htalbe = / CRC 高8 0x00, 0xC1, 0x81, 0x00, 0xC1, 0x81,

29、 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x41, 0x80, 0xC0, 0x40, 0x01, 0x81, 0x40, 0x00, 0xC1, 0x81, x00, 0x01, 0xC0, 0x80, 0x41, 00xC1, 0x41, 0x00, 0xC1, 0x81, 0x00, 0xC1, 0x81, 0x40, 0x01,

30、 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x41, 0x81, 0x00, 0xC1, 0xC0, 0x80, 0x41, 0x80, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x41, 0x01, 0x40, 0x00, 0xC1, 0x81, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80,

31、 0x41, 0x01, 0xC0, 0x80, 0x41, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x41, 0x80, 0x01, 0xC0, 0x00, 0x40, 0xC1, 0x81, 0x40, x00, 0x01, 0xC0, 0x80, 0x41, 00xC1, 0x81, 0x41, 0x00, 0xC1, 0x81, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,

32、 0xC0, 0x80, 0x41, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x40, 0x80, 0xC0, 0x01, 0x81, 0x00, 0x81, x00, 0x01, 0xC0, 0x80, 0x41, 00xC1, 0x40, 0xC1, 0x40, 22 / 20 . 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0

33、x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0

34、x81, 0x40 ; static const uint8 c_crc_ltalbe = / CRC校验查表低8位 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0

35、x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论