组网问题:
1. 如果用zigbee做智能家居,一旦协调器被用户购入,那么,如果用户新增节点(可能来源于不同的商家),那新节点如何知道原有协调器的panid 等参数?(用户不可能再去买一套协调器 + ep吧)
有没有这么一种解决方法:所有的协调器烧写同一套代码,所有ep也烧写默认的panid等参数,那么只要用户购买了ep,直接拿回家,就能组网使用了。
但是,这种做法还有一个问题,就是邻网干扰,即无法控制EP加入自己家的网络,还是邻居的网络。即使加入自己的网络,也无法确认数据包会不会发送到邻网协调器中。
我现在的做法是:
a.使用 NV_RESTORE 。 这样可以确保ep加入协调器后,保存所有的参数。(如果同时存在第二个相同代码的协调器,由于代码相同,不确定此时会不会串网,如果此时不串网,可以往下看 )
b.修改MAC_SPEC_MIN_RECEIVER_SENSITIVITY -97 改为 40 ,目的是: 只有ep 靠的很近,才可以入网。入网成功后,则不受该距离限制。
这么做的结果是:
只有新EP靠近协调器时,才可以入网。并且一旦入网成功,所有的信息会通过 NV_RESTORE 存储到ep的flash。到目前为止,测试结果表明,不会加入到相同协调器代码的邻网。————————如果与您测试结果不同,敬请指导。
求大牛指导,这种方法可行性如何,有没有严重纰漏?
退网问题
参考某些论坛的帖子,他们的做法是:
//delete flash
uint8 pg;
for ( pg = OSAL_NV_PAGE_BEG; pg <= OSAL_NV_PAGE_END; pg++ )
{
HalFlashErase(pg);
}
这样可以上传所有:nv_restore 存储的信息。
但是,我测试下来有问题,即删除之后,不能重新入网。
求大牛指教退网问题? 请问该如何操作,才能删除nv-restore存储的信息,又不影响二次入网。