Page 1 of 2
【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题
Posted: 2024年 Apr 28日 17:48
by xiaoluo
现在使用的是芯科平台的tuyaos-3.9.0开发的产品,产品中有自定义DP。 现在在设备界面控制的时候,设备能收到自定义DP数据。但是设备添加到群组后, 在群组里面控制的时候,这时候设备要过16秒左后才收到数据(接口:tal_zcl_specific_msg_recv_callback 才会跑)。这时候msg->command == 0x07, 并且后面的数据也不对。 在设备界面操作的时候msg->command == 0x04,数据正常。 这是什么问题导致的呢?
Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题
Posted: 2024年 Apr 28日 19:55
by shiliang
麻烦把产品信息包括model ID,PID,能力值给出,如果是cluster 0xEF00下的command:
cmd 0x04是Gw→Zigbee 网关向模组发送DP数据;
cmd 0x07是Gw→Zigbee,触发模组侧把当前全部DP上报/部分DP上报;
关于群组控制异常问题,是否能提供抓包信息,包括添加群组及数据下发功能;
Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题
Posted: 2024年 Apr 28日 20:36
by xiaoluo
附件为添加群组和在群组里面控制自定义DP的抓包数据
Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题
Posted: 2024年 Apr 29日 11:06
by shiliang
用相同PID和model ID,组控时是实时到达msg recv接口的,如附件:
麻烦对比下网关下发和rece 打印数据。
Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题
Posted: 2024年 Apr 29日 11:50
by xiaoluo
您好,我这边抓包发现, 在设备界面控制的时候和群组里面控制的时候, 抓包数据一致。
- 测试数据.zip
- (1.85 MiB) Downloaded 133 times
DP数据接收函数如下:
Code: Select all
TAL_MSG_RET_E tal_zcl_specific_msg_recv_callback(TAL_ZCL_MSG_T *msg)
{
LIGHT_PRINTF_DEBUG("Cluster = 0x%04X\n\n\n\n", msg->cluster);
switch(msg->cluster) {
case CLUSTER_ON_OFF_CLUSTER_ID: {
if(OPRT_OK != light_cluster_onoff_handler(msg)) {
return ZCL_MSG_RET_FAILED;
}
}
break;
case CLUSTER_LEVEL_CONTROL_CLUSTER_ID: {
if(OPRT_OK != light_cluster_level_handler(msg)) {
return ZCL_MSG_RET_FAILED;
}
}
break;
case CLUSTER_COLOR_CONTROL_CLUSTER_ID: {
if(OPRT_OK != light_cluster_color_control_handler(msg)) {
return ZCL_MSG_RET_FAILED;
}
}
break;
case CLUSTER_PRIVATE_TUYA_CLUSTER_ID: {
UINT8_T len = msg->length;
UINT8_T *data = msg->payload;
LIGHT_PRINTF_DEBUG("command = 0x%04X\n\n\n\n", msg->command);
// if(msg->command == 0x04) {
light_system_ty_private_app_cmd_set_handler(data, len);
// }
}
break;
default:
return ZCL_MSG_RET_FAILED;
}
return ZCL_MSG_RET_SUCCESS;
}
Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题
Posted: 2024年 Apr 29日 14:26
by shiliang
msg->mode会有区分,可以通过这个判断是单播还是组播:
/*
- Zigbee data delivery mode
*/
typedef enum {
ZG_ADDR_UNKNOWN = 0x00, ///< addr mode unknown when not joined network
ZG_UNICAST_MODE, ///< unicast addr mode for sending and receiving
ZG_MULTICAST_MODE, ///< multicast_ addr mode for sending and receiving
ZG_BROADCAST_MODE, ///< broadcast addr mode for sending and receiving
ZG_BINDING_MODE, ///< binding mode for sending
ZG_MULTI_BINDING_MODE, ///< multi binding mode for sending
} ZG_DELIVERY_MODE_E;
Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题
Posted: 2024年 Apr 29日 14:43
by xiaoluo
您好!没太明白我现在群组控制的时候,这个群组控制时的自定义DP数据SDK接口:tal_zcl_specific_msg_recv_callback 没有正确执行 和你说的这个模式有什么关系
Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题
Posted: 2024年 Apr 29日 14:45
by shiliang
现在说的没有正确执行的是command 0x04还是command 0x07?
Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题
Posted: 2024年 Apr 29日 14:53
by shiliang
command 0x07只是查询模组的DP数据,只查询一个DP时,payload中仅包含seq(2 Byte) + DP ID(1字节),如果查询全部数据,payload为空;
Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题
Posted: 2024年 Apr 29日 14:58
by xiaoluo
现在的问题是:在设备界面操作自定义DP的时候, 接口:tal_zcl_specific_msg_recv_callback 收到的Cluster=0xEF00, command=0x04, 数据正常。 但是在群组界面操作自定义DP的时候,接口:tal_zcl_specific_msg_recv_callback 要隔16秒左右才收到Cluster=0xEF00, command=0x07, 数据为:payload中仅包含seq(2 Byte) + DP ID(1字节)。 也就是说我群组控制的时候,接口:tal_zcl_specific_msg_recv_callback 没有收到自定义的DP数据。