你好,我这边自定义了一个dp用来反向,上报按照指导文件修改了cluster_id,但是log显示并没有收到我的上报信息,请问是不是上报格式的问题?
sdk版本是TLSR8258_3.6.0 上报格式是仿照sdk中的上报格式来的。
【已解决】自定义的dp点,怎么组建上报内容?
【已解决】自定义的dp点,怎么组建上报内容?
Re: 自定义的dp点,怎么组建上报内容?
麻烦将注册的cluster,attribute截图发一下;调用发送函数也截图发一下
Re: 自定义的dp点,怎么组建上报内容?
这个怎么发截图
Re: 自定义的dp点,怎么组建上报内容?
从截图来看,你填入的数据类型是enum8,这个类型的数据长度是1,但是你后续写入的size是7,这会导致数据发送失败,请确认类型及长度
- Attachments
-
Re: 自定义的dp点,怎么组建上报内容?
1.如果你要用GLOBAL cmd那么就要根据type长度来填
2.如果你要自己的私有cmd那么是可以按照private.data方式填,可以参考附图
- Attachments
-
-
- Posts: 7
Re: 自定义的dp点,怎么组建上报内容?
发送函数照这个样式写。
Code: Select all
VOID_T tuya_private_attr_report(TAL_SEND_QOS_E Qos, USHORT_T delay_ms, UINT8_T *data,UINT8_T len)
{
TAL_ZG_SEND_DATA_T send_data;
tal_system_memset(&send_data, 0, sizeof(TAL_ZG_SEND_DATA_T));
send_data.qos = Qos;
send_data.delay_time = delay_ms;
send_data.zcl_id = ZCL_ID_WOINDOW_DATA;
send_data.direction = ZG_ZCL_DATA_SERVER_TO_CLIENT;
send_data.command_id = TY_MODULE_DATA_RESPONSE;
send_data.frame_type =ZG_ZCL_FRAME_TYPE_SPEC_TO_CLUSTER;
send_data.addr.mode = SEND_MODE_DEV;
send_data.addr.type.dev.cluster_id = CLUSTER_PRIVATE_TUYA_CLUSTER_ID;
send_data.addr.type.dev.src_ep = 1;
send_data.addr.type.dev.dst_ep = 1;
send_data.data.private.len = len;
memcpy(send_data.data.private.data,data,len);
tal_zg_send_data(&send_data, NULL, 1000);
TAL_PR_HEXDUMP_DEBUG("response ", send_data.data.private.data, send_data.data.private.len);
}
Re: 自定义的dp点,怎么组建上报内容?
按照上述提供的组包参考,开发者已实现功能,总结有以下几点需要注意:
1.zigbee子设备和网关之间都是通过zigbee cluster,attr,cmd方式进行通讯,本贴实际是将dp数据包在cmd payload中发送给网关。
2.新建dp需要确认网关是否支持,网关会通过model_id来区分子设备类型,一种子设备类型支持的dp序列表是固定的。
3.如果需要支持较多dp,建议走透传模式,走透传模式及使用私有cmd时需要注意 send_data.frame_type =ZG_ZCL_FRAME_TYPE_SPEC_TO_CLUSTER;
Re: 自定义的dp点,怎么组建上报内容?
目前透传模式支持101到200之间的dpid