第一个问题:请问为什么终端长时间休眠,唤醒后协调器会对其发出leave?
第二个问题:在抓包文件中第16行,可以看到协调器发出的leave是带有rejoin。可是终端并没有执行rejoin步骤,请问是否是休眠功能影响到了rejoin。
附件:
休眠后醒来被退网.rar
Viki Shi:
协调器长时间没有收到节点的应答包,认为该节点已经断线。 更正,你的协议栈是MESH 1.0,这个版本没有childaging
你的poll rate 设置为多少?
Alvin Chen:
1.不会
2.你ZC发送Leave时你的ZED没有收到。你设备如果在低功耗下时无法接收ZC的数据包的。
此外你应该看看你的ZC时由于什么发出Leave
user5032796:
回复 Viki Shi:
终端休眠的时候poll rate是0;
我通过开关选择消息上报速率:第一级:每隔10s醒来上报一次数据。第二级:完全不上报数据。
由第一级切换到第二级后,终端进入长时间休眠(测试大约8分钟)。
再通过开关由第二级切换到第一级,终端上报一条信息,然后就被leave了。
休眠部分代码:NLME_SetPollRate( 0 );NLME_SetQueuedPollRate( 0);NLME_SetResponseRate( 0 );ZDApp_StopJoiningCycle();osal_pwrmgr_device(PWRMGR_BATTERY);
唤醒部分代码:osal_pwrmgr_device(PWRMGR_ALWAYS_ON);NLME_SetPollRate( 500 );NLME_SetQueuedPollRate( 100);NLME_SetResponseRate( 100 );
Alvin Chen:
回复 user5032796:
你自己有没有做终端管理的机制,你上报和leave 没有太大关系,此外有个问题,你已经在网络中为什么要调用下面的函数:
ZDApp_StopJoiningCycle();
ZDApp_startJoiningCycle();我怀疑是你这个造成的。
你设备两端是否开启了NV restore? . 请移除这两个函数再去试一下。
user5032796:
回复 Alvin Chen:
管理机制已经我屏蔽掉了。两端都是有开启NV的。
我注释掉这两个函数,再测试下。
yong zhou3:
回复 user5032796:
我也遇到了