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.

[参考译文] LAUNCHXL-CC1352R1:Z2M 不接收任何报告

Guru**** 2455560 points
Other Parts Discussed in Thread: LAUNCHXL-CC1352R1

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1439361/launchxl-cc1352r1-z2m-does-not-receive-any-reports

器件型号:LAUNCHXL-CC1352R1

工具与软件:

您好!  

我目前使用 LAUNCHXL-CC1352R1作为终端器件(zed_light)并使用 Sonoff Zigbee 软件狗-P 作为我的协调器、其中使用 CC1352P2_CC2652P_launchpad_Coordinator_20240710进行了闪存。 我使用 Z2M、无法从 Launchpad 接收报告。 我最近的做法是使用 该线程 、其中我 从 Z2M 的选项中绑定了 LaunchPad 的集群(genBasic、LevelCtrl、OnOff、Identify)。 但在启动过程中、我只能从光照级别接收一个报告、而不会进行更新。 我该怎么办? 谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jan:

    zed_light 项目在默认情况下没有启用 BDB 报告。  请遵循 Zigbee 基础知识 SLA 的任务2 、并参考默认 zed_temperaturesensor 示例 以启用此功能。

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    默认 zed_light 项目和 ZigBee 基础 SLA 的任务2是否有任何区别? 我没有看到任何差异、也不需要进行任何配置。 至于 zed_temperaturesensor 示例、我到底应该做什么? 在 Z2M 中更改绑定和报告设置的任何内容是否正确(如下所示)?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jan:

    感谢您的耐心、为您的困惑深表歉意。  我提供了 F&B 流程的两个示例、但如果 Z2M 不识别为交换机客户端、则此流程不起作用。  因此、您将需要使用 Zstackapi_Zdo BindReq 创建手动绑定。  我本打算将您指向 SLA 中的任务1以进行手动绑定。  一旦您知道已加入 Z2M 协调器、您将需要通过 SLA 中所示的器件通知或通过 zstackmsg_cmdids_dev_state_change_IND 连接到 ZStack_DevState_dev_end_device  以及 Zstackapi_sysNwkInfoReadReq 来调用此 API 。  这里是另外两个 相关的 E2E 主题

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价用户 id="114053" url="~/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1439361/launchxl-cc1352r1-z2m-does-not-receive-any-reports/5525880 #5525880"]一旦您知道自己已加入 Z2M 协调器   、您就需要调用此 API、方法是通过 SLA 中所示的器件声明或通过 zstackmsg_cmmdids_dev_state_change_IND 调用 ZStack_DevState_dev_end_device、并通过 Zstackapi_sysNwkInfoReq 提供帮助 。[/sysQuote]

    很抱歉、我只是 ZigBee 和 TI LaunchPad 的初学者。 但是,我到底该怎么做呢? 我如何调用 API?什么是"device announce as the SLA"? 我在 Z2M 中看到"device announce"日志、它与它不同吗? 我已经完成了 SLA 的任务1、但不知道从何处开始。 请在这个问题上与我保持一致。 谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您的照明项目是加入者设备(ZED)、需要在本地创建绑定。  因此、您正确地说、轻量级项目将广播设备公告消息而不接收这些消息。  因此、您应在成为 ZED 加入网络后采取行动、因此我建议:

    1. 检查 zstackmsg_devStateChangeInd_t -> ZStack_devStateChangeInd_t -> ZStack_DevState 是否为 Zstackmsg_Cmdids_DEV_State_Change_IND  情况下的 Zstack_DevState_DEV_End_device。
    2. 使用 Zstackapi_sysNwkInfoReadReq 读取网络信息。
    3. 使用 Zstackapi_Zdo bindReq 在其中创建手动绑定
      1. 目标地址是本地设备
      2. 源地址是 Z2M 器件
      3. 使用 IEEE (即 long)地址

            case zstackmsg_CmdIDs_DEV_STATE_CHANGE_IND:
            {
    #if !defined(CUI_DISABLE) || defined(USE_DMM) && defined(BLE_START)
                // The ZStack Thread is indicating a State change
                zstackmsg_devStateChangeInd_t *pInd =
                    (zstackmsg_devStateChangeInd_t *)pMsg;
    #endif // !defined(CUI_DISABLE) || defined(USE_DMM) && defined(BLE_START)
    
    #ifndef CUI_DISABLE
                UI_DeviceStateUpdated(&(pInd->req));
    #endif
                if(pInd->req.state == zstack_DevState_DEV_END_DEVICE)
                {
                    zstack_sysNwkInfoReadRsp_t pRsp;
                    Zstackapi_sysNwkInfoReadReq(appServiceTaskId, &pRsp);
                    
                    zstack_zdoBindReq_t pReq;
                    pReq.nwkAddr = pRsp.nwkAddr;
                    pReq.bindInfo.clusterID = ZCL_CLUSTER_ID_GENERAL_ON_OFF;
                    pReq.bindInfo.srcEndpoint = SAMPLELIGHT_ENDPOINT;
                    pReq.bindInfo.dstAddr.addrMode = (zstack_AFAddrMode)Addr64Bit;
                    pReq.bindInfo.dstAddr.endpoint = Z2M_ENDPOINT; // DEFINED AND KNOWN FROM Z2M
                    OsalPort_memcpy(pReq.bindInfo.dstAddr.addr.extAddr, &(pRsp.parentExtAddr), Z_EXTADDR_LEN);  //ASSUMES Z2M IS THE PARENT
                    OsalPort_memcpy(pReq.bindInfo.srcAddr, &(pRsp.ieeeAddr), Z_EXTADDR_LEN);
    
                    Zstackapi_ZdoBindReq(appServiceTaskId, &pReq);
                }

    这是未经测试的伪代码、可以作出假设、应针对您的环境进行全面测试。  如果 Z2M 目标端点未知、或者 Z2M ZNP 不能保证为父节点(示例中为假定目标地址绑定地址)、则需要通过无线传输更多的 Zigbee 消息以查询 Z2M ZNP 并获取正确的绑定信息。

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我遵循了以下代码、但看起来 Z2M 无法获得 ZED 的活动端点。

    因为这个原因,似乎我现在不能做任何有约束力的事情。 PuTTY 也冻结,当我重置它,它"修复"的事情,该错误不会再次出现时,再次采访.  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    因为我没有您的代码、所以我不知道是什么原因导致了器件免费。  您应该能够读取 Zstackapi_Zdo BindReq 返回状态以确定是否成功、因为应该在本地完成。  您也可以尝试让 Zigbee2MQTT ZNP 向远程设备发送绑定请求。  请咨询 Zigbee2MQTT 讨论、或者 可能很活跃、能够为您提供进一步的建议。

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如何查看  Zstackapi_Zdo BindReq 返回状态?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    zstack_ZStatusValues statusValues; 
    
    //...
    
    statusValues = Zstackapi_ZdoBindReq;

    zstack.h 中列出了返回值

    此致、
    Ryan