网关 Pro MCU 通用对接协议

更新时间:2025-03-14 09:27:17下载pdf

涂鸦 Wi-Fi 串口协议是针对涂鸦 Wi-Fi 模组定制的串口协议,主要用于涂鸦 Wi-Fi 模组与其它 MCU 串口直连完成串口通信。

串口协议通信示意图如下。

网关 Pro MCU 通用对接协议

串口通信要求

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

帧格式

字段 长度(字节) 说明
帧头 2 固定为 0x55aa
版本 1 MCU 软件版本号,升级扩展时使用
命令字 1 具体的命令字
数据长度 2 采用大端模式
数据 N 传输的数据
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余。

基础协议

查询产品信息

产品信息由 PID(产品 ID)和 MCU 软件版本号构成。

  • PID:对应涂鸦开发者平台的产品标识,由涂鸦开发者平台生成,用于云端记录产品相关信息。
  • MCU 软件版本号:采用点分十进制形式,格式为:x.x.x,x 为十进制数并且 0<=x<=99。

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x01
说明:网关 Pro 只支持获取产品 PID,不带默认 PID
命令字 1 0x01
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和,然后将得出的结果对 256 求余

示例:0x55aa 00 01 0000 00

MCU 返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x01
命令字 1 0x01
数据长度 2 N
数据 N 参见示例
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

示例:{"v":"1.0.0", "m":0, "cap":0, "p":"mhnmpqzf7ntzm***", "s":0,}

  • v:MCU 版本号。示例为:1.0.0。

  • m:配网方式。(网关 Pro 只支持默认配网)

    • 0:默认配网

    常配网工作模式。模组出厂上电后处于待配网状态,如果不对模组进行配网操作改变网络状态,模组会一直保持。

  • cap:设备支持的能力,取值为十六进制转十进制后的数值。比特位对应功能如下:

    • bit0:支持本地群组(网关 Pro 默认支持)
    • bit2:支持功能点(网关 Pro 默认支持)
    • bit4:支持 MCU 升级
    • bit5:群组控制指令支持 sub_id
    • 未用到的位默认置 0

      例如,设备不支持本地群组(bit0 为 0),但支持功能点(bit2 为 1),即十六进制数据为 0000 0000 0000 0100,即 cap 值为 4。

  • p:产品 PID。示例中 PID 为 mhnmpqzf7ntz****

  • s(可选):是否为安防网关,需要安防能力支持,默认不支持安防能力。

    • 0:普通网关,无安防能力。
    • 1:安防网关,具备安防能力。
  • a(可选):设备支持的扩展能力,取值为十六进制转十进制后的数值。比特位对应功能如下:

    • bit0:安防网关是否支持安防报警信息显示:0 表示不支持;1 表示支持。
    • bit1:支持多种网络连接方式(有线、Wi-Fi、4G),默认联网优先级:有线 > Wi-Fi > 4G。
    • bit2:按键功能由模组自处理(硬件电路上按键由模组的指定引脚控制,详见对应的模组的硬件方案)。
    • bit3:灯效功能由模组自处理(硬件电路上指示灯由模组的指定引脚控制,详见对应的模组的硬件方案)。
    • bit4-7:预留功能点。
    • 未用到的位默认置 0

报告 Wi-Fi 联网状态

  • 设备仅支持 Wi-Fi 网络连接方式。配合命令字 0x01 查询产品信息 中字段 a 的 bit1 位不使能。
  • 当模组的 Wi-Fi 联网状态发生变化,主动下发 Wi-Fi 联网状态至 MCU。
模组联网状态 描述 状态值
状态2 AP 配置状态 0x01
状态3 Wi-Fi 已配置但未连上路由器 0x02
状态4 Wi-Fi 已配置且连上路由器 0x03
状态5 已连上路由器且连接到云端 0x04

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x03
数据长度 2 0x0001
数据 1 显示 Wi-Fi 工作状态。
  • 0x01:状态 2
  • 0x02:状态 3
  • 0x03:状态 4
  • 0x04:状态 5
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

示例:0x55aa 00 03 0001 00 03

MCU 返回

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

示例:0x55aa 00 03 0000 02

网关本地重置

将网关解除绑定,Wi-Fi 状态恢复到热点模式配置状态。网关只会移除配网,并不会删除子设备信息。下次配回到原家庭时,子设备信息仍会在 App 上显示。

MCU 发送

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

示例:0x55aa 00 04 0000 03

模组返回

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

示例:0x55aa 00 04 0000 03

允许子设备入网

App 发送允许入网指令至网关,允许子设备在指定时间内接入网络。

模组发送

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

MCU 返回

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

关闭子设备入网

App 发送关闭入网指令至网关。

模组发送

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

MCU 返回

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

添加子设备

  • MCU 发送子设备入网请求至模块。
  • pk_type 为可选字段,默认值为 1。
  • channel 对于子设备需要 OTA 功能时一定要传输,默认为 10。硬件开发 > 新增自定义固件 > 升级通道号
    • 当前版本暂不支持子设备 OTA。
    • channel 配置错误可能导致 OTA 功能异常。

MCU 发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x08
数据长度 2 N
数据 N
  • 数据示例:
    ·{
    “pk_type”:xx
    “sub_id”:“xxxx”,
    “pid”:“xxxx”,
    “ver”:“x.x.x”,
    “channel”:xxx,
    “ota”:x
    }
  • 参数说明:
    • pk_type:用户自定义产品类型,可不传。
    • sub_id:子设备标识,最大长度25个字符,通常为 MAC 地址、芯片 ID 等,需要保证唯一性。不能为0000.0000等表示网关本身的通用标识。
    • pid: 产品 ID。
    • ver:版本号,例如:1.0.0
    • channel:通道号。对应于涂鸦云创建产品后,上传拓展固件的升级通道号。默认值为 10。
    • ota:表示子设备是否支持 OTA 能力,默认不支持。0:表示不支持;1:表示支持。
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

模组返回

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

删除子设备

模块同步子设备删除信息到 MCU。

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x09
数据长度 2 N
数据 N
  • 数据示例:
    {
    “sub_id”:“xxxx”,
    “devkey”:“xxx”,
    “tp”:xx
    }
  • 参数说明:
    • sub_id:需要删除的子设备 ID。
    • devkey:可选,设备密钥,用于子设备移除。
    • tp
      • 0:移除子设备。
      • 1:恢复出厂设置。
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 返回

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

心跳检测

网关模组定时查询子设备心跳。查询周期和子设备数量相关,子设备数量越多,子设备心跳查询间隔越频繁。

网关 Pro MCU 通用对接协议

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0A
数据长度 2 N
数据 N
  • 数据示例:{ "sub_id":"xxxx" }
  • 参数说明:sub_id 为子设备 ID
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 返回

在线的设备需要回复心跳,连续 2 个心跳周期不回复,则识别为设备离线。

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0A
数据长度 2 N
数据 N
  • 数据示例:{ "sub_id":"xxxx","lp":x, "hb_time":0 }
  • 参数说明:
    • sub_id:子设备 ID
    • lp:子设备功耗类型
      • 0:标准功耗设备
      • 1:低功耗设备
    • hb_time:若需要设置子设备永久在线,则使用此字段并设置hb_time0 ,同时使用 0x2A 命令主动更新子设备在线/离线状态
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

查询状态

用于同步子设备状态。

模组发送

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

MCU 返回状态上报

下发命令

控制命令下发。

  • 功能点命令除 raw 类型外,其他类型均属于 obj 型。
  • 可同时下发多个功能点命令。
  • 命令下发为异步处理协议,对应于 MCU 的 状态上报

功能点命令数据格式如下所示。

数据段 长度(字节) 说明
dpid 1 功能点序号
type 1 对应开发者平台上功能点具体的数据类型:
  • raw:raw 型功能点(模组输入)
    • 表示值:0x00
    • 长度(字节):N
  • bool:布尔型,取值为 0x00 或 0x01
    • 表示值:0x01
    • 长度(字节):1
  • value:对应 int 类型,大端表示
    • 表示值:0x02
    • 长度(字节):4
  • string:对应字符串
    • 表示值:0x03
    • 长度(字节):N
  • enum:枚举类型,取值范围 0~255
    • 表示值:0x04
    • 长度(字节):1
  • bitmap:故障型,长度大于 1 字节时,大端表示
    • 表示值:0x05
    • 长度(字节):1、2 或 4
len 2 长度对应 value 的字节数(大端)
value 1/2/4/N hex 表示,大于 1 字节采用大端传输

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0C
数据长度 2 N
数据 N
  • 数据示例:id_len(1byte) + sub_id(nbyte)+ datapoint
  • 参数说明:
    • id_len: 子设备 ID 长度
    • sub_id: 子设备 ID
      说明:当 sub_id 为 0000 时,代表命令下发至网关自身(主设备)的功能点。
    • datapoint:控制命令功能点的集合
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

状态上报

子设备接收到命令下发后进行回复或接收到状态变化后主动推送该指令。

功能点命令数据格式如下所示。

数据段 长度(字节) 说明
dpid 1 功能点序号
type 1 对应开发者平台上功能点具体的数据类型:
  • raw:raw 型功能点(模组输入)
    • 表示值:0x00
    • 长度(字节):N
  • bool:布尔型,取值为 0x00 或 0x01
    • 表示值:0x01
    • 长度(字节):1
  • value:对应 int 类型,大端表示
    • 表示值:0x02
    • 长度(字节):4
  • string:对应字符串
    • 表示值:0x03
    • 长度(字节):N
  • enum:枚举类型,取值范围 0~255
    • 表示值:0x04
    • 长度(字节):1
  • bitmap:故障型,长度大于 1 字节时,大端表示
    • 表示值:0x05
    • 长度(字节):1、2 或 4
len 2 长度对应 value 的字节数(大端)
value 1/2/4/N hex 表示,大于 1 字节采用大端传输

MCU 发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0D
数据长度 2 N
数据 N
  • 数据示例:id_len(1byte) + sub_id(nbyte)+ datapoint
  • 参数说明:
    • id_len: 子设备 ID 长度
    • sub_id: 子设备 ID
      注意:当 sub_id0000 时,代表是网关自身(主设备)的功能点
    • datapoint: 控制命令功能点的集合
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

加入群组

将子设备添加到本地群组。

  • 群组添加时,模组将群组 ID 下发给 MCU,MCU 再下发给子设备本地保存。
  • 群组执行命令时,模组将群组 ID 和控制命令功能点(Datapoint)下发给 MCU,MCU 再通过一条广播命令通知所有子设备。

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0E
数据长度 2 N
数据 N
  • 数据示例:子设备 12、34 和 56 加入群组 01,数据显示为
    { "gid":"01", "cids":["12","34","56"] }
  • 参数说明:
    • gid:群组 ID
    • cids:加入群组的子设备 ID 集合
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0E
数据长度 2 N
数据 N
  • 数据示例:{ "gid":"12", "cids":["12","34","56"], "rets":[0,0,0] }
  • 参数说明:
    • gid:表示群组 ID
    • cids:加入群组的子设备集合
    • rets:返回结果结合
      • 0:添加成功
      • 1:超过本地保存的群组数量上限
      • 2:子设备超时
      • 3:设置值超出范围
      • 4:写文件错误
      • 5:其他错误
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

群组子设备删除

将子设备从本地群组删除。群组删除时,模组将群组 ID 下发给 MCU,MCU 再下发给子设备本地删除。

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0F
数据长度 2 N
数据 N
  • 数据示例:子设备 12 从群组 01 中删除,{ "gid":"01", "cids":["12"] }
  • 参数说明:
    • gid:群组 ID
    • cids:子设备 ID 集合
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0F
数据长度 2 N
数据 N
  • 数据示例:{ "gid":"01", "cids":["12"], "rets":[0] }
  • 参数说明:
    • gid:表示群组 ID
    • cids:要删除群组的子设备集合
    • rets:返回结果结合
      • 0:删除成功
      • 1:超过群组数上限
      • 2:子设备超时
      • 3:设置值超出范围
      • 4:写文件错误
      • 5:其他错误
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

获取系统格林威治时间

MCU 发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x10
数据长度 2 0x0000
数据 0 示例:0x55aa 00 10 0000 0F
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

模组返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x10
数据长度 2 0x0007
数据 7
  • 数据示例:0x55aa 00 10 0007 01 10 04 13 05 06 07 50即格林威治时间 2016 年 4 月 19 日 5 时 6 分 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~31,即十六进制的 01~1f。十六进制 13 对应十进制数值为 19,即日期为 19 日。
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

获取本地时间

MCU 发送

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

模组返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x11
数据长度 2 0x0008
数据 8
  • 数据示例:0x55aa 00 10 0007 01 10 04 13 05 06 07 02 54即格林威治时间 2016 年 4 月 19 日 5 时 6 分 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
    • Data[7]:星期,范围为 1~7,1 表示周一
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余
  • 设备在国内激活:返回北京时间(东 8 区)。
  • 设备在国外激活:返回设备所处时区时间。

批量添加设备

批量添加同一个 PID 的多个子设备。单次批量添加的子设备的上限为 32 。

当前版本暂不支持子设备 OTA。

MCU 发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x12
数据长度 2 N
数据 N
  • 数据示例:
    {
    “pid”:" xxxx",
    “cids”:[“12”,“34”,“56”],
    “ver”:“x.x.x”,
    “channel”:xxx,
    “ota”:x
    }
  • 参数说明:
    • pid:产品 ID
    • cids:子设备 ID 集合
    • ver:版本号,例如1.0.0
    • channel:子设备升级通道号,对应于涂鸦开发者平台创建产品后上传拓展固件的升级通道号,默认为 10
    • ota:子设备是否支持 OTA 能力,默认不支持
      • 0:不支持
      • 1:支持
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

模组返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x12
数据长度 2 0x0001
数据 1
  • 0x00:数据接收成功。
  • 0x01:数据接收或者解析失败。
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

返回添加设备结果

设备添加完成后,通知 MCU 添加结果。

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x13
数据长度 2 N
数据 N
  • 数据示例:
    {
    “cids”:[“12”,“34”,“56”],
    “rets”:[0,0,0],
    “key”:[“xxxx”,“xxx”],
    “virt_id”: [“xxxx”,“xxx”]
    }
  • 参数说明:
    • cids:子设备 ID 集合
    • channel:子设备升级通道号,对应于涂鸦开发者平台创建产品后上传拓展固件的升级通道号,默认为 10
    • ota:子设备是否支持 OTA 能力,默认不支持
      • 0:不支持
      • 1:支持
    • key:密钥,可选,目前仅单点设备支持该字段
    • virt_id:虚拟 ID,可选,目前仅单点设备支持该字段
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 返回

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

控制群组指令下发

功能点命令数据格式如下所示。

数据段 长度(字节) 说明
dpid 1 功能点序号
type 1 对应开发者平台上功能点具体的数据类型:
  • raw:raw 型功能点(模组输入)
    • 表示值:0x00
    • 长度(字节):N
  • bool:布尔型,取值为 0x00 或 0x01
    • 表示值:0x01
    • 长度(字节):1
  • value:对应 int 类型,大端表示
    • 表示值:0x02
    • 长度(字节):4
  • string:对应字符串
    • 表示值:0x03
    • 长度(字节):N
  • enum:枚举类型,取值范围 0~255
    • 表示值:0x04
    • 长度(字节):1
  • bitmap:故障型,长度大于 1 字节时,大端表示
    • 表示值:0x05
    • 长度(字节):1、2 或 4
len 2 长度对应 value 的字节数(大端)
value 1/2/4/N hex 表示,大于 1 字节采用大端传输

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x14
数据长度 2 N
数据 N
  • 数据示例:id_len(1byte) + grp_id(nbyte)+ datapoint
  • 参数说明:
    • id_len:群组 ID 长度
    • grp_id:群组 ID
    • datapoint:控制命令功能点的集合
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 返回

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

Wi-Fi 功能性测试

扫描指定的 SSID: tuya_mdev_test,返回扫描结果和信号强度百分比。

MCU 发送

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

模组返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x15
数据长度 2 0x0002
数据 2
  • Data[0]:
    • 0x00:失败
    • 0x01:成功
  • Data[1]:
    • Data[0] 为 0x00:
      • Data[1]为 0x00:表示未扫描到指定的 SSID
      • Data[1]为 0x01:表示模组未烧录授权 Key
    • Data[0] 为 0x01:
      • Data[1] 表示信号强度 (0~100,0 信号最差,100 信号最强)
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

获取 Wi-Fi 联网状态

  • 设备仅支持 Wi-Fi 网络连接方式。配合命令字 0x01 查询产品信息 中字段 a 的 bit1 位不使能。
  • 模组在网络功能初始化完成前不会回复 Wi-Fi 状态。
模组联网状态 描述 状态值
状态 2 热点模式配置状态 0x01
状态 3 Wi-Fi 已配置但未连上路由器 0x02
状态 4 Wi-Fi 已配置且连上路由器 0x03
状态 5 已连上路由器且连接到云端 0x04

MCU 发送

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

模组返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x16
数据长度 2 0x0001
数据 1 Wi-Fi 工作状态:
  • 0x01:状态 2
  • 0x02:状态 3
  • 0x03:状态 4
  • 0x04:状态 5
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

本地恢复出厂设置(可选)

本地恢复出厂(MCU 命令下发),蓝牙子设备不会挂到家庭下,而是直接删除。

MCU 发送

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

报告移除状态

网关收到移除或者恢复出厂命令时,会向 MCU 报告状态。

  • 如果仅收到移除指令,网关只会移除配网,并不会删除子设备信息。下次配回到原家庭时,子设备信息仍会在 App 上显示。
  • 如果收到恢复出厂指令,网关会移除配网并且清除所有子设备信息。

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x18
数据长度 2 0x0001
数据 1
  • 0x00:本地恢复出厂设置
  • 0x01:远程移除
  • 0x02:本地移除
  • 0x03:远程恢复出厂设置
  • 0x04:网关更换家庭激活时恢复出厂设置
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

本地删除子设备

MCU 发送删除子设备指令。

MCU 发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x19
数据长度 2 N
数据 N 示例:{ “sub_id”:“xxx” }
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

模组返回

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

本地允许/关闭子设备入网

MCU 发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x1A
数据长度 2 0x0003
数据 3
  • Data[0]:
    • 0x00:关闭子设备添加
    • 0x01:允许子设备添加
  • Data[1]:允许添加时间(高字节)
  • Data[2]:允许添加时间(低字节)
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

模组返回

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

查询子设备列表

MCU 可查询网关下所有子设备(MCU 管理的子设备)的列表。当列表数据大于 255 字节时分包发送。

MCU 发送

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

模组返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x1C
数据长度 2 N
数据 N
  • 数据示例:id(1byte)+sub_num(1byte)+sub1_len(1byte)+sub1_id+….. subn_len(1byte)+subn_id(1byte)
  • 参数说明:
    • id
      • 07:
        • false:所有子设备地址已经发送完成
        • true:后续仍有子设备地址,下一数据包中发送
      • 00-06:包序号,从 0 开始
    • sub_num:本数据包中包含的子设备数量
    • sub1_len:子设备 ID 长度
    • sub1_id:子设备 ID
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

远程升级服务

涂鸦开发者平台提供可视化配置选项,支持用户自行选择升级方式。模组仅作为支持 MCU 升级的数据传输通道,不对数据内容进行解析。

Wi-Fi 模组发送完所有的升级包后发送命令字 0x01 查询产品信息,MCU 需要在一分钟内回复产品信息中的软件版本号和升级后的 MCU 版本号的合集。版本号需要和在涂鸦后台配置升级的版本号保持一致。

  • MCU 远程升级方式:

    • App 提醒升级:App 端提供升级提醒弹窗,用户在 App 确认是否升级。
    • App 强制升级:App 端提供升级提醒弹窗,确认升级后才可以进行其他操作。
    • App 检测升级:App 端不提供升级提醒弹窗,用户需在 App 端自行检测固件版本,进行升级。
  • App 自动升级(原静默升级):App 端不提供提醒弹窗,固件上电后一分钟内进行升级检测,如果检测到高版本升级包则自动升级包下载和安装。自第一次上电后,每隔 24 小时进行升级检测。

  • MCU 升级相关流程图:

    网关 Pro MCU 通用对接协议

MCU 启动升级

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x1D
数据长度 2 0x0004
数据 4 升级文件大小,大端模式
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x1D
数据长度 2 0x0001
数据 1 升级包分包传输大小:
  • 0x00:默认值,256 字节(兼容旧固件)
  • 0x01:512 字节
  • 0x02:1024 字节
  • 0x03:128 字节
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 升级包传输

  • 升级包传输数据格式:包偏移(unsigned short)+ 包数据。
  • MCU 若收到该帧数据长度为 4 字节且包偏移大于等于固件大小,则包传输结束。

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x1E
数据长度 2 0x0004+m,m 为偏移字节
数据 offset_addr(4byte)+ pack(mbyte) offset_addr: 包偏移地址
pack: 数据包内容
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

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

  • 第一包数据,包偏移为 0x00000000,数据包长度为 256

    0x55aa 00 1e 0104 00000000 xx…xx XX

  • 第二包数据,包偏移为 0x00000100,数据包长度为 256

    0x55aa 00 1e 0104 00000100 xx…xx XX

  • 倒数第二包数据,包偏移为 0x00000200,数据包长度为 18

    0x55aa 00 1e 0016 00000200 xx…xx XX

  • 最后一包,包偏移为 0x00000212,数据包长度为 0

    0x55aa 00 1e 0004 00000212 XX

MCU 返回

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

子设备启动升级

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x1F
数据长度 2 N
数据 N
  • 数据示例:id_len(1byte) + sub_id(nbyte)+ file_size(4byte)
  • 参数说明:
    • id_len:子设备 ID 长度
    • sub_id:子设备 ID
    • file_size:升级文件大小,大端模式
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x1F
数据长度 2 0x0001
数据 1 升级包分包传输大小:
  • 0x00:默认 256 字节(兼容旧固件)
  • 0x01:512 字节
  • 0x02:1024 字节
  • 0x03:128 字节
  • 0x04:64 字节
  • 0x05:32 字节
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

子设备升级包传输

  • 升级包传输数据格式:包偏移(unsigned short)+ 包数据。
  • MCU 若收到该帧数据长度为 4 字节且包偏移大于等于固件大小,则包传输结束。

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x20
数据长度 2 N
数据 N
  • 数据示例:id_len(1byte) + sub_id(nbyte)+ offset_addr(4byte)+ pack(mbyte)
  • 参数说明:
    • id_len:子设备 ID 长度
    • sub_id:子设备 ID
    • offset_addr:偏移地址
    • pack:数据包
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

示例:sub_id 为 1234,需要升级的文件大小 530 Byte。(最后一包数据可不回复)

  • 第一包数据,包偏移为 0x00000000,数据包长度为 256。

    0x55aa 00 20 0109 04 31 32 33 34 00000000 xx…xx XX

  • 第二包数据,包偏移为 0x00000100,数据包长度为 256。

    0x55aa 00 20 0109 04 31 32 33 34 00000100 xx…xx XX

  • 倒数第二包数据,包偏移为 0x00000200,数据包长度为 18。

    0x55aa 00 20 001B 04 31 32 33 34 00000200 xx…xx XX

  • 最后一包,包偏移为 0x00000212,数据包长度为 0。

    0x55aa 00 20 0009 04 31 32 33 34 00000212 XX

MCU 返回

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

查询子设备版本号

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x21
数据长度 2 N
数据 N
  • 数据示例:{"sub_id":"xxx"}
  • 参数说明:sub_id 即子设备 ID
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x21
数据长度 2 N
数据 N
  • 数据示例:{"sub_id":"xxx", "ver":"xx.xx.xx"}
  • 参数说明:
    • sub_id:子设备 ID
    • ver:子设备固件版本号
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

控制群组指令下发(带 sub_id

功能点命令数据格式如下所示。

数据段 长度(字节) 说明
dpid 1 功能点序号
type 1 对应开发者平台上功能点具体的数据类型:
  • raw:raw 型功能点(模组输入)
    • 表示值:0x00
    • 长度(字节):N
  • bool:布尔型,取值为 0x00 或 0x01
    • 表示值:0x01
    • 长度(字节):1
  • value:对应 int 类型,大端表示
    • 表示值:0x02
    • 长度(字节):4
  • string:对应字符串
    • 表示值:0x03
    • 长度(字节):N
  • enum:枚举类型,取值范围 0~255
    • 表示值:0x04
    • 长度(字节):1
  • bitmap:故障型,长度大于 1 字节时,大端表示
    • 表示值:0x05
    • 长度(字节):1、2 或 4
len 2 长度对应 value 的字节数(大端)
value 1/2/4/N hex 表示,大于 1 字节采用大端传输

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x22
数据长度 2 N
数据 N
  • 数据示例:grp_len(1byte) + grp_id(nbyte)+ sub_len(1byte) + sub_id(mbyte)+ datapoint
  • 参数说明:
    • grp_len:群组 ID 长度
    • grp_id:群组 ID
    • sub_len:群组中指定子设备 ID 长度
    • sub_id:子设备 ID
    • datapoint:控制命令功能点集合
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 返回

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

查询 DP 状态

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x29
数据长度 2 N
数据 N
  • 数据示例:{ "sub_id":"xxx", "dpid":[xx,xx,xx] }
  • 参数说明:
    • sub_id:设备 ID
    • dpid:对应的 DPID 数组
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 返回状态上报

更新子设备在线/离线状态

MCU 发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x2A
数据长度 2 N
数据 N
  • 数据示例:{"all":0,"cids":["xxx","xxx"],"state":1}{"all":1,"state":1}
  • 参数说明:
    • all:
      • 0:仅包含 cids 的数据
      • 1:包括所有子设备,无需 cids 字段
    • cids:设备 ID 组
    • state:
      • 0:离线
      • 1:在线
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

模组返回

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

获取模组的 MAC 地址

返回的是 Wi-Fi 的 MAC 地址。

MCU 发送

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

模组返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x2B
数据长度 2 0x0007
数据 7
  • data[0]:获取 MAC 地址是否成功。
    • 0x00:成功
    • 0x01:失败
  • data[1]-data[6]:模组的 MAC 地址
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

记录型状态实时上报(带时间)

  • 对于类似门锁等记录型的子设备,上报 DP 状态的同时也需要带上产生这些记录的时间戳。
  • 此上报接口为同步上报接口,MCU 数据上报后可以等待模组返回信息以判断上报是否成功。

功能点命令数据格式如下所示。

数据段 长度(字节) 说明
dpid 1 功能点序号
type 1 对应开发者平台上功能点具体的数据类型:
  • raw:raw 型功能点(模组输入)
    • 表示值:0x00
    • 长度(字节):N
  • bool:布尔型,取值为 0x00 或 0x01
    • 表示值:0x01
    • 长度(字节):1
  • value:对应 int 类型,大端表示
    • 表示值:0x02
    • 长度(字节):4
  • string:对应字符串
    • 表示值:0x03
    • 长度(字节):N
  • enum:枚举类型,取值范围 0~255
    • 表示值:0x04
    • 长度(字节):1
  • bitmap:故障型,长度大于 1 字节时,大端表示
    • 表示值:0x05
    • 长度(字节):1、2 或 4
len 2 长度对应 value 的字节数(大端)
value 1/2/4/N hex 表示,大于 1 字节采用大端传输

MCU 发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x2C
数据长度 2 7+N
时间 7
  • Data[0]:数据传输是否带时间标志位
    • 0x00:不带后面的时间,模组认为时间数据无效不处理
    • 0x01:上报当地时间(日期格式)
    • 0x02:上报格林威治时间(日期格式)
    • 0x03:时间数据位时间戳,精度到秒
  • Data[0]为 0x010x02
    • 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[0]为 0x03
    • data[1]~data[4]:4字节时间戳,大端格式
    • data[5]~data[6]:用 0 填充
数据 N
  • 数据示例:{ id_len(1byte)+sub_id(nbyte)+datapoint}
  • 参数说明:
    • id_len:子设备 ID 长度。
    • sub_id:子设备 ID。当 sub_id0000 时,表示上报网关本身的 DP(主设备)。
    • datapoint:状态命令功能点集合。
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

模组返回

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

查询子设备绑定状态

MCU 发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x2D
数据长度 2 N
数据 N
  • 数据示例:{"sub_id":"xxx", "d_link":x "e_val":"xxx"}
  • 参数说明:
    • d_link:是否支持双链路,即子设备是否同时支持手机和网关绑定。
      • 0:不支持
      • 1:支持
    • e_val: 加密数值,可选字段。
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

模组返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x2D
数据长度 2 N
数据 N
  • 数据示例:{"sub_id":"xxx", "ret":x}
  • 参数说明:
    • sub_id: 子设备 ID。
    • ret:当前子设备绑定状态:
      • 0:与网关绑定成功
      • 1:网关中存在子设备记录但是未绑定(正在绑定中或云端没有该子设备记录)
      • 3:与手机绑定,但是未和网关绑定
      • 4:未与网关绑定,与手机绑定关系未知
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

查询群组中子设备信息

MCU 发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x2E
数据长度 2 N
数据 N
  • 数据示例:{ "gid":"xxx", "idx":xx}
  • 参数说明:
    • gid:群组 ID
    • idx:查询子设备的序号。例如,0 为查询第一个子设备
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

模组返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x2E
数据长度 2 N
数据 N 示例:{"gid":"xxx","sub_id":"xxxx" }
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

上报群组本地改变的 DP

MCU 发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x2F
数据长度 2 N
数据 N
  • 数据示例:{"gid":"xxx", "dpid":xx}
  • 参数说明:
    • gid:群组 ID
    • dpid:群组本地有改变的 DPID,模组收到该 DP 后会查询群组设备中的该 DP 最新状态
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

模组返回

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

拓展功能

天气服务功能

  • 天气服务功能可以用于获取设备配网地址的天气信息或者获取家庭地址的天气信息。如果是获取家庭地址的天气信息,需要增加请求参数 w.a.new,并且实时天气与预报天气要分开请求,若同时请求则只回复预报天气。
  • 天气服务功能支持 MCU 主动获取天气和开启模组定时更新天气。
  • 如果返回参数少于请求参数,请仔细检查请求参数名是否正确,或者是否支持。
  • 天气服务支持的字段功能说明,参考 附录一
  • 城市服务支持的字段功能说明,参考 附录二
  • 天气预报服务数值类型说明,参考 附录三
  • 中文天气 UTF-8 编码说明,参考 附录四
  • 风向简码编码表说明,参考 附录五

打开定时获取天气数据

MCU 发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x33
数据长度 2 (1+1+(L+K)+(L+K)…)
数据 N
  • 子命令:1 字节,0x00
  • 定时更新间隔:1 字节
    • 0x00:关闭定时更新天气功能。
    • 0xFF:更新间隔为 24 小时。
    • 其他:单位分钟,最小更新间隔为 10 分钟,考虑天气数据的实时性,最大间隔是 240 分钟。建议标准的更新时间为 60 分钟。例如,0x1E 代表 30 分钟更新一次。
  • L:1 字节,表示 K 的长度。例如 L:0x06
  • K:请求参数名称,支持的参数名称见附录一。例如 K:w.temp
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

示例55 AA 00 33 00 09 00 1E 06 77 2E 74 65 6D 70 BA

模组返回

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

下发天气数据

开启定时更新天气功能后,模组定时下发天气数据。定时开启成功后会即时触发数据下发,后续以设置的定时更新间隔下发。

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x33
数据长度 2 (1+1+(LKTLV)+(LKTLV)+…) 或 0x0003
数据 N
  • 子命令:1 字节,0x01。
  • MCU 接收状态:
    • 接收失败,2 字节:
      • 0x00:表示失败
      • 错误码:0x01 - 无法连接到互联网,0x02 - HTTP错误
    • 接收成功,1 字节,即 0x01
  • L:1 字节,表示 K 的长度。例如 L:0x06
  • K:请求参数名称,支持的参数名称见 附录一。例如 K:w.temp
  • T:参数类型
    • 0x00:整型
    • 0x01:字符串
  • L:字段名长度
  • V:字段取值
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

示例55 AA 00 33 00 0F 01 01 06 77 2E 74 65 6D 70 00 04 00 00 00 06 AE

MCU 返回

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

主动获取天气数据

该指令用于确认数据请求,数据下发还是通过 0x3301 的下发天气数据的命令。

MCU 发送

字段 长度 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x33
数据长度 2 (1+(L+K)+(L+K)…)
数据 N
  • 子命令:1 字节,0x02
  • L:1 字节,表示 K 的长度。例如 L:0x06
  • K:请求参数名称,支持的参数名称见 附录一。例如 K:w.temp
校验和 1 从帧头开始按字节求和得出的 结果对 256 求余

示例:55 AA 00 33 00 08 02 06 77 2E 74 65 6D 70 9D

模组返回

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

天气使用示例

以下示例,以中国大陆地区的设备为参考示例。

查询当天实时数据

  • MCU 发送:{"w.temp","w.humidity"}{"w.temp","w.humidity","w.currdate"}

  • 模组返回:

    {
        "w.temp":13,
        "w.humidity":100
    }
    

只查询当天的预报数据

查询返回的数据,为预报型数据,请将当天的预报数据,与实时数据做好区别使用。

  • MCU 发送:{"w.humidity","w.date.1"}

  • 模组返回:

    {
        "w.humidity.0":100
    }
    

查询多天的数据

  • MCU 发送:{"w.humidity","w.date.3"}

  • 模组返回:

    {
        "w.humidity.0":100,
        "w.humidity.1":100,
        "w.humidity.2":100
    }
    

查询日出日落的天气数据

  • 格林时间(以 UTC +8 时区为例)

    • MCU 发送:{ "w.humidity","w.sunrise","w.sunset","t.unix","w.date.3" }

    • 模组返回:

      {
          "w.humidity.0":100,
          "w.sunrise.0":"2019-12-27 00:05",
          "w.sunset.0":"2019-12-27 10:54",
          "w.humidity.1":100,
          "w.sunrise.1":"2019-12-28 00:05",
          "w.sunset.1":"2019-12-28 10:54",
          "w.humidity.2":100,
          "w.sunrise.2":"2019-12-29 00:05",
          "w.sunset.2":"2019-12-29 10:54"
      }
      
  • 本地时间(以 UTC +8 时区为例)

    • MCU 发送:{ "w.humidity","w.sunrise","w.sunset","t.local","w.date.3" }

    • 模组返回:

      {
          "w.humidity.0":100,
          "w.sunrise.0":"2019-12-27 08:05",
          "w.sunset.0":"2019-12-27 18:54",
          "w.humidity.1":100,
          "w.sunrise.1":"2019-12-28 08:05",
          "w.sunset.1":"2019-12-28 18:54",
          "w.humidity.2":100,
          "w.sunrise.2":"2019-12-29 08:05",
          "w.sunset.2":"2019-12-29 18:54"
      }
      

掺杂不支持预报的参数获取示例

  • MCU 发送:{ "w.temp","w.humidity","w.pm10","w.pm25","w.date.3" }

  • 模组返回:

    {
        "w.pm10.0":14,
        "w.pm25.0":7,
        "w.humidity.0":100,
        "w.humidity.1":100,
        "w.humidity.2":100
    }
    

    若 MCU 的入参 w.date.n 中,n >7 或者 n<=0 时,云端按照数据入参异常,此时无返回数据。

网关本地重启

通过 MCU 重启模组的方式。

MCU 发送

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

模组返回

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

本地打开/关闭 4G 功能

本功能只对支持 4G 的网关有效。

MCU 发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 2
  • Data[0]:子命令 0x01
  • Data[1]:4G 状态
    • 0x00:关闭 4G
    • 0x01:打开 4G
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

模组返回

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

报告多网卡设备联网状态

  • 设备支持多种网络连接方式。配合命令字 0x01 查询产品信息 中字段 a 的 bit1 位使能。
  • 当多网卡设备的联网状态发生变化,主动下发联网状态至 MCU。

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0003
数据 3
  • Data[0]:子命令 0x02
  • Data[1]:联网状态
    • 0x00:离线(未连接上云端)
    • 0x01:上线(已连接上云端)
  • Data[2]:当前连接到云端的网络
    • 0x00:无
    • 0x01:有线网络
    • 0x02:Wi-Fi 网络
    • 0x03:4G 网络
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 返回

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

获取多网卡设备联网状态

设备支持多种网络连接方式。配合命令字 0x01 查询产品信息 中字段 a 的 bit1 位使能。

MCU 发送

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

模组返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0003
数据 3
  • Data[0]:子命令 0x03
  • Data[1]:联网状态
    • 0x00:离线(未连接上云端)
    • 0x01:上线(已连接上云端)
  • Data[2]:当前连接到云端的网络
    • 0x00:无
    • 0x01:有线网络
    • 0x02:Wi-Fi 网络
    • 0x03:4G 网络
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

获取设备 IPV4 网络信息

MCU 发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 2
  • Data[0]:子命令 0x04
  • Data[1]:网卡名称
    • 0x00:有线
    • 0x01:Wi-Fi
    • 0x02:4G
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

模组返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002 或 0x0013
数据 2 或 19
  • Data[0]:子命令 0x04
  • Data[1]:操作结果
    • 0x00:成功
    • 0x01:失败
    当操作结果成功时,返回以下数据:
  • Data[2]:DHCP 使能
    • 0x00:DHCP 开
    • 0x01:DHCP 关
  • Data[3]~Data[6]:IP 地址
    • 示例 192.168.1.1000xC0 0xA8 0x01 0x64
  • Data[7]~Data[10]:子网掩码
    • 示例 255.255.255.00xFF 0xFF 0xFF 0x00
  • Data[11]~Data[14]:默认网关
    • 示例 192.168.1.10xC0 0xA8 0x01 0x01
  • Data[15]~Data[18]:DNS 服务器地址
    • 示例 8.8.8.80x08 0x08 0x08 0x08
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

查询子设备信号强度

面板支持子设备网络拓扑图的显示。当存在中继子设备时,MCU 需要依次返回终端子设备以及中继子设备的 ID 和信号强度。

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 1+N
数据 1 子命令:0x05
N
  • 示例: { "sub_id":"xxxx" }
  • 说明:sub_id为子设备 ID
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 1+N
数据 1 子命令:0x05
N
  • 数据示例:[{ "sub_id":"xxx", "rssi":x }, ..., {}]
  • 若网络拓扑关系为:终端子设备 A – 中继子设备 B – 中继子设备 C – 网关
    则MCU返回的数组元素填充顺序如下:
    [
    {“sub_id”:“子设备 A 的 ID”,“rssi”:子设备 A 的 rssi},
    {“sub_id”:“子设备 B 的 ID”,“rssi”:子设备 B 的 rssi},
    {“sub_id”:“子设备 C 的 ID”,“rssi”:子设备 C 的 rssi},

    ]
  • 参数说明:
    • sub_id:子设备 ID
    • rssi:信号强度等级
      • 1:差
      • 2:良
      • 3:优
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

安防传感扩展协议

此部分协议为安防相关功能指令,只描述指令内容。关于详细的对接流程,请参考 安防网关对接流程说明

当前布防模式设置

用于设置当前的布防撤防模式。

  • 进入布防模式后,需要在撤防后,再次设置布防模式。
  • 当前此命令设置的布防延时时间无效,布防延时时间以 App 设置为准,布防延时字段数据请传 0。
  • sub_id 字段传 NULL 代表网关本身。

MCU 发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xC0
数据长度 2 1+N
数据 1 子命令:0x00
N
  • 示例:{ “mode”:“xxx”, “sub_id”:“xxxxx”, “delay”:xx}
  • 参数说明:
    • mode:布防模式:
      • 0:撤防
      • 1:在家布防
      • 2:离家布防
    • sub_id:子设备 ID
    • delay:延时布防时间
      • 0:读取手机设置时间
      • 非 0:延时时间,单位为秒
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

模组返回

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

当前安防信息获取

用于获取当前的安防信息。

MCU 发送

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

模组返回

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xC0
数据长度 2 1+N
数据 1 子命令:0x01
N
  • 示例:{操作结果} +{“mode”:“xxx”, “alarm”:x, “countdown”:x}
  • 参数说明:
    • 操作结果:
      • 0:成功
      • 1:失败
    • mode:布防模式:
      • 0:撤防
      • 1:在家布防
      • 2:离家布防
    • alarm:报警状态
      • 0:报警延时,报警中
      • 非 0:无报警
    • countdown:布防延时状态
      • 0:布防延时中
      • 非 0:无布防延时
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

安防信息同步

当通过 App 设置安防信息后,模组以此条指令同步状态给 MCU。

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xC0
数据长度 2 1+N
数据 1 子命令:0x02
N
  • 示例:{“mode”:“xxx”, “delay”:xx, “sound”:x}
  • 参数说明:
    • mode:布防模式
      • 0:撤防
      • 1:在家布防
      • 2:离家布防
    • delay:延时布防时间
      • 0:无延迟
      • 非 0:延时时长,单位为秒
    • sound:是否播放声音
      • 0:需要播放
      • 非 0:不需要播放
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 返回

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

设备安防事件同步

收到撤防事件后,需要通过 DP32 上报取消报警,并 设置模组报警状态

安防事件模组通过本指令同步状态至 MCU。

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xC0
数据长度 2 1+N
数据 1 子命令:0x03
N
  • 示例:{ “status”:x, “data”:“xxx” }
  • 参数说明:
    • status:事件
      • 0:撤防
      • 1:进入布防
      • 2:存在可忽略事件,触发声音播放
      • 3:开始倒计时
    • data:事件信息
      • 0:无倒计时。目前仅当报警倒计时开启时,反馈倒计时时间。
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 返回

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

报警状态设置

App 设置延迟报警,报警倒计时结束后,应设置模组报警状态,触发 App 报警。(未设置报警状态也能触发 App 报警,为云端容错逻辑,不建议这样使用。)

MCU 通过安防标准 DP32 有状态变化时,需要将状态同步给模组。

MCU 发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xC1
数据长度 2 0x0002
数据 2
  • Data[0]:子命令 0x00
  • Data[1]:报警状态
    • 0:正常
    • 非 0:报警中
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

模组返回

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

设备报警延时状态同步

设备处于报警延时状态时,会通过此命令同步报警延时状态给 MCU。

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xC1
数据长度 2 0x0002
数据 2
  • Data[0]:子命令 0x03
  • Data[1]:报警延时状态
    • 0:报警延时未创建
    • 1:报警延时进行中
    • 2:报警延时结束
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 返回

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

新设备报警信息显示同步

此命令为新的设备报警信息同步,配合命令字 0x01 查询产品信息 中字段 a 的 bit0 位使能,且使能后安防 0xc101 和 0xc102 命令字无需处理。

  • 当前无 GP 字段。
  • 非环境设备:非环境监测相关类设备。
  • 环境设备:环境监测相关类设备等。
  • 此命令统一用于报警信息同步命令,模组发送的数据内容不是固定的,会根据功能增加按照设备功能的支持情况,下发支持的字段数据。

目前预留多防区网关功能的字段。当前设备不返回此字段。

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xC1
数据长度 2 1+N
数据 1 子命令:0x04
N
  • 示例:
    {
    “type”:x,
    “sub_id”:“xxx”,
    “dp_inf”:“xxx”,
    “gp”:“xxxx”
    }
  • 参数说明:
    • type:触发报警设备类型
      • 0:非环境设备
      • 1:环境设备
    • sub_id:设备 ID
    • dpinf:触发报警 DP 信息,cJSON 字符串
    • gp:预留,为多防区功能使用,同步报警设备归属的防区。
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 返回

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

新设备报警状态同步

此命令为新的设备报警状态同步,配合命令字 0x01 查询产品信息 中字段 a 的 bit0 位使能。

模组发送

字段 长度(字节) 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xC1
数据长度 2 0x0002
数据 1
  • Data[0]:子命令 0x05
  • Data[1]:报警状态
    • 0:取消报警
    • 1:报警中
校验和 1 从帧头开始按字节求和,将得出的结果对 256 求余

MCU 返回

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

附录

附录一:天气数据参数 ASCII 码

天气数据参数 含义
中国大陆 其他国家或地区 是否支持预报 长度 十六进制
w.temp 大气温度,单位:摄氏度 ℃ 支持 支持 支持 7 天内数据,中国大陆地区不支持 6 77 2e 74 65 6d 70
w.humidity 空气湿度 支持 支持 支持 7 天内数据 10 77 2e 68 75 6d 69 64 69 74 79
w.conditionNum 天气概况数字编码 支持 支持 支持 7 天内数据 14 77 2e 63 6f 6e 64 69 74 69 6f 6e 4e 75 6d
w.pressure 大气气压,单位:毫巴 mbar 支持 支持 支持 7 天内数据,中国大陆地区不支持 10 77 2e 70 72 65 73 73 75 72 65
w.realFeel 体感温度 支持 支持 不支持 7 天内数据 10 77 2e 72 65 61 6c 46 65 65 6c
w.uvi 紫外线指数 支持 支持 支持 7 天内数据 5 77 2e 75 76 69
w.sunrise 日出 支持 支持 支持 7 天内数据 9 77 2e 73 75 6e 72 69 73 65
w.sunset 日落 支持 支持 支持 7 天内数据 8 77 2e 73 75 6e 73 65 74
t.unix 格林时间,搭配日出(w.sunrise)和日落(w.sunset)使用 - - - 6 74 2e 75 6e 69 78
t.local 本地时间,搭配日出(w.sunrise)和日落(w.sunset)使用 - - - 7 74 2e 6c 6f 63 61 6c
w.windSpeed 风速,单位:米/秒(m/s) 支持 支持 支持 7 天内数据 11 77 2e 77 69 6e 64 53 70 65 65 64
w.windDir 风向 支持 支持 支持 7 天内数据 9 77 2e 77 69 6e 64 44 69 72
w.windLevel 风级 仅中国大陆地区支持 不支持 支持 7 天内数据 11 77 2e 77 69 6e 64 4c 65 76 65 6c
w.aqi 空气质量指数,采用美国 EPA 标准:0 ~ 500 支持 支持 仅有当天数据 5 77 2e 61 71 69
w.rank/w.quality 详细 AQI 实况及全国排名 仅中国大陆地区支持 不支持 仅有当天数据 6 77 2e 72 61 6e 6b / 77 2e 71 75 61 6c 69 74 79
w.pm10 可吸入颗粒物 PM10,单位:µg/m³ 支持 支持 仅有当天数据 6 77 2e 70 6d 31 30
w.pm25 细颗粒物 PM2.5,单位:µg/m³ 支持 支持 仅有当天数据 6 77 2e 70 6d 32 35
w.o3 臭氧浓度,单位:µg/m³ 支持 支持 仅有当天数据 4 77 2e 6f 33
w.no2 二氧化氮浓度,单位:µg/m³ 支持 支持 仅有当天数据 5 77 2e 6e 6f 32
w.co 一氧化碳浓度,单位:µg/m³ 支持 支持 仅有当天数据 4 77 2e 63 6f
w.so2 二氧化硫浓度,单位:µg/m³ 支持 支持 仅有当天数据 5 77 2e 73 6f 32
w.thigh 最高温度,单位:摄氏度 ℃ 支持 支持 仅有预报数据 7 77 2e 74 68 69 67 68
w.tlow 最低温度,单位:摄氏度 ℃ 支持 支持 仅有预报数据 6 77 2e 74 6c 6f 77
w.date.n 需要预报的天数,用 n 来表示天数,要求 1 ≤ n ≤ 7 支持 支持 - 8 77 2e 64 61 74 65 2e 6e
w.currdate 实时天气获取 支持 支持 - 10 77 2e 63 75 72 72 64 61 74 65
  • WindDir 风向字段为风向简码。详细编码表请参考 附录五

  • w.conditionNum 表示天气情况编码。详细编码表请参考 附录四

  • 大气气压单位说明:

    1 毫巴(mbar)= 1 百帕斯卡(hPa),即 1mbar = 100pa = 1hpa。

    例如,中国大陆地区的墨迹天气数据单位是百帕斯卡(hPa)。

  • 是否支持预报:携带 w.date.n 字段时,返回预报数据。

  • 是否支持实时:当携带 w.date.n 字段访问时,若需要实时天气数据,请携带 w.currdate 字段。具体实时数据的访问方式,请参考 天气使用示例

附录二:城市服务参数 ASCII 码对照

标识 描述 类型 长度 十六进制
c.area 区县或城市名称 字符串 6 63 2e 61 72 65 61
c.city 城市名称 字符串 6 63 2e 63 69 74 79
c.province 字符串 10 63 2e 70 72 6f 76 69 6e 63 65

当天气服务访问时返回的数据仅有城市服务字段,且内容为空时,则说明设备无经纬度信息,无法获取天气数据。可打开手机应用的获取定位功能后,重新进行设备配网。

附录三:天气预报服务数值类型

标识 描述 类型 是否支持实时 是否支持预报
w.temp 温度 整数 仅中国大陆地区不支持
w.humidity 湿度 整数
w.conditionNum 天气概况数字编码 字符串
w.pressure 气压 整数 仅中国大陆地区不支持
w.realFeel 温度实感 整数
w.uvi 紫外线指数 整数
w.windDir 风向 字符串
w.windLevel 风等级 整数 仅中国大陆地区支持
w.windSpeed 风速 字符串,数据格式为 1.0;0.5
w.sunrise 日出时间 字符串,数据格式为 2017-04-24 05:24
w.sunset 日落时间 字符串,数据格式为 2017-04-24 18:32
w.aqi 空气质量指数 整数
w.pm25 PM 2.5 整数
w.so2 二氧化硫浓度 整数
w.rank/w.quality 空气评分 字符串,数据格式为 447/609 仅中国大陆地区支持
w.pm10 PM 10 整数
w.o3 臭氧(O3)浓度 整数
w.no2 二氧化氮(NO2)浓度 整数
w.co 一氧化碳(CO)浓度 整数
w.qualityLevel 空气质量评分等级 整型
w.thigh 最高温度 整型
w.tlow 最低温度 整型
  • 天气参数中,字符串格式类型的数据内容为数字时,数字按照四舍五入的规则只保留 一位 小数位。示例:1.0;0.9
  • 是否支持实时:当携带 w.date.n 字段访问时,若需要实时天气数据请携带 w.currdate 字段。具体实时数据的访问方式,请参考 天气使用示例
  • 是否支持预报:携带 w.date.n 字段时,返回预报数据。

附录四:中文天气 UTF-8 编码

编码表示(ASCII 码) w.conditionNum 十六进制 天气状况
120 31 32 30
101 31 30 31 大雨
102 31 30 32 雷暴
103 31 30 33 沙尘暴
104 31 30 34 小雪
105 31 30 35
106 31 30 36 冻雾
107 31 30 37 暴雨
108 31 30 38 局部阵雨
109 31 30 39 浮尘
110 31 31 30 雷电
111 31 31 31 小阵雨
112 31 31 32
113 31 31 33 雨夹雪
114 31 31 34 尘卷风
115 31 31 35 冰粒
116 31 31 36 强沙尘暴
117 31 31 37 扬沙
118 31 31 38 小到中雨
119 31 31 39 大部晴朗
121 31 32 31
122 31 32 32 阵雨
123 31 32 33 强阵雨
124 31 32 34 大雪
125 31 32 35 特大暴雨
126 31 32 36 暴雪
127 31 32 37 冰雹
128 31 32 38 小到中雪
129 31 32 39 少云
130 31 33 30 小阵雪
131 31 33 31 中雪
132 31 33 32
133 31 33 33 冰针
134 31 33 34 大暴雨
136 31 33 36 雷阵雨伴有冰雹
137 31 33 37 冻雨
138 31 33 38 阵雪
139 31 33 39 小雨
140 31 34 30
141 31 34 31 中雨
142 31 34 32 多云
143 31 34 33 雷阵雨
144 31 34 34 中到大雨
145 31 34 35 大到暴雨
146 31 34 36 晴朗

附录五:风向简码编码表

风向简码(字符串) 十六进制 描述
N 4e
NNE 4e 4e 45 东北偏北
NE 4e 45 东北
ENE 45 4e 45 东北偏东
E 45
ESE 45 53 45 东南偏东
SE 53 45 东南
SSE 53 53 45 东南偏南
S 53
SSW 53 53 57 西南偏南
SW 53 57 西南
WSW 57 53 57 西南偏西
W 57 西
WNW 57 4e 57 西北偏西
NW 4e 57 西北
NNW 4e 4e 57 西北偏北