zigbee 简介
1 zigbee role
- coordinator - 协调器,网关设备,负责构建集中式网络,分配入网设备地址等,如果不存在该设备则由router设备构建分布式网络;
- router - 路由器,负责转发广播或路由信息,不休眠设备,通常为220v直供电设备,如灯;
- end device - 终端设备,休眠设备,通常为电池供电设备,如开关。
2 zigbee stack layer
- app 应用层 zcl header | zcl payload |
- aps 应用支持子层 aps header | aps payload|
- nwk 网络层 nwk header | nwk payload|
- mac 物理层 mac header | mac payload|
2.1 zcl(zigbee cluster library)
zcl based on app layer, cluster为zigbee设备定义的最小单位,分server, client;
例如灯和开关设备都具备onoff cluster
灯中onoff为 in cluster
开关中onoff为 out cluster
2.2 data transmission encryption
设备入网时:
- 传输数据(nwk key)属于aps层数据,此时设备正在入网,nwk层不加密,aps层使用public key加密;
- 传输数据(aps link key)属于aps层数据,此时设备已入网,nwk层加密,aps层使用public key加密;
- 完成aps link key传输后,后续key传输使用aps link key加密aps payload(不适用public key,目前sdk后续没有更新key的操作,所以不用关注)。
设备入网后:
- nwk payload都会使用nwk key加密,aps层除了传输key时加密其他情况不加密。
3 zigbee设备入网流程
3.1 zr/zed设备入网
packet(zr/zed) | packet(zc/zr) | note | |
---|---|---|---|
role | zr(路由)/zed(休眠设备或终端节点) | zc/zr | |
beacon req—>(广播) | |||
<—beacon(信标帧,包含panid) | |||
associate req—>(向选中的父设备(zc或者zr)单播) | |||
<–associate rsp(单播回应,包含分配给入网设备的短地址) | 如果是走中继路由入网,回复完后会从该设备向zc发起update device | ||
<–transmit key(单播给入网设备,使用public key加密的nwk key) | 如果是走中继路由入网,此时会从zc向该设备传输key,再转发给入网设备 | ||
device announce—>(nwk层通过收到的nwk key加密,广播) |
zigbee 2.0设备入网流程已完成;
3.0设备需要确定zc是否支持3.0(通过发起node descriptor req,node descriptor rsp中包含zigbee协议栈版本信息),不支持则入网流程完成,支持则发起aps link key请求
以下流程均为单播
packet(zr/zed) | packet(zc/zr) | note | |
---|---|---|---|
role | node descriptor req—> | ||
<—node descriptor rsp | |||
key req—> | |||
<—transmit key | 使用public key加密aps层;使用nwk key加密nwk层 |
3.2 zc/zr设备接收入网设备
新设备入网后,通常先发起active req,收到设备active rsp获取到有效的ep节点;
再根据有效的ep节点依次发起simple descriptor req,收到设备simple descriptor rsp后获取ep下具备的cluster,可以确定设备功能及控制参数。