【已解决】自定义的dp点,怎么组建上报内容?

Zigbee 子设备开发


bofuyanfa
Posts: 15

你好,我这边自定义了一个dp用来反向,上报按照指导文件修改了cluster_id,但是log显示并没有收到我的上报信息,请问是不是上报格式的问题?
sdk版本是TLSR8258_3.6.0 上报格式是仿照sdk中的上报格式来的。

白芷冉然
Posts: 39

Re: 自定义的dp点,怎么组建上报内容?

麻烦将注册的cluster,attribute截图发一下;调用发送函数也截图发一下

bofuyanfa
Posts: 15

Re: 自定义的dp点,怎么组建上报内容?

这个怎么发截图

bofuyanfa
Posts: 15

Re: 自定义的dp点,怎么组建上报内容?

看到了,已上传

Attachments
ea8cd2f6c4042a9e908a184c587c869.png
c9ca8362ed6eabadb2a3169c00df398.png
2292220ac78e802d72e6609915b158d.png
3f0da8ce373813ed6f643ac06446161.png
白芷冉然
Posts: 39

Re: 自定义的dp点,怎么组建上报内容?

首先我需要和你确认下,你说的在这个tal msg rec中调用是什么意思?是调用你发送attr 0x0065的那个发送函数?

Attachments
tal_msg_rec.png
白芷冉然
Posts: 39

Re: 自定义的dp点,怎么组建上报内容?

从截图来看,你填入的数据类型是enum8,这个类型的数据长度是1,但是你后续写入的size是7,这会导致数据发送失败,请确认类型及长度

Attachments
tal_send_data_len_check.png
白芷冉然
Posts: 39

Re: 自定义的dp点,怎么组建上报内容?

1.如果你要用GLOBAL cmd那么就要根据type长度来填
2.如果你要自己的私有cmd那么是可以按照private.data方式填,可以参考附图

Attachments
zg_zcl_private_data_frame.png
41518468@qq.com
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);
}
白芷冉然
Posts: 39

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;

白芷冉然
Posts: 39

Re: 自定义的dp点,怎么组建上报内容?

目前透传模式支持101到200之间的dpid

Post Reply