关于Zstack HA1.2.2a 终端节点切换父节点 出现问题
Z-Stack Home 1.2.2a 也发现上面的情况。
开了 Child Aging 使用 Date request 的模式。
复现方法:
一个协调器, 下面有两个路由设备, 另外路由设备下有 4个终端设备(休眠的)。
间隔一段时间 ,将其中一个路由设备 断电, 使其终端设备 切换 路由设备 为父节点、
反复操作一段时间后, 出现以下3个问题:
1. 当两个路由设备都 上电的时候, 协调器发消息给 其中的一个终端设备, 消息经过路由1缓存起来,
但是 此时终端设备 data request是发给路由2.
于是导致了, 终端设备发消息给 协调器,协调器可以收到。
但是协调器发消息给终端设备, 发错父节点。终端设备获取不到消息。
2. 协调器发消息给终端设备, 终端设备收得到,
但 终端设备发消息经过路由设备 给协调器, 协调器MAC 回复ACK ,但应用层无法解析出来
3. 经过一段时间切换后, 终端设备只能在 将路由设备 作为 父节点 切换。
当两个路由设备 都断电时, 终端设备发出orphan notification 后 就一直入不了网(无法将 协调器作为 父节点 进行切换)
期间 发出的beacon request, 协调器也有 反馈beacon。
但就是无法 入网。
谢谢!
我这两天调试也发现终端设备无法将协调器作为父节点,甚至也不能通过协调器入网,后来我将协调器的f8wconfig 中的 pollrate改为和终端节点相同的,并且加入AUTO POLL 预定义,现在就可以入网并将协调器作为父节点了。
有抓包信息吗?
我也遇到了这样的问题,请问大伙们解决了吗,
Mars,
使用Z-Stack Home 1.2.2a协议栈在使能child aging的情况下,
Coordinator在每次上电的时候,都会发送parent Announce出来,来和其他的设备进行确认子设备的关系。
ZDApp_SendParentAnnce();
你也可以把这个功能加到路由器上去,应该可以解决这个问题。
你好,使用Z-Stack Home 1.2.2a.44539,设置了zgRouterOffAssocCleanup = TRUE,zgChildAgingEnable=TRUE。
让路由器加入协调器中,然后把路由器电源关掉,但是协调器中的节点关联表中一直都有改路由器的地址,并没有删除掉!
zgRouterOffAssocCleanup只会删除End Device,路由不会删除的。
另外路由和路由之间的通信,可以不依赖于关联表,也会使用邻居表和路由表的。
您好,VV,
协调器、路由器和终端在Z-Stack Home 1.2.2a协议栈。这里的方法可以解决问题。
但是用zll协议的终端和路由器加入ha的协调器的时候。感觉达不到预想效果,ZLL工程中也搜索不到ZDApp_SendParentAnnce()函数。请问如何解决这个问题!
谢谢
你好,现在你的这个问题解决了没有,我也是遇到了类似的问题
你可以parent announce相关代码移植过去,这部分代码是开源的。