基础功能

更新时间:2024-06-28 02:18:54下载pdf

本文介绍 Wi-Fi 和 Wi-Fi & 蓝牙标准协议接入串口协议基础功能、工作流程、相关指令及对应的指令格式。更多信息,可参考 串口协议
基本功能主要包括设备配网、移除、设备状态获取、数据上报下发等,其他复杂功能可在 扩展功能 中查询。

标准协议接入工作流程

模组初始化

模组在与 MCU 建立通讯后,首先进行的是初始化流程。只有先完成初始化流程,模组才可以响应 MCU 进行配网、数据处理及拓展功能的实现。
该流程包括但不限于以下协议指令:

  • 建立心跳连接
  • 产品信息上报
  • 模组工作方式配置
  • 报告模组网络状态(若模组工作模式为与 MCU 配合处理)
  • 状态同步查询

模组上电会不断发送心跳包,MCU 正确回复心跳响应帧后,模组将启动下图中的初始化流程。

基础功能

DP 格式

数据段 长度(字节) 说明
dpid 1 功能点序号
type 1 对应平台上某功能点具体的数据类型,通过如下 表示值 标识
类型 表示值 长度(字节) 说明
raw 0x00 N 对应 raw 型 datapoint
bool 0x01 1 value 范围:0x00/0x01
value 0x02 4 对应 int 类型,大端表示
string 0x03 N 对应于具体字符串
enum 0x04 1 枚举类型,范围 0-255
bitmap 0x05 1/2/4 长度大于 1 字节时,大端表示
len 2 长度对应 value 的字节数
value 1/2/4/N hex 表示,大于 1 字节采用大端传输

基础功能

心跳检测(0x00)

  • 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

查询产品信息(0x01)

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

  • 产品 ID:即 PID(product ID),对应 涂鸦开发者平台 上产品的 PID,由涂鸦开发者平台生成,用于云端记录产品相关信息。
  • 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,"ma":[{"t":x1,"v":"y1"},{"t":x2,"v":"y2”},…]}
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

示例{"p":"AIp08kLIftb8x***", "v":"1.0.0", "m":1,"mt":10,"n":0,"ir":"5.12", "low":0,"ma":[{"t":x1,"v":"y1"},{"t":x2,"v":"y2"}]}

产品信息示例字段说明:

字段 说明
p 表示产品 ID 为 AIp08kLIftb8x***,即您在涂鸦开发者平台上创建的产品的 PID。
v 表示 MCU 版本为 1.0.0,MCU 版本号格式必须按照 x.x.x 的格式定义。
m 表示模组工作模式:
  • 0:表示 常配网 工作模式。模组出厂上电后一直处于待配网状态并一直保持。
  • 1:表示 超时配网 工作模式。模组出厂上电后处于非配网状态,需要 MCU 发送重置命令才会进入相应的配网模式。当设备处于配网状态三分钟后未被用户配走,模组便会重新进入非配网状态,需要重新收到重置命令才会重新进入配网模式。
  • 2:表示 防误触配网 工作模式。模组被用户配上后本地(MCU 发送重置命令)重置后,设备处于待配网状态三分钟没有被配对,会自动恢复重置前的用户网络连接。本地重置后设备中途异常断电上电,也会自动恢复重置前的用户网络连接。该模式下,只有当设备被用户从 App 端移除,设备便不会记录上次用户的网路连接并重连。该模式用于需要有本地防误重置的用户场景。
  • 3:表示 上电配网 工作模式。
  • 4:表示 上电低功耗配网 工作模式。
  • 5:表示 上电配网超时 工作模式。
详细功能参考配网模式的定义 GW_WF_CFG_MTHD_SEL
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:打开模组低功耗模式
ma(可选) 表示附属 MCU 固件信息,t 为通道号,范围 10-19,v 为版本号。
  • 例 1:如有一个附属 MCU,通道为 10,版本为 1.0.0,
    那么 "ma":[{"t":10,"v":"1.0.0"}]
  • 例 2:如有两个附属 MCU,通道 10 对应版本为 1.0.0,通道 11 对应版本为 2.0.0,
    那么 "ma":[{"t":10,"v":"1.0.0"},{"t":11,"v":"2.0.0"}]

ma 字段内容一定要与涂鸦开发者平台创建的固件类型数据匹配,否则会出现无法接收 OTA 信息或接收到错误的 OTA 升级信息,导致 OTA 升级异常。

设备新功能设置通知命令(可选)(0x37+0x00)

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

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

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x37
数据长度 2 0x0001
数据 1 子命令:0x00
{ "mcu_ota":xx, "abv":x, "ir":xx, "buf":xx, "b_nm":"xx" }
  • mcu_ota MCU OTA 执行方式设置。
    • 0x00MCU 有程序暂存区
    • 0x01MCU 无程序暂存区
  • abv:功能使能字段,按位设置
    • Bit0:蓝牙连接状态通知(双模设备支持)。1:开启通知,0:关闭通知。
    • Bit1:RF 遥控器功能使能。1:开启功能,0:关闭功能。
    • Bit2:蓝牙遥控器功能使能。1:开启功能,0:关闭功能。
    • Bit3:状态查询(CMD:0x08)功能使能。1:开启功能,0:关闭功能。
    • Bit4:蓝牙控制优先。1:蓝牙优先,0:Wi-Fi 优先。
    • Bit5:蓝牙子设备。1:开启功能,0:关闭功能。
      功能开启后会通过 0x3508 命令把蓝牙子设备数据发给 MCU。
    • Bit6-bit7:0,预留,默认填充 0
  • ir:红外工作状态指示灯,设置模组自处理时红外工作状态指示灯的 GPIO。数据内容规则与 0x02 命令字相同,指示规则请看 红外工作指示
  • buf:MCU 串口接收 BUF 大小,最小值为 256(字节),模组默认 MCU 可支持任何长度数据。
  • b_nm:蓝牙 local name,最大长度 5 字节。
校验和 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,按位表示不同的功能
  • Bit0:蓝牙连接状态通知(双模设备支持),功能暂不支持。1:开启通知,0:关闭通知。
  • Bit1:RF 遥控器功能使能。1:开启功能,0:关闭功能。
  • Bit6-bit7:0,预留,默认填充 0
ir 可选 红外工作状态指示灯,设置模组自处理时红外工作状态指示灯的 GPIO。GPIO 引脚编码规则同 02 命令字。示例:5:表示红外工作状态指示灯引脚为 IO5。
buf 可选 MCU 串口接收 BUF 大小,最小值为 256(字节)。

查询工作模式(0x02)

模组的配网触发及指示方式由 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:指示模组工作为 MCU 与模组配合处理 模式,MCU 需实现上述说明中提及的功能。
  • 0x0002/0x0003:指示模组工作为模组自处理模式。
数据 0/2/3 数据长度为 2
  • Data[0]:Wi-Fi 状态指示 GPIO 序号。
  • Data[1]:Wi-Fi 重置按键 GPIO 序号。
数据长度为 3
  • Data[0]:Wi-Fi 状态指示 GPIO 序号。
  • Data[1]:Wi-Fi 重置按键 GPIO 序号。
  • Data[2]:Bluetooth LE 状态指示 GPIO 序号。
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

示例

  • MCU 与模组配合处理:

    55 aa 03 02 00 00 04

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

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

报告设备联网状态(0x03)

设备联网状态 描述 状态值
状态 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
  • 设备联网状态:

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

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

  • 当模组的联网状态发生变化,则主动下发设备联网状态至 MCU。

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

  • Wi-Fi & 蓝牙 LE 模组接入的设备,当设备同步联网状态为 0x000x010x06 时,蓝牙也处于可配网状态中。
  • 当设备同步联网状态为 0x04 时,则表示设备已经成功接入云端,不论是通过 Wi-Fi 还是通过蓝牙方式接入云端。当通过蓝牙方式接入云端时,需结合蓝牙连接状态来判断是否 App 可控。
  • 建议 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(0x04)

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

  • 重置 Wi-Fi 后模组工作状态转化如下图所示:

    基础功能
    • 发送重置指令时,请在模组初始化完成后发送,否则可能无效。更多详情,请参考 Wi-Fi 模组初始化流程
    • Wi-Fi & 蓝牙 LE 双模模组发送重置指令后,Wi-Fi & 蓝牙 LE 均会处于待配网状态下。
  • 如设置模组工作模式为模组自处理,则 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 选择配置模式(0x05)

配网相关命令,与重制 Wi-Fi 命令功能类似。

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

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

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

    • 如需发送重置指令,请在模组初始化完成后发送,否则可能无效。初始化流程可参考 Wi-Fi 模组初始化流程
    • 当 MCU 在 查询产品信息 中字段 n 设置后,则此命令的指定切换功能无效。

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x05
数据长度 2 0x0001
数据 1
  • 0x00:进入 SmartConfig 配置模式
  • 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

打开模组重置状态通知(0x3404)

目前,模组支持本地重置、App 远程重置和 App 恢复出厂设置。

MCU 发送

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

模组返回

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

模组重置状态通知(0x3405)

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x034
数据长度 2 0x0002
数据 1 0x05(子命令)
1 重置状态
  • 0x00:本地重置
  • 0x01:App 远程重置
  • 0x02:App 恢复出厂设置
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

MCU 返回

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

命令下发(0x06)

  • 命令下发为异步处理协议,通常下发数据解析完成后,MCU 会根据 data point 数据执行对应功能。若 data point 状态发生改变,MCU 还需使用状态上报命令。
  • 命令下发可含多个 data points。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x06
数据长度 2 取决于 DP 数据 类型及个数
数据 N DP 数据
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

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

55 aa 00 06 00 05 03 01 00 01 01 10

状态上报(异步)(0x07)

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

    • MCU 收到命令下发处理帧时,正确执行相应 data point 命令,再通过状态上报帧,将变化后的 data point 状态发送至模组。
    • MCU 主动检测到 data point 有变化,将变化后的 data point 状态发送至模组。
    • MCU 收到 状态查询 帧时,将所有的 data point 状态发送至模组。
  • 状态上报可含多个 data points。

  • 建议在 data point 状态改变时上报即可,有利于保证数据传输稳定性。请避免在短时间内,持续循环进行数据上报。
  • 在设备待机或者工作稳定状态下,请尽量控制重复 data point 的循环上报频率。建议最小上报间隔为 1 分钟。
  • MCU 上报的数据请注意数据的合法性,与 查询产品信息 p 字段同步的 PID 在 涂鸦开发者平台 下设置的 DP 内容信息一致,不多报任何不存在的 DP。
  • MCU 上报的数据请注意数据的合法性,确保 DP ID 与数据类型以及内容,与 查询产品信息 p 字段同步的 PID 在 涂鸦开发者平台 下设置的 DP 内容信息一致。

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x07
数据长度 2 取决于 DP 数据 类型以及个数
数据 N DP 数据
校验和 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

状态上报(同步)(0x022)

  • 非统计类型 DP 不建议使用该命令上报,该命令无 DP 缓存。

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

  • 每次状态上报,模组都会有响应。模组未响应前,不可多次上报。

  • 网络环境差、数据难以及时上报时,模组会在 5 秒后返回失败。此时,MCU 需要等待 5 秒以上。

  • 状态上报可含多个 data point。

  • 建议在 data point 状态改变时上报即可,有利于保证数据传输稳定性。请避免在短时间内,持续循环进行数据上报。
  • 建议存在多个 DP 需要上报时,使用组合 DP 上报方式。若是单 DP 上报的方式,建议将每个 DP 数据上报间隔至少为 250 毫秒,有利于保证数据传输稳定性。
  • 在设备待机或者工作稳定状态下,请尽量控制重复 data point 的循环上报频率。建议最小上报间隔为 1 分钟。
  • MCU 上报的数据请注意数据的合法性,与 查询产品信息 p 字段同步的 PID 在 涂鸦开发者平台 下设置的 DP 内容信息一致,不多报任何不存在的 DP。
  • MCU 上报的数据请注意数据的合法性,确保 DP ID 与数据类型以及内容,与 查询产品信息 p 字段同步的 PID 在 涂鸦开发者平台 下设置的 DP 内容信息一致。

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x22
数据长度 2 取决于 DP 数据 类型以及个数
数据 N DP 数据
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

示例:上报 bool 型 DP 1,状态为 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

状态上报(记录型 DP)(0x34+0x0b)

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

  • 每次状态上报,模组都会有响应。模组未响应前,不可多次上报。

  • 网络环境差、数据难以及时上报时,模组会在 5 秒后返回失败。此时,MCU 需要等待 5 秒以上。

  • 状态上报可含多个 data point 命令数据单元。

  • 对于类似门锁、电量统计插座等有记录或数据统计功能的设备,包含部分 DP 数据需要服务端统计记录的,可使用本条命令上报。当 MCU 需要记录数据是由多个 DP 组合的整条数据,MCU 则需要整体上报。

  • 目前此功能在使用 Wi-Fi 通信方式时支持,蓝牙通信方式暂未迭代支持。但支持蓝牙通信方式后,您无需修改 MCU 代码,更新模组固件即可。

  • 使用此功能时,请核对模组固件版本是否支持。

  • 此协议暂时不支持让模组保存上报失败的数据。
  • 建议在 data point 状态改变时上报即可,有利于保证数据传输稳定性。请避免在短时间内,持续循环进行数据上报。
  • 建议存在多个 DP 需要上报时,使用组合 DP 上报方式。若是单 DP 上报的方式,建议将每个 DP 数据上报间隔至少为 250 毫秒,有利于保证数据传输稳定性。
  • 在设备待机或者工作稳定状态下,请尽量控制重复 data point 的循环上报频率。建议最小上报间隔为 1 分钟。
  • MCU 上报的数据请注意数据的合法性,与 查询产品信息 p 字段同步的 PID 在 涂鸦开发者平台 下设置的 DP 内容信息一致,不多报任何不存在的 DP。
  • MCU 上报的数据请注意数据的合法性,确保 DP ID 与数据类型以及内容,与 查询产品信息 p 字段同步的 PID 在 涂鸦开发者平台 下设置的 DP 内容信息一致。

MCU 发送

字段 长度 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x34
数据长度 2 取决于 DP 数据组 类型及个数
数据 1 0x0b(子命令)
1 0x01(默认填充此数据)
1 上报时间类型
  • 0x00:不上报 MCU 时间,模组侧填充,需要在模组获取时间后使用
  • 0x01:上报时间为设备所在的当地时间
  • 0x02:上报时间为格林时间
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 结束
N 状态数据单元
校验和 1 从帧头开始按字节求和得出的 结果 N 对 256 求余

例 1:上报 bool 型 DP,DP ID 为 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,DP ID 为 2,状态为 100 和 Enum 型 DP,DP ID 为 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 上报状态
  • 0x00:MCU 上报数据到模组且模组上报到云端成功
  • 0x02:上报失败
  • 0x03:数据内容非法
校验和 1 从帧头开始按字节求和得出的 结果对 256 求余

示例55 aa 00 34 00 02 0b 00 40

状态查询(0x08)

  • 状态查询为异步处理协议,主要用于模组查询 MCU 所有的 obj 类型的 data point 状态。当 MCU 收到此帧时,通过 状态上报 帧上报 data point 状态。

  • 状态查询发送时机主要有三种:

    • 模组首次上电,通过心跳与 MCU 建立连接后,查询发送。
    • 模组工作过程中检测到 MCU 重启或发生了离线再上线的过程,查询发送,需要配合 0x3700 命令的 abv 字段 bit3 使能
    • 当设备 Wi-Fi 连接情况下,每次进入面板(面板需要支持功能),触发查询发送,需要配合 0x3700 命令的 abv 字段 bit3 使能
  • 使用此功能时,请确认固件版本功能支持情况,建议更新使用最新发布版本。
  • 老版本固件仅支持模组首次上电查询发送场景。

模组发送

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

示例55 aa 00 08 00 00 07

获取模组内存(0x0f)

获取 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

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

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 模组关闭心跳(可选)(0x25)

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 建立心跳连接。

串口配网接口(可选)(0x2a)

  • 如果您标准对接时使用 App 与模组交互实现配网功能,无需实现此命令功能。
  • 适用于本地配网的场景,利用涂鸦 App 或者涂鸦 App 的 SDK 自主开发,获取相关配网参数,并通过串口把这些数据发送给模组,以便通过串口通信完成模组的配网操作。
  • 模组必须处于待配网状态,才能完成串口配网。
  • 模组返回成功接收串口配网信息的应答之后,便会使用获取到的信息去连接路由,并到云端激活。

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x2A
数据长度 2 xx
数据 Data {"s":"xxx", "p":"yyy", "t":"zzz"}
  • s:SSID
  • p:密码
  • 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

获取当前设备联网状态(0x2b)

设备联网状态 描述 状态值
状态 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
  • 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

获取模组 MAC(0x2d)

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 表示成功获取 MAC 地址,后面 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

获取模组相关信息(0x3407)

合规风险提醒
请注意,收集此类信息是客户自主决定的行为,需要客户在其自己的《隐私政策》中清楚描述以下内容:

  • 数据收集:客户应清楚说明谁将收集此类信息,可能是客户自身或第三方服务提供商。
  • 数据使用目的:客户应详细说明此类信息将被用于何种目的,包括使用用途,以及是否会分享给其他实体。
  • 数据留存模式:客户应明确说明此类信息将被保留的时间长度以及保留数据的安全措施。

说明

  • 针对某些产品需求,需要获取 Wi-Fi 模组的一些运行数据情况,都统一使用 0x3407 来获取。
  • MCU 可根据所需要的数据发送对应功能编码来获取。当 MCU 需要多种数据时,请按照对应编码,依次顺序排列发送给 Wi-Fi 模组。
  • 若 MCU 需要获取当前所有支持的数据,使用 0xff 编码即可。
  • 当 AP 热点是默认的 SmartLife 时,此命令只返回 SmartLife 信息,实际热点名称为 SmartLife_XXXX,其中 XXXX 为设备 MAC 地址后四位。

注意事项

  • 返回数据格式为 JSON 字符串的形式,Data 数据长度不定。

  • MCU 发送命令的数据长度至少有 2 个字节,即子命令+1 字节 Data 编码。若长度不对,则返回失败。

  • 数据编码是一一对应关系,请勿使用错误,且不可使用预留编码。

    名称 编码
    获取所有当前支持的数据信息 0xff
    AP SSID 名称 0x01
    国家码 0x02
    SN 信息 0x03
    FFS 授权信息 0x04
    模组版本号 0x05
    Wi-Fi 配置信息 0x06

模组返回数据字段说明

字段 名称 支持选项 获取 设置
ap AP SSID名称 字符型数据 支持 不支持
cc 国家码
  • 0:表示 CN,包含区域:中国,韩国,新加坡,澳大利亚,日本(1-13),其他
  • 1:表示 US,包含区域:美国,台湾,加拿大
  • 2:表示 JP,包含区域:日本(1-14)
  • 3:表示 EU,包含区域:欧洲
支持 不支持
sn SN 信息 获取模组内部经过授权后写入的 SN 信息 不支持 不支持
ffs FFS 授权信息
  • 0:表示无 FFS 授权信息。
  • 1:表示有授权信息,当模组反馈 1 时也同时会同步 SN 信息,用于辅助判断授权信息的准确性
支持 不支持
sw 模组版本 x.x.x,参考版本号规则 支持 不支持
wcfg Wi-Fi 配置信息
  • ssid:Wi-Fi 名称
  • pwd:Wi-Fi 密码,Wi-Fi 不加密时无 pwd 字段
支持 不支持
  • 目前,普通 Wi-Fi 类设备不支持获取 SN 信息。
  • 在获取 FFS 授权信息记录时:
    • 若无 FFS 授权记录,模组返回的信息中只有 ffs 字段,且内容为 0
    • 若有 FFS 授权信息,模组会返回 FFS 内容为 1,并携带 SN 信息用于辅助校验信息合法性。

MCU 发送

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

示例:获取AP SSID名称
55 AA 03 34 00 02 07 01 40

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x34
数据长度 2 0x0002 + N
数据 1 0x07(子命令)
1 执行结果
  • 0x00:成功
  • 0x01:失败,当执行失败后,无后续 Data 内容
Data(N) {
“ap”:“xxxx”,
“cc”:xx,
“sn”:“xxxx”,
“ffs”:xx,
“sw”:“x.x.x”,
“wcfg”:{“ssid”:“xxxx”,“pwd”:“xxxx”}
}
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余