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信道和PANDI的选择问题

首先是信道的选择问题:在进行信道的使能选择时,应该是可以同时使能多个信道的吧,比如11信道和15信道,那么协调器在建立网络的时候应该是在这两者之间的一个未知数吧?然后相对应的,路由和终端的信道使能也应该是这两个信道吧?在请求的时候也应该是在这两个信道之间的吧?

再接着是PANID的选择:

在网上看到这样一种说法:

我在想这个过程是不是这样的:协调器拿到MAC之后就确定一个PANID,然后再以该节点的MAC地址作为目的地址将这个PANID传给他,再接着就是正常的PANID确定以及入网的过程?
不知道是不是这个意思,如果不是的话烦请讲解下这个过程,感谢!
  • 协调器拿到MAC之后就确定一个PANID,然后再以该节点的MAC地址作为目的地址将这个PANID传给他,再接着就是正常的PANID确定以及入网的过程?

    不是這樣的,感覺上他的描述比較像是做了一份加入白名單在协调器,只要是在白名單上的才准許加入,不在名單上的就不允許入網

  • 这个白名单存储的是MAC地址吗?但是我觉得不现实啊,如果有成千上万的子设备,那这个存储量就太大了。况且组网的两个要点不是信道和PANID吗?如果子设备和协调器的信道和PANID不同意的话要怎么组网呢?
  • 存储的应该是用户的传感器,节点这些,按照描述只有十来个
  • 节点入网的话必须PANID一样啊,我理解他的,应该是子节点实现并没有确定PANID,由协调器确定一个PANID,然后根据MAC地址将这个PANID发送给节点,子节点再以这个PANID请求入网。不知道对不对?

    我猜想YiKai Chen所说的,做一份白名单的话,由协调器判断是否让他入网,如果让他入网,那是直接分配网络短地址还是怎么,那这个时候的PANID是怎么确定的呢
  • 据说有这样一种方式,就是direct join,没试过,不知道可行不可行。

    现在默认情况下,协议栈的代码让router设备启动之后,默认是join模式(见ZDApp.c的MODE_JOIN宏),不是direct join模式(见ZDApp.c的MODE_RESUME),如果改成direct join模式,据说有一个全局变量负责。

    router就一直等待协调器发来的入网请求,这时手机可以扫描router上贴的二维码,进而wifi/3G送到协调器,然后协调器就可以把mac地址用directjoin的方式发出去,此时router会收到这个入网请求,就能直接入网。

    但显然不能用panId来做了,因为这个是随机生成的,此时协调器又不会说话,告诉你他的panId是多少,只能用extendedPanID了,这个是知道的,就是它自己的IEEE地址了
  • 白名單的原理其實很簡單,就是只有白名單上面的子设备可以留在網路中、一旦發現不在白名單上面的子设备、就對他發出leave request

  • 感谢感谢。查了下确实有这种方案,回头试试
  • 感谢分享,这也是一种解决此类问题的方案,学到了