本文内容:
介绍 Zigbee 子设备加入网关的流程
通过本文学习可以了解到 Zigbee 设备的入网流程,大体包括: 发现网关,请求关联,交换密钥,更新链接密钥。
熟悉 zigbee 开发的同学都知道,一个 zigbee 设备要想加入到一个 zigbee 网络中进行数据交互,必须先进行配网操作,也就是设备的Association
过程,本文通过一个门磁设备,详细分析标准 3.0 设备入网过程,以及基于涂鸦 SDK 开发设备入网时的特点和体验优化。
首先来看一张标准 3.0 设备入网时的交互流程图。
基于 TuyaOS 开发框架下的 zigbee 设备完全符合标准 3.0 入网规范,流程分为如下步骤:
1.Permit Join Request
在正式进入入网交互之前,coordinater
发出Permit Joining Request广播,允许设备入网。
报文包含允许时长,是否为信任中心等参数。
2.Beacon Request
触发设备进入配网状态,此时设备会在指定信道依次发送Beacon Request
。考虑效率和与 WiFi 信道干扰问题,一般会先选择优先信道(如 11,15,20,25,26)进行扫网,再选择次选信道进行(12,13,14,16,17,18,19,21.22,23,24)扫网。
3.Beacon
在收到Beacon Request
后,同一信道的不同 PAN 的协调器会发出Beacon
回应,
报文中包含 PAN ID、是否允许入网、节点深度、是否接入当前设备类型等参数。
4.Association Request
待入网设备收到后会筛选出合适的网络,并对其发出Association Request
请求入网。
报文中携带自身设备类型,长地址,设备能力等信息。
5.Association Response
收到Association Request
后,协调器将根据当前资源情况决定是否允许其加入,若允许并返回Association response
。
报文中包含:目标网络 PAN ID、分配给入网设备的短地址等信息。
6.Transport 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 用于后期网络层通信的加密。
7.Device Announce
子设备入网成功后会发出Device Announce
广播,声明其已成为该网络新设备。
报文包含器长地址、短地址、设备能力等信息。
8.Read Attributes:涂鸦网关特有
协调器收到入网设备的Device Announce
之后,会读设备 Basic cluster 下的 5 个属性。
9.Read Attributes Response:涂鸦网关特有
设备回复协调器 5 个属性值,通过Manufacturer Name
和Mode ID
,作为协调器的 zigbee 网关可以获取到设备的产品类型和支持的 DP 列表并上报云端,同时涂鸦智能 APP 上能够立即同步设备加网成功画面,此过程一般仅耗时 2s 左右。
10.Node Descriptor Request
如果入网设备是一个符合zigbee3.0
协议的设备,需要向信任中心发起Node Descriptor Request
,查询信任中心是否支持zigbee3.0
。
11.Node Descriptor Response
信任中心回复Node Descriptor Response
报文包含:状态码、节点类型、设备能力等信息。协调器是否支持zigbee3.0
可以通过Server Mask Capabilities
字段的Bit[9-15]:Stack Compliance Revision
获取。具体可以参考联盟最新的Zigbee Specification
。
12.Request key: TC link key
Request key(Link key)
:如果查询到信任中心支持zigbee3.0
,那么子设备向协调器请求新的 Link key 以替换前面Pre-configured Link key
。
13.Transport key: TC link key
协调器返回新的TC Link key
。
14.Verify key
子设备发出Verify Key Resquest
请求校验 Link key
15.Confirm key
协调器返回校验结果Verify Key Confirm
,可以看到此条报文中已使用新的TC Link key
。