下图片展示的是一个zigbee设备的入网流程
下面是一个router设备连接到coordinator的过程:
1、router发送beacon request
router会在每一个信道发送一个beacon request(用的地址是0xffff的广播地址),直到有人回复他。我们可以看到在beacon request的包后面,有三个beacon类型的包,这是不同的coordinator回复的,里面会包含不同的信息,包括是否允许你入网
可以看到router收到的第一个beacon包是不允许其入网的,直到第三个coordinator允许其加入网络(这个设备就是我的coordinator,我手动开启了允许其它设备加入的功能)。当然,也有可能会有多个coordinator允许入网,router会选择信号强度最强的。
从我蓝色圈出来的地方来看,回复的beacon包中包含了这个网络的PAN ID、是否允许入网和coordinator自己的extend PAN ID等等。如果router选择这个coordinator作为自己的父节点的话,就会发送一个association request
我们可以看到目的地址换成了0x0000和对应的PAN ID,也包含了自己的MAC地址。另外也指明自己是哪一类设备,这里的FFD是full function device的简称,一般coordinator和router都是FFD(全功能设备),而end device和sleepy end device都是RFD(reduce function device)。
coordinator在收到router发来的request后,就回应一个association respond
这时候的coordinator知道router的地址后,就可以单播发送了,也顺便给router分配一个短地址0x3F07。router想要在这个网络进行通信,需要知道network key,所以coordinator需要告诉router
router获取network key后,后续和网络内的其它设备就可以进行加密通信了。然后router会发送一个device announce的报文(从目的地址为广播地址可以看出)通知全网,我入网了、我的设备信息都有哪些。
红色的框里面有三项信息,分别是
1)用于标识是否coordinator设备
2)自己是router设备
3)是否电源供电还是电池供电(这里是电源供电)
备
2)自己是router设备
3)是否电源供电还是电池供电(这里是电源供电)