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.

[参考译文] CC2530:最多可以添加到黑名单/白名单中的设备数是多少?

Guru**** 2549770 points
Other Parts Discussed in Thread: Z-STACK

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/582884/cc2530-what-is-the-maximum-number-of-devices-can-be-added-into-black-whitelist

部件号:CC2530
主题中讨论的其他部件:Z-stack

您好,

   我在ZC中使用三个设备实施了白名单。 我想添加更多设备。 所以我需要知道可以添加到NV-RAM中的最大设备地址数是多少。 因为我在白名单中使用IEEE地址,所以不会在我的应用程序中造成任何问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    一个NV ID可以存储256字节,因此可以存储32个IEEE地址。 如果您使用4 NV ID,它可以轻松存储128个IEEE地址。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,谢谢

    我将使用OTA客户端,因此在NV RAM中写入更多数据不会影响我的应用程序。 考虑一下,我将在 NV RAM中添加250个设备地址。 这会在我的应用程序中造成任何问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为它不会对您的应用产生任何影响。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    通过一个NV ID,我可以存储32个IEEE地址(256字节)。 如果我想将500个IEEE地址存储到NV RAM中,我应该有16个NV ID。  

    让我们考虑一下,我已将500个地址添加到NV_ram中。 现在我将检查一下。  

    接受ZR关联请求的时间如何?  ZC是否会一直保持稳定?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我无法理解您的问题。 您能详细说明吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果我在白名单中存储了500个地址,那么接受路由器的关联请求将需要很长时间。 ZC是否稳定?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我没有这方面的信息。 你必须自己测试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我能否从TI员工那里获得有关此问题的任何信息?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Arun,

    您不太可能拥有500个与协调人关联的设备(正如您提到的那样,ZR将与ZC关联)。 在某种情况下,这些加入的设备将通过其它路由器设备执行此操作。

    也许如果您解释您正在尝试做什么以及使用案例,我们可以想出一种更可靠的方法,而不是依赖白名单上的数百台设备。 您可能可以设置MAC地址前缀并按该设置过滤,而不是具有此类列表(同时在非常特定的时间段内打开网络)
    另一个有用的信息是您使用的堆栈版本是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Luis,

      请考虑 以下情景,我有数千台路由器和20名协调员(家庭自动化 ZR交换机,ZC -从云控制交换机)。 在这种情况下,一百台路由器应 与Coordinator-1连接,其他协调器也应如此。  

    如果我的交换机安装在靠近住宅的位置,ZR可能会连接到邻居的家庭网络。 在这种情况下,任何邻居都可以访问我的交换机。 所以我想列出一个设备列表,这些设备应该与特定的ZC连接。  

    我的堆栈是zstackhome-zstack2a.2a... 1.2

    此用例的任何想法

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果是您的用户情况,为什么不在其它Zigbee网络上禁用允许加入,而只在您正在工作的特定网络上启用允许加入。 这就是我们通常在附近工作的几个Zigbee网络的工作方式。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当邻居也像我一样使用同一个开关时,这是怎么可能的?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    那么,为什么您会说"如果我的交换机安装在靠近住宅的位置,ZR可能会连接到邻居的家庭网络。 在这种情况下,任何邻居都可以访问我的交换机。 "
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这意味着,我将制造更多的交换机,并将其分配给邻近的家庭。 我的用例适用于更广泛的应用程序。 所以它可以安装任何房子,如果邻居的家买了同样的手段,在那将发生什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您始终保持Zigbee网络禁用允许加入,则INSEE没有理由让一个家庭的交换机加入另一个家庭。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Arun,

    Zigbee制造商已经按照YiKai的描述自行解决了这类问题,它正在开放网络,因此设备只能在客户需要时才能加入,然后关闭网络,其他设备就不会加入您的网络。 这将禁止在您的网络中安装不需要的设备。 但我认为您担心的是,如果其他人不关闭其网络,而您的设备尝试加入其网络,而不是您的网络,会发生什么情况,对吗?
    3.0 (最新堆栈)具有以下安装代码:
    ZR设备被指示使用安装代码,此安装代码生成一个用于加入网络的密钥。
    ZC被指示使用来自ZR的安装代码,并且它还获取ZR的MAC地址,因此ZC在ZR尝试加入时使用安装代码。

    如果网络的协调人不使用IC,则ZR无法进入网络,因此它不会加入邻居网络,而是加入客户的网络。

    如果这解决了您的问题,请下载3.0 的堆栈并使用IC播放。 示例应用程序已经提供了一个很好的界面,您可以查看这些应用程序是否解决了您的问题。

    希望这能有所帮助!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在Z-Stack 3.0 中,允许加入的最长持续时间为254秒,这是为了避免用户意外禁用允许加入。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢Luis和Yikai,
    目前我不能去3.0。 大多数开发都是使用ZStack家庭自动化1.2 2a完成的,因此现在我无法处理新堆栈...

    您好,Luis,
    如果所有附近家庭发生电源重置,则意味着所有路由器都将尝试搜索网络,此时可能会加入邻居的网络。 如何处理此问题。 如果我要使用新堆栈,那么如果所有附近的家庭都发生了电源重置,那么邻居的ZR可能会在permitjoin时间内连接到其他网络...

    您好,Yikai和Luis,
    我可以使用协调员的IEEE地址在ZR中创建白名单,而不是在ZC中创建白名单。 在这种情况下,每个ZR只有一个地址,并且只能与特定的ZC连接。 您的建议怎么样?
    如果这很好,那么您可以建议我在哪里创建ZR代码白名单...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否在项目中启用NV_RESTORE? 如果您启用它,设备会将网络信息保留在NV中,并在电源回收后使用。 因此,即使在电源回收后,它也不应加入其他网络。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Yikai,
    已启用NV-restore。 但我的要求包括黑名单/白名单。 所以我尝试在ZC端使用白名单,我实现了这个目标。 现在,我在ZR方面尝试相同的操作,只有一个协调员的地址,以便ZR将只加入特定的ZC。 我需要解决方案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Arun,

    在您的使用案例中,我们似乎缺少一些关键内容,因为我同意Yikai的观点,即启用NV-Restore将解决ZR不加入其他网络的问题。

    启用NV-Restore后,ZR将检索Nwk信息,包括ZC地址和ExtPanID,这与ZR执行加入的操作相同, 但是,在这种意义上,无需实际加入网络,您可以节省将所有设备加入网络所需的时间和OTA流量,并且您可以确保设备仍由正确的协调员管理。

    如果您的用例出于某种原因要求ZR执行加入,请解释原因,我们可以提供更多帮助或建议一种更好的方法来实现您的用例。

    在您的请求中继续:

    您可以使用OsalNv API存储ZC的IEEE地址,请参阅文档或OSAL_NV.h,非常简单。 协调人的IEEE地址,可以从地址管理器获取  

    AddrMgrEntry_t nwkEntry;
    nwkEntry.user = ADDRMGR_USER_DEFAULT;
    nwkEntry.nwkAddr = 0x0000;//协调员地址
    
    IF (AddrMgrEntryLookupNwk (&nwkEntry)== true)
    {
    (void)nwkEntry.extAddr;// IEEE Coordinators地址
    } 

    您可以通过更改 ZDApp_NwkDescListProcessing以与 以前保存的协调人IEEE匹配来过滤您加入的网络

    //如果扩展的Pan ID被委托为非零值
    //仅加入与EPID匹配
    的Pan,条件是( osal_ExtAddrEqual( ZDO_UseExtendedPANID, pNwkDESC->extendedPANID)== false )
    继续; 

    一般情况下,ZC使用自己的IEEE作为ExtPANID,Z-Stack默认使用,但如果您发现客户将使用的协调器可能具有不同的ExtPANID, 然后,您必须依赖ExtPANID信息,因为在网络发现过程中,协调器的IEEE地址不会出现在信标帧中。

    希望这能有所帮助!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Luis,
    根据交换机(ZR)和协调器(ZC)的要求,我应始终实施黑白列表以形成网络。

    可以通过三种方式完成...
    1.在协调器中创建白名单以仅允许特定设备。
    2.在路由器中创建白名单以加入特定协调员。
    3.在路由器中创建黑名单,不应与特定ZC连接。

    这是我目前为止所做的...
    1.首先,我在zmac_AssociateRsp()函数中实现了白名单。
    在此函数中,我创建了一个列表,应该允许该列表与ZC一起加入。
    但是,如果我想通过UART添加地址而不是硬编码,如何操作? 因为,使用OSAL_NV_WRITE API,我只能写入两个地址,但我想添加更多的地址。

    2.我已核对你的回覆,但我未能达到这个目的。请你核对并留下回覆。

    3.路由器中的黑名单不能使用PAN ID,而Eift也是由IEEE地址完成的。
    如果路由器加入其它网络,则表示它(ZC)将向路由器发送离开请求。 收到路由器的请求后,应将特定地址添加到黑名单中。 因此,ZR应在每次连接到网络之前检查列表。

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

    如果您只需实施其中一个,最简单的方法是'2',这样可以避免设备加入意外网络的情况。

    2.-您可以在NV中将现有NV串行接口写入其中一个应用NV项目(0x0401或更高版本)中的ZC IEEE地址,读取并在我在ZDApp_NwkDescListProcessing()中提供的代码中使用它,而不是ZDO_UseExtendedPANID。

    如果出于某种原因,您仍需要1和3,以下是备注:

    对于'1',您必须注意,任何路由器都可能允许其它设备加入,避免关联是不可行的,因此您可以在关联完成后将设备从网络中踢出,也可以不传输网络密钥。 使加入设备离开网络或无法加入网络的设备。

    对于'3',您必须创建自己的黑名单管理器来分析和写入应用程序NV项并读取ZDApp_NwkDescListProcessing()中的项,以避免设备被触发的网络。

    由于Z-Stack IEEE.2a不支持白/黑列表,因此您必须创建自己的MT命令来引入1.2 地址以及方法'1'和'3'的列表管理器。

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

    好的,谢谢...

    现在,我正在尝试使用z-tool中的SYS_OSAL_NV_WRITE API将数据写入NV RAM,但有了它,我只能写入128位数据。 如果我想将更多数据写入同一NV_id,如何操作?

    考虑一下我将在相同的NV_ID...中写入10个IEEE地址

    现在在NV_id 0x0401中,我可以写入128位。(0xAA,0xA4,0xE9,0x09,0x00, 0x4B,0x12,0x00, 0x97,0xA4, 0xE9,0x09,0x00,0x4B,0x12, 0x00)。

    但我想在相同的NV_ID中写入更多地址,如下所示。

    0xAA,0xA4,0xE9,0x09,0x00, 0x4B,0x12,0x00, 0x97,0xA4, 0xE9,0x09,0x00,0x4B,0x12, 0x00,0x2A,0x3F,0xA4,0x0A,0x00, 0x4B,0x12,0x00,0xAA,0xA4,0xE9, 0x09,0x00,0x4B,0x12,0x00,  0x97,0xA4,0xE9,0x09,0x00, 0x4B,0x12,0x00,0x2A,0x3F,0xA4, 0x0A,0x00,0x4B,0x12,0x00

    或类似的

    0xAA,0xA4,0xE9,0x09,0x00, 0x4B,0x12,0x00

    0x97,0xA4,0xE9,0x09,0x00, 0x4B,0x12,0x00

    0x2A,0x3F,0xA4,0x0A,0x00, 0x4B,0x12,0x00

    0xAA,0xA4,0xE9,0x09,0x00, 0x4B,0x12,0x00

    0x97,0xA4,0xE9,0x09,0x00, 0x4B,0x12,0x00

    0x2A,0x3F,0xA4,0x0A,0x00, 0x4B,0x12,0x00

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

    陈宜凯:

          请回复我上一篇文章。

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

    我曾尝试在您的另 一个类似职位上为您提供帮助