ZigBee网络中的设备信息
背景:在ZigBee网络中,要对网络进行一定的维护,比如要知道哪些设备工作正常,哪些设备故障,每个设备的大致位置,和其它设备的关系等;也可能需要对网络进行一些调整,比如添加一些设备,或减少一些设备。这样都需要清楚的知道整个网络中有哪些设备,网络的拓扑结构,模糊的来说也就是设备信息。一、通过查看例程和实验大致已找到两种方法来获取网络中的设备信息。A:利用AssociatedDevList通过每个设备的AssociatedDevList(关联表)中的信息来统计整个网络中的设备信息。在关联表中有设备的短地址、设备类型及和本设备的关系等信息。这需要整个网络中有自己的一个协议来对每个设备进行协调。过程如下:1、每个设备都可以广播一个命令(搜集设备信息)2、收到广播信息的设备,将按照协议中的数据格式,向原始的广播设备回送和本设备有关的信息。3、收到回送信息后,组合为整个网络中的设备信息。B:利用NWK_addr_req或IEEE_addr_req命令NWK_addr_req或IEEE_addr_req命令中如果使用的ZDP_ADDR_REQTYPE_EXTENDED参数,那么在返回信息中会有一个目标设备相关的设备短地址列表,但没有设备类型和关系。有了短地址,可以通过Node_Desc_req命令来获取设备类型,但怎样获取远程设备的设备关联目前没有找到方法。在本设备可以通过NLME_GetCoordShortAddr或NLME_GetCoordExtAddr来获取本地设备的父设备地址,这样也需要有自己的协议才能完全解决。ZDP_NwkAddrReq一、网络中的设备信息AssociatedDevList表为与此设备相关联的设备表,并不是ZigBee网络中的所有设备信息表。表中信息的IEEE地址是唯一的,每个设备加入它的父节点时会在表中添加一个记录,但是子节点断电离开网络时不会删除该条记录,如果有多个子节点,频繁更换父节点会造成AssociatedDevList表满或溢出,使其它子节点无法加入该父节点,因此需要及时的删除一些已离开的子节点记录。重点在于怎样判断那此节点已离开,设想声明一个和AssociatedDevListge同样宽度的表来存储在一定时间内接收到子节点的数据量。如果一定时间内没有接收到子节点的数据认为是已离开网络。二、如果路由器的父节点丢失是否会自动进行孤点扫描,而加入潜在的父节点?实验当路由器的父节点离开时,路由器不会触发任何事件,因此也不会发现自己成为孤点,并进行孤点扫描,只能通过程来进行控制,在检测到自己成为孤点时进行网络扫描,查找其它父节点。设想协调哭定时给所有路由器广播信息,如果路由器在一定时间没有收到协调器的广播信息则从新r