本文主要介绍zigbee中profile、cluster、attribute、command的概念,以及zigbee的一些基本思想。zigbee联盟为了不同厂商的zigbee设备之间能够互联互通,于是制订了的zigbee协议标准,到今天(2016.3.28)已经到了版本3.0。要了解zigbee就要先了解下面这些关键词的概念:

1. 节点(node)

节点 Node 也可以理解为一个容器,包含一组zigbee设备,分享一个无线信道。每个节点有且只有一个无线信道。一个节点除了64位的IEEE地址,16位的网络地址,每个节点还提供了8位应用层入口地址(端点:EndPoint),对应于用户应用对象。

2. 端点(Endpoint)

端点EndPoint是协议栈应用层的入口,即入口地址,也可以理解应用对象(ApplicationObject)存在的地方,它是为实现一个设备描述而定义的一组群集。每个Zigbee设备可以最多支持240这样的端点,端口0用于整个Zigbee设备的配置和管理,应用程序可以通过端点0与Zigbee堆栈的其他层通信,从而实现对这些层的初始化和配置。附属在端点0的对象被称为Zigbee设备对象(ZDO)。端点255用于向所有端点的广播,端点241~254是保留端点。

3. 配置文件(profile)

配置文件Profile可以理解为共同促进交互式应用的多个设备描述项的集合。定义了属性ID与群集(簇)ID,使之看起来就像设备的某种特性,以家庭智能控制系统为例,灯配置文件设定了远程控制设备的群集OnOffDRC含有一种属性OnOff,且该属性为无符号8位值,值0xFF意味着"开",0x00为"关",0xF0则为无效。通常,配置文件也为设备定义了,哪些群集是强制托管,哪些群集是可选择的。

另外,配置文件还定义了一些可选择的zigbee协议托管服务。每一个应用都对应一个配置文件(Profile),配置文件内容包括:设备ID(DeviceID)、群集ID(Cluster ID)、属性ID(AttributeID),及AF(应用框架)使用何种服务类型等信息。在zigbee协议中,一个配置文件中允许最多216个设备,28个群集,每个群集支持最多2^16个属性。

现在zigbee已经被应用的各个领域如智能家居、智能楼宇、智能能源、智能照明等等,profile用2个字节(16位)来表示某一应用领域,如智能家居profileID为0x0104;个人医疗为0x0108;智能能源为0x0109。

3. 群集,或称为簇(cluster)

群集Cluster是包含一个或多个属性(attribute)的群集。简单的说,群集就是属性的集合。每个群集都被分配一个唯一群集ID且每个群集最多有65536个属性。比如一个群集包含了不同情况下的开关、不同情况下的灯、不同情况下的温度值、不同情况下的百分比等等。
通常按功能划分成不同的类,在不同的profile下所包含的cluster也不同,cluster用两个字节(16位)来表示。

如在智能家居下有on-offcluster(0x0006)、door lock cluster(0x0101)、color controlcluster(0x0300)等针对家庭使用的一些功能而划分的。所以一个特定的设备通常会包含一个特定的类,如zigbee门锁那么它肯定包含了doorlock这个cluster,调色灯会包含color control这个cluster。

4. 属性

属性Attribute是一个反映物理数量或状态的数据值,比如开关值(On/Off)、灯的状态值(On/Off)、温度值、百分比等等.
属性它表示设备的某种状态或限制,它是在cluster下面,每个cluster包含不同的属性,它由两个字节(16位)表示在同一cluster下的各个attribute是唯一的。如在doorlock下有lock state attribute(0x0000)这个用来表示门的状态(开或者关),lock typeattribute(0x0001)这个用来表示锁的类型。

5. 设备描述

设备描述DeviceDescription是指一个大型目标应用的一部分,包括一个或多个群集。

6. 命令(command)

command是对设备进行操作的各种命令,它也是在cluster下,每个cluster包含不同的命令,它由一个字节(8位)表示,同一cluster下的各个command是唯一的。如在doorlock下有lock door、unlock door、set pin、getpin等命令,commad通常与attribute联系在一起,一个command通常是改变某个attribute的值。unlock、lock命令就是改变了锁状态属性lockstate。

为了互联互通zigbee联盟规定了所有profile、cluster、atrribute和command,相当于定制了一个虚拟硬件层,它规定了lockstate为0时为关锁状态,为1时为开锁状态,当发开锁unlock 指令时lock state变为1,发关锁指令lock时lockstate变为0,这个时候制造商只要根据lock state的值通过实际硬件实现开关锁就可以了,如此即使各个厂家具体的硬件实现不同,但是在虚拟硬件层的统一就可以。

7. 对象属性分类

7.1 DeviceID

以前觉得DeviceID和ClusterID有隶属关系,其实不是了!DeviceID与ClusterID没有隶属关系!DeviceID是各种设备(传感器、控制器)在ZHA协议中被编订一个对应数值!客户端通过这个值来识别这个设备!
DeviceID在zstack里被zcl_ha.h文件、zcl_ll.h(lightlink)或zba.h(Building Automation)文件定义

7.2 ClusterID

一个ClusterID是一群AttributeID的集合!ClusterID是一个容器,容纳了许多AttributeID!他两是有隶属关系的!任何设备是通过ClusterID和AttributeID来描述设备的属性!

7.3 AttributeSet

将相近的attribute集合到一个成为AttributeSet,每个AttributeSet有16个attributeID
这个集合Set就像中国行政中的地市,尽管存在着市管县,但是官方文件确明确表示我们是省/县/乡三级行政机构!故这个SetID没有在协议体现出来!
不过也有联系,AttributeID的十六进制的前三个数实为其所在的AttributeSet编码,比如0x0001其所在的Set编码为0x000,0x0011其所在的Set编码为0x001
同样从侧面反映出为啥一个Set最多只可包含16个attribute了!从0到F嘛!

7.4 AttributeID

AttributeID是每个设备的一项属性!比如把人看做一个设备,那么其身高,发型,籍贯等等都可以作为其一个Attribute,并编订一个ID来表示这个属性!客户端接收这个ID即知道这个是什么属性,表述何种信息!任何设备是通过ClusterID和AttributeID来描述设备的属性!
AttributeID在zstack里被zcl_hvac.h、zcl_lighting.h文件定义。

8. 绑定(Bindling)

Zigbee定义了一个称为端点绑定的特殊过程。绑定即在源节点的某个端点(EndPoint)和目标节点的某个端点之间创建一条逻辑链路。绑定可以发生在两个或多个设备之间。协调器节点维护一个基本上包括两个或多个端点之间的逻辑链路的绑定表。

在绑定表中,包含如下信息,源节点和目标节点的IEEE地址、端点号、群集号。对于可以建立绑定关系的两个节点,它们的群集的属性必须一个选择"输入",另一个选择"输出",而且群集号必须相等,只有这样,它们彼此才能建立绑定。如果目标设备的扩展地址是已知的,则调用zb_BindDeviceRequest()函数可以创建一个绑定条目。

9. 寻址(Addressing)

在Zigbee网络中,使用两种地址:一种是64位的IEEE地址,也叫物理地址,64位地址在所有zigbee设备之中是唯一的,其中包含一个由IEEE分配、也是全球唯一的24位制造商特定组织标识符OUI(OrganizationallyUqique Identifier)。

另一种是16位的网络地址(NWKAddress),当设备加入zigbee网络时,从允许其加入的父设备上获取16位网络地址。该地址在zigbee网络中唯一,用于数据传输和数据包路由。在zigbee中,数据包可以单点传送(unicast),多点传送(multicast)或者广播传输(broadcast),所以必须有地址模式参数。一个单点传送数据包只发送给一个设备,多点传送数据包则要传送个一组设备,而广播数据则要发送给整个网络的所有节点。当应用程序需要将数据包发送给网络上的一组设备时,还可以使用组寻址方式(GroupAddrssing)。

ZigBee基本概念相关推荐

  1. zigbee基本概念及组网特性

    http://www.feibit.com/forum.php?mod=viewthread&tid=2911 在这一章中,我们将一起来看一下zigbee的几个基本概念.当然,由于zigbee ...

  2. 为什么叫zigbee_Zigbee主要是射频还是组网呢?浅谈Zigbee的概念并说明其优势

    Zigbee 基本概念介绍 Zigbee 是一种基于 802.15.4 物理层协议.支持自组网. 多点中继,可实现网状拓扑的复杂的组网协议,加上其低功耗的特点,使得网络间的设备 必须各司其职,有效地协 ...

  3. GPRS、433、Wifi、Zigbee模块概念和区别

    工业数据无线传输中,常涉及到诸如GPRS.433.Wifi.Zigbee模块等这些概念,如何理解,怎么区分,可能很多人并不知道,尤其是非技术人员: 1.GPRS模块是什么?有哪些功能? GPRS DT ...

  4. zigbee vs 433

    基于ZIGBEE技术的无线模块与市场通用的433MHZ模块比较 1)频间干扰:433MHZ存在严重的频间干扰.ZIGBEE没有 2)频内干扰:433MHZ存在严重的频内干扰.ZIGBEE可以解决 3) ...

  5. 【XBEE手册】ZigBee网络

    [XBEE手册]ZigBee网络 @(ZigBee)[ZigBee, XBEE手册] [转载请注明出处,谢谢!] [XBEE手册]ZigBee网络 定义 Zigbee堆栈层(ZigBee STACk ...

  6. Zigbee基础理论知识总结

    Zigbee基础理论知识总结 前言 章节 Zigbee概述 概念 特点 芯片 协议栈 开发环境 Zigbee技术原理 网络结构 网络体系 拓扑结构 协议架构 物理层 工作频段分配 信道分配 物理层服务 ...

  7. ZigBee协议栈安装失败解决方法

    1.第一种错误 解决方法:右键Z-Stake.exe文件->管理员身份运行. 2.第二种错误 原因:可能之前安装过,不能再次安装,默认安装在C盘下,可以找找先. 解决方法:如果找不到 Texas ...

  8. 基于ZigBee的智能家居设计与实现—CC2530开发

    目录 背景 环境搭建 IAR安装破解 SmartRF04EBR驱动安装 CC2530 I/O口操作 I/O口简介 寄存器介绍 流水灯 CC2530 ADC操作 ADC简介 寄存器介绍 ADC实验 CC ...

  9. Silabs ZigBee应用开发基本原理

    1.介绍   ZigBee指的是:可靠,经济,低功耗,无线设备到设备通信的开放标准:由400多家公司组成的联盟,他们共同定义并使用该标准在智能能源和商业楼宇自动化等各种应用中进行通信.ZigBee联盟 ...

最新文章

  1. Java在linux新建png_教你如何使用libpng显示PNG图片
  2. Django项目配合sentry实现浅析
  3. 使用LoadRunner测试WMS
  4. 操作系统实验——简易FAT16文件系统的实现
  5. django-一对一关系
  6. 剑指offer 面试题61. 扑克牌中的顺子
  7. 广义线性模型(GLM, Generalized Linear Model)
  8. 读书笔记1:《C++沉思录》
  9. wd移动硬盘测试软件,西数硬盘修复工具(WD HDD Repair Tools)
  10. 冒泡排序(Java)
  11. 关于【Windows 资源保护找到了损坏文件,但其中有一些文件无法修复】的解决方法
  12. 三毛3--亲爱的婆婆大人
  13. 苹果vs剪辑下载_Vlog教程 | 如何在手机剪辑app中添加自己的音乐?
  14. 智能汽车能否真正实现无人驾驶,为什么?
  15. 计算机符号大写怎么退出,如何输入数字,字母 和 回车换行符,大写字母锁定输入模式怎么退出...
  16. luminati住宅IP代理的主要类型及资费情况
  17. 开发到底要不要转行软件测试?一篇足以 最全方位分析
  18. composer 安装laravel 5.5 苹果终端
  19. 马丁福勒《UML精粹》读书笔记_第四章
  20. 用了基木鱼还用网站服务器吗,基木鱼操作手册:营销通相关问题

热门文章

  1. linux 读卡器信息,读卡器是怎么读取信息的?
  2. 鸿蒙应用开发:安装DevEco Studio及环境配置
  3. 代驾出行,为酒后安全保驾护航
  4. Mac安装CAJViewer
  5. 数据结构与算法二:时间/空间复杂度(complexity)
  6. 内核编译`warning`停止编译
  7. 西安石油大学计算机学院院长刘天时,吴广茂教授做客西安石油大学、畅谈科技论文写作...
  8. 步科PLC与DGUSⅡ屏软硬件连接指南
  9. 贝壳扫地机器人_扫地机器人到底好用不好用?
  10. python程序:学校考勤系统