Zigbee基础知识

一、What is Zigbee?

       Zigbee是一种基于标准的无线协议,旨在解决低成本、低功耗无线传感器和控制网络的独特需求。Zigbee还将最广泛的设备连接到易于使用的网络中,使您能够前所未有地控制您每天在家、工作甚至玩耍时使用的设备。更多信息请访问Zigbee联盟网站。Zigbee设备通过Router的网状网络路由数据,与远程节点通信。Zigbee通常用于需要很长时间的低数据速率应用程序(例如不超过250kbps)

二、Zigbee Stacks
        Zigbee Stack是指的运行在Zigbee芯片上的本地代码,包括MAC 层和PHY硬件控制层,以及用于网络安全的组件和应用程序框架。但是不包括应用层,如ZHA、ZSE等应用层的协议,换而言之,Zigbee Stack不包括设备的功能应用逻辑,开发者需要利用Zigbee Stack的应用程序框架层(AF)提供的API接口来创建自己的应用层(APL),并且包含网络和设备的功能。

Zigbee提供了不同版本的协议栈,如下:

  • Zigbee 2004 – 2004年发布,支持家庭控制灯的协议,目前已经不再使用

  • Zigbee 2006 – 2006年发布,支持一个协议栈叫Zigbee协议栈

  • Zigbee 2007 – 2007年Q4发布,包含Zigbee and Zigbee PRO两个规范集

Zigbee Pro规范增加了以下特性:

  1. 网络层组播
  2. 多对一和源路由
  3. 频率切换
  4. Pan ID冲突避免机制
  5. 网络分包和组包
  6. 标准和高安全等级

Zigbee协议栈架构如下

三、Zigbee Profiles

以前

  • Home Automation (HA) – 用于典型的住宅和小型商业设施的装置协议规范
  • Smart Energy (SE) – 用于电表读数和与家用设备的交互协议规范
  • Commercial Building Automation (CBA) – 用于大型商业建筑和网络的设备协议规范
  • Telecom Application (TA) – 电信领域的无线应用协议规范
  • Health Care (HC) – 在家或医院环境中监测个人健康协议规范
  • Retail – 在零售环境中监视和传递信息协议规范
  • Zigbee Light Link – LED照明系统的无线控制协议规范
  • Light Occupancy (LO) – 居住相关的一些传感器、灯和控制器

现在(发布Zigbee 3.0标准协议之后)

  • Smart Energy (SE) – 用于电表读数和与家用设备的交互协议规范
  • Zigbee 3.0 (Z3)– 统一之前除SE以外的其他应用层协议

      Zigbee Cluster库(ZCL)构成了Zigbee公共应用程序层的通用基础。这个库定义了共享的公共元素,比如数据类型,并允许在不同概要文件之间重用简单的设备,比如开关协议。

四、Application Profiles

       应用程序概要文件是一种协议(一组规则),定义属于概要文件的设备应该如何工作。概要文件旨在确保属于概要文件的设备之间具有一定程度的互操作性,即使这些设备是由不同的制造商制造的。应用程序概要文件的一个例子是家庭自动化(HA)概要文件。设想一个由制造商a制造的电灯开关和一个由制造商b制造的电灯开关,如果它们都实现了HA配置文件,那么它们之间就保证有一定程度的互操作性(即开关可以使灯开关等)

       应用程序概要文件通过定义设备和每个设备可以产生或消费的数据来实现它们的功能。设备由设备描述符定义。例如,在HA配置文件中有开关、调光器、占用传感器、光传感器等设备描述符。每个描述符都有一个对应的设备ID,用于标识网络上的设备。HA概要文件设备描述符的完整列表可以在这里找到。

应用层协议包括Zigbee定义的ZHA、ZCBA、HC等,也包括厂商为了自己的产品设计的自定义的协议

    1.Clusters and Attributes

    设备可以产生/消费的单独数据块称为属性。属性及其可能的值和类型(即整数、时间等)被定义为设备描述符的一部分。属性被分组到Cluster中。

     属性的一个例子是OnOff属性,它的值表示要执行的操作(即On、Off、Toggle)。属性被分组到Cluster中,每个Cluster都有自己的惟一标识符。Cluster可以包含许多属性,例如,每个属性都可以表示诸如设备状态(打开或关闭)、设备打开的总时间、总功耗、施加到负载上的电压等信息。

     应用程序概要文件定义了哪些Cluster是强制性的,哪些Cluster是可选的。设备支持的Cluster决定了它可以与其他设备通信的Cluster。例如,要使两个设备在温度监视和控制中协同工作,这两个设备必须支持与温度相关的兼容Cluster。传感器设备必须有一个包含被监控温度的输出Cluster,控制器必须支持一个可以使用温度做出控制决策的输入Cluster。

    2.Endpoints

       网络上的每个设备都可以运行应用程序。网络上的一个节点可以运行许多应用程序。例如,环境传感器可以运行单独的应用程序来测量温度、湿度和大气压力。应用程序本质上是将数字数据转换为输出,并/或将输入转换为数字数据。网络节点上的这些应用程序实例被称为端点,所有消息(消息包含来自属性的数据)要么起源于端点,要么终止于端点。端点之间通过Cluster和属性的交换进行通信。单个网络节点上的端点由1到240之间的数字惟一标识。因此,要识别Zigbee网络上的特定应用程序实例(端点),需要该节点的网络地址和该节点上应用程序的端点地址(1-240)。

       注意:Zigbee设备对象(ZDO)是一个地址为0的特殊端点。每个节点在地址0处都有一个ZDO。ZDO负责定义网络上节点的类型(协调器、路由器、终端设备)和节点的网络管理(形成/加入/离开等)。

    3.总结

       总而言之,应用程序概要文件定义了一组设备及其Cluster和属性,这些设备和属性定义了每个设备必须能够生成或消费的强制数据片段。应用程序概要文件旨在确保实现概要文件的设备之间的互操作性。

       设备可以运行许多不同的应用程序,例如用于测量温度、湿度或光线的应用程序。应用程序实例称为端点。端点包含Cluster,Cluster包含属性。属性定义端点可以生成或使用的数据类型和值。端点是包含属性数据的消息的源和目的地。

五、Zigbee Cluster Library

      Cluster是一组消息用于通过Zigbee发送和接收相关命令和数据。例如,温度Cluster将包含发送和接收温度信息所需的所有必要空中数据包消息。查看Cluster的另一种方法是定义特定功能的接口,然后Zigbee公共应用程序层引用特定应用程序中使用的Cluster,并指定不同设备支持的Cluster——有些Cluster是强制性的,有些是可选的。通过这种方式,ZCL简化了特定应用程序的文档,并允许开发人员快速理解设备支持哪些行为。

ZCL普遍使用 Client / Server model 模型,如下:

       每个Cluster被分为两个端,一个客户端和一个服务器端。Cluster的客户机端发送服务器端可能接收到的消息。客户端还可以接收由服务器端发送的消息。从这个意义上说,Cluster的客户机端和服务器端总是互补的。通常,Cluster的服务器存储Cluster的属性,而Cluster的客户机影响/操作这些属性。 

1.Attributes

属性是与Cluster端关联的数据,Cluster的服务器端/客户机端可以具有多个属性。
每个属性声明如下:

  • 16位标识符
  • 一个数据类型
  • 只读或读/写指示符
  • 一个默认值
  • 一个指示符,指示它是否受到任何实现的支持

     属性标识符仅在特定的Cluster端是惟一的:这意味着Cluster服务端中的属性0x0002不需要与Cluster客户机中的属性0x0002相同,即使在相同的Cluster中也是如此。

注意:可以使用属性命令通过空中数据包访问这些属性。

       还有全局属性的概念,它在设备上的每个Cluster实例中都定义为普通的ZCL属性,例如Cluster修订(属性ID 0xFFFD)。

       属性的一个例子是OnOff属性,它的值表示要执行的操作(即On、Off、Toggle)。属性被分组到Cluster中,每个Cluster都有自己的惟一标识符。Cluster可以包含许多属性,例如,每个属性都可以表示诸如设备状态(打开或关闭)、设备打开的总时间、总功耗、施加到payload上的电压等信息。

        应用程序概要文件定义了哪些Cluster是强制性的,哪些Cluster是可选的。设备支持的Cluster决定了它可以与其他设备通信的Cluster。例如,要使两个设备在温度监视和控制中协同工作,这两个设备必须支持与温度相关的兼容Cluster。传感器设备必须有一个包含被监控温度的输出Cluster,控制器必须支持一个可以使用温度做出控制决策的输入Cluster。

2.Commands     

        命令由8位命令标识符和有效字节格式组成。与属性类似,标识符仅在特定Cluster端内是惟一的。命令用于与属性交互,如读、写、发现属性和报告属性。例如,我们可以从一个Cluster端发送一条包含Read属性命令的消息到另一个Cluster端,该Cluster端将使用Read属性响应进行响应。允许设备影响值的命令通常从客户机设备发送,并由服务器设备接收。这与面向web的客户端获取用户输入并在服务器端操作/检索数据的原理类似。例外情况是属性报告命令,它通常从服务器设备发送到客户机设备。  

       由于属性总是与Cluster绑定在一起,因此影响属性的命令指定要访问或修改哪些Cluster和哪些属性。此外,每个Cluster都定义了哪些属性支持哪些命令——例如,一个属性可以声明为只读,在这种情况下它将不支持Write attributes命令。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值