Page 1 of 2

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

Posted: 2022年 Dec 7日 13:33
by bofuyanfa

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


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

Posted: 2022年 Dec 7日 13:45
by 白芷冉然

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


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

Posted: 2022年 Dec 7日 15:06
by bofuyanfa

这个怎么发截图


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

Posted: 2022年 Dec 7日 15:08
by bofuyanfa

看到了,已上传


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

Posted: 2022年 Dec 7日 15:31
by 白芷冉然

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


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

Posted: 2022年 Dec 7日 15:44
by 白芷冉然

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


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

Posted: 2022年 Dec 7日 16:04
by 白芷冉然

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


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

Posted: 2022年 Dec 7日 16:56
by 41518468@qq.com

发送函数照这个样式写。

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点,怎么组建上报内容?

Posted: 2022年 Dec 7日 18:04
by 白芷冉然

按照上述提供的组包参考,开发者已实现功能,总结有以下几点需要注意:
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点,怎么组建上报内容?

Posted: 2022年 Dec 7日 18:09
by 白芷冉然

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