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.

zigbee怎么选择指定的网络加入?

今天有个客户买了两套zigbee设备,但是问题来了。他把两套设备的协调器都打开建立完网络后,打开终端结果终端都加入了同一协调器网络里了。由于设备要批量,如果为每一套设置一个pandid或其他的能区分的参数的话不现实。在这种情况下,该怎样处理。

  • Hi Leo,

    是不是可以考虑在你的zigbee设备上使能NV_INIT和NV-RESTORE,同时保证第一次打开终端的时候只有一个协调器在工作。

    那么这个设备就会在flash中记下所加入的网络信息,下次重新上电的时候,即使同时又多个协调器在工作,它也会加入先前所记下的那个网络。

  • 那假如我买了一家的符合home automation的灯光控制产品一个灯光(协调器)一个开关(终端)。同时我的邻居也买同样的产品。当我们两家同时安装的情况下,会不会组错网?因为一般厂商量产的时候肯定会为不同的产品烧写相同的firmware他们的panid肯定是一样。一般panid是0xFFFF。这时如何解决正确的模块加入到正确的网络?是不是只能用Commissioning tool。如果用Commissioning tool的话一般只能工程人员有。最终客户一般不会买Commissioning tool设备的。这个问题如何解决?困扰好久了。这个问题zigbee标准有没有相关的标准解决方案?

  • 首先当coordinator建立网络的时候会有相应的扫描机制,如果发现自己选择的PANID和目前网络中已经有的PANID有conflict,那么它就会再选择一个PANID,直到没有冲突的为止。所以首先可以确保你家和别人家建立的网络时不一样的。

    另外比较常见的做法是,coordinator并不是一直出去join permit状态的,一般都是用户想加入设备的时候,在coordinator按一个按键,允许coordinator再多少时间内,开启join permit,所以这样也可以保证你的设备可以加入到你想加入的网络内。

    那么至于加入一次以后,开启NV功能的话,下次就会直接加入了。

  • 这样能保证网络panid不同,但是假如我和我邻居的网络都建立好了,并且都允许加入网络,这时我的终端要入网,终端搜索的时候会搜到两个网络,那就会有可能加入到我邻居的网络里去了。能不能防止这个情况出现?

  • 如果真需要防止这种情况的话,你可以对你们设备固话PANID,相当于写死一个网络标示符,如果写除了0xFFFF以外的数的话,协调器建立网络时选择这个PANID建网,同样路由和节点入网的时候选择对应的PANID去加入网络。

    /* Define the default PAN ID.
     *
     * Setting this to a value other than 0xFFFF causes
     * ZDO_COORD to use this value as its PAN ID and
     * Routers and end devices to join PAN with this ID
     */
    -DZDAPP_CONFIG_PAN_ID=0xFFFF

     

  • 但是这样只是针对工程项目啊,如果是家庭智能家居产品等个人消费产品的话,批量的话我为每一个产品设置不同的panid的话很难生产的,总不能编译一版firmware烧一个产品吧,这样生产效率是很低的,而且也不能保证产品到用户手里,他周围没有相同panid的网络在运行。所以只能是把panid设置成0xffff。这样的话上面的问题似乎没什么好的办法解决。难道zigbee发展到今天还有这样明显的问题吗?还是说我研究的不深入,没发现解决方法。

  • Hi Leo,

    像智能家居等个人消费产品,从安全性考虑,正常运行时一般会关闭网络的允许加入功能,有新设备需要加入时,才打开该功能。另外,这些产品一般都会使能网络加密的功能。

  • 我们也在做智能家居,我们的做法是把节点的IEEE地址输入到协调器。在烧写节点的firmware时,就把IEEE地址标在标签上,然后启动后就把IEEE地址输入到协调器。

  • 我觉得目前这就是最好的方法

    zigbee设备加入网络有两种方法,一个是自动搜索可加入网络,自动加入,一个是直接加入,就是告诉协调器要加入的设备的mac,然后直接将此设备加入网络中

  • 你好!

    请问有没有官方有没有相关组网的例程,就是按键确定加入网络的例程,感谢您的分享。

    谢谢!

  • 那如果批量生产也是这样做吗

  • 如果别人家的coordinator跟自己家的coordinator在同一个时间段都是join permit状态,那样的话,自己家的终端节点很有可能连到别人家的coordinator去了。

    这种情况怎么处理呢

  • 这种情况目前没办法处理,技术上也没法做限制
  • 请教一下,coordinator开启join permit的函数是哪一个呢?
  • 可以用 ZDP_MgmtPermitJoinReq或是NLME_PermitJoiningRequest
  • 这个是针对Zstack 3.0也有效的吗?
  • 是的,只是Zstack 3.0的duration 不能設置成255