如上图,PC机与协调器通过串口通信。
问题:PC机如何才能通过协调器获取该ZigBee网络的节点数、所有节点的在线状态、短地址及物理地址等信息?
Kanjie Zhu:
可以在应用层定义一个命令,让路由器与终端设备定期把自己的短地址,长地址,及状态上报给协调器。
协调器通过检查是否定期上报了判断是否在线,然后通过UART传输给PC。
wanxiang lin:
回复 Kanjie Zhu:
如果上述的是ZigBee标准的Home Automation网络,协调器是自己的,而路由或终端节点是第三方的,这样还有什么解决办法吗?
Kanjie Zhu:
回复 wanxiang lin:
每个节点在加入网络时会发送device announce包,里面有该节点的网络地址与长地址信息。协调器可以记录下来后定期去发送ZDP_nwkAddrRequest 或 ZDP_ieeeAddrRequest来等待回应。
有回应说明在网,运行正常。并且即使短地址发生变动了,通过这2个命令也能定时更新回来。
wanxiang lin:
回复 Kanjie Zhu:
这样的话,协调器就要把所有的节点信息都存储起来了。在网状网络中,如果某一节点是通过路由加入网络的,那么会发送“device announce包”给协调器吗?
Kanjie Zhu:
回复 wanxiang lin:
是的,得存储,如协调器资源有限可以给连接的PC存储。
device announce是广播,理论上都能听到。
wanxiang lin:
回复 Kanjie Zhu:
如果这个节点加入路由时,协调器由于某种原因没有收到这个广播,那么有没有其他办法获取该节点信息,并存储该节点信息?
还有个问题:在市场上看到的一些ZigBee标准的Home Automation产品,可以用平板电脑或手机,通过WiFi转ZigBee网关,查看家里所有zigbee节点的状态,如灯节点的开关状态、温度传感器节点的温度值、排气扇节点的状态等;这些都是如何实现的?协调器是否要事先存储各节点的信息(如短地址等信息),才能获取节点信息和控制节点?