logo资料库

EMW3162接入IOTKIT-机智云接入串口通信协议文档(IOTKIT_Protocol).pdf

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
机智云 - 设备串口通讯协议 (v4.0.0) 产品名称: IOTKIT 生成日期: 2015-01-19 目录 1. 设备通讯信息 1.1 MCU与WIFI模组串口连接要求 2. 命令格式 3. 约定 4. 命令列表 4.1 WiFi模组请求设备信息 4.2 WiFi模组与设备MCU的心跳 4.3 设备MCU通知WiFi模组进入配置模式 4.4 设备MCU重置WiFi模组 4.5 WiFi模组向设备MCU通知WiFi模组工作状态的变化 4.6 WiFi模组请求重启MCU 4.7 非法消息通知 4.8 WiFi模组读取设备的当前状态 4.9 设备MCU向WiFi模组主动上报当前状态 4.10 WiFi模组控制设备 1. 设备通讯信息 1.1 MCU与WIFI模组串口连接要求 通讯方式:   UART 波特率:    9600 数据位:    8 奇偶校验:   无 停止位:    1 数据流控:   无 给WIFI模组供电电压:3.3v,电流(max):150mA 如需MCU升级等高级功能,请和Gizwits联系。 2. 命令格式 header(2B)=0xFFFF, len(2B), cmd(1B), sn(1B), flags(2B), payload(xB), checksum(1B) 3. 约定
· 包头(header)固定为0xFFFF · 长度(len)是指从cmd开始到整个数据包结束所占用的字节数 · 多于一个字节的整型数字以大端字节序编码 · 消息序号(sn)由发送方给出,接收方响应命令时需把消息序号返回给发送方 · 检验和(checksum)的计算方式为把数据包按字节求和得出的结果对256求余 · 除“非法消息通知”外的命令都带有确认,如在200毫秒内没有收到接收方的响应,发送方应重发,最多重发3次。 4. 命令列表 4.1 WiFi模组请求设备信息 WiFi模组发送: header(2B) 0xFFFF 设备MCU回复: header(2B) 0xFFFF len(2B) 0x0005 len(2B) 0x0047 cmd(1B) 0x01 cmd(1B) 0x02 sn(1B) 0x## sn(1B) 0x## flags(2B) checksum(1B) 0x0000 0x## flags(2B) protocol_ver(8B) 0x0000 0x3030303030303034 p0_ver(8B) hard_ver(8B) soft_ver(8B) product_key(32B) bindable_timeout(2B) checksum(1B) 0x3030303030303032 硬件版本号 软件版本号 产品标识码 绑定超时(秒) 0x## 注: 绑定超时(bindable_timeout)的值为0时,表示设备随时可在局域网被绑定;当值大于零时,表示当按下绑定按钮后,用户 必须在该时间范围内完成绑定操作。 4.2 WiFi模组与设备MCU的心跳 WiFi模组发送: header(2B) 0xFFFF 设备MCU回复: header(2B) 0xFFFF 注: len(2B) 0x0005 len(2B) 0x0005 cmd(1B) 0x07 cmd(1B) 0x08 sn(1B) 0x## sn(1B) 0x## flags(2B) checksum(1B) 0x0000 0x## flags(2B) checksum(1B) 0x0000 0x## 当设备MCU在180秒内没有收到WiFi模组的心跳请求,则通过硬件引脚重启WiFi模组。 4.3 设备MCU通知WiFi模组进入配置模式 设备MCU发送:
header(2B) len(2B) cmd(1B) 0xFFFF 0x0006 0x09 sn(1B) 0x## flags(2B) config_method(1B) checksum(1B) 0x0000 配置方式 0x## 注: 配置方式(config_method)是指使用何种方法配置WiFi模组加入网络,可以选择以下的值: 1: SoftAp 2: Air Link 其它的值为保留值。 WiFi模组回复: header(2B) 0xFFFF len(2B) 0x0005 cmd(1B) 0x0A sn(1B) 0x## flags(2B) checksum(1B) 0x0000 0x## 注: 当WiFi模组收到进入配置模式的指令后,需要判断当前是否已成功连接上无线路由器,如成功,则进让设备处于可绑定模式, 否则让设备进入对应的SoftAP或AirLink等OnBoarding配置方式。 4.4 设备MCU重置WiFi模组 设备MCU发送: header(2B) 0xFFFF WiFi模组回复: header(2B) 0xFFFF 注: len(2B) 0x0005 len(2B) 0x0005 cmd(1B) 0x0B cmd(1B) 0x0C sn(1B) 0x## sn(1B) 0x## flags(2B) checksum(1B) 0x0000 0x## flags(2B) checksum(1B) 0x0000 0x## 被重置后的WiFi模组需要重新配置与绑定。 4.5 WiFi模组向设备MCU通知WiFi模组工作状态的变化 WiFi模组发送: header(2B) len(2B) cmd(1B) 0xFFFF 0x0007 0x0D sn(1B) 0x## flags(2B) wifi_status(2B) checksum(1B) 0x0000 WiFi状态 0x## 注: 1. WiFi状态(wifi_status)用两个字节描述, 从右向左依次是bit0, bit1, ...bit15; bit0: 是否开启SoftAP模式, 0: 关闭, 1: 开启; bit1: 是否开启Station模式, 0: 关闭, 1: 开启; bit2: 是否开启配置模式, 0: 关闭, 1: 开启;
bit3: 是否开启绑定模式, 0: 关闭, 1: 开启; bit4: WiFi模组是否成功连接路由器, 0: 未连接, 1: 连接; bit5: WiFi模组是否成功连接云端, 0: 未连接, 1: 连接; bit6 - bit8:仅当WiFi模组已成功连接路由器(请看上第4位)时值才有效,三个位合起来表示一个整型值,值范围 为0~7,表示WiFi模组当前连接AP的信号强度(RSSI),0为最低,7为最高; bit9:是否有已绑定的手机上线,0:没有,1:有; bit10 - bit15:预留。 2. WiFi模组在当状态发生了变化后立刻通知设备MCU,同时每隔10分钟也会定期向设备MCU发送状态。 设备MCU回复: header(2B) 0xFFFF len(2B) 0x0005 cmd(1B) 0x0E sn(1B) 0x## flags(2B) checksum(1B) 0x0000 0x## 4.6 WiFi模组请求重启MCU WiFi模组发送: header(2B) 0xFFFF 设备MCU回复: header(2B) 0xFFFF 注: len(2B) 0x0005 len(2B) 0x0005 cmd(1B) 0x0F cmd(1B) 0x10 sn(1B) 0x## sn(1B) 0x## flags(2B) checksum(1B) 0x0000 0x## flags(2B) checksum(1B) 0x0000 0x## 为了避免WiFi模组没有收到确认而重发指令而造成MCU多次重启,故MCU回复WiFi模组后需等待600毫秒再进行重启。 4.7 非法消息通知 WiFi模组回应MCU对应包序号的数据包非法: header(2B) len(2B) cmd(1B) 0xFFFF 0x0006 0x11 MCU回应WiFi模组对应包序号的数据包非法: header(2B) len(2B) cmd(1B) 0xFFFF 0x0006 0x12 注: 错误码(error_code)可为以下的值: 1:校验和错误 sn(1B) 0x## sn(1B) 0x## flags(2B) error_code(1B) checksum(1B) 0x0000 错误码 0x## flags(2B) error_code(1B) checksum(1B) 0x0000 错误码 0x##
2:命令不可识别 3:其它错误 0和4~255保留 4.8 WiFi模组读取设备的当前状态 WiFi模组发送: header(2B) len(2B) cmd(1B) 0xFFFF 0x0006 0x03 sn(1B) 0x## flags(2B) action(1B) checksum(1B) 0x0000 0x02 0x## 设备MCU回复: header(2B) len(2B) cmd(1B) sn(1B) flags(2B) action(1B) dev_status(8B) checksum(1B) 0xFFFF 0x000E 0x04 0x## 0x0000 0x03 设备状态 0x## 注: 设备状态(dev_status)使用一个或多个字节表示。例如数据包为 0xFE FE FE 00 0A 01 64 64 时,其格式为: 字节序 位序 数据内容 说明 byte0 0xFE byte1 0xFE byte2 0xFE dp1,类型为uint8,字段值为254; 实际值计算公式y=1.000000*x+(0.000000) x最小值为0,最大值为254 dp2,类型为uint8,字段值为254; 实际值计算公式y=1.000000*x+(0.000000) x最小值为0,最大值为254 dp3,类型为uint8,字段值为254; 实际值计算公式y=1.000000*x+(0.000000) x最小值为0,最大值为254 0x00 0A dp4,类型为uint16,字段值为10; 实际值计算公式y=1.000000*x+(-5.000000) x最小值为0,最大值为10 0b00000001 dp7,类型为bool,值为true:字段bit0,字段值为0b1; byte3 byte4 byte5 bit7 bit6 . . . bit1 bit0
byte6 0x64 byte7 0x64 dp5,类型为uint8,字段值为100; 实际值计算公式y=1.000000*x+(0.000000) x最小值为0,最大值为100 dp6,类型为uint8,字段值为100; 实际值计算公式y=1.000000*x+(0.000000) x最小值为0,最大值为100 4.9 设备MCU向WiFi模组主动上报当前状态 设备MCU发送: header(2B) len(2B) cmd(1B) sn(1B) flags(2B) action(1B) dev_status(8B) checksum(1B) 0xFFFF 0x000E 0x05 0x## 0x0000 0x04 设备状态 0x## 注: 1. 设备状态(dev_status)使用一个或多个字节表示。例如数据包为 0xFE FE FE 00 0A 01 64 64 时,其格式为: 字节序 位序 数据内容 说明 byte0 0xFE byte1 0xFE byte2 0xFE dp1,类型为uint8,字段值为254; 实际值计算公式y=1.000000*x+(0.000000) x最小值为0,最大值为254 dp2,类型为uint8,字段值为254; 实际值计算公式y=1.000000*x+(0.000000) x最小值为0,最大值为254 dp3,类型为uint8,字段值为254; 实际值计算公式y=1.000000*x+(0.000000) x最小值为0,最大值为254 0x00 0A dp4,类型为uint16,字段值为10; 实际值计算公式y=1.000000*x+(-5.000000) x最小值为0,最大值为10 0b00000001 dp7,类型为bool,值为true:字段bit0,字段值为0b1; byte3 byte4 byte5 bit7 bit6 . . . bit1 bit0
byte6 0x64 byte7 0x64 dp5,类型为uint8,字段值为100; 实际值计算公式y=1.000000*x+(0.000000) x最小值为0,最大值为100 dp6,类型为uint8,字段值为100; 实际值计算公式y=1.000000*x+(0.000000) x最小值为0,最大值为100 2. 关于发送频率。当设备MCU收到WiFi模组控制产生的状态变化,设备MCU应立刻主动上报当前状态, 发送频率不受限制。但如设备的状态的变化是由于用户触发或环境变化所产生的,其发送的频率不能快于2秒每次。 3. 设备MCU需要每隔10分钟定期主动上报当前状态。 WiFi模组回复: header(2B) 0xFFFF len(2B) 0x0005 cmd(1B) 0x06 sn(1B) 0x## flags(2B) checksum(1B) 0x0000 0x## 4.10 WiFi模组控制设备 WiFi模组发送: header(2B) len(2B) cmd(1B) sn(1B) flags(2B) action(1B) attr_flags(1B) attr_vals(5B) checksum(1B) 0xFFFF 0x000C 0x03 0x## 0x0000 0x01 是否设置标志位 设置数据值 0x## 注: 1. 是否设置标志位(attr_flags)表示相关的数据值是否为有效值,相关的标志位为1表示值有效,为0表示值无效, 从右到左的标志位依次为: bit0: 设置dp1 bit1: 设置dp2 bit2: 设置dp3 bit3: 设置dp4 2. 设置数据值(attr_vals)存放数据值, 只有相关的设置标志位为1时,数据值才有效。例如数据包为 0xFE FE FE 00 0A 时,其格式为: 字节序 bit序 数据内容 说明 byte0 0xFE byte1 0xFE byte2 0xFE dp1,类型为uint8,字段值为254; 实际值计算公式y=1.000000*x+(0.000000) x最小值为0,最大值为254 dp2,类型为uint8,字段值为254; 实际值计算公式y=1.000000*x+(0.000000) x最小值为0,最大值为254 dp3,类型为uint8,字段值为254; 实际值计算公式y=1.000000*x+(0.000000) x最小值为0,最大值为254
byte3 byte4 0x00 0A dp4,类型为uint16,字段值为10; 实际值计算公式y=1.000000*x+(-5.000000) x最小值为0,最大值为10 设备MCU回复: header(2B) 0xFFFF len(2B) 0x0005 cmd(1B) 0x04 sn(1B) 0x## flags(2B) checksum(1B) 0x0000 0x##
分享到:
收藏