数据传输

更新时间:2023-07-27 09:32:29下载pdf

TuyaOS 开发框架支持的数据传输方式有属性(上报,读,写)、命令、DP 透传。

属性(Attribute )

Zigbee 设备的状态信息,配置信息等都保存在各 Cluster 下的 Attribute 中,设备端维护了一张属性表,对属性的操作有:

  • 上报属性(Report)
  • 读属性(Read)
  • 写属性(Write)

设备可支持的标准属性由 CSA 联盟定义,具体可以参照 CSA 联盟 发布的《Cluster Library Specification》,通过 TuyaOS 您也可以定义私有属性。

数据传输

  • 上报属性:Zigbee 子设备主动上报属性,通过上报属性可以同步设备当前的状态。例如当一个温度传感器检测到温度变化时,通过上报温度属性来通知网关。
  • 读属性:通过读设备的属性,可以获取设备的信息,例如设备厂商(Manufacturer name),固件版本号(Firmware version),设备型号(Model ID)等。也可以获取设备的当前状态,例如灯具的开关状态。
  • 写属性:通过写设备属性,可以对设备进行一些配置。例如,对一个色温可调的灯,写入 ColorTempPhysicalMinMireds(0x400b)、ColorTempPhysicalMaxMireds(0x400c)属性,可以设置灯具的色温最小值和最大值。

TuyaOS 提供了属性上报的接口,同时提供了读写属性的通知回调函数。通过配置属性列表,可以将属性配置为保存在非易失性存储器中,以便断电属性值不丢失。

需要注意的是,并非所有属性都支持写,具体请参考《Cluster Library Specification》。

为了减少网络拥堵,应该避免频繁的属性上报,只在确实需要的时候才上报属性。

命令(Command)

当一个设备需要向另一个设备发送控制命令时,可以通过发送命令的方式。例如一个照明遥控器可以向一个照明设备发送开、关命令,从而控制照明设备的开关状态。通常网关都是通过发送命令的方式控制 Zigbee 设备的。

《Cluster Library Specification》同样定义了各 Cluster 支持的命令。命令可以发送给某个特定设备,也可以是发送给某个群组,也可以发送给全网。

TuyaOS 提供了命令发送接口,以及命令接收回调函数,命令发送和命令接收都能区分单播,组播,广播。

命令发送之后,如果需要知道对方是否收到,这时应用层可以通过函数参数,告知 TuyaOS 是否关心对方是否已成功收到命令。如果应用层关心对方是否收到命令,TuyaOS 会通过回调函数通知应用层,对方是否接收成功。

DP 透传

DP 是指在 涂鸦 IoT 开发平台 创建一个产品后,该产品支持的功能点集合。每一个功能点由一个 DPID 来标识。这是涂鸦支持的一种物模型机制。

Zigbee 网关和云端是通过 DP 的方式传递消息的,Zigbee 网关充当了涂鸦 DP 与 Zigbee 协议转换者的角色。

  • 云端发送涂鸦 DP 给网关,网关将其转换成 Zigbee 指令发送给 Zigbee 子设备。

  • Zigbee 子设备通过 Zigbee 指令上报给网关,网关将其转换成涂鸦 DP 上报给云端。

    下图介绍了网关充当涂鸦 DP 与 Zigbee 指令转换者的示意效果:

    数据传输

通常情况下如果涂鸦 DP 所表达的设备功能点,在 Zigbee 《Cluster Library Specification》中,那么网关与子设备之间则会使用此规范中的 Zigbee 指令。涂鸦 IoT 开发平台为每一款产品赋予了标准的 DP,您也可以增加自定义 DP。更多详情,请参考 产品功能

  • 标准 DP:网关与子设备之间通过普通属性或命令进行交互,这里的属性和命令可以是标准的也可以是私有的。
  • 自定义 DP:网关与子设备之间通过涂鸦定义的透传命令进行交互,此时网关不做 DP 与 Zigbee 指令的转换,而是直接进行透明传输。具体请参考 TuyaOS 开发指导。

支持与帮助

在开发过程遇到问题,您可以登录 TuyaOS 开发者论坛 子设备开发版块 进行沟通咨询。