ZigBee基本概念

news2024/10/1 15:22:00

本文主要介绍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)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/374631.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】知识点总结(C语言)

线性表、栈和队列、串、数组和广义表、树和二叉树、图、查找、排序线性表线性表(顺序表示)线性表是具有相同特性元素的一个有限序列,数据元素之间是线性关系,起始元素称为线性起点,终端元素称为线性终点。线性表的顺序…

python线程通信

在现实生活中,如果一个人团队正在共同完成任务,那么他们之间应该有通信,以便正确完成任务。 同样的比喻也适用于线程。 在编程中,要减少处理器的理想时间,我们创建了多个线程,并为每个线程分配不同的子任务…

线上监控诊断神器arthas

目录 什么是arthas 常用命令列表 1、dashboard仪表盘 2、heapdump dumpJAVA堆栈快照 3、jvm 4、thread 5、memory 官方文档 安装使用 1、云安装arthas 2、获取需要监控进程ID 3、运行arthas 4、进入仪表盘 5、其他命令使用查看官方文档 什么是arthas arthas是阿…

【自然语言处理】BERT GPT

BERT & GPT近年来,随着大规模预训练语言模型的发展,自然语言处理领域发生了巨大变革。BERT 和 GPT 是其中最流行且最有影响力的两种模型。在本篇博客中,我们将讨论 BERT 和 GPT 之间的区别以及它们的演变过程。 1.起源 201820182018 年&a…

2023软件测试现状,点工如何破局成为卷王····

近几年来的特殊情况,综合过去的大形势变化,所有行业都会自下而上的进行一轮技术“大清洗”,技术停滞不前的“点工”或将被逐步取代。 软件测试现状 测试行业在十几年间发生了翻天覆地的变化,从早期站在风口上的快速发展&#xf…

【mybatis】 01- mybatis快速入门

数据库创建(注意:最好先创建好数据库设置utf8再进行表创建) create database mybatis; use mybatis;drop table if exists tb_user;create table tb_user(id int primary key auto_increment,username varchar(20),password varchar(20),gender char(1),addr varch…

【数据结构】初识二叉树(二叉树的入门知识)

初识二叉树一、树概念及结构1、树的概念2、树的相关概念3、树的表示4、树在实际中的运用(表示文件系统的目录树结构)二、二叉树概念及结构1、概念2、特殊的二叉树3、二叉树的性质4、二叉树的存储结构三、结语一、树概念及结构 1、树的概念 树是一种非线…

【win10网络重置后,网络适配器消失或者不能使用】

注:此文章为重新整理的版本,旧版本:https://blog.csdn.net/Viwise/article/details/123263847?spm1001.2014.3001.5502 目录 一、问题描述 【总结】 【过程】 二、方法 1、针对设备问题代码为56的解决方法:安装CCleaner &am…

建模算法整理

优化 改进的蝙蝠算法 2022 E 2218144 使用背景:将每年砍伐树木比例定义为n,每年树木种植比例定义为m,设置一系列指标以及指标的加权计算方法(即函数F(X)的设定),寻找最优的n,m。 蝙蝠算法主要用于目标函数…

算法leetcode|38. 外观数列(多语言实现)

文章目录38. 外观数列:样例 1:样例 2:提示:分析:题解:rustgocpythonjava38. 外观数列: 给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字…

【C++】map和set的封装(红黑树)

map和set的封装一、介绍二、stl源码剖析三、仿函数获取数值四、红黑树的迭代器五、map的[]5.1 普通迭代器转const迭代器六、set源码七、map源码八、红黑树源码一、介绍 首先要知道map和set的底层都是用红黑树实现的 【数据结构】红黑树 set只需要一个key,但是map既…

分布式-分布式消息笔记

消息队列应用场景 消息队列 消息队列是进程之间的一种很重要的通信机制。参与消息传递的双方称为生产者和消费者,生产者和消费者可以只有一个实例,也可以集群部署。 消息体是参与生产和消费两方传递的数据,消息格式既可以是简单的字符串&am…

MYSQL安装部署 - Linux 本地安装及卸载

声明 :# 此次我们安装的 MYSQL 版本是 8.0.32 版本我们本次安装 MYSQL 总共要介绍 四种方式# 仓库安装# 本地安装# 容器安装# 源码安装我们本篇介绍的是 本地安装 我们还是去官网下载 :我们就是找着 .bundle.tar 这个包,里面就包含了所有 mys…

功率信号源有什么作用和功能呢

功率信号源是指集信号发生器与功率放大器为一体的电子测量仪器,它具有高电压、大功率的特点,在电子实验室中能够帮助用来驱动压电陶瓷、换能器以及电磁线圈等,可以有效的帮助电子工程师解决驱动负载和放大功率的问题。功率信号源和功率放大器…

过滤器,监听器,拦截器的原理与在Servlet和Spring的应用

在Java Web的开发中,最原始和初期的学习都是从Servlet开始的,Servlet是Java最为耀眼的技术,也是Java EE的技术变革。目前大火主流的框架spring boot也的spring mvc部分也是基于拓展servlet完成的。回到之前的文章spring 实现了对servlet的封装…

SQL语句大全(详解)

SQL前言1 DDL1.1 显示所包含的数据库1.2 创建数据库1.3 删除数据库1.4 使用数据库1.4.1 创建表1.4.2 查看表的结构1.4.3 查看当前数据库下的所有表1.4.4 基础的增删改查1.4.4.1 删除表1.4.4.2 添加列1.4.4.3 修改表名1.4.4.4 修改数据类型1.4.4.5 修改列名和数据类型2 DML2.1 给…

http协议简介

http 1.简介 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处…

Python实现GWO智能灰狼优化算法优化循环神经网络分类模型(LSTM分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。1.项目背景灰狼优化算法(GWO),由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优…

【玩转c++】git的安装和使用以及可视化处理

本期主题:git的安装和使用(windows环境)博客主页:小峰同学分享小编的在Linux中学习到的知识和遇到的问题 小编的能力有限,出现错误希望大家不吝赐1.两个工具介绍第一个工具git,链接gitee或者github等代码托…

B端产品经理如何做好客户访谈?

用户访谈的价值我们在做用户研究的时候,经常会采用问卷调查和数据分析等定量的研究方法,从中我们可以搜集很多有价值的数据。但是,这些数据往往只停留在表层,没有办法基于用户的场景了解用户行为动机及诉求,很难找到用…