简体中文
简体中文
English
联系我们
注册
登录
语言
简体中文
简体中文
English
联系我们
登录
注册
返回主站
layout空间导航

串口协议

更新时间:2021-10-14 02:04:38下载pdf

涂鸦 Wi-Fi 串口通用协议为涂鸦定制的 Wi-Fi 模组串口通用协议,主要用于涂鸦 Wi-Fi 模组与其它 MCU 串口直连做串口通信,其架构框如下图所示。

串口协议

串口通信约定

  • 波特率:9600/115200
  • 数据位:8
  • 奇偶校验:无
  • 停止位:1
  • 数据流控:无
  • MCU:用户控制板控制芯片,与涂鸦模组通过串口进行通信

帧格式

字段 字节数 说明
帧头 2 固定为 0x55aa
版本 1 升级扩展用
命令字 1 具体帧类型
数据长度 2 大端
数据 N 实体数据
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余
  • 所有大于1个字节的数据均采用大端模式传输。

  • 一般情况下,采用同命令字一发一收同步机制。

    即一方发出命令,另一方应答,若发送方超时未收到正确的响应包,则超时传输,如下图所示:

    串口协议

    具体通信方式以 协议列表 章节中为准。

  • 模组控制命令下发及MCU状态上报则采用异步模式,假设模组控制命令下发的命令字为 x,MCU状态上报的命令字为 y,如下所示:

    • 模组控制命令下发:

      串口协议

    • MCU 状态上报:

      串口协议

  • 版本字段

    版本用于拓展功能使用,为兼容新老版本协议,模组发送版本号均为0x00,根据MCU回复版本号确定使用协议的版本。新用户默认使用协议版本为0x03即可。

状态数据单元

datapoint 命令/状态数据单元如下所示:

数据段 字节数 说明
dpid 1 datapoint 序号
type 1 对应 涂鸦 IoT 平台 上一个 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
  • 0x00: MCU 重启后第一次心跳返回值,仅发送一次,用于模组判断工作过程中MCU是否重启
  • 0x01:除 MCU 重启后第一次返回0外,其余均返回此值
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余
  • MCU 第一次返回示例:55 aa 03 00 00 01 00 03
  • 除第一次外,正常返回:55 aa 03 00 00 01 01 04

查询产品信息

产品信息由产品 ID 和 MCU 软件版本构成:

  • 产品 ID:即 PID(product ID),对应 涂鸦 IoT 平台 上产品的 PID,由涂鸦 IoT 平台生成,用于云端记录产品相关信息。
  • 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***,即您在涂鸦 IoT 平台上创建的产品的 PID。
v 表示 MCU 版本为 1.0.0,MCU 版本号格式必须按照 x.x.x 的格式定义。
m 表示模组工作方式:
  • 0 表示常配网工作模式。模组出厂上电后一直处于待配网状态并一直保持。
  • 1 表示超时配网工作模式。模组出厂上电后处于非配网状态需要MCU发送重置命令才会进入相应的配网模式,当设备处于配网状态三分钟后未被用户配走模组便会重新进入非配网状态,需要重新收到重置命令才会重新进入配网模式。
  • 2 表示防误触工作模式。模组被用户配上后本地(MCU发送重置命令)重置后,设备处于待配网状态三分钟没有被配走会会自动恢复重置前的用户网络连接。本地重置后设备中途异常断电上电也会自动恢复重置前的用户网络连接。这种模式下只有当设备被用户从 App 端移除设备便不会记录上次用户的网路连接并重连。这种模式用于需要有本地防误重置的用户场景的需求。
mt 设置安全模式和防误触模式的状态切换时间,没有上传这个字段统一按老的机制(三分钟)处理,可以支持的设置时间范围:3分钟~10分钟。
n 表示模式的配网模式,没有该字段保持传统(两种配网方式互相切换)的模式:
  • 0 表示 Wi-Fi 快连配网和热点联网共存配网模式。模组同时支持热点联网连接配网和快连配网无需用户切换,对应的配网状态包见报告设备联网状态
  • 1 表示仅仅只有热点联网配网模式: 这种模式下产品只能通过热点联网连接的方式进行设备配网。
ir 启用模组的红外功能并告知模组红外的收发脚使用哪些IO口,没有这个字段红外能力默认关闭。 5.12:红外发送脚为IO5,红外接收脚为IO12。
注意:如果工作模式中使用模组自处理模式,请勿与按键和Wi-Fi指示灯设置的IO口重复。部分模组跨组IO设置,需要在设置组IO脚基础上加32,PB20设置序号为20+32。红外发送脚需要用到PWM资源,接收需要使用IO中断,具体模组支持的IO口请参考模组资料。
若需要模组自处理工作状态指示红外工作状态指示灯,可通过命令字 设备新功能设置通知命令(可选) 设置
low 模组是否开启保持长连接的低功耗模式,没有该字段低功耗模式默认关闭。对于有些产品对于没有网络控制的情况下,在模组保持和路由的连接下需要让模组的平均功耗低于15mA,通过这个字段我们可以打开模组这个能力。双模模组打开这个功能后,模组只有蓝牙配网功能,蓝牙控制将会关闭。产品对于功耗没有要求的不需要关心这个字段。
  • 0:关闭低功耗模式
  • 1:打开模组低功耗模式
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
  • 0x0000:指示模组工作为 MCU与模组配合处理 模式,MCU需实现上述“说明”中提及的功能。
  • 0x0002:指示模组工作为“模组自处理”模式。
数据 0/2 数据长度为2:首字节为Wi-Fi状态指示GPIO序号。次字节为Wi-Fi重置按键GPIO序号
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

例:

  • MCU与模组配合处理:

    55 aa 03 02 00 00 04

  • 模组自处理,指示灯0x0c:GPIO12,复位按钮0x0d:GPIO13:

    55 aa 03 02 00 02 0c 0d 1f

设备新功能设置通知命令(可选)

  • 此命令在设备上电后,在0x01命令之后0x02命令字之前发送执行,用于相关功能设置通知。
  • 若无所需要的新增功能,此命令字不需要执行
  • 此命令每次上电或者是模组启动之后均需要发送,即MCU可按照逻辑,在收模组的0x01命令字后就发送此命令,设置所需要的功能。
  • 此命令会根据业务的拓展,功能字段也会扩充增加

  • ir:红外工作状态指示灯,红外状态指示灯使能即有效,可复用Wi-Fi网络状态指示灯,但注意不可与02命令字的其它功能 GPIO 冲突。红外工作指示灯,工作时指示规则如下:
    • 复用Wi-Fi状态指示灯 GPIO :非红外工作时 LED 为亮灯状态,则红外工作时灭灯。
    • 其它 GPIO :非红外工作时 LED 为灭灯状态,则红外工作时亮灯。
  • buf:MCU串口资源BUF可承受的最大数据量。RF遥控器功能在下发多键值的情况下以此字段数据参考是否分包发送键值。
  • RF遥控器:指433小无线射频遥控器,涂鸦标准RF方案;

MCU 发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x37
数据长度 2 0x0001
数据 1 子命令:0x00
{ “mcu_ota”:xx, “abv”:x, “ir”:xx, “buf”:xx }
  • mcu_ota MCU ota执行方式设置; 0x00:MCU有程序暂存区 0x01:MCU无程序暂存区
  • abv:功能使能字段,按位设置
  • Bit0:蓝牙连接状态通知(双模设备支持),功能暂不支持:1:开启通知。0:关闭。
  • Bit1:RF遥控器功能使能: 1:开启功能。0:关闭功能
  • Bit2-bit7:0,预留,默认填充0.
  • ir: 红外工作状态指示灯,设置模组自处理时红外工作状态指示灯的GPIO。 数据内容规则与0x02命令字相同,指示规则请看红外工作指示
  • buf:MCU 串口接收BUF大小,最小值为256(字节),模组默认MCU可支持任何长度数据。
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:MCU有程序暂存区,abv使能RF遥控器功能,BUF为1024。{“mcu_ota”:0,“abv”:3,“buf”:1024}
55 aa 03 37 00 20 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 ab

模组返回

字段 长度(byte) 说明
帧头 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,按位表示不同的功能
  • Bit0:蓝牙连接状态通知(双模设备支持),功能暂不支持:1:开启通知。0:关闭。
  • Bit1:RF遥控器功能使能: 1:开启功能。0:关闭功能
  • Bit2-bit7:0,预留,默认填充0
ir 可选 红外工作状态指示灯,设置模组自处理时红外工作状态指示灯的GPIO,GPIO引脚编码规则同02命令字 ;示例: 5:表示红外工作状态指示灯引脚为IO5
buf 可选 MCU 串口接收BUF大小,最小值为256(字节)

报告设备联网状态

设备联网状态 描述 状态值
状态1 Wi-Fi 快连配网配置状态 0x00
状态2 热点联网配置状态 0x01
状态3 Wi-Fi已配置但未连上路由器 0x02
状态4 Wi-Fi已配置且连上路由器 0x03
状态5 已连上路由器且连接到云端 0x04
状态6 Wi-Fi设备处于低功耗模式 0x05
状态7 Wi-Fi设备处于 Wi-Fi 快连配网和热点联网配置状态 0x06
  • 设备联网状态:

    • Wi-Fi 快连配网配置状态
    • 热点联网配置状态
    • Wi-Fi配置成功但未连上路由器
    • Wi-Fi配置成功且连上路由器
    • 设备连接到路由器且连接到云端。
  • “模组自处理”工作模式相应的LED显示分别为:

    • 状态1:间隔闪烁250ms。
    • 状态2:间隔闪烁1500ms。
    • 状态3或6:长暗状态。
    • 状态4或5:长亮状态。
  • 当模组检测到MCU重启或MCU断线再上线的过程,则主动下发Wi-Fi状态至MCU

  • 当模组的Wi-Fi状态发生变化,则主动下发Wi-Fi状态至MCU

  • 如设置模组工作模式为“模组自处理”,则MCU无需实现该协议

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x03
数据长度 2 0x0001
数据 1 指示Wi-Fi工作状态:
  • 0x00:状态1
  • 0x01:状态2
  • 0x02:状态3
  • 0x03:状态4
  • 0x04:状态5
  • 0x05:状态6
  • 0x06:状态7
校验和 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

重置Wi-Fi

配网相关命令,模组收到该指令后会重启,初始化相关命令交互完成后模组进入配网模式,可以使用App进行配网。

  • 重置Wi-Fi状态转化如下图所示:

    串口协议

    发送重置指令时,请在模组初始化完成后发送,否则可能无效。更多详情,请参考 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 命令功能类似。

  • 相对于“重置Wi-Fi而言”,此帧提供MCU根据自身需求选择性选择重置Wi-Fi后的配置方式

  • MCU接入用户可选择性的实现该协议

  • 如设置模组工作模式为“模组自处理”,则MCU无需实现该协议

    发送重置指令,请在模组初始化完成后发送,否则可能无效。初始化流程可参考:Wi-Fi 模组初始化流程

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x05
数据长度 2 0x0001
数据 1
  • 0x00:进入smartconifg配置模式
  • 0x01:进入热点联网配置模式
校验和 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状态数据单元说明详见“状态数据单元”。

  • “状态上报”为异步处理协议,“状态上报”触发机制有三类:

    • MCU收到“命令下发处理帧时,正确执行相应datapoint命令,再通过“状态上报”帧将变化后的datapoint状态发送至模组。
    • MCU主动检测到datapoint有变化,将变化后的datapoint状态发送至模组。
    • MCU收到状态查询帧时,将所有的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所有的“obj”类型的datapoint状态,当MCU收到此帧时,通过状态上报帧上报datapoint状态。

  • “状态查询”发送时机主要有两种:

    • 模组首次上电,通过心跳与MCU建立连接后,查询发送。
    • 模组工作过程中检测到MCU重启或发生了离线再上线的过程,查询发送。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x08
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

例:55 aa 00 08 00 00 07

MCU升级服务

  • 何时升级由客户在涂鸦IoT平台自己的产品页面配置相关升级选项触发,模组仅作为支持MCU升级的数据传输通道,也不对数据内容做任何解析。

  • 目前涂鸦平台的MCU升级支持下面四种升级方式的配置:

    • App提醒升级:这个升级方式用户每次进入设备控制面板都会收到升级提醒的弹窗,是否确认升级由用户自己在App确认
    • App静默升级:这个升级方式App不会有任何提醒弹窗,模组上电后一分钟内会去自动去检测升级发现有高版本的升级包会自动开始拉取相关升级包,第一次上电后模组会间隔24小时去云端检测一次是否有升级包配置。
    • App强制升级:
      这个升级方式App端会有升级提醒弹窗,如果用户不确认升级用户就没法正常使用这个产品的控制面板。
    • App检测升级:这个升级方式App端不会有任何升级提醒的弹窗,必须要用户在App端自己去点击相关固件版本检测,如果有高版本的固件配置才会显示升级提示信息。
  • 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 升级包分包传输大小:
  • 0x00:默认256byte(兼容旧固件)
  • 0x01:512byte
  • 0x02:1024byte
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

例:55 aa 03 0a 00 01 00 0d

升级包传输

  • 升级包传输数据格式:包偏移 + 包数据。

  • MCU若收到该帧数据长度为4字节,并且包偏移 >= 固件大小,则包传输结束。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0b
数据长度 2 0x0004+N
数据 4+N data[0]–data[3]:固定为包偏移
data[4]–data[n]:数据包内容
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

例:

若要升级的文件大小530Byte,(最后一包数据可不回复)

  • 第一包数据,包偏移为0x00000000,数据包长度为256
    55 aa 00 0b 01 04 00000000 xx…xx XX
  • 第二包数据,包偏移为0x00000100,数据包长度为256
    55 aa 00 0b 01 04 00000100 xx…xx XX
  • 倒数第2包数据,包偏移为0x00000200,数据包长度为18
    55 aa 00 0b 00 16 00000200 xx…xx XX
  • 最后一包,包偏移为0x00000212,数据包长度为0
    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

获取系统时间(格林时间)

  • 格林时间不带有时区和夏令时的因素,是一个国际标准的时间基准。

  • 当模组连接上网络之前本地的时间戳校准后才会返回成功,并带有有效的时间数据。

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字节:
  • Data[0]为是否获取时间成功标志,为0表示失败,为1表示成功
  • Data[1]为年份, 0x00表示2000年
  • Data[2]为月份,从1开始到12结束
  • Data[3]为日期,从1开始到31结束
  • Data[4]为时钟,从0开始到23结束
  • Data[5]为分钟,从0开始到59结束
  • Data[6]为秒钟,从0开始到59结束
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

例:格林时间2016年4月19日5时6分7秒

55 aa 00 0c 00 07 01 10 04 13 05 06 07 4c

获取本地时间

  • 本地时间是在格林时间的基础上加上当地(设备激活所在地)时区和夏令时的时间。

  • 当模组连接上网络之前本地的时间戳校准后才会返回成功,并带有有效的时间数据。

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字节:
  • Data[0]为是否获取时间成功标志,为0表示失败,为1表示成功
  • Data[1]为年份, 0x00表示2000年
  • Data[2]为月份,从1开始到12结束
  • Data[3]为日期,从1开始到31结束
  • Data[4]为时钟,从0开始到23结束
  • Data[5]为分钟,从0开始到59结束
  • Data[6]为秒钟,从0开始到59结束
  • Data[7]为星期,从1开始到7结束,1代表星期一
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余
  • 如设备在国内激活使用,则当地时间为北京时间(东8区)。
    例:北京时间2016年4月19日5时6分7秒
    55 aa 00 1c 00 08 01 10 04 13 05 06 07 02 5f

  • 如果设备在国外激活使用,则当地时间为设备所处时区时间。

Wi-Fi功能性测试(扫描指定路由)

  • 模组内部目前扫描指定的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成功;
  • 当Data[0]为0x01,即成功时,Data[1]表示信号强度 (0-100, 0信号最差,100信号最强)
  • 当Data[0]为0x00,即失败时, Data[1]为0x00表示未扫描到指定的SSID,Data[1]为0x01表示模组未烧录授权key
校验和 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:
  • L:占用1byte,表示K的长度
  • K:请求参数名称
  • 如:L:0x06 K:w.temp
  • L:0x06 K:w.pm25
  • L:0x0a K:w.humidity
校验和 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
  • Data[0]:
    • 0x00表示失败,失败具体错误原因见Data[1]的错误码说明
    • 0x01表示成功
  • Data[1]:
    • 0x00 无错误
    • 0x01错误码,数据格式非法
    • 0x02错误码,异常错误
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

例: 55 aa 00 20 00 02 01 00 22

下发天气数据(可选)

下发天气数据,在打开天气数据功能后模组定时下发,开启功能后会立马下发一次,后续以30分钟的间隔下发。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x21
数据长度 2 N((LKTLV)+(LKTLV)+…)
数据 Data
  • 0x00:表示失败
  • 0x01:错误码,表示参数服务没权限(确认是否购买了该参数服务)
  • 0x01:表示成功
  • L:参数名长度
  • K:参数名
  • T:0x00整形、0x01字符串
  • L:字段名长度
  • V:字段值
校验和 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

主动请求天气服务数据

  • 针对有些产品需求,需要在半个小时主动发送的天气服务基础上,拥有主动获取天气服务数据的能力,我们提供这个命令用于用户主动获取天气服务接口数据。
  • 这个命令使用频率不能小于一分钟,一分钟内的多次请求只处理一次.
  • 这个命令用于确认数据请求,数据下发还是通过0X21的下发天气数据的命令.

MCU发送:

字段 长度 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x34
数据长度 2 0x0001
数据 1 0x03(子命令)
校验和 1 从帧头开始按字节求和得出的 结果对 256 求余

例:55 aa 03 34 00 01 03 3a

模组返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x34
数据长度 2 0x0002
数据 1 0x03(子命令)
1 执行结果: 0x00:成功。 0x01:失败
校验和 1 从帧头开始按字节求和得出的 结果对 256 求余

例:55 aa 00 34 00 02 03 00 38

状态上报(同步)

  • 此命令为同步指令,MCU数据状态上报后,需要等待模组返回结果。

  • 每次发送模组都会有响应,Wi-Fi模组未响应前不可多次上报。

  • 网络不好,数据难以及时上报时,模组会在5后返回失败,MCU需要等待大于5秒。

  • datapoint状态数据单元说明详见“状态数据单元”。

  • “状态上报”可含多个datapoint“命令数据单元”。

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
  • 0x00:表示失败
  • 0x01:表示成功
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

例:55 aa 00 23 00 01 01 24

获取当前Wi-Fi信号强度(可选)

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
  • 0x00:表示失败
  • 小于0:表示信号强度,如(-60db)
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

例:RSSI: -20:55 aa 00 24 00 01 ec 10

通知Wi-Fi模组关闭心跳(可选)

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”}
  • s:ssid
  • p:password
  • t:token,由App生成
校验和 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
  • 0x00:数据接收成功
  • 0x01:不在配网状态
  • 0x02:json数据非法
  • 0x03:其他错误
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

例:55 aa 00 2a 00 01 01 2b

获取当前Wi-Fi联网状态

设备联网状态 描述 状态值
状态1 Wi-Fi 快连配网配置状态 0x00
状态2 热点联网配置状态 0x01
状态3 Wi-Fi已配置但未连上路由器 0x02
状态4 Wi-Fi已配置且连上路由器 0x03
状态5 已连上路由器且连接到云端 0x04
状态6 Wi-Fi设备处于低功耗模式 0x05
状态7 Wi-Fi设备处于 Wi-Fi 快连配网和热点联网配置状态 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
  • 0x00 :Wi-Fi 快连配网配置状态
  • 0x01 :热点联网配置状态
  • 0x02 :Wi-Fi已配置但未连上路由器
  • 0x03 :Wi-Fi已配置且连上路由器
  • 0x04 :已连上路由器且连接到云端
  • 0x05 :Wi-Fi设备处于低功耗模式
  • 0x06 :Wi-Fi设备处于 Wi-Fi 快连配网和热点联网配置状态
校验和 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
  • 0x00:成功
  • 0x01:流服务功能未开启
  • 0x02:流服务器未连接成功
  • 0x03:数据推送超时
  • 0x04:传输的数据长度错误
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

例:55 aa 00 28 00 01 00 28

地图流数据传输(支持多张地图数据)(可选)

说明:

  • 扫地机流服务的命令不是所有模组都支持,需要使用这个服务需要使用特定的模组开通相关的服务才可以正常使用。

  • 这个服务目前针对扫地机地图数据传输的服务,作为扫地机和涂鸦APP地图线上的一个特殊快捷通道。

  • 此通道用于扫地一张地图显示有多张数据图合成的扫地机机使用。

MCU发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x30
数据长度 2 0x0009+N
数据 1 地图服务协议版本:0x00
2 地图服务会话ID号:作为一次地图显示的标志
6 BUF[0] 子地图ID号(一次地图会话可以由多张地图数据合成,比如路径图)
BUF[1]地图ID数据处理方式 0x00:继续累加 0x01:清除子地图ID号上传的数据
BUF[2]~BUF[5]子地图数据偏移量(首包为0)
N 实体数据(大端模式)
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 03 30 00 xx 00 00 00 01 00 00 00 00 xx xx xx xx xx xx

模组返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x30
数据长度 2 0x0001
数据 1 0x00:成功 0x01:失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 03 30 00 01 00 33

获取地图会话ID(可选)

说明:

  • 此命令为地图流服务单张地图和多张地图传输协议的补充。

  • 地图会话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

模组返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x34
数据长度 2 0x0004
数据 1 0x06(子命令)
1 传输结果: 0x00:成功 0x01:流服务未开启 0x02:获取ID失败
2 地图会话ID(如果传输结果失败,此数据为无效数据)。
校验和 1 从帧头开始按字节求和得出的 结果对 256 求余

例:55 aa 00 34 00 04 06 00 00 00 3d

Wi-Fi功能性测试(连接指定路由)

  • MCU发送路由信息模组返回成功后,模组会使用相关信息去连接路由。

  • MCU判断是否连接上路由器,根据收到模组报告设备联网状态中的(状态4-Wi-Fi已配置且连上路由器)的包为准。MCU收到返回失败,或者长时间(超过15s)没有收到连上路由的状态包,认为测试失败。

  • 产测成功重复进入产测可以重新发送测试命令,没有收到连上路由的包表示模组正在产测中需要重置模组或者重新上电后发送测试命令才有效。

  • 模组需要在处于未被配网的状态下才能完成连接测试。

  • 产测前必须回复模组的心跳包且产品查询包模组完成初始化才能进入连接路由的产测。

  • 路由器名称字符串长度最大支持32个字节,路由器密码字符串长度最大支持64个字节。

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x2C
数据长度 2 n
数据 n {“ssid”:”xxx”,”password”:”xxxxxxxx”}
  • ssid:路由名称
  • password:路由密码
校验和 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]:
  • 0x00:路由信息接收失败(请检查发出的路由 JSON 包数据是否完整)
  • 0x01:路由信息接收成功(结果请注意报告设备联网状态的网络状态包)
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

例:55 aa 00 2c 00 01 01 2d

获取模组MAC

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
  • data[0]:
    • 获取MAC地址是是否成功的标志:
    • 0x00表示成功,表示后面6字节的MAC地址有效
    • 0x01表示获取MAC失败,表示后面6字节的MAC无效
  • data[1]~data[6]:当获取MAC地址标志位data[0]表示成功则表示模组有效的MAC地址
校验和 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
  • 红外功能的通过涂鸦IoT平台配置或者相关项目经理手动开通并寄样。

  • 红外码发送的时间周期非常短,并且需要保持好的实时性,这里的串口数据直接发送,不做相关重发。

  • 客户根据自己的开发需求,根据红外状态做相关状态显示。

  • 红外功能的发码和接受红外码需要使用到模组的两个IO脚,如果您的设备使用的联网状态也是模组自处理模式,请注意IO口不要设置相关的IO脚。

模组发送:

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x2e
数据长度 2 0x0001
数据 Data 指示红外工作状态:
  • 0x00:状态1
  • 0x01:状态2
  • 0x02:状态3
  • 0x03:状态4
校验和 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
  • 0x00表示进入红外收发产测成功
  • 0x01表示进入红外收发产测失败
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

例:55 aa 00 2f 00 01 00 2f

射频功能相关协议(可选)

  • 此部分协议功能的使用,需要通过0x3700命令字中abv字段使能打开此部分协议功能。

  • 由于射频码会存在某些产品一次操作有多个键值下发的场景,考虑到MCU的资源,因此MCU可通过0x3700命令字中的buf字段通知MCU的串口BUF资源情况(考虑到键值的最大数据MCU的资源应大于256字节),
    Wi-Fi模组在多键值下发的情况下以此是否需要分包发送,最小分包数据量是一个键值。 默认多键值时以一条串口命令下发所有键值数据内容。

  • 射频功能的执行方是在MCU侧,从用户使用角度考虑Wi-Fi模组侧不会实现自处理工作状态指示的功能。

射频学习状态控制

  • 命令字为模组控制MCU射频部分的学习状态命令。

模组发送:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x33
数据长度 2 0x0002
数据 1 子命令:0x01:射频学习类命令
1 控制状态:0x01:进入射频学习状态
0x02:退出射频学习状态
校验和 1 从帧头开始按字节求和得出的 结果对 256 求余

例:55 aa 00 33 00 02 01 01 36

MCU返回:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x33
数据长度 2 0x0003
数据 1 子命令: 0x01
1 控制状态:0x01: 进入射频学习状态
1 ACK状态: 0x00: 成功 ;
0x02: 退出射频学习状态 ;
0x01: 失败
校验和 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 键值偏移序号:
  • 0xFF:整包发送所有键值数据。
  • 0x00–0xFE:指偏移序号,首包为0,最后一包为键值数-1
1 频率:0:315Mhz 1:433.92Mhz
2 发送速率:例如:2777bps
N Data
  • T: times,发送次数,1字节长度。 当是学习码下发时,此内容无效,填充默认值0x00
  • D:delay,key之间时间间隔,2字节长度。 当是学习码下发时,此内容无效,填充默认值0x0000
  • I:intervals,每次发送时间间隔,2字节长度。 当是学习码下发时,此内容无效,填充默认值0x0000
  • L: code len,射频发送数据部分长度。2字节长度。
  • C: code,射频发送数据部分。N字节
校验和 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返回:

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x33
数据长度 2 0x0002
数据 1 子命令:0x02
1 ACK状态:
  • 0x00: 成功
  • 0x01: 失败
校验和 1 从帧头开始按字节求和得出的 结果对 256 求余

例:55 aa 00 33 00 02 02 00 36

射频学习数据上报

MCU发送:

字段 长度 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x33
数据长度 2 0x0002+N
数据 1 子命令 :0x03
1 状态 :
  • 0:学习成功
  • 1:学习失败
N 内容:学习失败无此字段 学习成功: 学习数据上报无固定格式,MCU端可理解的格式即可
校验和 1 从帧头开始按字节求和得出的 结果对 256 求余

例:55 aa 03 33 xx xx 03 00 xx xx xx xx xx xx

模组返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x33
数据长度 2 0x0002
数据 1 子命令:0x03
1 ACK状态:
  • 0x00: 上报成功
  • 0x01: 上报失败
校验和 1 从帧头开始按字节求和得出的 结果对 256 求余

例:55 aa 00 33 00 02 03 00 37

文件下载服务(可选)

当MCU OTA的过程中,不执行文件传输功能。此文件下载服务支持大文件传输,支持各种文件类型。

文件下载流程示意图:

串口协议

  • 此图示意了单个文件下载流程,多文件下载是在此示意图上的循环。

  • 当文件传输的过程中,模组端因为数据超时发送退出,则退出所有下载流程

  • 在文件传输的过程中会停止心跳查询,以及终止dp下发等其他的相关操作,文件传输流程只执行文件传输相关交互。

文件传输下载启动通知

  • 当有下载事件触发时,使用此命令通知MCU。MCU根据当前设备情况确认是否执行文件下载操作。

  • 此命令当使用的业务为非扫地机语音文件下载功能时下载启动通知。

模组发送

字段 长度(byte) 说明
帧头 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返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x37
数据长度 2 0x0003
数据 1 子命令:0x01
1 Ret:是否同意启动下载服务:0x01:拒绝 0x00:同意
1 Ret为0x00时: 此字节表示文件传输时每包文件的传输大小,目前支持的设置参数如下:
0x00:256byte 。0x01:512byte。 0x02:1024byte。 0x03:2048byte 。0x04:3072byte 。0x05:4096byte。 0x06:5120byte。 0x07:10240byte。
Ret为0x01时: 此字节表示拒绝启动下载服务的原因: 0x01—0xFF:拒绝原因, 参考附录2
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 00 37 00 03 01 00 07 41

文件传输下载信息同步

  • 当有下载事件触发时,使用此命令通知MCU当前所下载文件信息。

  • 扫地机语音文件下载业务无此功能命令。

模组发送

字段 长度(byte) 说明
帧头 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求余

字段说明:

  • Name: 文件的名称,客户可自定义文件的名称。
  • Id: 文件的id。
  • Len: 文件的长度。
  • Type: 文件的类型,比如txt,jpg等。具体参见附录5
  • File_info: 每个文件的客户自定义数据,需要对应文件有自定义填充的信息时,可使用此字段填充,此字段信息Wi-Fi模组透传,具体的数据格式MCU自定义。
  • Ext_info: 此次下载文件的客户自定义数据,用户可以编辑使用每次下载操作的一些自定义需要的信息,此字段信息Wi-Fi模组透传,具体的数据格式MCU自定义。
  • Act: 对于此次下载的文件需要执行的操作,比如:打印、语音播放等,具体定义如下:
名称 打印 文本显示 语音播放 视频播放 存储
类型数值 1 2 3 4 5

注:若客户未使用其中的数据内容,Wi-Fi模组将不会传输这个字段。

MCU返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x37
数据长度 2 0x0002
数据 1 子命令:0x02
1 Ret:执行结果
0x00:成功。
0x01:失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 03 37 00 02 02 00 3d

文件包下载传输

  • 升级包传输数据格式:包偏移(unsigned short) + 包数据

  • MCU若收到该帧数据长度为5且包偏移>=固件大小,则包传输结束

模组发送

字段 长度(byte) 说明
帧头 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返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x37
数据长度 2 0x0002
数据 1 子命令:0x03
1 Ret:执行结果
0x00:成功 ;
0x01:失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 03 37 00 02 03 00 3e

文件执行结果反馈 (可选)

说明:此功能命令是用于MCU反馈文件的执行状态,是否成功执行。

此功能是可选功能,具体的执行依赖业务场景,当业务需要展示执行状态时,通过此功能命令反馈。协议中act的数据也是可选的,根据具体业务来反馈。

此功能中的id数据对应于0x3702命令中的id(文件序号),这个是唯一的,也需要做好对应关系。

MCU发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x37
数据长度 2 0x01+l+L+2
数据 1 子命令:0x05
1 id的长度
L 文件的id: 对于0x3702命令字中的id数据
1 act: 0x00:执行完成。
0x01:执行中。
0x02:执行失败。
1 Act为0x00时,此字节填充0x00。
Act为0x01时,此字节填充执行进度百分比,比如20%就给20。
act为0x02时,此自己表示失败原因,具体参见参考附录2
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:打印机业务,打印id为10的文件进行20%
55 aa 03 37 05 05 01 0a 01 14 63

模组返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x37
数据长度 2 0x0002
数据 1 子命令:0x05
1 Ret:
0x00: 成功 。
0x01:数据不合法。
0x02:上报失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 00 37 00 02 05 00 3d

MCU主动获取/更新文件传输状态

  • 当MCU在文件传输过程中需要主动中断传输的,可使用此命令同步

MCU发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x37
数据长度 2 0x0003
数据 1 子命令:0x04
1 Ret: 0x00:终止传输(所有流程终止)
0x01:终止当前文件传输(多文件下载时,使用此命令只会终止当前传输的文件,并开启下个文件的传输)
0x02:获取当前传输状态
……
1 Ret为0x00/0x01:此字节表示终止下载服务的原因:0x01—0xFF:拒绝原因,参考附录2
Ret为其他:此字节填充0x00
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 03 37 00 03 04 02 00 42

模组返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x37
数据长度 2 0x0003
数据 1 子命令:0x04
1 Ret: 0x01:终止传输
0x02:获取当前传输状态
1 Ret为0x01时:表示执行结果 0x00:成功。0x01:失败
ret为0x02时:表示的传输状态:参考附录3
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 00 37 00 03 04 02 00 3f

文件传输结果反馈

此命令用于文件传输状态结果反馈,无论是文件下载还是文件上传,均用此命令来通知传输结果。

模组发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x37
数据长度 2 0x0004
数据 1 子命令:0x08
1 0x01:文件下载 0x02:文件上传
1 Ret:执行结果 0x00:成功 0x01:失败
1 ret 为0x00时: 此字节返回0x00。 Ret为0x01时: 此字节表示失败原因,0x01—0x0FF 参考附录3
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 00 37 00 04 08 01 00 00 43

MCU返回

字段 长度(byte) 说明
帧头 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 语音状态码:
  • 0: 空闲
  • 1: MIC静音状态
  • 2: 唤醒
  • 3: 正在录音
  • 4: 正在识别
  • 5: 识别成功
  • 6: 识别失败
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

例:55 aa 00 60 00 01 00 60

MIC静音设置(可选)

该命令字可以设置静音,也可查询静音状态。

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x61
数据长度 2 0x0001
数据 1 静音设置值:
  • 0: MIC开启
  • 1: MIC静音
  • 0xA0: 查询静音状态
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

例:55 aa 03 61 00 01 00 64

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x61
数据长度 2 0x0001
数据 1 静音状态值:
  • 0: MIC开启
  • 1: MIC静音
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

例:55 aa 00 61 00 01 00 61

Speaker音量设置(可选)

该命令字可以设置音量,也可查询音量。

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x62
数据长度 2 0x0001
数据 1
  • 音量值:0-10
  • 查询音量:0xA0
校验和 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 音频产测值:
  • 0: 关闭音频产测
  • 1:MIC1音频环路测试
  • 2: MIC2音频环路测试
  • 0xA0: 查询当前产测状态
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

例:55 aa 03 63 00 01 02 68

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x63
数据长度 2 0x0001
数据 1 音频产测状态
  • 0: 关闭音频产测
  • 1: MIC1音频环路测试
  • 2: MIC2音频环路测试
校验和 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 唤醒结果返回
  • 0: 唤醒失败
  • 1: 唤醒成功
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

例:55 aa 00 64 00 01 01 65

扩展功能

扩展语音模组的相关系统功能增加:

  • “播放/暂停、蓝牙开/关、本地闹钟、语音控制组合”功能的状态通知和设置
  • “播放/暂停”功能:音乐、古诗、笑话等功能的播放与暂停功能。
  • “蓝牙开/关”功能:蓝牙音箱的蓝牙开关。
  • “本地闹钟”功能:语音和 App 设置的闹钟数据同步通知。
  • “语音控制组合”功能:“上一首”“下一首”等语音控制指令的通知。
MCU 功能设置

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x65
数据长度 2 N
数据 1 子命令:0x00
Data:
{
“play”:true,
”bt_play”:true
,"ctrl_group”:”xxxx”}
  • play:播放/暂停功能。true(播放)/false(暂停)
  • bt_play:蓝牙开关功能。true(开)/false(关)
  • ctrl_group:播放控制。next:下一首。pre:上一首
  • MCU设置暂仅支持”播放/暂停””蓝牙开关”
校验和 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 操作结果:
  • 0x00: 成功
  • 0x01: 失败
校验和 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”
}
  • play:播放/暂停功能,true(播放)/false(暂停)
  • bt_play:蓝牙开关功能 ,true(开)/false(关)
  • alarm:本地闹钟功能
  • “xxx”为字符串
  • ctrl_group:语音控制组合功能
  • “xxx”为字符串
校验和 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 操作结果:
  • 0x00: 成功
  • 0x01: 失败
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

例:55 aa 03 65 00 02 01 00 6a

唤醒模组
  • 此功能为MCU主动唤醒模组。

  • 目前此功能只有linux系统的通用对接模组支持。

MCU发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x65
数据长度 2 0x01
数据 1 子命令:0x02
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 03 65 00 01 02 6a

模组返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x65
数据长度 2 0x02
数据 1 子命令:0x02
1 操作结果: 0x00: 成功。 0x01: 失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 00 65 00 02 02 00 68

打开asr识别文本通知
  • 此功能开启后asr识别的文本会通过0x6504命令字传输。

MCU发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x65
数据长度 2 0x02
数据 1 子命令:0x03
1 0x00: 关闭 。0x01: 开启
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 03 65 00 02 03 00 6c

模组返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x65
数据长度 2 0x02
数据 1 子命令:0x03
1 操作结果: 0x00: 操作成功 。0x01: 操作失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 00 65 00 02 03 00 69

asr识别通知

模组发送

字段 长度(byte) 说明
帧头 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返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x65
数据长度 2 0x01
数据 1 子命令:0x04
校验和 1 从帧头开始按字节求和得出的结果对256求余

例: 55 aa 00 65 00 01 04 69

查询当前播放节目
  • 此功能为查询当前歌曲&内容信息。
  • 此功能返回的数据中的中文内容按照uft-8编码,hex传输发送。

MCU发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x65
数据长度 2 0x01
数据 1 子命令:0x05
校验和 1 从帧头开始按字节求和得出的结果对256求余

例: 55 aa 03 65 00 01 05 6d

模组返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x65
数据长度 2 0x0002+N
数据 1 子命令:0x05
1 操作结果:
Data[0]: 0x00: 查询成功 0x01: 查询失败
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发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x65
数据长度 2 0x02
数据 1 子命令:0x06
状态: 0x00: 在线 0x01: 蓝牙 0x02: 通话
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 03 65 00 02 06 00 6f

模组返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x65
数据长度 2 0x02
数据 1 子命令:0x06
1 操作结果: 0x00: 成功 0x01: 失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 00 65 00 02 06 00 6c

模组录音上报 - 自动结束

说明:该命令可主动触发模组进入录音状态,设备会智能拾取人声并自动结束录音,最大录音时长为10秒。

MCU发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x65
数据长度 2 0x02
数据 1 子命令:0x07
状态: 0x01: 开始录音
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 03 65 00 02 07 01 71

模组返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x65
数据长度 2 0x02
数据 1 子命令:0x07
1 操作结果: 0x00: 成功 。0x01: 失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 00 65 00 02 07 00 6d

模组录音上报 - 手动结束

说明:该命令可主动触发模组进入录音状态,需要手动发送结束录音,最大录音时长为10秒。

MCU发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x65
数据长度 2 0x02
数据 1 子命令:0x08
1 状态: 0x00: 结束录音。
0x01: 开始录音
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 03 65 00 02 08 00 71

模组返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x65
数据长度 2 0x02
数据 1 子命令:0x08
1 操作结果: 0x00: 成功。
0x01: 失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 00 65 00 02 08 00 6e

打开闹铃通知

此功能开启后闹铃会通过0x650A命令字传输。

MCU发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x65
数据长度 2 0x02
数据 1 子命令:0x09
1 0x00: 关闭。
0x01: 打开
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 03 65 00 02 09 01 73

模组返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x65
数据长度 2 0x02
数据 1 子命令:0x09
1 操作结果: 0x00: 成功 。0x01: 失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 00 65 00 02 09 00 6f

闹铃下发

模组发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x65
数据长度 2 0xXX
数据 1 子命令:0x0A
Data[0]:闹铃数量N
Data[1]: 操作类型 0:poll; 1:add ;2:del ;3:update ----以下为重复内容
Data[2~7]:闹铃id
Data[8]:年份
Data[9]:月份
Data[10]:日期
Data[11]:小时
Data[12]:分钟
Data[13]:bit7~bit1循环规则 *
(例:“0111000” //星期一二三执行(从星期天到星期六,为1的那天执行) “0000000” //单次执行)* bit0 闹铃状态 (0启动,1暂停)
Data[14]:闹钟铃声id 闹钟铃声: 0-在线铃声,其他-设备本地铃声
Data[15~35]:铃声描述 在线闹钟铃声描述: 用于匹配播放歌曲 ----
校验和 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返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x65
数据长度 2 0x01
数据 1 子命令:0x0A
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 03 65 00 01 0a 72

查询闹铃列表

MCU发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x65
数据长度 2 0x01
数据 1 子命令:0x0B
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 03 65 00 01 0b 73

模组返回:闹铃用命令字0x650A下发

关闭本地闹铃

MCU发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x65
数据长度 2 0x02
数据 1 子命令:0x0C
状态: 0x00: 关闭 0x01: 开启
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 03 65 00 02 0c 00 75

模组返回

字段 长度(byte) 说明
帧头 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发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x65
数据长度 2 0xXX
数据 1 子命令:0x0D
状态: 0x01: 新增闹铃 0x02: 修改闹铃 0x03: 删除闹铃 0x04: 打开闹铃 0x05: 关闭闹铃
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

模组返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x65
数据长度 2 0x09
数据 1 子命令:0x0D
1 操作码: 0x01: 新增闹铃 0x02: 修改闹铃 0x03: 删除闹铃 0x04: 打开闹铃 0x05: 关闭闹铃
1 操作结果: 0x00:操作成功 0x01:JSON格式错误 0x02:参数缺失 0x03:服务调用失败 0x04:其他错误
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 铃声:格式正整数,0-在线铃声,其他-设备本地铃声,默认为1 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 铃声:格式正整数,0-在线铃声,其他-设备本地铃声,默认为1 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发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x65
数据长度 2 0x01
数据 1 子命令:0x0E
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:55 aa 03 65 00 01 0e 76

模组返回

字段 长度(byte) 说明
帧头 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发送

字段 长度(byte) 说明
帧头 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

模组返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x65
数据长度 2 0x0002
数据 1 子命令:0x0F
1 操作结果: 0x00:成功 ;0x01:JSON格式错误 ;0x02:参数缺失 ;0x03:其他错误
校验和 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
  • 0x00:格林时间
  • 0x01:本地时间
校验和 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
  • 0x00:格林时间
  • 0x01:本地时间
7 数据长度为6字节
  • Data[0]为年份, 0x00表示2000年
  • Data[1]为月份,从1开始到12结束
  • Data[2]为日期,从1开始到31结束
  • Data[3]为时钟,从0开始到23结束
  • Data[4]为分钟,从0开始到59结束
  • Data[5]为秒钟,从0开始到59结束
  • Data[6]为星期,从1开始到7结束,1代表星期一
校验和 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 执行结果:
  • 0x00:成功
  • 0x01:失败
校验和 1 从帧头开始按字节求和得出的 结果对 256 求余

例:55 aa 00 34 00 02 04 00 39

模组重置状态通知(可选)

设备重置状态 描述 状态值
状态1 模组本地重置 0x00
状态2 App 远程重置 0x01
状态3 App 恢复出厂重置 0x02

重置状态的发送最多也会重发两次,重发间隔保持1s。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x34
数据长度 2 0x0002
数据 1 0x05(子命令)
1 重置状态:
  • 0x00:模组本地重置
  • 0x01:App 远程重置
  • 0x02:App 恢复出厂重置
校验和 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模组相关数据信息

  • 针对有些产品需求,需要知道Wi-Fi模组的一些运行数据情况,都统一使用这个字段用于获取。

  • MCU可根据自己所需要的数据发送对应功能编码来获取。当MCU需要多种数据时请按照对应编码,依次顺序排列发送给Wi-Fi模组。

  • 若MCU需要获取当前所有支持的数据,使用0xff编码即可。

  • 此命令当前只支持获取ap热点ssid功能。其他功能后续根据需求增加

  • 当ap热点是默认的smartlife时,此命令只返回smartlif信息,实际热点名称为smartlife_xxxx(设备mac后四位)。

    • 此字段数据格式为json字符串的形式,data数据长度不一定。
    • MCU发送命令的数据长度至少有2个字节,即子命令+1字节data编码,若长度不对则返回失败。
    • 数据编码是一一对应关系,请勿使用错误,且不可使用预留编码。
    名称 编码
    获取所有当前支持的数据信息 0xff
    AP ssid名称 0x01
    国家码 0x02
    SN信息 0x03
    FFS授权记录 0x04
    ……… ………
  • 模组返回数据字段说明表:模组运行信息字段说明表

    • SN信息目前普通Wi-Fi类设备不支持获取。
    • 在获取FFS授权信息记录时,若无ffs授权记录,则模组返回的信息中只有ffs字段,且内容为0。
    • 若有ffs授权信息,模组会返回ffs内容且内容为1,并携带SN信息用于辅助校验信息合法性。

MCU发送:

字段 长度 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x34
数据长度 2 0x01+0x01+…N
数据 1 子命令0x07
Data(1) 0x01 –获取AP ssid名称 0x02 -国家码 0x03 –模组SN ……… 0xFF -获取所有当前已经支持的数据内容(此编码只在第一字节有效,且优先级最高,解析到此编码时即推送所有信息)
Data(2) 0x01 –获取AP ssid名称
0x02 -国家码
0x03 –模组sn
………
Data(N) 0x01 –获取AP ssid名称
0x02 -国家码
0x03 –模组sn
………
校验和 1 从帧头开始按字节求和得出的 结果对 256 求余

例: 55 aa 03 34 00 02 07 01 40

模组返回

字段 长度(byte) 说明
帧头 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成功。
  • 当Data[0]为0x01,即成功时,Data[1]表示信号强度 (0-100, 0信号最差,100信号最强)。
  • 当Data[0]为0x00,即失败时,Data[1]为0x00表示未扫描到指定的蓝牙信标,Data[1]为0x01表示模组未烧录授权key
校验和 1 从帧头开始按字节求和得出的 结果对 256 求余

例:55 aa 00 35 00 03 01 01 14 4d

附类型DP上报/下发拓展服务

本节功能目前只有语音业务支持。

打开附DP类型拓展服务

  • 该服务主要拓展datapoint下发端来源类型,主要的来源类型分为:“局域网”、“广域网”、“蓝牙”等等。

  • 该拓展服务打开后“附DP类型命令下发”与“命令下发”呈互斥关系。

MCU发送

字段 长度(byte) 说明
帧头 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

模组返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x36
数据长度 2 0x0002
数据 1 子命令:0x01
1 0x00: 服务“开启/关闭”成功 0x01: 服务“开启/关闭”失败
校验和 1 从帧头开始按字节求和得出的 结果对 256 求余

例:55 aa 00 36 00 02 01 00 38

附DP类型命令下发

  • datapoint状态数据单元说明详见“3.7节”

  • “命令下发”可含多个datapoint“命令数据单元”

  • “命令下发”为异步处理协议,对应于MCU的datapoint“状态上报”

  • 附datapoint下发来源类型需要手动设置,并与“命令下发”“状态上报”互斥

  • Datapoint下发来源类型除支持的部分外,其他的不支持。

模组发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x36
数据长度 2 取决于“命令数据单元”类型以及个数“N+2”
数据 1 子命令:0x02
1 Datapoint下发来源类型: 0x00:未知来源类型 0x01:局域网 0x02:广域网 0x03:本地定时 0x04:广域网场景联动 0x05:可靠的通道 0x06:蓝牙 0x07:本地场景联动 0xF0:离线语音模组
N “3.7.1命令数据单元”组
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:局域网系统开关对应3号DP,使用bool型变量,开机数值为1

例:55 aa 00 36 0007 02 01 03 01 0001 01 45

附DP类型状态上报

  • 目前仅“离线语音模组”业务支持,其他业务可直接使用“3.8状态上报”

  • datapoint状态数据单元说明详见“3.7节”

  • “状态上报”为异步处理协议,“状态上报”触发机制有三类:

  • MCU收到“附DP类型命令下发”处理帧时,正确执行相应datapoint命令,再通过“附DP类型状态上报”帧将变化后的datapoint状态发送至模组。

  • MCU主动检测到datapoint有变化,将变化后的datapoint状态发送至模组。

  • MCU收到“3.9”节的状态查询帧时,将所有的datapoint状态发送至模组。

  • “状态上报”可含多个datapoint“命令数据单元”

MCU发送

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x36
数据长度 2 取决于“状态数据单元”类型以及个数“N+3”
数据 1 子命令:0x03
1 0x00:MCU主动上报 0x01:回应“状态查询” 0x02:回应“附DP类型命令下发”
1 在“MCU主动上报”“回应状态查询”两种情况下统一使用“0x00” 回应“附DP类型命令下发”需要返回数据的来源: 0x00:未知来源类型 0x01:局域网 0x02:广域网 0x03:本地定时 0x04:广域网场景联动 0x05:可靠的通道 0x06:蓝牙 0x07:本地场景联动 0xF0:离线语音模组
N “3.7.1状态数据单元”组
校验和 1 从帧头开始按字节求和得出的结果对256求余

例:回应广域网下发的湿度对应5号DP,使用valve型变量,湿度为30℃

例:55 aa 03 36 000b 03 02 02 05 02 0004 0000001e 73

风扇类产品服务(可选)


特殊类型产品服务,此类型产品才支持,使用时请注意功能。

风扇功能测试

  • 如:风速步长20,保持时间5,模组依次控制电机0%-20%-40%-60%-80%-100%,每个挡位的间隔时间为5秒

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

模组返回

字段 长度(byte) 说明
帧头 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

模组返回

字段 长度(byte) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x02
数据 1 0x02(子命令)
1 0x00:成功
0x01:失败
校验和 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

MCU OTA 升级状态表

状态 描述 状态值
状态1 升级启动 0x00
状态2 升级中 0x01
状态3 升级完成 0x02
状态4 升级失败 0x03

文件类型值对应表

说明 数值
txt 1
doc 2
pdf 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.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 首次创建
1.0.1 修改文档 20151013 将查询product ID改为查询模组信息,新增设备版本信息返回
1.0.0 创建文档 20151010 首次创建