更新时间:2024-11-20 02:13:22下载pdf
涂鸦 Wi-Fi 串口通用协议为涂鸦定制的 Wi-Fi 或 Wi-Fi & 蓝牙 LE 模组串口通用协议,主要用于涂鸦 Wi-Fi 或 Wi-Fi & 蓝牙 LE 模组与其它 MCU 串口直连做串口通信,其架构如下图所示。
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 固定为 0x55aa |
版本 | 1 | 升级扩展用 |
命令字 | 1 | 具体帧类型 |
数据长度 | 2 | 大端 |
数据 | N | 实体数据 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
所有大于 1 个字节的数据均采用大端模式传输。
一般情况下,采用同命令字一发一收同步机制。
即一方发出命令,另一方应答,若发送方超时未收到正确的响应包,则超时传输,如下图所示:
具体通信方式以 协议列表 章节中为准。
模组控制命令下发及 MCU 状态上报则采用异步模式,假设模组控制命令下发的命令字为 X
,MCU 状态上报的命令字为 Y
,如下所示:
模组控制命令下发:
MCU 状态上报:
版本字段
版本用于拓展功能使用,为兼容新老版本协议,模组发送版本号均为 0x00
,根据 MCU 回复版本号确定使用协议的版本。新用户默认使用协议版本为 0x03
即可。
芯片平台 | 接收缓冲区大小 | 发送缓冲区大小 | 备注 |
---|---|---|---|
esp8266 | 256 字节 | 256 字节 | 固定大小,后续不会增加和迭代。 |
其他 | 最小为 1024 字节 | 最小为 1024 字节 | 若固件版本支持文件传输类功能,则缓冲区大小最大值参考文件传输时单包文件数据的最大长度。 |
MCU 完整数据大小(即从帧头开始计算到校验和结束计算)不可超出模组接收缓冲区大小值。如果数据包长度超出,则会出现数据通信异常情况。
命令和状态数据单元(datapoint
)如下所示:
数据段 | 字节数 | 说明 |
---|---|---|
dpid | 1 | datapoint 序号 |
type | 1 | 对应 涂鸦开发者平台 上一个 DP 具体的数据类型,参考下表中 type 字段说明 |
len | 2 | 长度对应 value 的字节数,参考下表中 type 字段说明 |
value | 1/2/4/N | 用 16 进制表示,大于 1 字节采用大端传输 |
datapoint
中的 type
字段说明:
type |
数据类型 | 字节数 | 说明 |
---|---|---|---|
0x00 | Raw | N | 对应于 raw 型 datapoint ,采用模组透传的方式传输 |
0x01 | Bool | 1 | 范围:0x00/0x01 |
0x02 | Value | 4 | 又称 Integer 类型,采用大端表示 |
0x03 | String | N | 对应于具体字符串 |
0x04 | Enum | 1 | 枚举类型,范围 0-255 |
0x05 | Bitmap | 1/2/4 | 长度大于 1 字节时,大端表示 |
datapoint
命令/状态数据单元中,除 Raw 类型外,其他类型均属于 Object 数据类型。datapoint
命令数据单元。Wi-Fi 模组上电后,将会以 1 秒/次的频率持续发送心跳包,等待 MCU 回复。模组若收正确的心跳包回复,心跳包发送间隔变为 15 秒/次,继续执行其余初始化指令。模组若未收到正确回复,将保持 1 秒/次心跳包发送频率,直到收到正确回复。
MCU 也可依据心跳定期检测模组是否正常工作。若模组无心跳下发,则 MCU 可通过模组提供的硬件复位引脚复位 Wi-Fi 模组。若模组在超时时间(3s)内,未收到 MCU 的回应,则认为 MCU 离线。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x00 |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
发送示例:55 aa 00 00 00 00 ff
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x00 |
数据长度 | 2 | 0x0001 |
数据 | 1 |
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
55 aa 03 00 00 01 00 03
55 aa 03 00 00 01 01 04
产品信息由产品 ID 和 MCU 软件版本构成:
x.x.x
,其中 x
为十进制数,取值范围为 0-99。模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x01 |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 01 00 00 00
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x01 |
数据长度 | 2 | N |
数据 | N | {“p”:“AIp08kLIftb8x***”, “v”:“1.0.0”, “m”:1, “mt”:10, “n”:0, “ir”:“5.12”, “low”:0} |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:{"p":"AIp08kLIftb8x***", "v":"1.0.0", "m":1,"mt":10,"n":0,"ir":"5.12", "low":0}
产品信息示例字段说明:
字段 | 说明 |
---|---|
p | 表示产品 ID 为 AIp08kLIftb8x*** ,即您在涂鸦开发者平台上创建的产品的 PID。 |
v | 表示 MCU 版本为 1.0.0,MCU 版本号格式必须按照 x.x.x 的格式定义。 |
m | 表示模组工作方式:
|
mt | 设置安全模式和防误触模式的状态切换时间,没有上传这个字段统一按老的机制(三分钟)处理,可以支持的设置时间范围:3 分钟—10 分钟。 |
n | 表示模组的配网模式,没有该字段保持传统(两种配网方式互相切换)的模式:
|
ir | 启用模组的红外功能并告知模组红外的收发脚使用哪些 IO 口,没有这个字段红外能力默认关闭。 5.12:红外发送脚为 IO5,红外接收脚为 IO12。 注意:如果工作模式中使用模组自处理模式,请勿与按键和 Wi-Fi 指示灯设置的 IO 口重复。部分模组跨组 IO 设置,需要在设置组 IO 脚基础上加 32,PB20 设置序号为 20+32。红外发送脚需要用到 PWM 资源,接收需要使用 IO 中断,具体模组支持的 IO 口请参考模组资料。若需要模组自处理工作状态指示红外工作状态指示灯,可通过命令字 设备新功能设置通知命令(可选) 设置。 |
low | 模组是否开启保持长连接的低功耗模式,没有该字段低功耗模式默认关闭。对于有些产品对于没有网络控制的情况下,在模组保持和路由的连接下需要让模组的平均功耗低于 15mA,通过这个字段我们可以打开模组这个能力。双模模组打开这个功能后,模组只有蓝牙配网功能,蓝牙控制将会关闭。产品对于功耗没有要求的不需要关心这个字段。
|
vt | 表示 MCU 的固件类型,默认 MCU 固件类型为 9(为 9 时无需设置此字段),此字段数据可选值为 10—19。使用此字段则表示 MCU 固件类型为设置的值,且此数据与涂鸦开发者平台下的固件类型匹配。 |
vt 字段内容一定要与涂鸦开发者平台创建的固件类型数据匹配,否则会出现无法接收 OTA 信息或接收到错误的 OTA 升级信息,导致 OTA 升级异常。
模组的配网触发及指示方式,由 MCU 选择设定。模组工作模式主要针对如何指示 Wi-Fi 的工作状态以及如何重置配网 Wi-Fi 而言,主要分两种情况:
MCU 与模组配合处理模式:
MCU 检测配网触发信号,通过串口指令让 Wi-Fi 模组重置配网。模组通过串口通知 MCU,Wi-Fi 当前的工作状态,由 MCU 提供显示支持,家电类产品通常建议选择此模式。
模组自处理模式:
Wi-Fi 模组的工作状态通过 Wi-Fi 的 GPIO 引脚驱动 LED 状态显示。Wi-Fi 重置配网通过检测 GPIO 输入需求处理。
模组自处理 Wi-Fi 重置方法为:Wi-Fi 检测 GPIO 入口低电平持续 5s 以上触发 Wi-Fi 重置。指示灯与按钮所使用的 GPIO 管脚由以下命令配置。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x02 |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 02 00 00 01
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x02 |
数据长度 | 2 | 0x0000/0x0002/0x0003
|
数据 | 0/2/3 | 数据长度为 2:
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:
MCU 与模组配合处理:
55 aa 03 02 00 00 04
模组自处理,指示灯 0x0c:GPIO12,复位按钮 0x0d:GPIO13:
55 aa 03 02 00 02 0c 0d 1f
ir
:红外工作状态指示灯,红外状态指示灯使能即有效,可复用 Wi-Fi 网络状态指示灯,但注意不可与 02 命令字的其它功能 GPIO 冲突。红外工作指示灯,工作时指示规则如下:
buf
:MCU 串口资源 BUF 可承受的最大数据量。RF 遥控器功能在下发多键值的情况下以此字段数据参考是否分包发送键值。MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x37 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 子命令:0x00 |
{ “mcu_ota”:xx, “abv”:x, “ir”:xx, “buf”:xx } |
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:MCU 有程序暂存区,abv 使能 RF 遥控器功能,BUF 为 1024。{“mcu_ota”:0,“abv”:3,“buf”:1024}
55 aa 03 37 00 21 00 7b 22 6d 63 75 5f 6f 74 61 22 3a 30 2c 22 61 62 76 22 3a 33 2c 22 62 75 66 22 3a 31 30 32 34 7d ac
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x37 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 子命令:0x00 |
1 | Ret: 0x00:成功。 0x01:数据字段内容不合法。 0x02:设置执行失败。 | |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 37 00 02 00 00 3b
产品信息示例字段说明:
字段 | 是否必选 | 说明 |
---|---|---|
mcu_ota | 可选 | 设置 MCU 无程序暂存区 OTA,暂时只有 HomeKit 通用对接支持这个功能 |
abv | 可选 | 新增功能使能字段,1 个字节 8 个 bit,按位表示不同的功能
|
ir | 可选 | 红外工作状态指示灯,设置模组自处理时红外工作状态指示灯的 GPIO,GPIO 引脚编码规则同 02 命令字。示例: 5:表示红外工作状态指示灯引脚为 IO5 |
buf | 可选 | MCU 串口接收 BUF 大小,最小值为 256(字节) |
设备联网状态 | 描述 | 状态值 |
---|---|---|
状态 1 | Wi-Fi 快连配网配置状态(Wi-Fi & 蓝牙 LE 模组:蓝牙也处于配网状态) | 0x00 |
状态 2 | 热点联网配置状态(Wi-Fi & 蓝牙 LE 模组:蓝牙也处于配网状态) | 0x01 |
状态 3 | Wi-Fi 已配置但未连上路由器 | 0x02 |
状态 4 | Wi-Fi 已配置且连上路由器 | 0x03 |
状态 5 | 设备成功连接到云端 | 0x04 |
状态 6 | 主联网设备处于低功耗模式 | 0x05 |
状态 7 | Wi-Fi 设备处于 Wi-Fi 快连配网和热点联网配置状态(Wi-Fi & 蓝牙 LE 模组:蓝牙也处于配网状态) | 0x06 |
设备联网状态:
模组自处理工作模式相应的 LED 显示分别为:
当模组检测到 MCU 重启或 MCU 断线再上线的过程,则主动下发 Wi-Fi 状态至 MCU。
当模组的联网状态发生变化,则主动下发设备联网状态至 MCU。
如设置模组工作模式为模组自处理,则 MCU 无需实现该协议。
0x00
、0x01
或 0x06
时,蓝牙也处于可配网状态中。0x04
时,则表示设备已经成功接入涂鸦 IoT 云,不论是通过 Wi-Fi 还是通过蓝牙方式接入涂鸦 IoT 云。当通过蓝牙方式接入涂鸦 IoT 云时需结合蓝牙连接状态来判断是否 App 可控。模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x03 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 指示 Wi-Fi 工作状态:
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 03 00 01 00 03
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x03 |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 03 00 00 05
配网相关命令,模组收到该指令后会重启,初始化相关命令交互完成后模组进入配网模式,可以使用 App 进行配网。
重置 Wi-Fi 后模组工作状态转化如下图所示:
如设置模组工作模式为模组自处理,则 MCU 无需实现该协议。
模组自处理 Wi-Fi 重置方法为:Wi-Fi 检测 GPIO 入口低电平持续 5s 以上触发 Wi-Fi 重置。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x04 |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 04 00 00 06
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x04 |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 04 00 00 03
配网相关命令,与重制 Wi-Fi 命令功能类似。
相对于 重置 Wi-Fi 而言,此帧提供 MCU 根据自身需求选择性选择重置 Wi-Fi 后的配置方式。
MCU 接入用户可选择性的实现该协议。
如设置模组工作模式为模组自处理,则 MCU 无需实现该协议。
n
设置后,则此命令的指定切换功能无效。MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x05 |
数据长度 | 2 | 0x0001 |
数据 | 1 |
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:进入 Wi-Fi 快连配网配置模式
55 aa 03 05 00 01 00 08
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x05 |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 05 00 00 04
“命令下发可含多个 datapoint
状态数据单元。
“命令下发为异步处理协议,通常下发数据解析完成后,MCU 会根据 datapoint
数据执行对应功能,若 datapoint
状态发生改变,MCU 还需使用状态上报命令
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x06 |
数据长度 | 2 | 取决于命令数据单元类型以及个数 |
数据 | N | 状态数据单元 组 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:系统开关对应 3 号 DP,使用 bool 型变量,开机数值为 1
55 aa 00 06 00 05 03 01 00 01 01 10
datapoint
状态数据单元说明,请参考 状态数据单元。
该协议为异步处理协议,状态上报触发机制有三类:
datapoint
命令。再通过状态上报帧,将变化后的 datapoint
状态发送至模组。datapoint
有变化,将变化后的 datapoint
状态发送至模组。datapoint
状态发送至模组。状态上报可含多个 datapoint
状态数据单元”。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x07 |
数据长度 | 2 | 取决于 状态数据单元类型以及个数 |
数据 | N | 状态数据单元 组 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:
湿度对应 5 号 DP,使用 value 型变量,湿度为 30℃
55 aa 03 07 00 08 05 02 00 04 00 00 00 1e 3a
多个状态数据单元上报样例:
DP 点 109 bool 型变量,数值为 1
DP 点 102 string 型变量,201804121507
(具体传输对应 ASCII 值)
55 aa 03 07 00 15 6d 01 00 01 01 66 03 00 0c 32 30 31 38 30 34 31 32 31 35 30 37 62
此命令为同步指令,MCU 数据状态上报后,需要等待模组返回结果。
每次状态上报,模组都会有响应。模组未响应前,不可多次上报。
网络环境差、数据难以及时上报时,模组会在 5 秒后返回失败。此时,MCU 需要等待 5 秒以上。
datapoint
状态数据单元说明,请参考 状态数据单元。
状态上报可含多个 datapoint
命令数据单元。
datapoint
状态改变时上报即可,有利于保证数据传输稳定性。请避免在短时间内,持续循环进行数据上报。datapoint
的循环上报频率。建议最小上报间隔为 1 分钟。p
字段同步的 PID 在 涂鸦开发者平台 下设置的 DP 内容信息一致,不多报任何不存在的 DP。p
字段同步的 PID 在 涂鸦开发者平台 下设置的 DP 内容信息一致。MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x22 |
数据长度 | 2 | 取决于 状态数据单元 类型以及个数 |
数据 | N | 状态数据单元 组 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:上报 bool 型 dp1,状态为 true
55 aa 03 22 00 05 02 01 00 01 01 2e
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x23 |
数据长度 | 2 | 0x0001 |
数据 | Data |
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 23 00 01 01 24
此协议为同步指令。MCU 数据状态上报后,需要等待模组返回结果。
每次状态上报,模组都会有响应。模组未响应前,不可多次上报。
网络环境差、数据难以及时上报时,模组会在 5 秒后返回失败。此时,MCU 需要等待 5 秒以上。
datapoint
状态数据单元说明,请参考 状态数据单元。
状态上报可含多个 datapoint
命令数据单元。
对于类似门锁、电量统计插座等有记录或数据统计功能的设备,包含部分 DP 数据需要服务端统计记录的,可使用本条命令上报。当 MCU 需要记录数据是由多个 DP 组合的整条数据,MCU 则需要整体上报。
目前此功能在使用 Wi-Fi 通信方式时支持,蓝牙通信方式暂未迭代支持。但支持蓝牙通信方式后,您无需修改 MCU 代码,更新模组固件即可。
使用此功能时,请核对模组固件版本是否支持。
datapoint
状态改变时上报即可,有利于保证数据传输稳定性。请避免在短时间内,持续循环进行数据上报。datapoint
的循环上报频率。建议最小上报间隔为 1 分钟。p
字段同步的 PID 在 涂鸦开发者平台 下设置的 DP 内容信息一致,不多报任何不存在的 DP。p
字段同步的 PID 在 涂鸦开发者平台 下设置的 DP 内容信息一致。MCU 发送
字段 | 长度 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x34 |
数据长度 | 2 | 取决于 状态数据单元类型以及个数 |
数据 | 1 | 0x0b(子命令) |
1 | 0x01(默认填充此数据) | |
1 | 上报时间类型:
|
|
6 | 上传时间格式
|
|
N | 状态数据单元 组 | |
校验和 | 1 | 从帧头开始按字节求和得出的 结果 N 对 256 求余 |
例 1:上报 bool 型 dp,dpid 为 1,状态为 true,格林时间 2022.02.18.16:27:06 :55 aa 03 34 00 0e 0b 01 02 16 02 12 10 1b 06 01 01 00 01 01 b1
例 2:上报 Value 型 dp,dpid 为 2,状态为 100 和 Enum 型 dp,dpid 为 3,状态为 3,本地时间 2022.02.22.11:22:33:55 aa 03 34 00 16 0b 01 01 16 02 16 0b 16 21 02 02 04 00 00 00 64 03 04 01 03 40
模组返回
字段 | 长度 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x34 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 0x0b(子命令) |
1 | 上报状态:
|
|
校验和 | 1 | 从帧头开始按字节求和得出的 结果对 256 求余 |
示例:55 aa 00 34 00 02 0b 00 40
状态查询为异步处理协议,主要用于模组查询 MCU 所有的 obj 类型的 datapoint
状态,当 MCU 收到此帧时,通过 状态上报 帧上报 datapoint
状态。
状态查询发送时机主要有三种:
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x08 |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 08 00 00 07
何时升级由客户在涂鸦开发者平台自己的产品页面配置相关升级选项触发,模组仅作为支持 MCU 升级的数据传输通道,也不对数据内容做任何解析。
目前涂鸦平台的 MCU 升级支持下面四种升级方式的配置:
MCU 升级相关流程图:
Wi-Fi 模组发送完所有的升级包,重新发送 01 命令字(查询产品信息),MCU 需要在一分钟回复产品信息中的 MCU 软件版本号(升级后的版本号),版本号需要和在涂鸦后台配置升级的版本号保持一致。
升级启动方式含自动及手动升级。当处于自动升级时,模组检测云端 MCU 有更新版本固件,则自动启动与 MCU 升级包交互流程。当处于手动升级时,通过 App 确定,模组才启动与 MCU 升级包交互流程
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x0a |
数据长度 | 2 | 0x0004 |
数据 | 4 | 固件包字节数,unsigned int,大端 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 0a 00 04 00 00 68 00 75
表示固件包长度 26624,即 26KB。
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x0a |
数据长度 | 2 | 0x0001 |
数据 | 1 | 升级包分包传输大小:
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 0a 00 01 00 0d
升级包传输数据格式:包偏移 + 包数据。
MCU 若收到该帧数据长度为 4 字节,并且包偏移 ≥ 固件大小,则包传输结束。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x0b |
数据长度 | 2 | 0x0004+N |
数据 | 4+N |
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:
若要升级的文件大小 530Byte,(最后一包数据可不回复)
55 aa 00 0b 01 04 00000000 xx…xx XX
55 aa 00 0b 01 04 00000100 xx…xx XX
55 aa 00 0b 00 16 00000200 xx…xx XX
55 aa 00 0b 00 04 00000212 xx...xx XX
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x0b |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 0b 00 00 0d
格林时间不带有时区和夏令时的因素,是一个国际标准的时间基准。
当模组连接上网络后,本地的时间戳校准完成才会返回成功,并携带有效的时间数据。
0x03
后,也可以实现时间戳校准功能。设备与 App 连接建立时,App 需要连接外网。0x04
后,模组会执行时间戳校准功能。MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x0c |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 0c 00 00 0e
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x0c |
数据长度 | 2 | 0x0007 |
数据 | 7 | 数据长度为 7 字节:
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:格林时间 2016 年 4 月 19 日 5 时 6 分 7 秒
55 aa 00 0c 00 07 01 10 04 13 05 06 07 4c
本地时间是在格林时间的基础上加上当地(设备激活所在地)时区和夏令时的时间。
当模组连接上网络后,本地的时间戳校准完成才会返回成功,并带有有效的时间数据。
0x03
后,也可以实现时间戳校准功能。设备与 App 连接建立时,App 需要连接外网。0x04
后,模组会执行时间戳校准功能。MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x1c |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 1c 00 00 1e
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x1c |
数据长度 | 2 | 0x0008 |
数据 | 8 | 数据长度为 8 字节:
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
如设备在国内激活使用,则当地时间为北京时间(东 8 区)。
例:北京时间 2016 年 4 月 19 日 5 时 6 分 7 秒
55 aa 00 1c 00 08 01 10 04 13 05 06 07 02 5f
如果设备在国外激活使用,则当地时间为设备所处时区时间。
模组内部目前扫描指定的 SSID:tuya_mdev_test
,返回扫描结果和信号强度百分比。
这里为了最大程度防止不良品这里建议客户将路由于设备距离控制在 5 米左右,信号强度大于等于 60%为合格,这里可以根据自己产线和工厂环境的情况自行调整。
发送测试指令,请在模组初始化完成后发送,否则可能无效。更多详情,请参考 Wi-Fi 模组初始化流程。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x0e |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 0e 00 00 10
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x0e |
数据长度 | 2 | 0x0002 |
数据 | 2 | 数据长度为 2 字节: Data[0]: 0x00 失败,0x01 成功。
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:未扫描到指定的 ssid:55 aa 00 0e 00 02 00 00 0f
获取 Wi-Fi 模组剩余内存
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x0f |
数据长度 | 2 | 0x0000 |
数据 | Data | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
例:55 aa 03 0f 00 00 11
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x0f |
数据长度 | 2 | 0x0004 |
数据 | 4 | 数据长度为 4 字节,大端格式: 如 0x00 0x00 0x28 0x00 代表剩余 10240 字节内存 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
例:MemorySize: 53328 Byte:55 aa 00 0f 00 04 50 d0 00 00 32
打开获取天气数据功能
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x20 |
数据长度 | 2 | N((L+K)+(L+K)…) |
数据 | n | data:
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
天气服务支持的字段功能说明可参考 天气预报服务功能。
示例:请求参数 w.temp,w.pm25
55 aa 03 20 00 0e 06 77 2e 74 65 6d 70 06 77 2e 70 6d 32 35 80
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x20 |
数据长度 | 2 | 0x0002 |
数据 | 2 |
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例: 55 aa 00 20 00 02 01 00 22
下发天气数据,在打开天气数据功能后模组定时下发,开启功能后会立马下发一次,后续以 30 分钟的间隔下发。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x21 |
数据长度 | 2 | N((LKTLV)+(LKTLV)+…) |
数据 | Data |
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x21 |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
请求参数如 w.temp,w.pm25 返回 w.temp,返回参数少于请求参数请仔细检查请求参数名是否正确。
天气服务支持的字段功能说明可参考 天气预报服务功能
示例:w.humidity:69,w.temp:32,w.pm25:10
55 aa 00 21 00 30 01 0a 77 2e 68 75 6d 69 64 69 74 79 00 04 00 00 00 45 06 77 2e 74 65 6d 70 00 04 00 00 00 20 06 77 2e 70 6d 32 35 00 04 00 00 00 10 1e 5c
MCU 发送
字段 | 长度 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x34 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x03(子命令) |
校验和 | 1 | 从帧头开始按字节求和得出的 结果对 256 求余 |
示例:55 aa 03 34 00 01 03 3a
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x34 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 0x03(子命令) |
1 | 执行结果:
|
|
校验和 | 1 | 从帧头开始按字节求和得出的 结果对 256 求余 |
示例:55 aa 00 34 00 02 03 00 38
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x24 |
数据长度 | 2 | 0 |
数据 | N | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 24 00 00 26
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x24 |
数据长度 | 2 | 0x0001 |
数据 | Data |
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:RSSI: -20:55 aa 00 24 00 01 ec 10
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x25 |
数据长度 | 2 | 0 |
数据 | N | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
例:55 aa 03 25 00 00 27
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x25 |
数据长度 | 2 | 0 |
数据 | N | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
例:55 aa 00 25 00 00 24
对于需要休眠降低功耗的 MCU 模组,可在休眠前发送该指令关闭 Wi-Fi 模组心跳,方便进入休眠状态。该指令请勿在设备刚上电时发送,Wi-Fi 模组上电后需要和 MCU 建立心跳连接。
标准对接使用 App 与模组交互实现配网功能的客户无需实现此命令功能。
适用于本地配网的场景,利用涂鸦 App 或者涂鸦 App 的 SDK 自主开发,拿到相关配网参数,并通过串口给到模组这些数据,来实现通过串口通信完成模组的配网操作。
模组必须处于待配网状态才能完成串口配网。
模组返回成功接收串口配网信息的应答之后便会使用拿到的信息去连接路由,并到云端激活。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x2A |
数据长度 | 2 | xx |
数据 | Data | {“s”:“xxx”, “p”:“yyy”, “t”:“zzz”}
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:{“s”:“xxx”, “p”:“12345678”, “t”:“zzz”}
55 aa 03 2a 00 24 7b 22 73 22 3a 22 78 78 78 22 2C 22 70 22 3a 22 31 32 33 34 35 36 37 38 22 2c 22 74 22 3a 22 7a 7a 7a 22 7d B7
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x2A |
数据长度 | 2 | 0x0001 |
数据 | x |
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 2a 00 01 01 2b
设备联网状态 | 描述 | 状态值 |
---|---|---|
状态 1 | Wi-Fi 快连配网配置状态(Wi-Fi & 蓝牙 LE 模组:蓝牙也处于配网状态) | 0x00 |
状态 2 | 热点联网配置状态(Wi-Fi & 蓝牙 LE 模组:蓝牙也处于配网状态) | 0x01 |
状态 3 | Wi-Fi 已配置但未连上路由器 | 0x02 |
状态 4 | Wi-Fi 已配置且连上路由器 | 0x03 |
状态 5 | 设备成功连接到云端 | 0x04 |
状态 6 | 主联网设备处于低功耗模式 | 0x05 |
状态 7 | Wi-Fi 设备处于 Wi-Fi 快连配网和热点联网配置状态(Wi-Fi & 蓝牙 LE 模组:蓝牙也处于配网状态) | 0x06 |
与 报告设备联网状态 保持一致。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x2B |
数据长度 | 2 | 0x0000 |
数据 | Data | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例: 55 aa 03 2b 00 00 2d
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x2B |
数据长度 | 2 | 0x0001 |
数据 | 1 |
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:状态 4(已连上路由器且连接到云端): 55 aa 00 2b 00 01 04 2f
扫地机流服务的命令不是所有模组都支持,需要使用特定的模组开通相关服务才可以正常使用该服务。
该服务目前针对扫地机地图数据传输的服务,作为扫地机和涂鸦 App 地图数据在线上的一个特殊快捷通道。
扫地机一次完整的地图数据靠协议中的地图 ID 去区分,同一个 ID 的数据 App 端会认为这是一张地图数据会一直累加处理。
扫地机在清扫过程中需要在全屋范围内移动,这里涉及到部分区域 Wi-Fi 信号弱可能会导致数据上传失败,在模组内存充足的前提下,目前可以缓存 24 条数据。
偏移量表示一次地图数据 MCU 已经发送的数据总长。
目前模组串口最大可以缓存的数据部分可以达到 1024 字节,一包地图数据包数据部分不能超过 1024 字节,每包地图数据内容建议 512 字节。
地图 ID 作为一次完整地图数据的标志,数据传输方需要在一次清扫完成,也就是一张地图数据结束后,新的清扫开始时,改变地图 ID,一般以递增的方式进行。当地图 ID 改变,当前地图数据 App 界面显示,会清除之前数据,重新开始显示。
开始数据传输后,模组会停止心跳包发送,保证地图数据的优先传输,后面模组不断电的前提下不会主动恢复心跳包的发送。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x28 |
数据长度 | 2 | 0x0006+N |
数据 | 2 | data[0]–data[1]地图 ID 号:地图 ID 号作为一张地图数据的归属标识。 |
4 | data[2]–data[5]偏移量(首包为 0) | |
N | data[6]–data[N]实体数据(大端模式) | |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:地图 ID:123。包偏移量:0
55 aa 03 28 xx xx 00 7b 00 00 00 00 xx xx xx xx xx
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x28 |
数据长度 | 2 | 0x0001 |
数据 | 1 | Data
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 28 00 01 00 28
说明:
扫地机流服务的命令不是所有模组都支持,需要使用这个服务需要使用特定的模组开通相关的服务才可以正常使用。
这个服务目前针对扫地机地图数据传输的服务,作为扫地机和涂鸦 App 地图线上的一个特殊快捷通道。
此通道用于扫地一张地图显示有多张数据图合成的扫地机机使用。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x30 |
数据长度 | 2 | 0x0009+N |
数据 | 1 | 地图服务协议版本:0x00 |
2 | 地图服务会话 ID 号:作为一次地图显示的标志 | |
6 |
|
|
N | 实体数据(大端模式) | |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 30 00 xx 00 00 00 01 00 00 00 00 xx xx xx xx xx xx
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x30 |
数据长度 | 2 | 0x0001 |
数据 | 1 |
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 30 00 01 00 33
说明:
此命令为地图流服务单张地图和多张地图传输协议的补充。
地图会话 ID 由模组管理。MCU 在传一张新的地图数据时,可以先向模组申请地图会话 ID(子地图 ID 不用申请,根据子地图个数,依次为 0x01、0x02、0x03……即可),模组会在回复时将此次地图会话 ID 返回给 MCU,随后 MCU 传输这张地图的地图会话 ID 都需要使用此 ID。
用户如果想自行管理地图会话 ID,可以不使用此命令。
MCU 发送
字段 | 长度 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x34 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x06(子命令) |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 30 00 01 00 33
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x34 |
数据长度 | 2 | 0x0004 |
数据 | 1 | 0x06(子命令) |
1 | 传输结果。
|
|
2 | 地图会话 ID(如果传输结果失败,此数据为无效数据)。 | |
校验和 | 1 | 从帧头开始按字节求和得出的 结果对 256 求余 |
示例:55 aa 00 34 00 04 06 00 00 00 3d
MCU 发送路由信息模组返回成功后,模组会使用相关信息去连接路由。
MCU 判断是否连接上路由器,根据收到模组 报告设备联网状态 中的(状态 4-Wi-Fi 已配置且连上路由器)的包为准。MCU 收到返回失败,或者长时间(超过 15s)没有收到连上路由的状态包,认为测试失败。
产测成功重复进入产测可以重新发送测试命令,没有收到连上路由的包表示模组正在产测中需要重置模组或者重新上电后发送测试命令才有效。
模组需要在处于未被配网的状态下才能完成连接测试。
产测前必须回复模组的心跳包且产品查询包模组完成初始化才能进入连接路由的产测。
路由器名称字符串长度最大支持 32 个字节,路由器密码字符串长度最大支持 64 个字节。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x2C |
数据长度 | 2 | n |
数据 | n | {“ssid”:“xxx”, “password”:“xxxxxxxx”}
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:{“ssid”:“xxx”, “password”:“12345678”}
55 aa 03 2c 00 24 7b 22 73 73 69 64 22 3a 22 78 78 78 22 2c 22 70 61 73 73 77 6f 72 64 22 3a 22 31 32 33 34 35 36 37 38 22 7d 2c
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x2C |
数据长度 | 2 | 0x0001 |
数据 | 1 | 数据长度为 1 字节。 Data[0]:
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 2c 00 01 01 2d
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x2d |
数据长度 | 2 | 0x0000 |
数据 | Data | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 2d 00 00 2f
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x2d |
数据长度 | 2 | 0x0007 |
数据 | Data |
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:MAC: 508A0E3A2D9
55 aa 00 2d 00 07 00 50 8a 06 e3 a2 d9 71
设备红外状态 | 描述 | 状态值 |
---|---|---|
状态 1 | 正在发送红外码 | 0x00 |
状态 2 | 发送红外码结束 | 0x01 |
状态 3 | 红外学习开始 | 0x02 |
状态 4 | 红外学习结束 | 0x03 |
红外功能的通过涂鸦开发者平台配置或者相关项目经理手动开通并寄样。
红外码发送的时间周期非常短,并且需要保持好的实时性,这里的串口数据直接发送,不做相关重发。
客户根据自己的开发需求,根据红外状态做相关状态显示。
红外功能的发码和接受红外码需要使用到模组的两个 IO 脚,如果您的设备使用的联网状态也是模组自处理模式,请注意 IO 口不要设置相关的 IO 脚。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x2e |
数据长度 | 2 | 0x0001 |
数据 | Data | 指示红外工作状态。
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 2e 00 01 00 2e
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x2e |
数据长度 | 2 | 0x0000 |
数据 | Data | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 2e 00 00 30
红外产测功能需要在未配网状态下才会进入。
模组进入红外产测状态就会进入红外学习状态。
模组一旦进入红外产测模式就会一直处于产测状态,不断根据学习到数据再发送出来,当模被配上网或者被断电就会退出产测。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x2f |
数据长度 | 2 | 0x0000 |
数据 | Data | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 2f 00 00 31
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x2f |
数据长度 | 2 | 0x0001 |
数据 | Data |
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 2f 00 01 00 2f
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x33 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 子命令。0x01:射频学习类命令 |
1 | 控制状态。
|
|
校验和 | 1 | 从帧头开始按字节求和得出的 结果对 256 求余 |
示例:55 aa 00 33 00 02 01 01 36
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x33 |
数据长度 | 2 | 0x0003 |
数据 | 1 | 子命令:0x01 |
1 | 控制状态。0x01:进入射频学习状态 | |
1 | ACK 状态。
|
|
校验和 | 1 | 从帧头开始按字节求和得出的 结果对 256 求余 |
示例:55 aa 03 33 00 03 01 01 00 3a
射频数据简称键值,一条完整射频数据可由多个键值组成,键值数过多可串口分包发送。
射频数据编码方式为固定编码,即根据发送速率决定每个 bit 发送时长,单个 bit 为 1 为发送为 0 为不发送,高位先发。
学习码下发 MCU 无需解析频率与发送速率字段,只需解析 Data 字段。
模组发送
字段 | 长度 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x33 |
数据长度 | 2 | 0x07+n*(T+D+I+L+C) |
数据 | 1 | 子命令:0x02 |
1 | 发送类型。0x00:码库下发 0x01:学习码下发 | |
1 | 键值数: n | |
1 | 键值偏移序号。
|
|
1 | 频率。0:315 Mhz,1:433.92 Mhz | |
2 | 发送速率。例如,2777bps | |
N | Data
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 33 00 xx 02 01 00 ff 00 0a d9 00 00 00 00 00 00 xx xx xx xx xx xx xx
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x33 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 子命令:0x02 |
1 | ACK 状态:
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 33 00 02 02 00 36
MCU 发送
字段 | 长度 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x33 |
数据长度 | 2 | 0x0002+N |
数据 | 1 | 子命令 :0x03 |
1 | 状态。
|
|
N | 内容:学习失败无此字段,学习成功:学习数据上报无固定格式,MCU 端可理解的格式即可 | |
校验和 | 1 | 从帧头开始按字节求和得出的 结果对 256 求余 |
示例:55 aa 03 33 xx xx 03 00 xx xx xx xx xx xx
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x33 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 子命令:0x03 |
1 | ACK 状态。
|
|
校验和 | 1 | 从帧头开始按字节求和得出的 结果对 256 求余 |
示例:55 aa 00 33 00 02 03 00 37
文件下载流程:
此图示意了单个文件下载流程,多文件下载是在此示意图上的循环。
当文件传输的过程中,模组端因为数据超时发送退出,则退出所有下载流程
在文件传输的过程中会停止心跳查询,以及终止 dp 下发等其他的相关操作,文件传输流程只执行文件传输相关交互。
当有下载事件触发时,使用此命令通知 MCU。MCU 根据当前设备情况确认是否执行文件下载操作。
此命令当使用的业务为非扫地机语音文件下载功能时下载启动通知。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x37 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 子命令:0x01 |
1 | 0x01:固定 0x01 | |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 37 00 02 01 01 3a
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x37 |
数据长度 | 2 | 0x0003 |
数据 | 1 | 子命令:0x01 |
1 | Ret:是否同意启动下载服务:0x01:拒绝 0x00:同意 | |
1 |
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 37 00 03 01 00 07 41
当有下载事件触发时,使用此命令通知 MCU 当前所下载文件信息。
扫地机语音文件下载业务无此功能命令。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x37 |
数据长度 | 2 | 0x0001+N |
数据 | 1 | 子命令:0x02 |
N | { “num”:n,此次批量下载文件数量 “name”: [“xx”, “xx”, “xx”,…], 文件名称 “id”:[n,n,n,……] ,文件序号 “len”: [n,n,n,…] ,文件长度 “type”: [n,n,n,…] ,每个文件类型 “file_info”:[“xx”, “xx”,…],每个文件自定义数据 “ext_info”:“xxxx”,自定义数据,用于此次下载的拓展数据 “act”:xx 此次下载的文件的对应操作 } |
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
字段说明:
名称 | 打印 | 文本显示 | 语音播放 | 视频播放 | 存储 |
---|---|---|---|---|---|
类型数值 | 1 | 2 | 3 | 4 | 5 |
注:若客户未使用其中的数据内容,Wi-Fi 模组将不会传输这个字段。
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x37 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 子命令:0x02 |
1 | Ret:执行结果。
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 37 00 02 02 00 3d
升级包传输数据格式:包偏移(unsigned short) + 包数据。
MCU 若收到该帧数据长度为 5 且包偏移 ≥ 固件大小,则包传输结束。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x37 |
数据长度 | 2 | 0x02+0x0004+数据包长度 |
数据 | 1 | 子命令:0x03 |
1 | 当前对应传输文件偏移序号。第一个文件为 1,第二个文件为 2…… | |
4 | 当前文件包的包偏移量 | |
N | 数据包内容 | |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:文件序号为 1。包偏移量为 0
55 aa 00 37 xx xx 03 01 00 00 00 00 00 xx xx xx xx xx
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x37 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 子命令:0x03 |
1 | Ret:执行结果。
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 37 00 02 03 00 3e
说明:此功能命令是用于 MCU 反馈文件的执行状态,是否成功执行。
此功能是可选功能,具体的执行依赖业务场景,当业务需要展示执行状态时,通过此功能命令反馈。协议中 Act
的数据也是可选的,根据具体业务来反馈。
此功能中的 ID 数据对应于 0x3702 命令中的 ID(文件序号),这个是唯一的,也需要做好对应关系。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x37 |
数据长度 | 2 | 0x01+l+L+2 |
数据 | 1 | 子命令:0x05 |
1 | ID 的长度 | |
L | 文件的 ID: 对于 0x3702 命令字中的 ID 数据 | |
1 | Act :
|
|
1 |
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:打印机业务,打印 ID 为 10 的文件进行 20%
55 aa 03 37 05 05 01 0a 01 14 63
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x37 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 子命令:0x05 |
1 | Ret :
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 37 00 02 05 00 3d
文件上传流程:
MCU 需要文件上传时,使用此命令通知。
MCU 发送
字段 | 长度(byte) | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x37 |
数据长度 | 2 | 0x0001+N |
数据 | 1 | 子命令:0x06 |
N | { “num”:n;此次批量下载文件数量 “files”[ { “name”:“xx”,文件名称 “id”:n 文件序号
“type”: n, 每个文件类型 “file_info”:“xx”,每个文件自定义数据 }, { “name”:“xx”,文件名称 “id”:n 文件序号
“type”: n, 每个文件类型 “file_info”:“xx”,每个文件自定义数据 }, …… ] “ext_info”:“xxxx” } |
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
模组返回
字段 | 长度(byte) | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x37 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 子命令:0x06 |
1 | Ret :执行结果
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
MCU 发送
字段 | 长度(byte) | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x37 |
数据长度 | 2 | 0x00020x0004 + 数据包长度 |
数据 | 1 | 子命令:0x07 |
2 | 当前对应传输文件 ID | |
4 | 固件包偏移 | |
N | 数据包内容 | |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
模组发送
字段 | 长度(byte) | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x37 |
数据长度 | 2 | 0x0003 |
数据 | 1 | 子命令:0x07 |
1 |
|
|
1 |
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x37 |
数据长度 | 2 | 0x0003 |
数据 | 1 | 子命令:0x04 |
1 | Ret:
|
|
1 |
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 37 00 03 04 02 00 42
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x37 |
数据长度 | 2 | 0x0003 |
数据 | 1 | 子命令:0x04 |
1 | Ret:
|
|
1 |
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 37 00 03 04 02 00 3f
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x37 |
数据长度 | 2 | 0x0004 |
数据 | 1 | 子命令:0x08 |
1 |
|
|
1 | Ret:执行结果。
|
|
1 |
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 37 00 04 08 01 00 00 43
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x37 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 子命令:0x08 |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 37 00 01 08 42
本目录下的协议适用语音模组 VWXR2 的通用对接
其他非语音模组的通用固件没有本目录下相关协议功能
语音模组的语音状态码会自动返回,MCU 也可以主动查询。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x60 |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 60 00 00 62
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x60 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 语音状态码:
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 60 00 01 00 60
该命令字可以设置静音,也可查询静音状态。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x61 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 静音设置值。
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 61 00 01 00 64
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x61 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 静音状态值。
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 61 00 01 00 61
该命令字可以设置音量,也可查询音量。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x62 |
数据长度 | 2 | 0x0001 |
数据 | 1 |
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 62 00 01 03 68
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x62 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 音量值:0-10 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 62 00 01 03 65
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x63 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 音频产测值。
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 63 00 01 02 68
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x63 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 音频产测状态
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 63 00 01 02 65
进入唤醒测试后,要求 10s 播放唤醒词电信号,10s 超时返回失败。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x64 |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 64 00 00 66
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x64 |
数据长度 | 2 | 0x0001 |
数据 | 0 | 唤醒结果返回
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 64 00 01 01 65
扩展语音模组的相关系统功能增加:
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x65 |
数据长度 | 2 | N |
数据 | 1 | 子命令:0x00 |
Data: { “play”:true, “bt_play”:true ,“ctrl_group”:“xxxx”} |
|
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:{“play”:true,“bt_play”:true,“ctrl_group”:“next”}
55 aa 03 65 00 31 00 7b 22 70 6c 61 79 22 3a 74 72 75 65 2c 22 62 74 5f 70 6c 61 79 22 3a 74 72 75 65 2c 22 63 74 72 6c 5f 67 72 6f 75 70 22 3a 22 6e 65 78 74 22 7d c7
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 子命令:0x00 |
1 | 操作结果:
|
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 65 00 02 00 00 66
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 1+N |
数据 | 1 | 子命令:0x01 |
Data:{ “play”:true, “bt_play”:true,“ alarm”:“xxxx”, “ ctrl_group”:“xxxx” } |
|
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:{“play”:true,“bt_play”:true,“ctrl_group”:“next”, “alarm”:“xxx”}
55 aa 00 65 00 3f 01 7b 22 70 6c 61 79 22 3a 74 72 75 65 2c 22 62 74 5f 70 6c 61 79 22 3a 74 72 75 65 2c 22 63 74 72 6c 5f 67 72 6f 75 70 22 3a 22 6e 65 78 74 22 2c 22 61 6c 61 72 6d 22 3a 22 78 78 78 22 7d 36
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 2 |
数据 | 1 | 子命令:0x01 |
1 | 操作结果。
|
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 65 00 02 01 00 6a
此功能为 MCU 主动唤醒模组。
目前此功能只有 Linux 系统的通用对接模组支持。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x01 |
数据 | 1 | 子命令:0x02 |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 65 00 01 02 6a
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x02 |
数据 | 1 | 子命令:0x02 |
1 | 操作结果。
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 65 00 02 02 00 68
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x02 |
数据 | 1 | 子命令:0x03 |
1 |
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 65 00 02 03 00 6c
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x02 |
数据 | 1 | 子命令:0x03 |
1 | 操作结果。
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 65 00 02 03 00 69
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0xXX |
数据 | 1 | 子命令:0x04 |
1 | { “text”:“UTF-8 内容”, “speaker”:“human”,//robot “id”:1171 } |
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例: {“text”:“xx”, “speaker”:“human”, “id”:1171}
55 aa 03 65 00 2b 04 7b 22 74 65 78 74 22 3a 22 78 78 22 2c 22 73 70 65 61 6b 65 72 22 3a 22 68 75 6d 61 6e 22 2c 20 22 69 64 22 3a 31 31 37 31 7d 69
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x01 |
数据 | 1 | 子命令:0x04 |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例: 55 aa 00 65 00 01 04 69
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x01 |
数据 | 1 | 子命令:0x05 |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例: 55 aa 03 65 00 01 05 6d
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x0002+N |
数据 | 1 | 子命令:0x05 |
1 | 操作结果: Data[0]:
|
|
N | 操作结果为 0x01 时无此部分内容。 { “artist”:“贝多芬”, “trackTitle”:“D 大调小夜曲” }//中文按照 UTF-8 编码 |
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:{“artist”:“贝多芬”, “trackTitle”:“D 大调小夜曲” }
55 aa 00 65 00 34 05 00 7b 22 61 72 74 69 73 74 22 3a 22 e8 96 9b e4 b9 8b e8 b0 a6 22 2c 22 74 72 61 63 6b 54 69 74 6c 65 22 3a 22 e5 8a a8 e7 89 a9 e4 b8 96 e7 95 8c 22 7d dc
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x02 |
数据 | 1 | 子命令:0x06 |
状态。
|
||
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 65 00 02 06 00 6f
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x02 |
数据 | 1 | 子命令:0x06 |
1 | 操作结果。
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 65 00 02 06 00 6c
该命令可主动触发模组进入录音状态,设备会智能拾取人声并自动结束录音,最大录音时长为 10 秒。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x02 |
数据 | 1 | 子命令:0x07 |
状态。0x01:开始录音 | ||
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 65 00 02 07 01 71
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x02 |
数据 | 1 | 子命令:0x07 |
1 | 操作结果。
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 65 00 02 07 00 6d
该命令可主动触发模组进入录音状态,需要手动发送结束录音,最大录音时长为 10 秒。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x02 |
数据 | 1 | 子命令:0x08 |
1 | 状态。
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 65 00 02 08 00 71
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x02 |
数据 | 1 | 子命令:0x08 |
1 | 操作结果。
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 65 00 02 08 00 6e
此功能开启后闹铃会通过 0x650A 命令字传输。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x02 |
数据 | 1 | 子命令:0x09 |
1 |
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 65 00 02 09 01 73
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x02 |
数据 | 1 | 子命令:0x09 |
1 | 操作结果。
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 65 00 02 09 00 6f
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0xXX |
数据 | 1 | 子命令:0x0A |
|
||
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:闹钟 ID:1。时间:2021/08/23 17:32。单次执行。
55 aa 00 65 00 24 0a 01 01 00 00 00 00 00 01 15 08 17 11 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fa
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x01 |
数据 | 1 | 子命令:0x0A |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 65 00 01 0a 72
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x01 |
数据 | 1 | 子命令:0x0B |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 65 00 01 0b 73
模组返回闹铃用命令字 0x650A 下发
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x02 |
数据 | 1 | 子命令:0x0C |
状态。0x00:关闭,0x01: 开启 | ||
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 65 00 02 0c 00 75
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x02 |
数据 | 1 | 子命令:0x0C |
1 | 操作结果: 0x00: 成功 0x01: 失败 | |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 65 00 02 0c 00 72
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0xXX |
数据 | 1 | 子命令:0x0D |
状态。
|
||
JSON 数据,参考下方说明 | ||
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:{“date”:“20210326”, “time”:“17:05”, “loops”:“0000000”, “timeZone”:“+08:00”, “bell”:0}
55 aa 03 65 00 53 0d 01 7b 22 64 61 74 65 22 3a 22 32 30 32 31 30 33 32 36 22 2c 22 74 69 6d 65 22 3a 22 31 37 3a 30 35 22 2c 22 6c 6f 6f 70 73 22 3a 22 30 30 30 30 30 30 30 22 2c 22 74 69 6d 65 5a 6f 6e 65 22 3a 22 2b 30 38 3a 30 30 22 2c 22 62 65 6c 6c 22 3a 30 7d 9e
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x09 |
数据 | 1 | 子命令:0x0D |
1 | 操作码。
|
|
1 | 操作结果。
|
|
6 | 操作的 timerId | |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 65 00 09 0d 01 00 00 00 00 00 00 0a 85
闹钟操作 JSON 数据格式
添加闹钟:
名称 | 类型 | 描述 | 参数是否可选 |
---|---|---|---|
time | String | 闹钟时间,例如:08:30。 | N |
loops | String | 循环执行,从星期天到星期六,为 1 的那天执行。如 0100001,表示星期 1 和星期 6 执行。 | N |
date | String | 闹钟日期,循环闹钟取默认值 00000000,单次取要执行的那天的日期。例如:20181126。 | N |
timeZone | String | 时区,如:+08:00。 | N |
bell | Integer | 铃声:格式正整数。
|
Y |
bellDesc | String | 在线铃声描述,用于播放选择具体的歌曲。 | Y |
{ "date": "20181126", "time": "20:30", "loops": "0000000", "timeZone": "+08:00", "bell":1 }
{ "date": "00000000", "time": "08:00", "loops": "0111110", "timeZone": "+08:00", "bell":1 }
修改闹钟:
名称 | 类型 | 描述 | 参数是否可选 |
---|---|---|---|
time | String | 闹钟时间,例如:08:30。 | N |
loops | String | 循环执行,从星期天到星期六,为 1 的那天执行。如 0100001,表示星期 1 和星期 6 执行。 | N |
date | String | 闹钟日期,循环闹钟取默认值 00000000,单次取要执行的那天的日期。例如:20181126。 | N |
timerId | Long | 闹钟 ID。 | N |
timeZone | String | 时区,如:+08:00。 | N |
bell | Integer | 铃声:格式正整数。
|
Y |
bellDesc | String | 在线铃声描述,用于播放选择具体的歌曲。 | Y |
{ "timerId": 10164075, "date": "20210322", "time": "14:30", "loops": "0000000", "timeZone": "+08:00", "bell":1 }
{ "timerId": 10164075, "date": "20210322", "time": "14:30", "loops": "0111110", "timeZone": "+08:00", "bell":1 }
删除闹钟:
请求参数 | |||
---|---|---|---|
名称 | 类型 | 描述 | 参数是否可选 |
timerId | Long | 闹钟 ID | N |
请求示例
{“timerId”: 1002}
暂停闹钟:
请求参数 | |||
---|---|---|---|
名称 | 类型 | 描述 | 参数是否可选 |
timerId | Long | 闹钟 ID | N |
请求示例
{“timerId”: 1002}
启动闹钟:
请求参数 | |||
---|---|---|---|
名称 | 类型 | 描述 | 参数是否可选 |
timerId | Long | 闹钟 ID | N |
请求示例
{“timerId”: 1002}
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x01 |
数据 | 1 | 子命令:0x0E |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 65 00 01 0e 76
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x02 |
数据 | 1 | 子命令:0x0E |
1 | 提醒个数 0~30 | |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 65 00 02 0e 02 76
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x0001+N |
数据 | 1 | 子命令:0x0F |
N | { “text”: “xxx”, //设备端保存的文本播放内容或文本指令 “type”: “tts/music”, // tts 为播报文本内容,music 为后续自定义铃声 “target”: “alert/clock”, //闹钟还是提醒 } |
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:{“text”:“播放贝多芬的歌”, “type”:“music”, “tasget”:“alert”}
55 aa 03 65 00 41 0f 7b 22 74 65 78 74 22 3a 22 e6 92 ad e6 94 be e6 9e 97 e4 bf 8a e6 9d b0 e7 9a 84 e6 ad 8c 22 2c 22 74 79 70 65 22 3a 22 6d 75 73 69 63 22 2c 22 74 61 73 67 65 74 22 3a 22 61 6c 65 72 74 22 7d 91
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x65 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 子命令:0x0F |
1 | 操作结果。
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 65 00 02 0f 00 75
如果 MCU 需要模组每次重新上电通知 MCU 模组的时间是否已经到云端校准,MCU 可以通过这个命令打开模组的主动通知 MCU 需要的时间数据服务。
模组上电后收到服务开启,当时间校准后会根据 MCU 发送的主动通知相关需要的时间服务,选择发送相关 MCU 需要的时间数据。
模组不重新上电的情况下服务开启后不接受重复开启,模组不重启的情况下需要获取时间走时间相关获取协议。
目前 获取系统时间(格林时间) 和 获取本地时间 的获取时间协议,模组在连接上服务器之后时间戳并不会马上校准,有个时间周期导致每次上电都要 MCU 不断的重试去获取时间,这个服务开启后,模组在时间校准之后会主动通知 MCU。
MCU 发送
字段 | 长度 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x34 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 0x01(子命令) |
1 |
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 34 00 02 01 01 3a
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x34 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 0x01(子命令) |
1 | 0x00:服务开启成功。0x01:服务开启失败 | |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 34 00 02 01 00 36
模组根据 MCU 发送的打开时间通知的服务,选择发送相对应的时间数据。
模组重新上电,服务都是关闭的,都需要 MCU 重新发送打开模组时间通知服务。
模组发送
字段 | 长度 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x34 |
数据长度 | 2 | 0x0009 |
数据 | 1 | 0x02(子命令) |
1 |
|
|
7 | 数据长度为 6 字节。
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:Type: 1(本地时间), Time: 2021/08/23 18:35:28 星期一
55 aa 00 34 00 09 02 01 15 08 17 12 23 1c 01 c5
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x34 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x02(子命令) |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 34 00 01 02 39
目前模组支持本地移除、App 移除、App 恢复出厂设置,但是 MCU 无法知道模组这些状态的通知,这个服务用于有需要的用户打开模组状态通知。
MCU 发送
字段 | 长度 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x34 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x04(子命令) |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 34 00 01 04 3b
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x34 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 0x04(子命令) |
1 | 执行结果:
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 34 00 02 04 00 39
设备重置状态 | 描述 | 状态值 |
---|---|---|
状态 1 | 模组本地重置 | 0x00 |
状态 2 | App 远程重置 | 0x01 |
状态 3 | App 恢复出厂重置 | 0x02 |
重置状态的发送最多也会重发两次,重发间隔保持 1 秒。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x34 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 0x05(子命令) |
1 | 重置状态:
|
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 34 00 02 05 00 3a
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x34 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x05(子命令) |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 34 00 01 05 3c
针对有些产品需求,需要知道 Wi-Fi 模组的一些运行数据情况,都统一使用这个字段用于获取。
MCU 可根据自己所需要的数据发送对应功能编码来获取。当 MCU 需要多种数据时请按照对应编码,依次顺序排列发送给 Wi-Fi 模组。
若 MCU 需要获取当前所有支持的数据,使用 0xff 编码即可。
此命令当前只支持获取 AP 热点 SSID 功能。其他功能后续根据需求增加。
当 AP 热点是默认的 smartlife 时,此命令只返回 smartlife 信息,实际热点名称为 smartlife_xxxx(设备 MAC 后四位)。
名称 | 编码 |
---|---|
获取所有当前支持的数据信息 | 0xff |
AP ssid 名称 | 0x01 |
国家码 | 0x02 |
SN 信息 | 0x03 |
FFS 授权记录 | 0x04 |
……… | ……… |
模组返回数据字段说明表:模组运行信息字段说明表
0
。1
,并携带 SN 信息用于辅助校验信息合法性。MCU 发送
字段 | 长度 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x34 |
数据长度 | 2 | 0x01+0x01+…N |
数据 | 1 | 子命令 0x07 |
Data(1) |
|
|
Data(2) |
|
|
Data(N) |
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例: 55 aa 03 34 00 02 07 01 40
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x34 |
数据长度 | 2 | 0x02+N |
数据 | 1 | 0x07(子命令) |
1 | 执行结果: 0x00:成功; 0x01:失败 (当执行失败后,无后续 data 内容) | |
Data(N) | { “ap” :“xxxxx”; “cc” :xx; “sn”:“xxxx”; “ffs”:x } |
|
校验和 | 1 | 从帧头开始按字节求和得出的 结果对 256 求余 |
示例:{“ap”:“PlusStyle”}
55 aa 00 34 00 14 07 00 7b 22 61 70 22 3a 22 50 6c 75 73 53 74 79 6c 65 22 7d 8e
模组内部目前扫描指定的蓝牙信标: ty_mdev
,返回扫描结果和信号强度百分比。
为了最大程度防止不良品,建议客户将路由于设备距离控制在 5 米左右,信号强度大于等于 60%为合格,用户也可以根据自己产线和工厂环境的情况自行调整。
MCU 发送
字段 | 长度 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x35 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x01(子命令) |
校验和 | 1 | 从帧头开始按字节求和得出的 结果对 256 求余 |
示例:55 aa 03 35 00 01 01 39
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x35 |
数据长度 | 2 | 0x0003 |
数据 | 1 | 0x01(子命令) |
2 | 数据长度为 2 字节:Data[0]:0x00 失败,0x01 成功。
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 35 00 03 01 01 14 4d
设备蓝牙状态 | 描述 | 状态值 |
---|---|---|
状态 1 | 未绑定,未连接 | 0x00 |
状态 2 | 未绑定,已连接 | 0x01 |
状态 3 | 已绑定,未连接 | 0x02 |
状态 4 | 已绑定,已连接 | 0x03 |
状态 5 | 未知状态 | 0x04 |
设备蓝牙连接状态含义如下。1:未绑定,未连接。2:未绑定,已连接。3:已绑定,未连接。4:已绑定,已连接。5:未知状态。其中状态 1 和 2 是蓝牙配网阶段产生。
模组自处理工作模式相应的 LED 显示含义如下。1:快闪状态。2 或 3:长暗状态。4:长亮。5:慢闪状态。
当模组检测到 MCU 重启或 MCU 断线再上线的过程,则主动下发蓝牙状态至 MCU。
此命令字的发送,需要 MCU 上电发送 0x3700
命令字中 abv
字段的 bit0 使能。
上电默认为未知状态。
模组发送
字段 | 长度(byte) | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x35 |
数据长度 | 2 | 0x0002 |
数据 | 子命令 | 0x04 |
1 | 指示蓝牙工作状态:
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 35 00 02 04 03 3d
MCU 返回
字段 | 长度(byte) | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x35 |
数据长度 | 2 | 0x0001 |
数据 | 子命令 | 0x04 |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 35 00 01 04 39
设备蓝牙状态 | 描述 | 状态值 |
---|---|---|
状态 1 | 未绑定,未连接 | 0x00 |
状态 2 | 未绑定,已连接 | 0x01 |
状态 3 | 已绑定,未连接 | 0x02 |
状态 4 | 已绑定,已连接 | 0x03 |
状态 5 | 未知状态 | 0x04 |
与报告设备蓝牙连接状态命令字功能状态保持一致。
MCU 发送
字段 | 长度(byte) | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x35 |
数据长度 | 2 | 0x0001 |
数据 | Data | 05 |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 35 00 01 05 3D
模组返回
字段 | 长度(byte) | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x35 |
数据长度 | 2 | 0x0002 |
数据 | 子命令 | 0x05 |
Data | 指示蓝牙工作状态。
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 35 00 02 05 00 3E
模组发送
字段 | 长度(byte) | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x35 |
数据长度 | 2 | 0x0007 |
数据 | 1 | 子命令 0x06 |
N |
|
|
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 35 00 02 05 00 3E
MCU 返回
字段 | 长度 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x35 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x06(子命令) |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 35 00 02 05 00 3E
控制命令表
控制命令字 (1 字节) |
控制命令(1 字节) 以下为通用命令 |
控制数据(4 字节)没用到补 0 |
|
---|---|---|---|
品类 ID |
|||
全品类: 0xFF 单个品类 照明:0x01 插座/排插:0x02 窗帘开关:0x03 晾衣架:0x04 风扇:0x05 浴霸:0x06 空调:0x07 车库控制:0x08 水阀控制:0x09 消毒控制:0x0A 温控插座:0x0B 调光开关:0x0C 情景灯插座:0x0D 开关:0x0E 窗帘通断器:0x0F |
键值发送:0x01 |
字节 1:type(0 单击、1 双击、2 长按、3 长按保持、4 长按抬起) 字节 2:键值 |
|
开关:0x04 |
字节 1:0 关闭、1 开启、2 暂停 字节 2:路数,路数为 0 时表示总控 |
||
喜好收藏:0x05 |
字节 1:1 收藏状态 2 切换到该收藏 字节 2:收藏号:0-3 |
||
倒计时功能:0x06 |
字节 1、2:倒计时时间,秒为单位(0 为取消倒计时) (大端格式) 字节 3:字节定时执行功能:(暂时不用,待功能标号确定,默认关灯功能) |
||
一键群组查询:0x07 |
(用于子设备广播通知已加入的群组) |
||
照明开关:0x08 |
字节 1:0 关闭、1 开启 字节 2:0 总开关、1 白光开关、2 彩光开关 |
||
亮度调节:0x09 |
字节 1:0 亮度值、1 亮度+、2 亮度- 字节 2:0 设备当前模式亮度、1 白光模式亮度 字节 3:字节 1 为 0 时表示亮度百分比(1-100%) 字节 1 为 1,2 时表示亮度步进值(1-100%) |
||
亮度无极调节:0x0A |
字节 1:0 连续加开始、1 连续减开始、2 连续结束 字节 2:0 设备当前模式亮度、1 白光模式亮度 字节 3:速率(每 1s 调节的百分比) 字节 4:无极调节目标值 |
||
色温调节:0x0B |
字节 1:0 色温值、1 色温+、2 色温- 字节 2:字节 1 为 0 时表示色温百分比(0-100%) 字节 1 为 1,2 时表示色温步进值(0-100%) |
||
色温无极调节:0x0C |
字节 1:0 连续加开始、1 连续减开始、2 连续结束 字节 2:速率(每 1s 调节的百分比) 字节 3:无极调节目标值 |
||
七彩调节:0x0D |
字节 1:0 相对切换、1 具体颜色、2 循环调节开始、3 循环调节结束 字节 2:具体颜色时的具体颜色 ID |
||
H 值调节:0x0E |
字节 1:0 H 百分比值、1 步进加+、2 步进减- 字节 2:字节 1 为 0 时表示 H 百分比值(0-100%) 字节 1 为 1,2 时表示 H 步进值(0-100%) |
||
H 值无极调节:0x0F |
字节 1:0 连续加开始、1 连续减开始、2 连续结束 字节 2:速率(每 1s 调节的百分比) 字节 3:无极调节目标值 |
||
S 值调节:0x10 |
字节 1:0 S 百分比值、1 步进加+、2 步进减- 字节 2:字节 1 为 0 时表示 S 百分比值(0-100%) 字节 1 为 1,2 时表示 S 步进值(0-100%) |
||
S 值无极调节:0x11 |
字节 1:0 连续加开始、1 连续减开始、2 连续结束 字节 2:速率(每 1s 调节的百分比) 字节 3:无极调节目标值 |
||
V 值调节:0x12 |
字节 1:0 V 百分比值、1 步进加+、2 步进减- 字节 2:字节 1 为 0 时表示 V 百分比值(1-100%) 字节 1 为 1,2 时表示 V 步进值(1-100%) |
||
V 值无极调节:0x13 |
字节 1:0 连续加开始、1 连续减开始、2 连续结束 字节 2:速率(每 1s 调节的百分比) 字节 3:无极调节目标值 |
||
HSV 控制:0x14 |
字节 1:H 百分比值(0-100%) 字节 2:S 百分比值(0-100%) 字节 3:V 百分比值(1-100%) |
||
场景调节:0x15 |
字节 1:0 相对切换、1 具体场景、2 循环调节开始、3 循环调节结束 字节 2:具体场景时的场景 ID |
||
照明模式设置:0x16 |
字节 1:1 小夜灯模式 |
||
电机转动行程调节:0x20 |
字节 1:0 正转、1 反转、2 暂停 字节 2:行程百分比(0-100%) 0 表示连续转动 字节 3:路数(0 表示总路数) |
||
电机行程设置:0x21 |
字节 1:0 进入行程点设置、1 进入微调行程点、2 确认 行程点 字节 2:0 上行程设置、1 下行程设置、2 中间行程设置 字节 3:路数(0 表示总路数) |
||
电机速度调节:0x22 |
字节 1:0 档位值、1 步进+,步进- 字节 2:具体档位或步进档位 字节 3:路数(0 表示总路数) |
||
电机速度无极调节:0x23 |
字节 1:0 连续加开始、1 连续减开始、2 连续结束 字节 2:速率(每 1s 调节的百分比) 字节 3:无极调节目标值 字节 4:路数(0 表示总路数) |
||
温度调节:0x24 |
字节 1:0 温度值、1 步进+、2 步进- 字节 2、3:字节 1 为 0 时具体温度 字节 1 为 1、2 时步进温度 (两字节温度值,大端表示,最高位表示正负,其他位的值表示温度单位值,以 0.1 摄氏度为单位,相乘得到具体温度) |
||
温度无极调节:0x25 |
字节 1:0 连续加开始、1 连续减开始、2 连续结束 字节 2:速率(每 1s 调节的百分比) 字节 3、4:无极调节目标值 温度值同上 |
||
湿度调节:0x26 |
字节 1:0 湿度值、1 步进+、2 步进- 字节 2:具体档湿度或步进湿度 |
||
湿度无极调节:0x27 |
字节 1:0 连续加开始、1 连续减开始、2 连续结束 字节 2:速率(每 1s 调节的百分比) 字节 3:无极调节目标值 |
||
以下为品类定制命令 |
|||
定制品类(1 字节) |
定制命令(1 字节) |
参数(3 字节) |
|
照明定制:0xFF |
RGBY 控制:0x01 |
字节 1:0 向 R 色调节,1 向 G 色调节,2 向 B 色调 节,3 向 Y 色调节 |
|
风扇定制:0xFE |
风扇模式切换:0x01 |
字节 1:0:手动风 1:自然风 2:睡眠风 |
|
浴霸定制:0xFD |
浴霸模式切换:0x01 |
字节 1:0 暖风、1 换气、2 干燥、3 吹风 |
|
空调定制:0xFC |
睡眠:0x01 |
字节 1: 0:off,1:on |
本节功能目前只有语音业务支持。
该服务主要拓展 datapoint
下发端来源类型,主要的来源类型分为:局域网、广域网、蓝牙等等。
该拓展服务打开后附 DP 类型命令下发与命令下发呈互斥关系。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x36 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 子命令:0x01 |
1 | 0x00:关闭附 DP 类型拓展服务。0x01:开启附 DP 类型拓展服务。 | |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 36 00 02 01 01 3c
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x36 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 子命令:0x01 |
1 | 0x00:服务开启/关闭成功。0x01:服务开启/关闭失败。 | |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 00 36 00 02 01 00 38
datapoint
状态数据单元说明,请参考 3.7 节。
命令下发可含多个 datapoint
命令数据单元。
命令下发为异步处理协议,对应于 MCU 的 datapoint
状态上报。
附 datapoint
下发来源类型需要手动设置,并与命令下发的状态上报互斥。
Datapoint 下发来源类型除支持的部分外,其他的不支持。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x36 |
数据长度 | 2 | 取决于命令数据单元类型以及个数 N+2 |
数据 | 1 | 子命令:0x02 |
1 | Datapoint 下发来源类型。
|
|
N | 3.7.1 命令数据单元组 | |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:局域网系统开关对应 3 号 DP,使用 bool 型变量,开机数值为 1。
示例:55 aa 00 36 0007 02 01 03 01 0001 01 45
目前仅离线语音模组业务支持,其他业务可直接使用 3.8 状态上报。
datapoint
状态数据单元说明,请参考 3.7 节。
状态上报为异步处理协议,状态上报触发机制有三类:
MCU 收到附 DP 类型命令下发处理帧时,正确执行相应 datapoint
命令,再通过附 DP 类型状态上报帧将变化后的 datapoint
状态发送至模组。
MCU 主动检测到 datapoint
有变化,将变化后的 datapoint
状态发送至模组。
MCU 收到 3.9 节的状态查询帧时,将所有的 datapoint
状态发送至模组。
状态上报可含多个 datapoint
命令数据单元。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x36 |
数据长度 | 2 | 取决于 状态数据单元类型以及个数 N+3 |
数据 | 1 | 子命令:0x03 |
1 |
|
|
1 | 在 MCU 主动上报回应状态查询两种情况下统一使用 0x00 回应附 DP 类型命令下发需要返回数据的来源。
|
|
N | 3.7.1 状态数据单元组 | |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:回应广域网下发的湿度对应 5 号 DP,使用 valve 型变量,湿度为 30℃
示例:55 aa 03 36 000b 03 02 02 05 02 0004 0000001e 73
特殊类型产品服务,此类型产品才支持,使用时请注意功能。
MCU 发送
字段 | 长度 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x72 |
数据长度 | 2 | 0x03 |
数据 | 1 | 0x01(子命令) |
1 | 0x0a(风速步长 1-99) | |
1 | 0x05(挡位保持时间 1-100s) | |
校验和 | 1 | 从帧头开始按字节求和得出的结果对 256 求余 |
示例:55 aa 03 72 00 03 01 0a 05 87
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x72 |
数据长度 | 2 | 0x02 |
数据 | 1 | 0x01(子命令) |
1 | 0x00:成功 0x01:失败 |
|
校验和 | 1 | 从帧头开始按字节求和得出的 结果对 256 求余 |
示例:55 aa 00 72 00 02 01 00 74
当设置的占空比为 70%的时候,PWM1 输出 70%,PWM2 输出 0%,检测到过零信号后 PWM1 输出 0%、PWM2 输出 70%。
MCU 发送
字段 | 长度 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x72 |
数据长度 | 2 | 0x02 |
数据 | 1 | 0x02(子命令) |
1 | 0x0a(0%-100%) | |
校验和 | 1 | 从帧头开始按字节求和得出的 结果对 256 求余 |
示例:55 aa 03 72 00 02 02 0a 82
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x72 |
数据长度 | 2 | 0x02 |
数据 | 1 | 0x02(子命令) |
1 |
|
|
校验和 | 1 | 从帧头开始按字节求和得出的 结果对 256 求余 |
示例:55 aa 00 72 00 02 02 00 75
附录中仅列出已经定义的内容,未定义的请勿使用。
名称 | 说明 | 支持选项 | 获取 | 设置 |
---|---|---|---|---|
cc | 国家码 | 0 :表示 CN,包含区域:中国(包含中国大陆和中国香港,中国澳门),韩国,新加坡,澳大利亚,日本(1-13),其他。 1 :表示 US,包含区域为:美国,中国台湾,加拿大。 2 :表示 JP,包含区域为:日本(1-14) 3 :表示 EU,包含区域为:欧洲 |
支持 | 不支持 |
ap | 表示 ap 热点 | 字符型数据 | 支持 | 不支持 |
sn | 表示 SN 信息 | 这里是获取模组内部在经过授权后写入的 SN 信息。 | 不支持 | 不支持 |
ffs | 表示模组是否有 FFS 授权信息 | 0 :表示无 FFS 授权信息。 1 :表示有授权信息,当模组反馈 1 时也同时会同步 SN 信息,用于辅助判断授权信息的准确性。 |
支持 | 不支持 |
异常原因描述 | 状态值 |
---|---|
设备关机 | 0x00 |
传输超时 | 0x01 |
电量不足 | 0x02 |
过热 | 0x03 |
文件过大 | 0x04 |
设备空间不足 | 0x05 |
设备工作状态异常 (示例:缺纸/卡纸/开盖) |
0x06 |
传输状态 | 描述 | 状态值 |
---|---|---|
状态 1 | 无文件传输触发 | 0x00 |
状态 2 | 启动文件传输中 | 0x01 |
状态 3 | 文件传输中 | 0x02 |
状态 4 | 文件传输/下载完成 | 0x03 |
状态 5 | 文件上传云端成功 | 0x04 |
状态 6 | 文件传输与 MCU 交互超时失败 | 0x05 |
状态 7 | 文件上传获取云端 URL 失败 | 0x06 |
状态 8 | 文件上传云端失败 | 0x07 |
状态 9 | 文件下载云端数据获取失败 | 0x08 |
状态 10 | 文件传输 MCU 回复失败 | 0x09 |
状态 | 描述 | 状态值 |
---|---|---|
状态 1 | 升级启动 | 0x00 |
状态 2 | 升级中 | 0x01 |
状态 3 | 升级完成 | 0x02 |
状态 4 | 升级失败 | 0x03 |
说明 | 数值 |
---|---|
txt | 1 |
doc | 2 |
3 | |
excle | 4 |
png | 5 |
jpg | 6 |
bmp | 7 |
tif | 8 |
gif | 9 |
pcx | 10 |
tga | 11 |
exif | 12 |
fpx | 13 |
svg | 14 |
psd | 15 |
cdr | 16 |
pcd | 17 |
dxf | 18 |
ufo | 19 |
eps | 20 |
ai | 21 |
raw | 22 |
WMF | 23 |
webp | 24 |
avif | 25 |
WAV | 26 |
FLAC | 27 |
APE | 28 |
ALAC | 29 |
WavPack(WV) | 30 |
MP3 | 31 |
AAC | 32 |
Ogg Vorbis | 33 |
Opus | 34 |
MP4 | 35 |
版本 | 编写/修订说明 | 修订日期 | 备注 |
---|---|---|---|
1.2.5 | 修改文档 | 20220616 | 1. 文件下载功能 2. 增加蓝牙/ Beacon 遥控器功能相关协议 3. 增加蓝牙连接状态通知功能相关协议 |
1.2.4 | 修改文档 | 20210701 | 1. 增加支持多类型的 MCU 固件 2. 增加射频功能相关协议 3. 增加支持获取 Wi-Fi 模组相关数据。 4. 增加红外状态指示灯 5. 完善语音模组扩展功能 6. 增加蓝牙遥控器功能相关协议 7. 增加风扇类产品功能协议 |
1.2.3 | 修改文档 | 20200521 | 1. 增加产品信息包红外功能和低功耗开关选择字段 2. 增加主动获取天气服务的命令 3. 增加重置状态通知的命令 4. 修改模组工作模式名称说明 |
1.2.2 | 修改文档 | 20200411 | 增加语音模组 VWXR2 扩展协助,支持播放/暂停、蓝牙开关、本地闹钟、控制群组等功能 |
1.2.1 | 修改文档 | 20200409 | 1. 增加 Wi-Fi 成品产测。 2. 增机 Wi-Fi 遥控器控制功能 |
1.2.0 | 修改文档 | 20200331 | 适配 CI 基线相关新增功能新增网络状态包和产品信息字段 |
1.1.9 | 修改文档 | 20200326 | 1. 重整语音模组部分协议 2. 增加模组拓展服务 3. 增加双模蓝牙产测 |
1.1.8 | 修改文档 | 20200218 | 1. 增加语音模组 VWXR2 音量设置,mic 控制协议 2. 增加音频产测和唤醒产测协议 |
1.1.7 | 修改文档 | 20191119 | 1. 增加扫地机多张地图数据协议 2. 增加第三方文件下载通道 3. 完善文档协议说明 |
1.1.6 | 修改文档 | 20190828 | 增加红外能力相关协议 |
1.1.5 | 修改文档 | 20190824 | 1. 增加获取模组 MAC 地址接口 2. 完善获取天气数据功能说明 |
1.1.4 | 修改文档 | 20190617 | 1. 增加 Wi-Fi 连接方式的性能测试 2. 优化流服务流程,只保留流数据上报协议,固件兼容老版本流服务机制 |
1.1.3 | 修改文档 | 20190415 | 1. 完善相关功能命令机制描述 2. 加入针对扫地机地图服务命令 |
1.1.2 | 修改文档 | 20181217 | 1. 增加串口配网协议 2. 增加 MCU 获取 Wi-Fi 联网状态协议 |
1.1.1 | 修改文档 | 20180810 | 修改 MCU 固件升级启动返回包内容(可兼容旧固件) |
1.1.0 | 修改文档 | 20180329 | 增加 3.20 关闭 Wi-Fi 模组心跳协议 |
1.0.9 | 修改文档 | 20180119 | 1. 增加同步指令上报 3.18 支持,收到同步指令 Wi-Fi 模组在上报成功或失败后会通知 MCU 2. 增加 Wi-Fi 信号强度获取 3.19,单位 db |
1.0.8 | 修改文档 | 20170512 | 1. 增加打开获取天气数据接口 2. 增加下发天气数据接口 3.心跳检测间隔调整为 15s |
1.0.7 | 修改文档 | 20170216 | 1. 增加配网模式设置(扩展查询产品信息接口) 2. MCU 协议版本号统一升级为 0x03 |
1.0.6 | 修改文档 | 20161110 | 1. 增加 Wi-Fi 工作状态 2. MCU 协议版本号统一升级为 0x02 |
1.0.5 | 修改文档 | 20160607 | 1. 删除升级查询指令 2. 删除通知 MCU 进入产测模式指令 3. 修改升级启动协议,支持 64KB 以上文件大小 |
1.0.4 | 修改文档 | 20160512 | 1. 增加获取本地时间指令 2. 增加 Wi-Fi 功能性测试 3. 增加获取模组内存指令 |
1.0.3 | 修改文档 | 20151114 | 1. 增加 MCU 获取时间功能 2. 增加 MCU 获取时区功能 3. 增加进入产测功能 |
1.0.2 | 修改文档 | 20151017 | 1. 心跳检测协议中新增 MCU 重启检测功能 2. 心跳检测间隔调整为 10s 3. 模组 Wi-Fi 状态上报更新为模组主动上报状态至 MCU |
1.0.1 | 修改文档 | 20151013 | 将查询 product ID 改为查询模组信息,新增设备版本信息返回 |
1.0.0 | 创建文档 | 20151010 | 首次创建 |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈