CC2530 建网以及网络布局相关问题。
问题一:
要求Router1,Router2,Router3,End10只能和coordinator组网,End1,End2,End3只能加入Router1,End4,End5,End6只能加入Router2,End7,End8,End9只能加入Router3,Router2或3只能通过coordinator控制End1,2,3。Router之间不能直接通信。请问这种组网要怎么区分router才能防止节点错误接入到其他router中?我参考TI例程,是通过打开/关闭某个router允许入网功能来区分的,但是这种操作比较复杂,用户体验不好,还有其他方式可以自动区分吗?
问题二:
1.如果协调器掉电,短时间内无法正常供电,但是其他设备供电一直正常。要求自动把其它的router升级为协调器,在原来网络的基础上是否可以只是把路由表对应的关系做修改,这样就不需要重新组网。这种条件下,如果协调器过了一定的时间后,正常供电,则自动作为router,而且原来与它关联的end要保持正常关联
2.如果所有设备同时掉电,同时上电,要求重新上电后,网络设备之间的映射关系要保持和掉电前一样,是否可以做到
问题三:
1.不同的网络之间要绝对独立,比如:同样的户型布局,楼上和楼下,消费者刚好买了相同数量,相同设备的产品,要求绝对不能出现批次之间相互控制的问题,建议怎么做
2.当系统组网成功后 ,可否在程序中修改ZDAPP_CONFIG_PAN_ID?修改之后拥有不同ZDAPP_CONFIG_PAN_ID新设备还能加入这个网络吗?
问题1,基本就是个树状网络,完全不用zigbee mesh的特性?Router之间不能通信是指距离太远无法通信还是刻意不允许他们通信?感觉你的应用更适合一个concenrator和many-to-one的模式。
方法1: 像你说的通过打开/关闭 permit join实现。
方法2: 设置Router和coordinator的允许加入的子节点个数,然后先开router1,再开end1,2,3 加满后再开router2,依次类推。
方法3:设置应用层白名单。
问题2,协调器相比路由器多的功能是(1)建立新网络(2)可以配置成trust center, 如果coordinator断电且并不需要新组网的情况下,router跟协调器的功能是一致的,如果只是需要大家把数据都发到某一个规定的节点的话,这应该在应用层完成。当协调器回来后,如果开启了NV_RESTORE,它会自动回到之前的网络,不需要做任何设置。
问题3
1. 方法1: 通过控制不同的panid。 方法2:通过设置不同的security key
2. 可以修改ZGlobals.c 中的 zgConfigPANID来实现,并可以把他存入NV。下次启动后就以修改后的panid运行,这是如果新的节点还是原来的panid则不能加入。
1,请问应用层白名单是怎么设置的呢?
2,many-to-one 模式,router之间可以通信吗?
1. 可以根据你的应用设置白名单的数组。当有新加入节点时,可以比较新节点的长地址与白名单表格中的长地址是否匹配,若没找到则让其leave network。这只是举例,具体的实现可以根据你们的应用自己完成。
2. router之间可以通信与其他时候一样,只是router的路由表中会定时更新到concentrator的路由。这个路由必定存在。