我现在的想法:
场景1:
1、1个路由设备,通过无线的方式分别配置10个协调器的参数。
我目前的做法是:每个探空仪均使用EPANID=1;路由设备每次进入一个局域网配置完成后,让这个网络不允许入网。
然后打开第二个协调器,进行形同的步骤。可以实现。
2、如果我想用2个路由设备,通过无线的方式分别配置10个协调器的参数。这样速度会快一倍。
有一个问题:如果两个路由设备同时上电,两个协调器也同时上电。就会造成两个设备同时进入了一个网络中。
请问有没有好的办法可以解决这个问题?
YiKai Chen:
基本上Zigbee spec/Z-Stack沒有辦法讓你這樣隨意切換
Alvin Chen:
你路由很难控制, 在入网选择只会选择rssi 更好的设备,以及你这样搞很繁琐,如果你想自己配置协调器,建议你使用ZNP 配置协调器。
user4711142:
回复 Alvin Chen:
我的初衷是通过路由设备无线配置协调器的参数,如果用ZNP的方式,是不是相当于MCU(通过串口、spi等方式)配置协调器?
user4711142:
回复 YiKai Chen:
没有能力自己写协议栈,但还是想问一下,自己的协议是否可以实现我要的功能?
Alvin Chen:
回复 user4711142:
ZNP 模式是UART或者SPI 设置参数。你很难操作路由对于入网的选择。
user4711142:
回复 Alvin Chen:
有个问题想问一下:我的协调器A 用扩展PANID作为网络标号。我的其他路由设备将扩展PANID设置为保留值。这样路由设备会加入到协调器A建立的网络中么?
user4711142:
回复 Alvin Chen:
我10个协调器的扩展PANID 不一样,路由设备通过串口更改其扩展PANID的值,达到进入指定网络的目的。这样可以实现么?
Alvin Chen:
回复 user4711142:
你可以用一个上位机类似Btool 设置各种参数,何必纠结这个路由设备,通常情况下coordinator是gateway 那边用znp 做的,可以通过上层的linux 或者其他设备设置启动ZNP。你的路由写入操作不推荐很难实现。
YiKai Chen:
回复 user4711142:
路由设备要加入別的協調器必須走重新入網流程
guozi zhou52:
如果只是路由器做为配置工具进入网络配置协调器或的话,可以尝试:
1. 路由设备扫描,通过beacon拿到附近所有网络的网络参数 panidepidchannelassocPermit (区分哪些是自己的协调器,自己协调器的关联表中预先写入 0x0003, 勿使用0x0001, 协议栈中有些命令会触发一些动作,可能在绕过性的修复一些问题);
2.路由设备将这些网络参数 、nwkKey及网络地址0x0003写入NIB属性, 然后以resume方式启动;
3.对协调器配置完毕后, resume方式进入下一个网络进行配置。关于多个路由同时进行配置操作的话,可以每次进入网络前通过beacon中的assocPermit标记来选择是否要进入该网络,避免经常性的出现2路由设备进入同一网络进行配置。
另外,即使有小概率的2路由进入同一网络,短时间内也不会有太大弊端(如网络地址冲突)。