Part Number:CC2530Other Parts Discussed in Thread:Z-STACK
zstack home 1.2.2a 协调器如何判断节点是否离线?
Kevin Qiu1:
参考这里类似的问题:https://e2echina.ti.com/support/wireless-connectivity/zigbee-and-thread/f/zigbee-thread-forum/215657/cc2530-zigbee
,
YiKai Chen:
如果是router或是rx always on的节点,协调器可以定期對這些节点去做任何的zcl basic cluster/attribute read,看看有沒有回應來判斷节点是否离线;如果是sleeping end device 节点,就需要讓节点定期發送heart beat的訊號到协调器,如果协调器沒有收到定期發送的heart beat才來判定节点离线
,
zheng sun:
您好, 我尝试使能了 childaging 功能。 然后让协调器定期去查询关联表中的各个子设备相关信息。但是发现了几个问题:
1. 关联表中的 timeoutCounter 初始值是0x00003c00 ,不能通过 “ uint8 zgEndDeviceTimeoutValue = END_DEV_TIMEOUT_VALUE; ” 进行变更;
2. timeoutCounter 一直在递减。 即使协调器收到了终端设备的Data request,timeoutCounter仍然还是在递减。
想请教一下, 这是什么原因呢?
,
YiKai Chen:
據我所知zstack home 1.2.2a的childaging 功能並不完整,如果要用childaging 功能,建議使用Z-Stack 3.0.2
,
zheng sun:
好的, 感谢您的建议。
另外我想咨询一下,协调器对sleeping end device 节点的heart beat 接收处理是在哪个地方呢? 我想尝试在收到heart beat时,手动将 相应的timeoutCounter 置为初始值,以弥补 问题 2 带来的困难。
,
YiKai Chen:
heart beat 如果是透過zcl report做的,就在你應用程序的zclXXX_ProcessIncomingMsg接收处理
,
zheng sun:
我的 heart beat 应该就是 Data request, 并且是可以通过 #define ZNWK_POLL_RATE 来更改其速率的。请教下,这样的话应该在哪个地方处理呢。
,
YiKai Chen:
Data request 應用程序是不知道的,你要另外發送heart beat而不是透過data request
,
zheng sun:
好的了解, 十分感谢!