Thread 中讨论的其他器件:Z-stack、
您好!
我们拥有一个协调器(ZNP)和许多路由器的网络连接。 路由器被分配给组。
在某些情况下、写入属性命令不会传递到组、而我们获得 MT_AF_DATA_CONFIRM 成功。
什么可能导致此行为?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好、Ryan、
我们可以由谁来确认它是通过无线方式发送的?
如前所述、我们只知道 MT_AF_DATA_CONFIRM 成功。
故障率很高、只在15-20次尝试中提供一次(第一次尝试)。
对于此应用、ZStack 版本为2.6.1。
我们现在无法访问监听器日志、我们将尝试获取该日志。 SmartRF Packect 监听器日志是否正常?
代码摘录:
1 -添加组
zcl_header.frame_control = cluster_specific; zcl_header.commandID = Add_Group; zcl_header.transId = TransID++; DataRequest.DstAddr = grp_record->NWK_addr_list[i]。NWK_addr; DataRequest.DstEndpoint = 0x0B; DataRequest.SrcEndpoint =(char) server_config.Coordinator 端点; DataRequest.clusterid = 0x0004; DataRequest.TransID = zcl_header.transId; DataRequest.Options = 0; DataRequest.Radius = 0xEE; DataRequest.Data[0]= zcl_header.frame_control; DataRequest.Data[1]= zcl_header.transId; DataRequest.Data[2]= zcl_header.commandID; memcpy (DataRequest.Data+3、&grp_record->group_id、2); memcpy (DataRequest.Data+3+2、grp_record->group_name、strlen (grp_record->group_name)); DataRequest.Len = 3+2 + strlen (grp_record->group_name); RC = afDataRequest (&DataRequest);
2 -发送写入属性命令
zcl_header.frame_control = cluster_specific & 0x00; zcl_header.commandID = write_attribute; memset (&DataRequest、0、sizeof (DataRequest)); zcl_header.transId = TransID++; DataRequest.DstAddrMode = 0x01; /*组地址*/ GroupAddress =(uint16_t) group_detail->grp_id; memcpy (DataRequest.dstAddr、&GroupAddress、2); GroupAddress = DataRequest.DstAddr[0]|(DataRequest.DstAddr[1]<<8); DataRequest.DstEndpoint = 0x0B; DataRequest.DstPanID = 0x0000; DataRequest.SrcEndpoint = server_config.Coordinator 端点; DataRequest.ClusterId = 0x0018; DataRequest.TransId = zcl_header.transId; DataRequest.Options = 0; DataRequest.Radius = 0xEE; /* ZCL 接头*/ DataRequest.Data[0]= zcl_header.frame_control; DataRequest.Data[1]= zcl_header.transId; DataRequest.Data[2]= zcl_header.commandID; DataRequest.Data[3]= 0x04; DataRequest.Data[4]= 0x00; DataRequest.Data[5]= 0x20; DataRequest.Data[6]=(unsigned char)(100 -(int) Intensity _at_OCC); DataRequest.Len = 3+1*4; RC = afDataRequestExt (&DataRequest);
您好、Ryan、
感谢您的更新。 我将查找 APS_DEFAULT_NONmember_RADIUS 和 MAX_BCast_retries、并尝试更好地了解这些概念。 我将在接下来的几天内通过数据包监听器日志(TI 射频数据包监听器)与您联系。 但为了澄清我之前的信息、我将提供一个示例。
假设有3个节点(1、2、3)属于 ID 为1的组。 如果用户要向节点1发送某些命令,我们首先向节点1发出删除组命令,然后将该命令单播到节点1。 现在、如果用户想要向组1发出命令、协调器会将该命令多播到组1。 这样、只有节点2和3才会接收此命令。 我们不希望节点1接收组1的多播信号、直到清除节点1的单个命令(这是我们将添加组命令发送到节点1的时间)。
希望这澄清了我们系统的工作原理。