本示例采用关联方式(Associate)入网,总体流程如下:
一、入网前准备
1、coordinater 发出Permit Joining Request广播,允许设备入网,时长一般为180s
2、待入网设备启动扫网操作后,将在预置信道发出Beacon Request广播,zigbee信道为11~26,一般考虑效率和与WiFi信道干扰问题,会选择几条优先信道(如11、15、20、25)进行扫网。
二、Beacon
在收到Beacon Request后,同一信道的不同PAN的协调器会发出Beacon回应,待入网设备收到后会对其进行筛选,如是否允许入网,节点深度,是否接入当前设备类型。
三、开始入网
1、设备筛选出合适的网络(允许入网、节点深度较低、可接入当前设备类型),并向其发出Association Request请求入网
2、收到Association Request后,协调器将根据当前资源情况决定是否允许其加入,若允许,则为其分配短地址,并返回Association response
四、Transport key(NWK key)
协调器将NWK key发给设备,NWK key使用Link key进行加密,而此处Link key是预配置Pre-configured的,可使用ZigBeeAlliance09(5A:69:67:42:65:65:41:6C:6C:69:61:6E:63:65:30:39)或是利用install code生成。NWK key用于后期网络层通信的加密。
五、替换Link key
1、Request key(Link key):子设备向协调器请求新的Link key以替换前面Pre-configured Link key
2、Transport key(link key):协调器返回新的Link key
六、新Link key校验
1、子设备发出Verify Key Resquest请求校验Link key
2、协调器返回校验结果Verify Key Confirm,注意此处已使用新的Link key
(由于抓包工具不同,这两条数据可能无法显示,附上另一个工具的情况)
注:实测若使用Pre-configured key,则最后link key会替换成新的,若使用install code,则最后link key虽有替换的动作,但实际link key没变。
另、Device Announce
子设备入网成功后会发出Device Announce广播,宣告其已成为该网络新设备
以上入网流程已结束,但为了确认设备类型和后续的操作,一般会有以下步骤:
1、查看子设备endpoint数量
协调器发送Active Endpoints Request,子设备回复Active Endpoints Response,包含其拥有的endpoint数量
2、查看子设备endpoint具体信息
根据上面子设备的回复,协调器会针对各个endpoint发送Simple Descriptor Request,子设备回复Simple Descriptor Response,其中包含该endpoint的device id、profile id、input cluster、output cluster
3、读取basic cluster中关键信息,如ApplicationVersion、ManufacturerName、ModelIdentifier等等;
4、配置bind表
按照ZigBee3.0标准,cluster的server和client段必须先建立绑定才能通信,协调器发送Bind request,包含endpoint、目的/源地址、指定cluster。子设备回复Bind response。
5、配置report table
当子设备个别关键attribute变化,协调器需要及时获知时,需要提前设置report table,在设定时间范围内或发生变化时,子设备ZigBee协议栈内部将自行上报,而无需应用层干预。协调器发送Configure Reporting,子设备回复Configure Reporting Response。