一、什么是Zigbee
Zigbee的发展历史我就不做多余的介绍了,感兴趣自己去看。
在物联网中,设备的通信存在两类协议。
第一类协议是传输协议:负责设备间的组网及通信。比如:zigbee、WiFi、蓝牙、Lora。
第二类协议是通信协议:负责通过互联网与服务器、APP或设备进行数据交互,包括HTTP,MQTT,websocket等。
Zigbee是一种低速短距离传输的无线传输协议,底层采用IEE802.15.4标准规范的媒体访问层与物理层。
核心标准:基于 IEEE 802.15.4 标准的高层通信协议。IEEE 802.15.4 定义了物理层(PHY)和媒体访问控制层(MAC),
而 Zigbee 在此基础上定义了网络层(NWK)、应用层(APL)和安全服务。
对于Zigbee的是什么只需要知道它是一种类似于WiFi的传输协议即可。
二、Zigbee网络组成
Zigbee的由来是工程师看到蜜蜂够规律的移动而来的灵感,蜜蜂在进行采蜜工作中,蜂巢作为根节点,花朵作为节点,蜜蜂为次节点,其工作流程就是蜜蜂本身为次节点在花朵和蜂巢之间往返。由此引出Zigbee网络的三大角色:协调器、网关(路由器)、终端设备。
1、协调器
由上面的例子可以看出,蜂巢就是Zigbee网络中协调器的角色,其特点就是有且只有一个,类推为蜂群是只有一个蜂巢的,那个这个蜂巢的作用就是这个网络的核心主控,在Zigbee网络中其扮演的功能为:选择信道、启动网络、分配网络地址。
2、网关(路由器)
在我的理解中路由器的作用就是转发数据,扩展网络,可收发信息,所以蜜蜂扮演的角色就是网关的角色,具有主动移动、路径选择、信息传递的能力。
3、终端设备
终端设备是数据的来源,对于蜜蜂而言蜂蜜的来源就是花朵,所以终端设备的核心功能就是数据的采集与发送。终端设置只能处理自身的数据,不可以转发其他设备的数据和花朵一样大部分时间都在含苞待放,这就是终端的一大特点大部分时间处于休眠或者低功耗状态,需要网关或者协调器通信时才会被唤醒。
三、Zigbee网络三种网络拓扑结构
1、星状
Zigbee星状网络在三种网络拓扑结构中属于最简单的一种。包括一个协调器和若干个路由器和终端组成;该结构网络中,每个附属节点只能与中间节点通信,两个附属节点之间通信必须经过中心节点进行数据转发。所以效率和可靠性都会比较低。网络拓扑结构换句话来说就是以一个协调器为中心,向外发散,各种路由器和终端节点与这个协调器连接,其中的路由器和终端节点互不通信。

2:树状
Zigbee树状网络包含一个协调和若干个路由器和终端组成,其中的核心在于每一个子节点都只能与父节点通信,树状结构相当于二叉树,其中的根节点为协调器,然后从根节点出发的下一个节点为根节点的子节点。其中的父节点主要就是由路由器组成。在树状网络中,协调器负责整个网络搭建起来,路由器作为承接点,将网络以树状向外扩散。节点与节点之间通过中间的路由器形成"多跳通信"。

3:网状
Zigbee网状网络是建立在Zigbee树状网络结构中,在Zigbee网状网络中,除了满足Zigbee树状网络的所有功能之外,其相邻路由器之间可以通信,不需要经过其他节点进行数据转发,使得网络的动态分布更为灵活,路由能力更加稳定,可靠。充分发挥出Zigbee网络的自组优势。

四、Zigbee Cluster
在Zigbee协议中,Cluster是功能中的基本构建块,
它是一组相关的命令和属性的集合,共同定义了一个特定的设备行为或功能。
核心比喻中:一个公司本体为zigbee网络,每个员工就是一个zigbee设备(终端节点),而在这个公司中会有很多的部门这个部门就是cluster。
在cluster中具有属性和命令,属性:代表了设备的状态或配置;比如一个灯的亮灭和亮度等级等,表示对应的状态和设备。
命令:是触发设备执行某个动作的指令,列如:向灯发送一个开关钉的切换命令,或者调节到指定的亮度等命令。
Cluster的两种角色:服务器与客户端
1.服务器:包含实际数据或状态的设备。
2.客户端:能够操作或请求服务器数据的设备。
交互过程:客户端设备向服务器发送命令,以读取或修改服务器上的属性。
在开发Zigbee相关设备中,首先就是要搞清楚需要哪些Cluster,然后搞清楚其中的各项数据包构成。
实际例子:开关控制灯
让我们用上面的比喻来解释一个开关控制灯的场景:
- 设备 :
- 智能灯泡 :它实现了 On/Off Cluster 的服务器端。它有一个属性叫做 OnOff,其值可以是 TRUE(开)或 FALSE(关)。
- 智能开关 :它实现了 On/Off Cluster 的客户端端。它本身不记录灯的状态,但它知道如何发送"开"、"关"、"切换"等命令。
- 交互 :
- 当你按下开关时,开关(客户端)会向灯泡(服务器)发送一个 Toggle 命令。
- 灯泡接收到这个命令后,会改变自己 OnOff 属性的状态(如果原来是关,就变为开),并相应地改变物理状态。
- 开关也可以发送一个 Off 命令来直接关灯。
关键点 :开关和灯泡之所以能够通信,是因为它们都理解并使用了同一个 Cluster (On/Off Cluster )。这就是 Zigbee 设备能够跨品牌互操作的基础(只要它们支持相同的标准 Cluster)。
Zigbee 联盟定义了许多标准 Cluster,以确保不同厂商设备的互操作性。这些标准 Cluster 被组织在 Zigbee Cluster Library (ZCL ) 中。
常见的 Zigbee Cluster
Zigbee 联盟定义了许多标准 Cluster,以确保不同厂商设备的互操作性。这些标准 Cluster 被组织在 Zigbee Cluster Library (ZCL ) 中。在使用抓包工具中也基本上关注这个。
一些最常见的 Cluster 包括:
- Basic:设备的基本信息,如型号、序列号、Zigbee 协议版本等。
- Identify:用于让设备标识自己,例如让灯闪烁以便用户识别。
- On/Off:控制设备的开关状态,用于灯、插座等。
- Level Control:控制设备的级别,如灯的调光、风扇的速度。
- Color Control:控制彩色灯的颜色和色温。
- Illuminance Measurement:光照传感器报告其检测到的光照度。
- Temperature Measurement:温度传感器报告温度值。
- Occupancy Sensing: occupancy 传感器报告是否检测到人。
- **IAS Zone:**安防传感器专用的
Basic(0x0000):这是最基础的 Cluster,几乎每一个 Zigbee 设备都必须实现。它包含了设备的基本信息和通用属性,可以看作是设备的"身份证"或"基本信息表"。用于设备发现中告诉网络或者其他设置这个玩意是什么。
关键属性举例:
- ZCL Version:设备支持的 ZCL 协议版本。
- Application Version / Hardware Version:应用和硬件版本号。
- ManufacturerName:制造商名称。
- ModelIdentifier:设备型号。
- Power Source:设备的电源类型(如电池、直流电等)。
- DeviceEnabled:一个开关,可以远程禁用或启用设备。
简单来说: 它是设备的"自我介绍",用于识别和管理设备本身,而不是控制其具体功能(如开关灯)。
其他的相关Cluster属性就自己去查看相关的介绍了,我的建议是用到那个查那个。
那么如何使用抓包工具来查看这个Cluster的数据样式我放在下一篇文章中。