【zigbee】TuyaOS接入100以上DP处理方法
确认接入方式为TuyaOS
注意:本文档不适用于MCU SDK接入方式。
若为全新设备,请参考IDE上拉取的开放框架中的TuyaOS/docs内的【产品创建】。
若存在已知开发设备,请先确认开发类型,若为MCU SDK,为通用对接接入方式,设备与网关及云端对接协议已固定,客户只需要完成MCU端代码以及MCU和模组通信,请参考串口对接协议。
若为TuyaOS接入方式,请继续,若为MCU SDK方式,请参考MCU SDK接入文档。
请确认在IOT平台【功能定义】页面已经添加100以上DP如下:
修改能力值
对TuyaOS接入方式来说,需要将已有DP转换为私有DP数据发送,DP信息参考,manufacture name为接入tuya网关能力值,固定开头为_TZ,由四个Byte决定。
注意:若需支持100以上DP,请务必把Byte2中bit0置为1。
具体值参考如下表格:
注册私有cluster 0xEF00
网关和模组私有zigbee协议:
描述 值
Cluster ID 0xEF00
Profile ID 0x0104
Source Endpoint 0x01
Destination Endpoint 0x01
首先改造tuyaOS Demo中属性的注册,若已经注册了0xEF00私有属性,忽略注册步骤。
增加私有cluster command处理
增加私有cluster 0xEF00相关command的接收和处理,在tal_zcl_specific_msg_recv_callback中增加私有cluster 0xEF00命令接收和处理:
解析接收到的command payload里的DP数据并处理;
所有相关命令如下:
0x04 网关向模组下发DP透传数据
0x05 模组回复网关下发的DP透传数据
0x06 模组主动上报DP数据
Command 0x04
Command 0x05
Command 0x06
设备需要解析的网关数据仅有Command 0x04,网关向模组透传DP数据,解析如下:
设备收到网关的DP透传数据后,需要回复网关Command 0x05,内容为网关透传的DP数据:
业务数据格式如下:
在air_dp_cmd_parse处理下发的DP数据:
增加主动上报DP数据能力,Command 0x06
若设备需要主动上报DP数据,则调用下图接口:
示例:
如果在IOT界面设置了一条大于100的DP如下:
上图中DP ID为104,type为bool 0x01,布尔数据为1即0x01,我们假设seq为5,则上报的数据为:
0x00 0x05 0x68 0x01 0x01