实验环境:
zigbee网络panid=4035,11信道。
路由8AD3,42E3,F2AE等。问题终端528E。
测试过程:
上午发现终端528E离线,下午抓包发现该设备确实掉线,不再发送datarequest。
1.但终端528E重新上电后发现在14信道给8AD3,panid=4035,42E3发送rejoin,但一致不成功,(7241行)
2.但终端528E重新上电后发现在14信道给8AD3,panid=5DFF, 发送rejoin,但一致不成功,(7320行)
随后1.2还有发生,期间终端重上电了几次都这样(11信道没有抓到rejoin的数据包)。
3.直到有一次重启后,终端528E,正确加入父节点8AD3,11信道,panid=4035(8704行),只有便一切正常。该次重新上的时候的announce没有抓到当时在14信道,但切换到11信道时候发现终端已经正常入网8704行。
整个测试过程没有任何终端入退网,只是问题终端528E重启了几次。
请问:
问题终端528E为啥会在其他信道,其他panid,向父节点发出rejoin呢?并且多次重启都一样。直到有次重启后正确加入网络。从来没有见过这样的现象
user4381970:
抓包文件
user4381970:
求大神帮我看看抓包文件啊,在新的模块上又再现了问题了,
VV:
回复 user4381970:
在其他信道发送beacon request是正常的,当设备跟父设备断开,并且在当前信道找不到原先网络的时候的,就会去其他信道搜网。
因为该设备可能会认为协调器网络切换信道了。
你也可以看下面的代码。
#if defined ( ZIGBEE_FREQ_AGILITY ) if ( !( ZDO_Config_Node_Descriptor.CapabilityFlags & CAPINFO_RCVR_ON_IDLE ) && ( ret == ZSuccess ) && ( ++discRetries == 4 ) ) { // For devices with RxOnWhenIdle equals to FALSE, any network channel // change will not be recieved. On these devices or routers that have // lost the network, an active scan shall be conducted on the Default // Channel list using the extended PANID to find the network. If the // extended PANID isn't found using the Default Channel list, an scan // should be completed using all channels. runtimeChannel = MAX_CHANNELS_24GHZ; } #endif // ZIGBEE_FREQ_AGILITY #if defined ( ZIGBEE_COMMISSIONING ) if (startMode == MODE_REJOIN && scanCnt++ >= 5 ) { // When ApsUseExtendedPanID is commissioned to a non zero value via // application specific means, the device shall conduct an active scan // on the Default Channel list and join the PAN with the same // ExtendedPanID. If the PAN is not found, an scan should be completed // on all channels. // When devices rejoin the network and the PAN is not found from runtimeChannel = MAX_CHANNELS_24GHZ; } #endif // ZIGBEE_COMMISSIONING #endif
user4381970:
回复 VV:
在其他信道发送beacon这是正常的。但抓包文件有在其他信道发送rejoin request这是正常的吗?
找网1分钟找不到就休眠了,难道是时间还短吗?如何修改能快速找到呢?检修beacon的间隔吗》
liang deng:
回复 user4381970:
rejion流程可以自己加判断的
1. 先得到自己曾经加入的pand-id和信道,
2. rejoin的时候信道自己控制,只在自己最后加入的信道里面发送beacon
3. 在选择父节的时候,根据pan-id过滤即可