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.

[参考译文] LP-CC2652RB:协调器崩溃时的 ZigBee 器件堆栈内部状态

Guru**** 2460850 points


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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1226477/lp-cc2652rb-zigbee-device-stack-internal-state-when-coordinator-crashes-down

器件型号:LP-CC2652RB

您好!

请再说一遍、我需要有关两个问题的帮助:

 

  1. 我的 ZigBee 工厂由一个协调器、三个路由器和15个终端设备组成、它们都能正常工作:

我能够使用 zigbee2mqtt 应用从所有器件发送和接收数据。

在这种开发级别、当网络上出现问题时、我需要采取适当的措施。

因此、正如您的支持人员建议的那样、我会在每个器件上持续监控变量:

"deviceState == ZStack_DevState_DEV_ROUTER"/"deviceState  == ZStack_DevState_DEV_End_DEVICE"。

 

但 我想知道当我关闭协调器时、该变量不能归结为"ZStack_DevState_Hold"! …30秒后。

我使用此变量知道我的设备已加入网络… 但有些事情是错误的……

 

该变量在器件首次加入网络时非常有用、但此后似乎是无用的…。除非我从网络取消该器件的连接、否则将其切换到原始状态。

 

那么(如果我没有误解您的建议)问题是:不包括周期性应用程序级数据读取/写入、我如何确保我加入到了协调器中

 

  1. 相关问题:在应用程序启动时是否有某种方法可以了解我的设备 已在网络上注册? (写入闪存中的一些数据…。)

 

感谢您的亲切合作

路易吉

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

    仅当器件已初始化但不会自动启动时、才会到达 ZStack_DevState_Hold。 路由器设备或终端设备连入网络后、不会返回 ZStack_DevState_Hold。 对于 Zigbee 路由器设备、它设计为能够在没有协调器的情况下工作、因此即使协调器已关闭、它也会使 ZStack_DevState_DEV_router 状态保持不变。 对于 Zigbee 终端器件、 如果失去父节点连接、它可能处于 ZStack_DevState_Nwk_orphan 或 ZStack_DevState_Nwk_BACKOFF 状态。

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

    路易吉、您好!

    ZigBee 设备能够相对于网络内的其他节点进入/退出无线电范围。  如果路由设备失去了作为邻居的协调器,则可以执行网络路由以查找到该协调器的新路由。  作为父设备丢失了协调器的终端设备可以找到另一台路由器来担任此角色。  如 YK 所说,协调人对维护网络并不重要。  例外情况是、在调试期间、加入设备通常必须得到协调员信任中心的批准。  应用程序消息将显示协调器是否响应。   

    Z-Stack API 指南
    Zigbee 基础 SLA
    Z-Stack 概述

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Rayan、Chen
    请再次考虑我们产品的 ZigBee 网络、就好像它基于通过 Zigbee2Mqtt 连接至单个协调器的主机设备一样、而协调器又反过来发送和/或接收来自路由器或终端设备的应用数据。
    换句话说、主机通过协调器发送或接收来自不同终端设备/路由器的数据。
    
    在应用级别、路由器和终端设备具有相同的输入输出功能。
    
    在这些设备级别、必须了解协调器是否在线!
    
    因此、您能建议我们通过一种方法从这两种类型的设备中了解协调器是否在线?
    我们目前使用的方法基于定期将变量写入主机、从而将其中一个变量写入终端设备/路由器。
    如果没有收到反馈、则将协调员视为离线。
    
    我们认为应该有一种更高性能的方法,在应用程序的较低层运行,需要较少的数据流量...
    
    谢谢你 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果协调器是直接邻居或父设备、可 对 ZR 或 ZED 分别使用邻居列表(Zstackapi_ZdoMgmtLqiReq ()/ZDO_MgmtNWCReq ()/ZDO_Mgmt_NWK_DISK_REQ)或孤立设备状态来确定 ZC 的状态。  否则、像您所描述的权变措施那样的定期签入是最好的方法。

    此致、
    Ryan

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

    您可以尝试从路由器和终端设备定期请求协调器端点。 如果您无法从协调器获得端点响应、则您的设备知道无法访问协调器。

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

    车先生,早上好, 请您给我们建议一种定期请求协调员终点的方法吗?
    在 终端设备上可以从何处获得协调器端点信息? 感谢您的关注 。

    Br


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

    我相信、YK 是指 Zstackapi_ZdoActiveEndpointReq ()/ZDO_ACTIVE_EP_REQ、其中 DstAddr 和 NWKAddrOfInterest 属性为0x0000 (ZC)。

    此致、
    Ryan

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

    大家好。 仍然非常感谢!

    我们将尽量遵循您的建议。

    相关问题:在应用程序启动时、我是否可以通过某种方式了解我的设备是否 已在网络上注册? (写入闪存中的一些数据…。)

     如果我发现器件(以前加入的)未加入、这将允许我重新执行加入请求!

    B.R.

    路易吉

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

    您可以参考  从 ZCD_NV_BDBNODEISONANETWORK NV 项读取的 bdbAttribute bdbNodeIsOnANetwork。

    此致、
    Ryan

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

    谢谢!

    Br

    路易吉