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.

[参考译文] 在运行时更改通道

Guru**** 2465890 points
Other Parts Discussed in Thread: CC2530, Z-STACK

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1174426/change-channel-during-runtime

Thread 中讨论的其他器件:CC2530Z-STACK

您好!

在运行时是否有任何方法可以更改信道、因此下次恢复网络时、它会有新的信道?

我尝试使用 SYS_OSAL_NV_WRITE (ID=0x0084)写入 NVRAM、之后进行软复位、但似乎没有任何变化。

BR、

Aiman

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

    我已针对 参数 ID=0x0084运行了 SYS_OSAL_NV_READ、结果如下("FE 6 61 8 0 4 0 10 0 7b")

    • 长度=4
    • 值= 0x00100000、这是通道20。

    但是、当我恢复网络并开始监听时、我只能监听旧信道、而不能监听新信道。

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

    您可以尝试在_NIB 中更改频道设置,但我很奇怪为什么要这样做。 个人而言,我不建议您这样做。

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

    嗯、ZigBee2MQTT 让用户可以选择更改通道。 我还想将其整合到我的产品中。

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

    我不认为  ZigBee2MQTT 会在运行时更改信道。 我想它选择通道来形成新的网络。

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

    是否可以在不删除配对设备的情况下建立新网络?

    ZCD_NV_STARTUP_OPTION 我必须将其设置为什么值?

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

    当协调器 形成新网络时、无需删除配对的设备。 您可以将 BDB 主要通道和次要通道设置为要形成新网络的特定通道。

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

    我必须设置  ZCD_NV_STARTUP_OPTION 的值是什么?

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

    请尝试参阅 sunmaysky.blogspot.com/.../use-ztool-z-stack-30-znp-to-set-up.html 中的步骤

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

    将值设置为0x02并使用新通道形成网络。 我只能看到数据请求、在新的命令中、我看到数据请求

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

    您链接的指南设置了值0x03、这也会导致配对器件的完全擦除。

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

    是的。 是您的应用存在该问题。

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

    是的。 很遗憾。  

    将值设置为0x02并使用新通道形成网络。 我只能在旧通道和新通道中看到数据请求命令

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

    我无法理解您的描述,您现在的问题是什么?

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

    是否有任何方法可以在不删除配对设备的情况下更改信道?

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

    我在第一份报告中回答说、您可以尝试在_NIB 中修改频道、并重新启动协调器以更改频道。

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

    NIB 是什么意思? 我可以使用监视和测试 API 来更改它吗?

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

    _NIB 是 Z-Stack 中用于保存网络信息的数据结构。 ZCD_NV_NIB 为0x0021、nwkLogicalChannel 为_NIB 数据结构中的第22个字节。 您可以 监视和测试 API SYS_OSAL_NV_WRITE 以修改 ID 0x0021的值(偏移量为22)、从而将 nwkLogicalChannel 设置为所需值、并复位 CC2530以使其更改通道。

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

    nwkLogicalChannel 是1字节值还是4字节值?

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

    它是单字节。

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

    嗯、我想象 十进制值20 表示通道20?

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

    是的

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

    遗憾的是、通道未发生变化。

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

    您必须做一些错误。

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

    在哪里可以找到_NIB 结构的映射? 我想读取 NVRAM 并检查该值是否设置正确、但会显示许多值、因此我不知道这些值的含义。

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

    nIB 是 nwkIB_t 的结构变量、可在 nwk、h 中找到

    typedef struct
    {
      byte  SequenceNum;
      byte  PassiveAckTimeout;
      byte  MaxBroadcastRetries;
      byte  MaxChildren;
      byte  MaxDepth;
      byte  MaxRouters;
    
      byte  dummyNeighborTable;     // to make everything a byte!!
    
      byte  BroadcastDeliveryTime;
      byte  ReportConstantCost;
      byte  RouteDiscRetries;
    
      byte  dummyRoutingTable;      // to make everything a byte!!
    
      byte  SecureAllFrames;
      byte  SecurityLevel;
    #if defined ( COMPATIBILITY_221 )   // Obsolete - do not use
      byte  nwkAllFresh;
    #endif
      byte  SymLink;
      byte  CapabilityFlags;
    
      uint16 TransactionPersistenceTime;
    
      byte   nwkProtocolVersion;
    
      // non-standard attributes
      byte  RouteDiscoveryTime;
      byte  RouteExpiryTime;        // set to 0 to turn off expiration of routes
    
      // non-settable
      uint16  nwkDevAddress;
      byte    nwkLogicalChannel;
      uint16  nwkCoordAddress;
      byte    nwkCoordExtAddress[Z_EXTADDR_LEN];
      uint16  nwkPanId;
    
      // Other global items - non-settable
      nwk_states_t  nwkState;
      uint32        channelList;
      byte          beaconOrder;
      byte          superFrameOrder;
      byte          scanDuration;
      byte          battLifeExt;
      uint32        allocatedRouterAddresses;
      uint32        allocatedEndDeviceAddresses;
      byte          nodeDepth;
    
      // Version 1.1 - extended PAN ID
      uint8         extendedPANID[Z_EXTADDR_LEN];
    
      // Network key flag
      uint8      nwkKeyLoaded;
      // Key information - Moved out of the NIB structure after ZStack 2.3.0
      // If these elements are going to be reused make sure to consider the size
      // of the structures and padding specific to the target where the stack is
      // going to be running.
      nwkKeyDesc spare1;    // Not used
      nwkKeyDesc spare2;    // Not used
    
      // Zigbee Pro extensions
      uint8      spare3;                // nwkAddrAlloc deprecated - not used anymore
      uint8      spare4;                // nwkUniqueAddr deprecated - not used anymore
      uint8      nwkLinkStatusPeriod;   // The time in seconds betwee link status
                                        // command frames
      uint8      nwkRouterAgeLimit;     // The number of missed link status
                                        // command frames before resetting the
                                        // link cost to zero
      uint8      nwkUseMultiCast;
      // ZigBee Pro extentions: MTO routing
      uint8      nwkIsConcentrator;             // If set, then the device is concentrator
      uint8      nwkConcentratorDiscoveryTime;  // Time period between two consecutive MTO route discovery
      uint8      nwkConcentratorRadius;         // Broadcast radius of the MTO route discovery
    
    #if defined ( COMPATIBILITY_221 )   // Obsolete - do not use
      uint8      nwkMaxSourceRoute;
      uint8      nwkSrcRtgExpiryTime;
    #else
      uint8      nwkAllFresh;
    #endif
    
      uint16     nwkManagerAddr;        // Network Manager Address
      uint16     nwkTotalTransmissions;
      uint8      nwkUpdateId;
    } nwkIB_t;

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

    发送了"Fe 05 21 09 21 00 16 01 17 0c"包

    我获得了 NV_RAM_WRITE_RSP 作为成功。 尽管所有这些都没有变化。

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

    我建议您先使用 Ztool 测试并确保其正常工作。

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

    我有一个 SonOff 软件狗、它具有 CP210X Silicon Labs Bridge。 因此它无法连接到 ZTool。

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

    您确定  SonOff 软件狗使用 CC2530?了

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

    CC2562P 与器件实验室的 USBToUart Brdge 配合使用

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

    我之前的信息是针对 CC253x Z-Stack 的。 需要检查 CC26xx ZNP 的工作方式是否相同  

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

    哦、很抱歉我没有早点提供这些信息。

    当您有一些更新时、请告诉我。

    非常感谢。  

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

    查看结构:

    // non-standard attributes
      byte  RouteDiscoveryTime;
      byte  RouteExpiryTime;        // set to 255 to turn off expiration of routes
    
      // non-settable
      uint16_t  nwkDevAddress;
      byte    nwkLogicalChannel;
      uint16_t  nwkCoordAddress;
      byte    nwkCoordExtAddress[Z_EXTADDR_LEN];
      uint16_t  nwkPanId;

    注释显示它是不可设置的。 这是否意味着它具有某种写保护?

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

    不、我的方法是直接修改 NV、以便您可以随时更改。

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

    好的。

    如果您对 CC2562P 应用程序有更新、请告诉我。

    BR、

    Ayman。

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

    检查 CC26xx Z-Stack 后、我看到  nwkLogicalChannel 的偏移 与 CC253x Z-Stack 的偏移相同、该偏移为第23个(偏移为0x22)。 我不确定它为什么不能在您 的 SonOff 软件狗上工作。 您可以用 Ztool 试用吗?

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

    ZTool 不能与 SonOff 软件狗一起使用。 什么也没有。 我确信我在创建网络时使用的写入 NVRAM 的代码能够正常工作。

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

    您能否尝试读回偏移22的 NV ID 0x0021值、并检查它是否与您看到的通道相同?

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

    偏移是0x22还是22? 两者之间存在差异。

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

    这是 ID 为0x0021且偏移量为22的 SYS_OSAL_NV_READ 的结果。

    FE 60 61 8 0 5e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57

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

    ID 为0x0021且偏移量为0x00的 SYS_OSAL_NV_READ 为  

    FE 76 61 8 0 74 cc 5 2 15 f 15 0 1e 0 0 1 5 1 8f 0 7f 0 2 5 ff 0 0 f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 AD 8 0 0 80 0 f 4 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 17
    76 C2 24 0 4b 12 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 f 3 1 0 0 A 1 0 0 0 7 0 0 0 6A

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

    您在应用中设置了哪个通道?

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

    原始信道:15.

    运行时设置的通道:18.

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

    如果您将偏移22设置为值18并读回偏移0、您会看到什么?

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

    您是指将偏移值18写入 NVRAM、然后从偏移值0回读?

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

    是的

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

    结果是:  

    FE 76 61 8 0 74 12 48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 80 24 0 80 4c 4D 0 20 4c 4D 0 20 48 75 2 0 0 0 0 5 0 C8 1 0 20 dc 1c 0 20 dc 1c 0 20 dc 0 20 20 0 0 E2

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

    这对我来说不是很好,但我现在没有 CC26xx 来测试它。  我可以在访问我的套件并对其进行测试后回复。

    您有什么意见吗?

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

    尊敬的 Aiman:  

    如果   项目定义了 MT_ZDO_MGMT (默认设置)、您似乎正在尝试通过 ZDO_Mgmt_NWK_UPDATE_REQ MT API 执行 ZNP 软件支持的网络管理器操作。  您是否尝试使用过此命令?  请注意 、ZD_NWK_mgr.c 中的 ZDNwkMgr_ProcessMgmtNWkUpdateReq 显示了处理过程、包括通道更改的扫描持续时间必须等于0xFE 的方式。

    此致、
    Ryan

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

    您好、Ryan、

    要更改我必须在 ChannelMask 字段中设置的通道、我要继续执行新的通道? 对吧?

    我必须将什么设置为 DestAddr 和 NWKManagerAddr?