数据传输

更新时间:2024-05-14 08:00:15下载pdf

需要实现一个智能设备的远程控制,最基本的能力就是设备的状态上报以及接收来自云端的命令并执行。因此数据传输部分是网关的核心能力。

概念介绍:

  • DP:

    DP 即 Data Point 的缩写,也称为功能点。不同的产品具有不同的功能,这些功能会采用不同的 DP 来进行表示。针对不同的功能存在不同的 DP。简单地来讲,DP 是产品功能的基本单位。一个完整的设备是有很多 DP 组成的。

    详细情况请参见 产品功能

  • 状态数据单元:

    串口协议中用来表示一个 DP 以及对应数据的最小组成。
    详细情况请参见 网关通用对接协议 > 状态数据单元格式

命令接收

模组收到来自云端或 App 的命令后会将命令通过串口命令 0x0C 下发给 MCU,MCU 在收到对应数据后需要对对应数据进行处理。执行完动作以后将 新的状态 上报。

指令示例

模组发送

55 AA 00 0C 00 0A 04 31 32 33 34 01 01 00 01 01 E7

字段 内容
帧头 55 AA
命令字 00 0C
长度 00 0A
数据
  • id_len:0x04(数据长度为 4)
  • sub_id:0x31 0x32 0x33 0x34(子设备标识为 1234)
  • 状态数据单元
    • dpid:0x01(DP 点序号为 1)
    • type:0x01(DP 类型为布尔型)
    • len:0x00 0x01(数据长度为 1)
    • value:0x01 (数据值为 1)
校验和 0xE7

如果这个 DP 的数据传输类型为 可下发可上报(rw) 时,如果在收到 0x0C 指令后没有上报这个 DP 改变后的状态(0x0D),那么模组会尝试重新发送 0x0C 指令。

状态上报

状态上报分为两种,异步上报和同步上报。
异步场景可以满足大部分场景的需求。状态上报发送给模组后,模组进行上报,但不会告知 MCU 是否上报成功。
如果需要知道是否成功上报,则可以使用同步接口。相对地,处理速度也会变慢。

异步状态上报

指令示例

MCU 上报

55 AA 00 0D 00 0A 04 31 32 33 34 01 01 00 01 01 E8

字段 内容
帧头 55 AA
命令字 00 0D
长度 00 0A
数据
  • id_len:0x04(数据长度为 4)
  • sub_id:0x31 0x32 0x33 0x34(子设备标识为 1234)
  • 状态数据单元
    • dpid:0x01(DP 序号为 1)
    • type:0x01(DP 类型为布尔型)
    • len:0x00 0x01(数据长度为 1)
    • value:0x01 (数据值为 1)
校验和 0xE8

同步状态上报

指令示例

MCU 上报

55 AA 00 2C 00 11 00 00 00 00 00 00 00 04 31 32 33 34 01 01 00 01 01 0E

字段 内容
帧头 55 AA
命令字 00 2C
长度 00 11
数据
  • Time:00 00 00 00 00 00 00(使用模组自带时间)
  • id_len:0x04(数据长度为 4)
  • sub_id:0x31 0x32 0x33 0x34(子设备标识为 1234)
  • 状态数据单元
    • dpid:0x01(DP 序号为 1)
    • type:0x01(DP 类型为布尔型)
    • len:0x00 0x01(数据长度为 1)
    • value:0x01 (数据值为 1)
校验和 0xE8

模块回复

55 AA 00 2C 00 01 00 2C

数据部分为 0x00 则上报成功。

上报处理说明

  • 上报原则:除收到查询状态命令 0x0B 或查询 DP 状态命令 0x29 外,其他时刻建议只有 DP 状态变化时才上报。
  • 免过滤设置:使用异步状态上报 0x0D 上报数据时,如果是同一 DP 的连续相同数据,模组端会对数据过滤,不进行上报。这种情况是为了避免重复的数据上报,如果是特殊应用场景需要连续上报相同数据,如绘制表格,有两种处理方案:
    • 后台配置:联系您的涂鸦客户经理或者技术支持,针对 DP 做免过滤语法配置,设置后设备重新配网生效。
    • 使用同步上报指令 0x2C:同步上报的数据,模组端不做过滤处理,参考上报拓展功能。

使用注意事项

  • 数据长度说明: 指 DP 数据的长度,不是指整帧数据长度。数据长度根据 DP 数据类型和 DP 数量确定,数据内容不满足数据长度的,前边补充 0 即可。数据类型介绍参考 网关通用对接协议-状态数据单元格式

  • Enum 类型数据: 枚举型数据,数据值范围为 0~255,需要注意不论枚举值是什么,上报的数据值都是从 0 开始计数的数值,如枚举型 DP 工作模式 work_type,枚举值: cold, warm, auto, air, dehumidify,对应的上报数值为0,1,2,3,4,即上报 dehumidify 时,需要上报的对应数值为 4;又比如枚举型 DP 百分比 level,枚举值:0,20,40,60,80,100,对应的上报值为 0,1,2,3,4,5,即上报 60 时,需要上报的对应数值为 3。另外需要注意的是如果修改 DP 数值,需要重新对应上报数值,如上述的 DP 工作模式 work_type,把 auto 删掉,枚举值变为:cold, warm, air, dehumidify,重新配网测试时,再上报dehumidify时,需要上报的对应数值变为3

  • *Bitmap 类型数据: *支持多故障同时上报。每一个 bit 位可代表一个警告,置 1 表示发生故障,置 0 表示无故障。可以为 1、2 或 4 字节,大于 1 字节时为大端模式。如 MCU 发送:55 AA 00 0D 00 0B 04 31 32 33 34 68 05 00 02 00 09 5D(子设备标识为 1234 的子设备同时上报故障 bit0 和故障 bit3 )。如果需要配置告警推送及故障提示文案,可以参考 推送设备消息

  • String 类型数据: 字符串的含义与显示需与面板配套,自定义的可与面板沟通。字符串信息需要转换成十六进制的 ASCII 码上报。如 MCU 发送:55 AA 00 0D 00 0D 04 31 32 33 34 69 03 00 04 74 65 73 74 17(上报数据74 65 73 74对应字符test)。

  • Raw 类型数据: 透传型数据,通常用于比较复杂的功能实现,不建议用户自行使用。需要注意的是,Raw 型数据是完全透传传输,但数据传输过程中会对 Raw 型数据进行 Base64 加解密操作。云端日志查询的 Raw 型数据,是经过 Base64 加密的,若需要调试查看,需自行解密校对数据。

  • 组合上报: 组合上报是指多个 DP 数据格式组合上报,减少数据帧交互,例如将多个 DP(DP102 和 DP1)放在同一帧上报,MCU 发送:55 AA 00 0D 00 12 04 31 32 33 34 66 02 00 04 00 00 00 16 01 01 00 01 00 71

    • 66 02 00 04 00 00 00 16:表示 DP102(0x66)为 int 类型(0x02),对应的值为 22(0x16)
    • 01 01 00 01 00: 表示 DP1(0x01)为布尔型(0x01),对应的值为 0(0x00)。