Zigbee 基础概念:从无线帧到 Endpoint 与 Cluster
理解 Zigbee 最有效的方法,不是先背命令,而是把“无线、组网、传输、设备管理、应用功能”分层。这样看日志或抓包时,才能知道一条成功信息究竟证明了哪一步。
协议栈分层
1 | 应用逻辑 |
- IEEE 802.15.4 提供低速率无线链路;
- NWK 负责 Zigbee Mesh 网络;
- APS 把上层应用消息送到指定设备和 Endpoint;
- ZDO/ZDP 提供节点、Endpoint 和服务发现;
- ZCL 定义设备功能的通用数据模型。
因此,收到 MAC ACK 只说明链路层收到了帧,不代表 NWK 解密、APS 接受或 ZCL 命令处理成功。
三种逻辑设备角色
| 角色 | 主要职责 | 常见限制 |
|---|---|---|
| Coordinator | 建立网络,通常也是集中式网络的 Trust Center | 一个 Zigbee 网络只有一个 Coordinator |
| Router | 转发报文并允许子设备接入 | 通常需要保持接收能力 |
| End Device | 通过父节点通信,不为其他节点路由 | 可设计成休眠设备 |
Coordinator 是网络形成时的角色;网络形成后,Mesh 路由并不要求所有报文都经过它。Router 或 Coordinator 都可以成为 End Device 的父节点。
地址、Endpoint 与设备功能
一个 Zigbee 节点通常同时涉及:
- EUI-64:设备的全局扩展地址;
- 16 位 NWK 地址:加入网络后使用的短地址,可能变化;
- PAN ID / Extended PAN ID:识别网络;
- Endpoint:节点内部的应用端点;
- Profile ID 与 Device ID:声明应用配置和设备类型;
- Cluster:Endpoint 提供或使用的标准功能。
排障时不要把短地址当作永久身份。跨重启、离网重入或地址冲突处理后,应使用 EUI-64、时间线和设备公告重新确认节点。
Cluster、Attribute 与 Command
ZCL 把设备能力拆成 Cluster:
- Server 保存状态、提供属性或接收命令;
- Client 发起命令或消费 Server 产生的信息;
- Attribute 表示状态或配置;
- Command 表示一次操作或协议动作;
- Reporting 让属性按配置主动上报。
同一个 Cluster ID 的 Server 和 Client 是两个方向,不能因为 Endpoint 列出了 Cluster 就认为双向能力都存在。
单播、广播、组播与绑定
- 单播:发送给一个目标节点;
- 广播:发送给一类或全部节点,成本较高;
- 组播:发送给 Group ID 对应的一组 Endpoint;
- Binding:在源 Endpoint 中保存逻辑目标,使应用不必每次指定完整目的地址。
广播不是“更可靠的单播”。它会增加全网负载,且不同广播范围、重试和确认语义并不相同。
一条应用消息经过什么
以属性上报为例:
1 | 传感器状态变化 |
每一层都有独立失败点。可靠分析应记录:
- 应用是否生成消息;
- APS 是否接受发送请求;
- NWK 是否找到路由;
- MAC 是否发出并收到确认;
- 对端是否通过安全校验;
- 对端 Endpoint 与 Cluster 是否接受;
- 应用状态是否真正改变。
规范边界
Zigbee 仍在演进。学习基础概念可以使用公开资料,但实现和认证必须冻结对应的 Zigbee Core、BDB、ZCL、Device Type Library、Errata、PICS 和测试规范,不能把不同 Revision 的要求拼在一起。
可从 Zigbee 官方概览、Zigbee FAQ 和 CSA 规范下载入口继续阅读。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Oniums!