【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题

Zigbee 子设备开发


xiaoluo
Posts: 18

现在使用的是芯科平台的tuyaos-3.9.0开发的产品,产品中有自定义DP。 现在在设备界面控制的时候,设备能收到自定义DP数据。但是设备添加到群组后, 在群组里面控制的时候,这时候设备要过16秒左后才收到数据(接口:tal_zcl_specific_msg_recv_callback 才会跑)。这时候msg->command == 0x07, 并且后面的数据也不对。 在设备界面操作的时候msg->command == 0x04,数据正常。 这是什么问题导致的呢?

shiliang
Posts: 29

Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题

麻烦把产品信息包括model ID,PID,能力值给出,如果是cluster 0xEF00下的command:
cmd 0x04是Gw→Zigbee 网关向模组发送DP数据;
cmd 0x07是Gw→Zigbee,触发模组侧把当前全部DP上报/部分DP上报;

关于群组控制异常问题,是否能提供抓包信息,包括添加群组及数据下发功能;

xiaoluo
Posts: 18

Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题

0000-自定义DP-群组控制抓包数据.zip
(9.44 KiB) Downloaded 9 times

附件为添加群组和在群组里面控制自定义DP的抓包数据

shiliang
Posts: 29

Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题

用相同PID和model ID,组控时是实时到达msg recv接口的,如附件:

麻烦对比下网关下发和rece 打印数据。

Attachments
实测数据.7z
(449.89 KiB) Downloaded 7 times
xiaoluo
Posts: 18

Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题

您好,我这边抓包发现, 在设备界面控制的时候和群组里面控制的时候, 抓包数据一致。

测试数据.zip
(1.85 MiB) Downloaded 7 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;
}
shiliang
Posts: 29

Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题

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;
xiaoluo
Posts: 18

Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题

您好!没太明白我现在群组控制的时候,这个群组控制时的自定义DP数据SDK接口:tal_zcl_specific_msg_recv_callback 没有正确执行 和你说的这个模式有什么关系

shiliang
Posts: 29

Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题

现在说的没有正确执行的是command 0x04还是command 0x07?

shiliang
Posts: 29

Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题

command 0x07只是查询模组的DP数据,只查询一个DP时,payload中仅包含seq(2 Byte) + DP ID(1字节),如果查询全部数据,payload为空;

xiaoluo
Posts: 18

Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题

现在的问题是:在设备界面操作自定义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数据。

Post Reply