zigbee学习笔记 --认识什么是zigbee

一、什么是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,然后搞清楚其中的各项数据包构成。

实际例子:开关控制灯

让我们用上面的比喻来解释一个开关控制灯的场景:

  1. 设备
    • 智能灯泡 :它实现了 On/Off Cluster服务器端。它有一个属性叫做 OnOff,其值可以是 TRUE(开)或 FALSE(关)。
    • 智能开关 :它实现了 On/Off Cluster客户端端。它本身不记录灯的状态,但它知道如何发送"开"、"关"、"切换"等命令。
  2. 交互
    • 当你按下开关时,开关(客户端)会向灯泡(服务器)发送一个 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的数据样式我放在下一篇文章中。

相关推荐
q行2 小时前
MySQL学习日志--表之间的关系
数据库·学习·mysql
fanged2 小时前
Pico裸机2(汇编基础)(TODO)
笔记
老王熬夜敲代码2 小时前
C++的decltype
开发语言·c++·笔记
沐风听雨_A2 小时前
海康IP摄像头激活与配置笔记
笔记·嵌入式硬件
尘似鹤2 小时前
Uboot移植--修改lcd和网络驱动
linux·学习·uboot
d111111111d2 小时前
STM32平衡车工具-匿名助手+虚拟串口如何使用。
笔记·stm32·单片机·嵌入式硬件·学习
式5162 小时前
大模型学习基础(七)强化学习概念回顾
学习
絔宝2 小时前
在eclipse中创建Maven项目-用于学习Selenium 自动化测试
学习·selenium·eclipse·maven
程序猿零零漆3 小时前
Spring之旅 - 记录学习 Spring 框架的过程和经验(三)Bean的依赖注入配置、Spring的其它配置标签
java·学习·spring