最近在研究cc2530,在组网方面上有一个疑问,查了资料也没搞清楚如下场景使用ZIGBEE如何解决:
有两个ZIGBEE网络,分别叫做NET_A和NET_B,它们相邻很近,并且相互无关。每个网络中都有自己的协调器,NET_A的协调器是CRD_A,NET_B的协调器是CRD_B,现在我有一个终端DEV_C,我需要DEV_C能够任意加入NET_A或者NET_B(不改动软件),不知道这样的情景能否实现?
我也查了一些资料,ZIGBEE有一个PANID,用于区分各个网络,可以人为指定,也可以自动根据网络冲突自动更改,当然PANID在协调器初始化后就确定了,那么当设备加入到网络中后会获得PANID。但是有一个问题我搞不明白,节点设备是按照什么方法加入到网络中的呢?网上说是寻找最近,信号质量最好的网络加入。那这样就无法指定DEV_C加入网络NET_A还是NET_B了吧?,另外如果DEV_C可以设置PANID,那么也不现实,如果NET_A与NET_B的PANID因为冲突变化了,那么DEV_C就连不上了吧?,这个问题困扰我好几天了,请高手帮忙解答一下,在此万分感谢!
CZ:
Zstack默认是都可以允许设备加网,所以DEV_C会随机加入NET_A或NET_B, 可以通过函数NLME_PermitJoiningRequest()将CRD_A和CRD_B设置为默认不允许加网,然后再通过加网时打开需要被加入的PAN实现DEV_C正确加网
WZ:
回复 CZ:
另一个是说device在加入网络的时候,可以再Cood那里加上白名单。
PANID改变的话,所有的子节点都会重新入网。