Coordinator 和 Enddevice
都设置了xHOLD_AUTO_START ,即开机自启
但是有个问题,Enddevice组网后,它再断电上电后有时候会跑到别人的网络里(另一台Coordinator的网络里,两台Coordinator会打架抢设备 )
我想设置一个机制:
1. 首先ZHA设备需要能够判断自己是不是FactoryNew,还有:这个方法怎么判断(类似于zll_IsFactoryNew函数的功能)?
2. 组过网的Enddevice上电后,先判断自己不是FactoryNew,就停止自启网络ZDOInitDevice(0),并且还要恢复断电之前的那个网络(NV_RESTORE已开启),
(恢复保存的网络是不是用ZDApp_StartJoiningCycle() ?), 这样就不会被其他Coordinator搞走
3. 但是这样会导致现有Coordinator坏掉或者离线后,Enddevice彻底没法与新的Coordinator组网,所以我设想的:Enddevice每隔一段时间接收Coordinator广播的消息,收不到会计数,超过一定时间后,Enddevice认定自己计数器超时,重置自己。
我这些想法都是以前基于ZLL协议实现过:类似于一个“局域网络锁”的功能,现在在ZHA网络上开发,加这个功能,还有些不太懂,求大神们指导
送张壁纸给你们
Final Azadica:
还有Coordinator Nwk Address 一直都是0x0000
因为开发产品需要修改。这块短地址我找了很久,都没有发现。可不可以改成我自己手动分配的,比如osal_rand(),或者MAC地址后四位。
VV:
如果在NV_RESTORE开启的情况,掉电以后肯定不会加入到其他的Coordinator网络去。