DP 服务

更新时间:2024-04-08 08:18:04下载pdf

本文介绍蜂窝标准通信协议下的 DP 服务的相关指令。

数据单元

命令数据单元和状态数据单元(data point,DP)如下所示:

数据段 字节数 说明
dpid 1 DP 序号
type 1 对应 涂鸦 IoT 开发平台 上一个 DP 具体的数据类型,参考下表中 type 字段中表示值说明
len 2 长度对应 value 的字节数,参考下表中 type 字段说明
value 1/2/4/N 用 16 进制表示,大于 1 字节采用大端传输

DP 中的 type 字段说明:

type 数据类型 字节数 说明
0x00 Raw N 对应于 Raw 型 DP,采用模组透传的方式传输
0x01 Bool 1 范围:0x00 或 0x01
0x02 Value 4 又称 Integer 类型,采用大端表示
0x03 String N 对应于具体字符串
0x04 Enum 1 枚举类型,范围为 0-255
0x05 Bitmap 1/2/4 长度大于 1 字节时,采用大端传输
  • DP 命令/状态数据单元中,除 Raw 类型外,其他类型均属于 Object 数据类型。
  • 命令下发 可含多个 DP 命令数据单元。
  • 命令下发 为异步处理协议,对应于 MCU 的 DP 状态上报

命令下发(0x06)

模组发送

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

例:系统开关对应 3 号 DP,使用 bool 型变量,开机数值为 1 0x55aa 00 06 0005 03 01 0001 01 10

MCU 返回(产品信息中开启 dp_ack 时 MCU 需回复)

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

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

  • DP 状态数据单元,说明详见 数据单元 章节。

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

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

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

    • MCU 收到 状态查询 帧时,将所有的 DP 状态发送至模组。

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

MCU 发送

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

例:湿度对应 5 号 DP,使用 value 型变量,湿度为 30% 0x55aa 03 07 0008 05 02 0004 0000001e 3a

状态查询(0x08)

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

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

    • 模组首次上电,通过心跳与 MCU 建立连接后,当设备连接到涂鸦 IoT 开发平台后查询发送。

    • 模组工作过程中检测到 MCU 重启或发生了离线再上线的过程,查询发送。

模组发送

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

例:0x55aa 00 08 0000 07

状态同步上报:非记录类型(0x22)

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

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

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

  • DP 状态数据单元说明详见 状态数据单元

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

MCU 发送

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

模组返回

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

状态同步上报:记录类型(0x26)

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

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

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

  • DP 状态数据单元说明详见 状态数据单元

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

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x26
数据长度 2 取决于 状态数据单元 类型以及个数 + 7
时间标签 7
  • Data[0]:是否带本地时间标志位
    • 0 表示这条数据不带 MCU 提供的时间,后面的时间模组认为数据无效不处理。
    • 1 表示后面的时间数据有效,时间数据为设备所在的当地时间。
    • 2 表示后面的时间数据有效,时间数据为格林时间。
  • Data[1] 为年,0x00 表示 2000 年
  • Data[2] 为月,从 1 开始到 12 结束
  • Data[3] 为日,从 1 开始到 31 结束
  • Data[4] 为时,从 0 开始到 23 结束
  • Data[5] 为分,从 0 开始到 59 结束
  • Data[6] 为秒,从 0 开始到 59 结束
数据 N 状态数据单元
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

模组返回

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