文档中心

协议解析

更新时间:2020-09-10 09:55:42下载pdf

简介

开发者从 IoT 工作台下载的协议主要分为两部分:基础协议、功能协议。基础协议和产品功能无关,是模组本身的功能指令。功能协议是平台根据每个产品 DP 点定义不同,自动生成的功能点数据收发指令。本文会详细讲解模组初始化过程中必须的指令及部分常用扩展功能指令,其余指令开发者可自行阅读涂鸦 Wi-Fi 模组通用串口通讯协议了解。

相关视频教程可参考: Wi-Fi MCU对接指南之协议解析

协议框架

MCU 和 Wi-Fi 模组通过串口交互,通用固件:波特率 由固件配配置决定/数据位 8 位/无奇偶校验/停止位 1 位/无数据流控。数据帧格式如下:

字段 长度(byte) 说明
帧头 2 固定为 0x55aa
版本 1 升级扩展用
命令字 1 具体帧类型
数据长度 2 大端
数据 xxxx
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

命令字索引表如下:

命令字 说明
0x00 心跳检测
0x01 查询产品信息
0x02 查询设定模式工作模式
0x03 报告设备联网状态
0x04 重置 WIFI-切换配网模式
0x05 重置 WIFI-切换配网模式
0x06 DP 命令下发
0x07 DP 状态上报
0x08 状态查询
0x0a OTA 升级启动(可选)
0x0b OTA 升级包传输(可选)
0x1c 获取本地时间(可选)
0x0e Wi-Fi 功能性测试

基础协议

基础协议每个产品都一样,是模组工作所必须的协议。主要包含:心跳检测、产品信息查询、模组工作方式、Wi-Fi 工作状态等功能。
其中,命令字 0x00-0x08 为模组基本指令。命令字 0x0a-0x0e 为模组基础功能,包括 MCU OTA、获取本地时间、产测功能等。要使模组正常工作,我们要实现的协议主要分为两个部分:模组初始化、配网。
模组初始化协议主要涉及命令字,主要流程如下:

协议解析

模组上电会不断发送心跳包,等到 MCU 端回复心跳,会启动如上的初始化流程。

1) 心跳检测

心跳包回复要注意,MCU 上电第一次回复数据为 0x00,之后的数据回复为 0x01。这样第一次回复 0x00,模组会自动进行初始化数据同步。之后的心跳包用来判定设备是否离线和断网自动重连。

协议解析

例:

模组发送:55 aa 00 00 00 00 ff

MCU 回复:55 aa 03 00 00 01 00 03 (第一次)/55 aa 03 00 00 01 01 04(其他)

2) 查询产品信息

收到心跳包回复后,模组会发送查询产品指令信息。MCU 上报 PID、版本、模式等信息。这里要注意{}:””这些字符也是要写的,具体格式参考后图。

协议解析

例:

模组发送:55 aa 00 01 00 00 00

MCU 回复:下图以 PID:RN2FVAgXG6WfAktU 为例,用户根据自己产品 PID 转换成 ASCII 码替换到相应位置即可。

协议解析

3) 设定模组工作方式

收到产品信息后,模组会发送查询 MCU 设定模组工作方式 0x02 命令字。
模块工作模式主要针对如何指示 Wi-Fi 的工作状态以及如何重置 WIFI,主要分两种情况:

a. MCU 与模块配合处理模式。即模块通过串口通知 MCU Wi-Fi 当前的工作状态,由 MCU
控制配网指示灯显示。

协议解析

b. 模块自处理模式。Wi-Fi 模块的配网状态通过 Wi-Fi 的 GPIO 引脚驱动 LED 状态显示;
Wi-Fi 重置通过检测 GPIO 输入需求处理。
模块自处理 Wi-Fi 重置方法为:Wi-Fi 检测 GPIO 入口低电平持续 5s 以上触发 Wi-Fi 重置。指示灯与按钮所使用的 GPIO 管脚由以下命令配置。

协议解析

MCU 端若选择 MCU 与模组配合处理模式的上报数据为 0,若选择模块自处理模式上报数据为接指示灯 IO 口和按键 IO 口。如果产品采用模块自处理方式,则以下 4-6 协议无须关心。

协议解析

例:

模组发送:55 aa 00 02 00 00 01

MCU 回复:

55 aa 03 02 00 00 04(MCU 与模组配合处理模式)/
55 aa 03 02 00 02 05 00 0b(模组自处理模式,指示灯接 IO5,按键接 IO0)

4) 报告 Wi-Fi 状态:模块自处理方式无须关心
模组主动发送,当模块检测到 MCU 重启或模块的 Wi-Fi 状态发生变化,会主动发送状态到 MCU。MCU 可以根据 03 命令字中的 Wi-Fi 状态控制指示灯的闪烁。03 版本协议中,共有 6 中状态:

设备联网状态 描述 状态值 LED 显示
状态 1 smart 配置状态 0x00 快闪 250ms
状态 2 AP 配置状态 0x01 慢闪 1500ms
状态 3 Wi-Fi 已配置但未连上路由器 0x02 熄灭
状态 4 Wi-Fi 已配置且连上路由器 0x03 常亮
状态 5 已连上路由器且连接到云端 0x04 常亮
状态 6 Wi-Fi 设备处于低功耗模式 0x05 熄灭

协议解析

例:

模组发送:55 aa 00 03 00 01 01 校验和(01:AP 配置模式)

MCU 回复:55 aa 03 03 00 00 05

5) 重置 wifi:模块自处理方式无须关心
配网指令,可以通过重置 Wi-Fi 使设备处于待配网状态。配网模式分两种:

a. smart 模式(快闪模式),配网方式简单快捷

b. AP 模式(慢闪模式),配网稳定可靠

建议两种模式都要做,触发机制可以自定义,以指示灯快闪、慢闪给用户做区分。
0x04 命令字,MCU 每发送一次,模组切换一次配网模式。第一次默认 smart 模式,之后在 smart 与 AP 之间来回切换。

协议解析
协议解析

例:

MCU 发送:55 aa 03 04 00 00 06

模组回复:55 aa 00 04 00 00 03

6) 重置 wifi-选择模式:模块自处理方式无须关心

重置 Wi-Fi 并选择配网模式,根据 MCU 发送的参数不同,可指定进入 smart 或 AP 模式。此指令与 0x04 命令字作用相同,均可配网,但可指定进入某种配网模式

协议解析

例:

MCU 发送:55 aa 03 05 00 01 00 08 (smart 模式)/55 aa 03 05 00 01 01 09 (AP 模式)

模组回复:55 aa 00 05 00 00 04

7)MCU 工作状态产查询

08 命令字,用于模块查询 MCU 所有 datapoint 状态,作为 App 显示初值。MCU 收到后,分条上报所有 DP 点数据。“状态查询”发送情况主要有两种:

a. 模块首次上电,通过心跳与 MCU 建立连接后,查询发送;

b. 模块检测到 MCU 重启或发生了离线再上线的过程,查询发送。

协议解析

例:

模组发送:55 aa 00 08 00 00 07

MCU 回复:
55 aa 03 07 N ** 校验和(DP1)
55 aa 03 07 N **
校验和(DP2)
… (DPN)

8) 产测指令

主要用于产品量产时的 Wi-Fi 模组射频性能测试。产测指令,建议等待上电初始化完成,5S 以后调用。模组收产测指令到后,会自动扫描名称为 tuya_mdev_test Wi-Fi 信号,返回扫描结果和信号强度百分比(0-100 步进 20)。

协议解析

例:

MCU 发送:55 aa 03 0e 00 00 校验和

模组回复:55 aa 00 0e 00 02 01 28 38 (产测成功,信号强度 40)

功能协议

DP 点数据下发和上报指令。模组下发数据命令字 0x06,MCU 上报数据命令字 0x07。
MCU 在收到数据下发指令后,根据收到的功能指令数据不同,进行相应的逻辑控制。并在 DP 状态改变时及时上报,更改 App 显示状态。DP 点数据上报,MCU 遵循一个宗旨:状态改变就上报。(若同一 DP 点数据与上次上报相同,模组端会进行数据过滤)

例:

协议解析

注意:

a.value 型数据,有 4 个字节,使用不满 4 字节的,前边补 0 即可。

例:上图目标温度数据
MCU 发送:55 aa 03 07 00 08 02 02 00 04 00 00 00 1e 校验和(目标温度 30 度)

b.故障型数据,支持多故障同时上报。每一个 bit 位可代表一个警告,置 1 表示故障发生,置 0 表示无故障。

例:上图故障警告
MCU 发送:55 aa 03 07 00 06 0d 05 00 02 00 09 校验和(故障 bit0 和故障 bit3 发生故障)

c.字符型数据,字符串的含义与显示需与面板配套,自定义的可与面板沟通。

d.Raw 类型数据,透传型数据,通常用于比较复杂的功能实现。不建议用户自行使用。

点击获取服务和帮助