PANID修改之后,子设备怎么跟着加入修改后的PAN网络
应用场景如下:
移动设备1集成了协调器1,PANID为0x001,移动设备2集成了协调器2,PANID也是0x001,
因为他们两个PAN不在同一地点,所以组网的时候并没有产生PANID冲突事件。
但是由于某种原因,我拿着移动设备1走动,移动到了移动设备2的PAN范围内了,这时候,
两个网络通信互通了,因为我们发送数据是依据PANID和网络地址的,用长地址通信除外,
而且正好他们的子设备也有相同的网络地址,因此我必须给移动设备1下的协调器更新一下
PANID,但是我改变了PANID之后其子设备就由于有同步检测,检测到丢失协调器成为孤儿节点。
问题1:
怎么让子设备还是加入到原来的协调器网络中(改变PANID后)
问题2:
成为孤儿节点后怎么让其加入到其他网络
因为我调试发现是不能再加入其它PAN网络的,除非你之前的协调器恢复了,
ZDO_StartDevice函数代码中有这段注释:
// For devices with RxOnWhenIdle equals to FALSE, any network channel
// change will not be recieved. On these devices or routers that have
// lost the network, an active scan shall be conducted on the Default
// Channel list using the extended PANID to find the network. If the
// extended PANID isn't found using the Default Channel list, an scan
// should be completed using all channels.
// When ApsUseExtendedPanID is commissioned to a non zero value via
// application specific means, the device shall conduct an active scan
// on the Default Channel list and join the PAN with the same
// ExtendedPanID. If the PAN is not found, an scan should be completed
// on all channels.
// When devices rejoin the network and the PAN is not found from
问题1:
可以使用让每个节点加固定的ExtendedPanID,这是一个64bit的值,一般Coordinator在建立网络时用自己IEEE地址作为ExtendPanID,所以每个协调器间是不同的,让节点固定的加这个协调器,而不仅仅是加一个PANID了。
问题:
一种是先leave先前的网络,然后启动加网过程
另外一种可以强制把NV init掉,然后启动加网过程
追问
问题1:
怎么指定加入扩展PANID,指定之后协调器坏了,那这个子设备不是永远掉线了?
问题2:
我目前的操作是成为孤儿节点后,扫描8次后软重启
leave我居然没去试过,待会试试看
擦出NV的话,还是得重启才行,所以擦不擦除都一样。
望VV继续给予解答,非常感谢
问题1,
可以在程序里面设置zgExtendedPANID,对的,就永远掉线了,除非有一个ExtendPANID一样的PAN。
VV,你好!我希望我网络中的节点,在coordinator掉电之后,不加入别人的网络,只有在coordinator重新上电之后设备们才能加入他,这如何解决呢?
添加宏NV_RESTORE
并跟协调器组网一次。或者上面所说,用扩展ID。