Zigbee小范围内存在多个协调器
TI工程师:
您好,现在我在使用的是CC2530芯片,软件使用的是zstack 2007.
我想咨询下,在一个小的区域内同时存在多个协调器时,使用协议栈如何控制多个设备加入到对应的网络中呢?
我现在做的是智能家居方面的东西,如何在所有的协调器程序都一样的情况下,不会将邻居的设备添加到我家里。
你可以在你们coordinator上加一个按键,当正常工作情况下,你coordinator可以把permit join关闭,这样任何设备都加不进来,当有设备要加的时候,可以按键临时打开一段时间的permit join
按照您的方法,我尝试了一下,但是可能还是不是我要的效果。想请问您这个permit join这个方法的具体函数是哪一个呢?有可能是我的方法使用不当。谢谢
直接在函数ZDO_JoinIndicationCB里面做文章吧
您好,您能再描述的清晰一些吗?还是没搞清楚,谢谢
关于“permit join”的实现问题,你可以用NLME_PermitJoiningRequest( byte PermitDuration )函数来实现
关于你的问题“在咨询您一下 如果我打开了开关,并且加入了一个设备。那么当我把coordinator重新上电时候(启动了恢复网络功能)不打开加入功能,刚刚加入的设备是否还能加入到这个coordinator里面呢? 谢谢”
不打开就没法加入。因为当节点重新搜索网络的时候,收到的beacon里面,permit join位是No的,所以节点不会执行后续的入网过程。
我在协调器上,执行NLME_PermitJoiningRequest(0),也执行StartOption= ZCD_STARTOPT_CLEAR_STATE|ZCD_STARTOPT_CLEAR_CONFIG;osal_nv_write(ZCD_NV_STARTUP_OPTION,0,sizeof(uint8), &StartOption);终端还是能加入网络,请教还需要什么条件,谢谢
@alok
应该开启了NV RESTORE对吧。
使能Permit Join只对新入网的设备有效果,如果是已经入网的设备,即便Permit Join禁止了,也没关系,因为已经入网了。
你通过抓包就看的比较清楚了。节点不是通过Associate Request来加网的?
我们用的白名单管理机制,家庭主机向协调器输入设备的MAC地址,设备才能连入协调器。