抓包发现,群组控制的时候,自定义DP 没有跑到接口:tal_zcl_specific_msg_recv_callback 时就默认回复了,后面收到的command=0x07 是网关隔了16秒左右下发的。
【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题
Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题
您好,群控也是通过command 0x04下发的,0x07只是网关查询dp数据
Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题
你上图中截取的是模组的转发,不是上报的数据,需要通过0x06命令主动上报数据
Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题
总结:
1.无论单控或者组控,都是通过command 0x04命令下发的DP数据;
2.收到0x04命令后,需要模组主动通过command 0x06上报DP数据,才会同步到APP端;
3.群控后,如果没有收到模组上报的0x06数据,则会在一段时间后,网关主动通过command 0x07查询该DP,如果模组上报了0x06,则不会再收到主动查询命令0x07;
Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题
但是我现在群组控制的时候,数据根本就没有到这个接口来:tal_zcl_specific_msg_recv_callback
Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题
麻烦把整个从加组到控制的过程,抓下数据包同时包含设备端日志(同步);
同时附上tal_zcl_specific_msg_recv_callback代码,谢谢。
Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题
您好!附件为设备配网,添加群组,控制自定义DP的抓包数据以及log
Re: 【求助】TuyaOS-3.9.0关于自定义DP群组控制异常问题
您好,这个是没有注册0xEF00这个cluster导致的:
麻烦app_dev_register.c中增加如下注册代码:
#define PRIVATE_ATTR_LIST \
{0x0000, ATTR_INT8U_ATTRIBUTE_TYPE, 1, (ATTR_MASK_TOKEN_FAST|ATTR_MASK_SINGLETON), 0, (UINT8_T)0x00 }, / current positiong lift percentage*/\
{0xFFFD, ATTR_INT16U_ATTRIBUTE_TYPE, 2, (ATTR_MASK_READABLE), 0, (UINT8_T *)0x0002},
const TAL_ATTR_T g_private_attr_list[] = {
PRIVATE_ATTR_LIST};
#define DEF_CLUSTER_PRIVATE_CLUSTER_ID(a) \
{ CLUSTER_PRIVATE_TUYA_CLUSTER_ID, (TAL_ATTR_T *)&((a)[0]), GET_ARRAY_LEN((a)) },
g_app_server_cluster_list中增加 DEF_CLUSTER_PRIVATE_CLUSTER_ID(g_private_attr_list),如下:
// server cluster
const TAL_CLUSTER_T g_app_server_cluster_list[] = {
DEF_CLUSTER_IDENTIFY_CLUSTER_ID(identify_attr_list)
DEF_CLUSTER_GROUPS_CLUSTER_ID(group_attr_list)
DEF_CLUSTER_SCENES_CLUSTER_ID(scene_attr_list)
DEF_CLUSTER_ON_OFF_CLUSTER_ID(onoff_attr_list)
DEF_CLUSTER_LEVEL_CONTROL_CLUSTER_ID(level_attr_list)
DEF_CLUSTER_COLOR_CONTROL_CLUSTER_ID(color_attr_list)
DEF_CLUSTER_ZLL_COMMISSIONING_CLUSTER_ID(zll_attr_list)
DEF_CLUSTER_PRIVATE_CLUSTER_ID(g_private_attr_list)};