88彩
热点资讯
88彩介绍
你的位置:88彩 > 88彩介绍 > Zigbee 组网过程全拆解,小白也能看明白~
Zigbee 组网过程全拆解,小白也能看明白~

发布日期:2025-07-19 01:22    点击次数:135

Zigbee设备组网,有两项必要条件:第一个条件是协调器建立网络并开放网络,第二个是节点加入网络。

协调器建立网络与开放网络:

协调器建立网络,有以下几个必要步骤:

l 协调器确立信道

l 协调器确立PANID

l 协调器确立扩展PANID

l 协调器生成网络密钥

l 协调器开放网络

协调器确立信道:

协调器通过对信道扫描,通常是从11信道(2405MHz)到26信道(2480MHz)进行全网络扫描,扫描过程中需要检测信道中是否有密集的其它Zigbee网络,是否有密集的其它2.4GHz信号。通常协调器会设置一个信号强度阈值和信标帧阈值,只要某个信道的干扰信号小于阈值,协调器就在该信道建立网络。

协调器扫描信道时可以设置扫描哪些信道,在Zigbee 3.0协议中还可以设置2次扫描,优先扫描信道和次要扫描信道,以提高协调器确立信道的速度。通常在Zigbee 3.0协调器中优先扫描11、14、15、19、20、24、25信道,这7个信道与早期WIFI 2.4G设备没有频率重叠,因此是Zigbee的优先信道。

Zigbee信道和WIFI信道

协调器确立PANID

协调器建立网络后,要确立自己的PANID,通常在Zigbee协调器中有一个“预设PANID”,如果预设PANID为0xFFFF时,协调器会随机生成一个0x0001到0xFFFE之间的PANID。协调器建立网络后,所有的通信都在这个PANID管辖的局域网内。

Zigbee协议具有PANID冲突检测机制,如果空间内两个协调器的PANID相同,协调器会自动跳换到其它PANID,因此预设PANID不能起到任何作用。

协调器确立扩展PANID:

扩展PANID是针对Zigbee PANID机制不足的一个弥补措施,协调器的PANID可能会发生跳变,但是扩展PANID是不会发生跳变的。在Zigbee 3.0以前的版本,扩展PANID直接复制协调器的8 byte IEEEE地址,这样根据扩展PANID就能锁定协调器。

但是如果协调器恢复出厂后,信道,PANID,密钥等都会发生改变,之前组网的节点都会被删除,虽然协调器还是原来的协调器,但是网络已经不是原来的网络。因此在Zigbee 3.0中,规定协调器每次恢复出厂都会生成一个随机IEEE地址作为自己的扩展PANID。如果协调器没有恢复出厂入网节点可以根据扩展PANID找回自己的协调器;如果协调器恢复出厂入网节点则不会把协调器重新生成的网络当成自己的当前网络。

协调器生成网络密钥:

Zigbee网络中的数据通信都是加密的,任何节点加入网络都必须从协调器获取密钥才能通信。协调器在建立网络时随机生成一个128bit的密钥,并使用AES加密传输报文。

协调器除了要生成网络密钥,还要为每个入网节点生成独立的密钥,这个密钥用于节点和协调器的私密通信,在协调器的网络密钥泄露后协调器可以更新网络密钥,然后再用独立密钥加密新的网络密钥,并传输给对应的节点,让节点和原来的协调器继续保持通信。

协调器开放网络:

协调器建立网络成功后,需要开放网络,才能让节点加入网络。节点加入网络时需要扫描协调器的信标,在协调器的信标信号中有一个“关联开关”,如果协调器开放网络,信标中的“关联允许”处于“打开”状态,节点检测到该信标后就会和协调器关联并完成入网的流程。

如果协调器不希望再有节点加入网络,可以停止开放网络,信标中的“关联允许”处于“关闭”状态。在Zigbee 3.0协议中,协调器开放网络后,除了把自己的“关联允许”状态打开,还要广播给全网的路由器,让全网的路由器也把“关联允许”状态打开。并且协调器广播命令全部路由器(包括协调器自己)打开“关联允许”有固定的时间窗口,通常为180秒。此时如果有新节点成功入网,新节点也会向全网的路由器包括协调器本身广播打开“关联允许”的命令,这样可以让协调器和路由器继续打开“关联允许”180秒。

一些高级的协调器,还会有关联允许的权限检测。如果其它节点广播打开“关联允许”,协调器在本身已经打开关联允许但是窗口时间不足180秒时会续满180秒的“关联允许”状态,但是如果协调器的“关联允许”状态已经是关闭则不会打开“关联允许”状态。

节点加入网络:

协调器建立网络并开放网络后,节点加入网络,完成Zigbee组网。节点加入网络主要有以下几个过程。

l 节点扫描网络

l 节点关联父节点

l 节点从协调器获取网络密钥

l 节点发布入网声明

l 节点从协调器获取私有密钥

l 枚举节点

节点扫描网络:

节点在入网时首先扫描各个信道里面存在的Zigbee网络,收到“关联允许”状态为打开的Zigbee信标后则可以执行下一步的关联网络。节点可以设置16个扫描信道,即11信道~26信道。也有很多Zigbee设备可以设置只扫描哪些信道,扫描一个信道大约500ms,扫描的信道越多消耗的时间越长,扫到的Zigbee网络也就越多。在已知需要加入的协调器的信道后,可以只扫描该协调器的信道,加快入网速度。

信标中带有协调器或路由器的PANID和扩展PANID,如果节点设置了预设PANID,在扫描网络时会匹配信标的PANID,节点的预设PANID和信标的PANID一致,节点才会关联该信标的协调器或路由器。

节点关联父节点:

节点扫描信道时,扫描到的信标可能来自协调器,也可能来自路由器,协调器和路由器就是节点的父节点。节点向扫描到父节点后,要向父节点发起关联请求。

节点在关联父节点时向父节点发送自己的64bit IEEE地址。从父节点获取PANID,扩展PANID,16bit的Zigbee短地址。节点保存信道,PANID,扩展PANID,短地址后获得与父节点通信的能力,即关联成功。

节点从协调器获取网络密钥:

节点加入网络后,如果要与其它Zigbee设备通信,需要从协调器获取网络密钥。如果父节点是协调器,协调器直接把密钥发给节点。如果父节点是路由器,协调器会把密钥先发给父节点,父节点再发给入网节点。

由于新入网的节点没有网络密钥,协调器把网络密钥发给新入网节点就不能使用网络密钥本身对该传输进行加密。所以协调器会使用”ZigbeeAlliance09”这16个ASCII字符组成的密钥对网络密钥进行加密再传输给新入网节点。

针对”ZigbeeAlliance09”不安全的问题,在节点入网时可以使用Install Code机制,即节点根据自己的IEEE地址生产一个16byte的连接密钥替代”ZigbeeAlliance09”,但是这个密钥必须连同节点的IEEE地址一并提前输入到协调器中,协调器在检测到该节点IEEE地址入网时,使用Install Code的密钥对网络密钥进行加密。

协调器在向入网节点传输网络密钥时,已经获取到节点的IEEE地址和短地址,这个时候可以让协调器的应用层记录保存每一个入网节点的IEEE地址和短地址。

节点发布入网声明:

入网节点获取到信道,PANID,扩展PANID,16bit短地址,网络密钥后就算入网成功,这个时候节点自动广播入网声明(Zigbee Device Announce)。其它路由器收到节点的入网声明后可以刷新路由链路,另外终端节点(END Device)在重启、更换父节点,短地址调表时也会广播入网声明,方便其它路由器更新路由链路。

节点从协调器获取私有密钥:

在Zigbee 3.0协议中,节点入网后还要和协调器之间建立一个私有密钥,用于节点和协调器的私密通信。

首先,节点会通过Zigbee Device Object层的Node Description命令查询协调器的信息,获取协调器的版本是否为Zigbee 3.0。然后再向协调器申请一个128bit(16byte)私有密钥。

原则上协调器在为新入网节点分配了私有密钥后,会记录该节点的IEEE地址和对应的私有密钥,因此协调器会为每一个入网节点分配24byte的存储空间。实际上很多协调器都会做压缩处理,协调器在建立网络时生成一个128bit密钥种子,然后用密钥种子和节点IEEE地址计算出一个128bit私有密钥,这样协调器只需要保存节点的IEEE地址即可。

Zigbee节点从关联到获取私有密钥的流程

枚举节点:

Zigbee节点入网成功后,网关或者协调器还需要枚举节点,从而获取节点的信息。枚举节点的目的是让网关知道节点是什么,有哪些功能。在Zigbee设备中,一个节点都是以Endpoint来定义该节点支持的应用,cluster来定义应用下的各个子功能。

设备枚举,就是让协调器获取入网节点有哪些Endpoint,每个Endpoint下有哪些cluster。节点入网后不会主动上报自己的应用信息,需要网关或协调器主动询问。

网关或协调器使用Zigbee Device Object层定义的Active Endpoint指令和Simple Description指令查询入网节点的Endpoint和Cluster。具体做法是协调器向入网节点短地址(Zigbee Device Object层只支持短地址通信)发送Active Endpoint指令,获取该节点一共有多少个Endpoint。然后再向该节点的短地址发送查询每个Endpoint的Simple Description指令,查询各个Endpoint的信息。Endpoint的信息包括:用于表示该设备是什么东西(灯,开关,温控器)的16bit Device ID,表示该Endpoint应用类型的16bit Profile ID(大多数Zigbee设备Profile ID都是0x0104即Home Automatic,一个Zigbee节点可以支持多个不同的Profile ID),以及两张cluster表分别为Input Cluster和Output Cluster。Cluster表示Zigbee的子功能,如开关控制,温度控制,湿度控制,亮度控制。Cluster在Input表中表示该设备为受控端,cluster在Output表中表示该设备为控制端。

通过对设备进行枚举之后,网关或者协调器就可以获知接入进来的节点是什么东西。



88彩介绍 产品展示 新闻动态