zigbee学习之zigbee应用框架

本文深入探讨了Zigbee应用框架的创建过程,包括从Zigbee联盟获取profile标识符,定义设备描述和Cluster,以及在端点上使用profile。此外,详细阐述了Zigbee描述符的传输、结构和作用,如节点描述符、节点电源描述符、简单描述符和复杂描述符,旨在帮助理解Zigbee设备间的通信和互操作性。
摘要由CSDN通过智能技术生成

1. 创建一个zigbee profile

一个ZigBee 网络设备之间通信的关键是一个关于profile 的协议。

一种profile 的例子是家庭自动化。这个ZigBee profile 允许一系列设备类型交换控制信息,以形成一个无线家庭自动化应用。这些设备的目的是交换已知信息来实现控制,比如开关灯,给照明控制器发送一个照明传感测量,或如果一个位置传感器探测到移动时发送一个警报信息。

另一种类型profile 的例子是定义了ZigBee 设备之间普通行为的设备profile。为了说明这一点,无线网络依靠自主设备加入网络的能力,在网络内发现其它设备和设备上的服务。设备发现和服务发现是设备profile 支持的功能。

1.1 从zigbee联盟获得一个profile标识符

ZigBee 定义了两类不同的profile:制造商定义的和公共的。这些类型的精确定义和标准是ZigBee联盟内部和本文件范围以外的一个行政问题。为了实施本技术规范,只有profile 标识符的标准是唯一的。为此,每个profile 的努力必须开始于请求ZigBee 联盟分配一个profile 标识符。一旦获得profile标识符,该profile 标识符允许profile 设计者做以下定义:

  • 设备描述
  • Cluster标识符

profile 标识符的应用的市场空间是ZigBee 联盟发放一个profile 标识符的一个关键标准。profile 需要覆盖一个足够广泛的设备范围,以允许设备之间兼容,但不过于广泛,导致缺乏Cluster 标识符来描述他们的接口。相反的,profile 不能定义地过窄而导致不同profile 标识符的来描述许多设备,导致profile标识符地址空间的浪费,以及在描述设备如何配置接口时的兼容性问题。ZigBee 联盟内的政策团体将建立profile 如何定义的标准,以帮助请求者调整其profile 标识符请求。

1.2 定义设备描述和Cluster

profile 标识符是ZigBee 协议内部主要的枚举功能。每个唯一的profile 标识符定义一个设备描述和cluster 标识符的相关枚举。例如,对于profile 标识符“1”,存在一批16 位值描述的设备描述(这意味着每个profile 内有65,536 个可能的设备描述),以及一批16 位值描述的cluster 标识符(这意味着每个profile 内有65,536 个可能的cluster 标识符)。每个 cluster 标识符还支持一批16 位值描述的属性。这样 ,每个profile 标识符有多达65,536 个cluster 标识符,每个cluster 标识符包含多达65,536 个属性。profile开发者有责任在其分配的profile 标识符内定义和分配设备描述,cluster 标识符和属性。注意设备描述,cluster 标识符和属性标识符的定义必须小心,以保证高效创建简单描述符和交换信息时的简化处理。

对于ZigBee 联盟定义的公共的profile 标识符,已经创建了一个cluster 图书馆,提供了一个公共的定义和cluster 及其属性的枚举。cluster 图书馆的目的是在应用profile 范围内支持重复使用cluster 和属性定义。依照惯例,当公共的profile 使用cluster 图书馆,它们将共享一个公共的cluster 枚举和定义,以及属性标识符。

设备描述和cluster 标识符的处理必须知道profile 标识符。在任何信息交给设备之前, ZigBee 协议假定已经使用服务发现来确定设备和端点支持的profile。同样,绑定程序假定类似的服务发现和profile 匹配已经发生,因为产生的结果匹配提取给源地址,源端点,cluster 标识符,目标地址和目标端点。

1.3 在端点上使用profile

单个的ZigBee 设备可以包含支持许多profile,提供定义在那些profile 内的各种cluster 标识符的子集, 还可以支持多设备描述。这个功能使用设备内部的一个地址等级定义如下:

  • 设备:单个无线电支持的整个设备,带有唯一的IEEE 和NWK 地址。
  • 端点:这是一个8 位域,描述一个无线电支持的不同应用。端点0x00 用于寻找设备profile 地址 ,每个ZigBee 设备必须使用。端点0xff 用于寻找所有活动端点的地址(广播端点),端点0xf1-0xfe 保留 。因此,一个物理的ZigBee 无线电可以支持多达240 个在端点0x01-0xf0 上的应用。

它是一个应用程序决定在一个设备端点上如何部署应用,以及公布哪个端点。唯一的要求是为每个端点创建的简单描述符,且那些描述符可用于服务发现。

1.4 建立服务发现

一旦设备被创建以支持具体的profile,并符合在那些profile 内部设备描述使用的cluster 标识符,就可以部署应用了。为此,每个应用被分配一个不同的端点,且每个使用描述符进行描述。它是通过服务发现开启的ZigBee 设备profile 描述的简单描述符和其它服务发现机制,支持设备绑定和方便互补设备之间应用通信完成的。

其中的一个要点是,服务发现是基于profile 标识符,输入cluster 标识符列表和输出cluster 标识符列表(明显没有设备描述)进行的。设备描述只简单地是一个指明强制和可选的cluster 标识符的转换,它在指明profile 类型的设备内支持。另外,期望设备描述枚举可以在PDA 内使用或其它辅助绑定设备以提供设备能力的外部描述。

1.5 混合标准和专有profile

例如,一个ZigBee 设备可以被开发为ZigBee 公共profile 标识符“XX”。如果一个制造商想要部署一个支持公共profile “XX”的ZigBee 设备,并提供厂商具体的扩展,如果profile “XX”的定义范围内制造商扩展,这些扩展将被增加在制造商执行的公共profile 上。或者,如果不支持制造商扩展,或profile “XX”不支持期望的制造商扩展的类型,制造商可以在一个单独的制造商定义的profile 标识符(在同一物理设备内一个单独的端点上宣布)上部署扩展。在这两种情况下,支持profile 标识符“XX”但是不包含制造商扩展的设备,将只能宣布支持公共标识符profile “XX”的基本功能,且不能响应或创建使用制造商扩展的信息。

1.6 启用向后兼容

在之前的例子中,使用ZigBee 公共的profile 标识符“XX”创建一个设备。如果ZigBee 联盟要在后来更新这个公共profile,以增加新的功能,如果通过定义profile 支持这类扩展,修改将被直接纳入新的公共profile 标识符“XX”,或被引进到一个新的公共profile 中,带有一个新的profile 标识符(叫做“XY”)。 假定公共profile“XX”不支持扩展,通过使新设备宣布同时支持profile 标识符“XX”和profile标识符“XY”,只用profile 标识符“XX”制造的设备仍然能和后来新制造的设备兼容。以这样的方式,新设备可以使用profile 标识符“XX”与老设备通信,但是,也能使用profile 标识符“XY” 与同一个应用的新设备通信。ZigBee 内的服务发现功能使得网络中的设备可以决定支持的层次。

目标是ZigBee 联盟既为制造商提供公共profile 的扩展,也为公共profile 提供未来的增强功能。只要有可能,这个目标包括维护同一个profile 标识符内的那些扩展和增强功能。无论profile 可扩展性的目标是否是可实现的,本节说明了ZigBee 允许部署的制造商扩展范围内profile 定义的功能,以及增强功能。对于制造商扩展和功能增强,Profile 可扩展性这一主题超出了本文件范围,由联盟的其它文件解决。

2. zigbee描述符

ZigBee 设备使用描述符数据结构描述自身。这些描述符包含的实际数据定义在不同的设备描述中。有五种描述符:节点,节点电源,简单,复杂和用户
在这里插入图片描述

2.1 描述符的传输

节点,节点电源,简单和用户描述符应该按照它们在表中各自出现的顺序传输,即表顶部的域首先传输,表底部的域最后传输。

每个描述符应该小于或者等于apscMaxDescriptorSize,除非有条款规定能够传输不强制使用分段的发现信息。

对于简单描述符,存在允许描述符扩展超出apscMaxDescriptorSize的传输原语。当使用扩展传输原语,标准传输原语要求传输一个省略的简单描述符,且设备的节点描述符指示可以使用扩展传输原语。

在这里插入图片描述
在这里插入图片描述

2.1.1 域计数字段

域计数字段长度为一个八位字节,指明了描述符所含域的个数。每个域的格式按照图2.16 进行编排。

2.1.1.1 压缩XML标记域

压缩 XML 标记域长度为一个字节,指明了当前域的XML 标记。

2.1.1.2 域数据域

域数据域长度可变,包含当前域的具体信息,如压缩XML 标记域所指。

2.2 通过描述符发现

描述符信息被ZDO 管理实体设备和服务发现查询,使用送到端点0 的ZigBee 设备profile 请求原语。

节点、节点电源、复杂和用户描述符适用于完整的节点。简单描述符必须指定用于定义在节点中的每个端点。如果一个节点描述符包含多个分单元,这些将在不同的端点上,这些端点的具体描述符通过在ZigBee 设备profile 原语中包含相关端点号读取。

2.3 节点描述符

节点描述符包含关于ZigBee 节点功能的信息,对每个节点都是强制的。在一个节点中应该只有一个节点描述符。

节点描述符的域以它们传输的顺序展示在表2.28 中。
在这里插入图片描述

2.3.1 逻辑类型域

节点描述符的逻辑类型域长度为3 位,指明了ZigBee 节点的设备类型。逻辑类型域应该设置为表2.29 所列的非保留值之一。
在这里插入图片描述

2.3.2 可使用复杂描述符域

节点描述符的可使用复杂描述符域长度为1 位,指明了该设备是否可以使用一个复杂描述符。如果该域设置为1,可以使用复杂描述符。如果该域设置为0,不可以使用复杂描述符。

2.3.3 可使用用户描述符域

节点描述符的可使用用户描述符域长度为1 位,指明了该设备是否可以使用一个用户复杂描述符。如果该域设置为1,可以使用用户描述符。如果该域设置为0,不可以使用用户描述符。

2.3.4 APS标志域

节点描述符的APS 标志域长度为3 位,指明了节点应用支持子层的功能。

2.3.5 频段域

频段域长度为5 位,指明了节点使用的基本IEEE802.15.4 无线电支持的频段。对每个基本IEEE802.15.4 无线电支持的频段,频段域的相应位应该被设置为1,如表2.30 所示。所有其它位应该设置为0。
在这里插入图片描述

2.3.6 MAC功能标志域

MAC 功能标志域长度为8 位,指明了节点功能,如IEEE802.15.4 MAC 子层【B1】所要求。MAC功能标志域应该按照图2.17 所示的格式进行编排。
在这里插入图片描述
备用PAN 协调器子域长度为1 位,如果该节点可以成为一个PAN 协调器的话,应该设置为1。否则备用PAN 协调器子域应该设置为0。

设备类型子域长度为1 位,如果该节点是一个全功能设备(FFD),应该设置为1。否则设备类型子域应该设置为0,表示一个简化功能设备(RFD)。

电源来源子域长度为1 位,如果当前电源来源是主电源,应该设置为1。否则电源来源子域应该设置为0。该信息来自节点电源描述符的节点当前电源来源域。

空闲时接收器开启子域长度为1 位,如果设备在空闲期间没有关闭其接收器以节省电源,应该设置为1。否则空闲时接收器开启子域应该设置为0。

安全功能子域长度为1 位,如果设备可以使用【B1】规定的安全组合发送和接收加密帧,应该设置为1。否则安全功能子域应该设置为0。

分配地址子域长度为1 位,应该设置为0 或 1。

2.3.7 制造商代码域

节点描述符的制造商代码域长度为16 位,指明了一个制造商代码,由ZigBee 联盟分配,把制造商和设备联系起来。

2.3.8 最大缓冲区大小域

节点描述符的最大缓冲区域长度为8 位,有效值范围是0x00-0x7f。这个域指明了该节点的网络子层数据单元(NSDU)的最大大小,以字节为单位。这是由应用支持子层传递给应用或来自于应用的数据或命令,在进行任何分段或重组之前的最大大小。

该域可以用于一个高级别的网络管理指示。

2.3.9 最大输入传输大小域

最大输入传输大小域长度为16 位,有效值范围是0x0000-0x7fff。这个域指明了在一个信息传输内可以传输给该节点的应用子层数据单元(ASDU)的最大大小,以字节为单位。通过使用分段,该值可以超过节点最大缓冲区域的值。

2.3.10 服务掩码域

节点描述符的服务掩码域长度为16 位,位的设置表示该节点的系统服务能力。它能使系统其它节点发现特定系统的服务。位的设置定义在表2.31 中。
在这里插入图片描述

2.3.11 最大输出传输大小域

节点描述符的最大输出传输大小域有16 位长,有效范围是0x0000-0x7fff。本域说明了可以从本节点以单个信息传输的应用子层数据单元(ASDU)的最大大小,以字节为单位。通过使用分段,这个值可以超过节点最大缓冲域的值。

2.3.12 描述符能力域

节点描述符的描述符能力域有8 字节长,位的设置表明了该节点的描述符能力。它能使系统上其它节点发现描述符的特定功能。位的设置在表2.32 中定义。
在这里插入图片描述

2.4 节点电源描述符

节点电源描述符动态地指示节点的电源状态,对每个节点都是强制的。一个节点应该只有一个节点电源描述符。

节点电源描述符的域按其传输的顺序展示在表2.33 中。
在这里插入图片描述

2.4.1 当前电源模式域

节点电源描述符的当前电源模式域长度为4 位,指明了节点当前的睡眠/省电模式。当前电源模式域应该设置为表2.34 所列的非保留值之一。
在这里插入图片描述

2.4.2 可用电源来源域

节点电源描述符的可用电源来源域长度为 4 位,指明了该节点的可用电源来源。对该节点支持的每个电源,可用电源来源域相应的位应该设置为1,如表2.35 所列。所有其它位应该设置为0。
在这里插入图片描述

2.4.3 当前电源来源域

节点电源描述符的当前电源来源域长度为 4 位,指明了该节点当前使用的电源来源。对于选择的当前电源,当前电源来源域的相应位应该设置为1,如表2.36 所示。所有其它位应该设置为0。
在这里插入图片描述

2.4.4 当前电源来源电量域

节点电源描述符的当前电源来源电量域长度为 4 位,指明了负荷电源来源的电量。当前电源来源电量域应该设置为表2.37 所列的非保留值之一。
在这里插入图片描述

2.5 简单描述符

简单描述符包含该节点所含每个端点的具体信息。简单描述符对节点所列的每个端点都是强制的。

简单描述符的域按其传输的顺序展示在表2.38 中。因为该描述符需要无线传输,简单描述符的总长度应该小于或等于apscMaxDescriptorSize。
在这里插入图片描述

2.5.1 端点域

简单描述符的端点域长度为8 位,指明了该描述符指向的节点内的端点,应用程序只能使用1-240的端点。

2.5.2 应用profile标识符域

简单描述符的应用profile 标识符域长度为16 位,指明了该端点支持的profile。Profile 标识符应该从ZigBee 联盟获取。

2.5.3 应用设备标识符域

简单描述符的应用设备标识符域长度为16 位,指明了该端点支持的设备描述。设备描述标识符应该从ZigBee 联盟获取。

2.5.4 应用设备版本域

简单描述符的应用设备版本域长度为 4 位,指明了该端点支持的设备描述版本。应用设备版本域应该设置为表2.39 所列的非保留值之一。
在这里插入图片描述

2.5.5 应用输入cluster计数域

简单描述符的应用输入cluster 计数域长度为8 位,指明了该端点支持的输入Cluster 的个数,它将出现在应用输入Cluster 列表域中。如果该域的值是零,应该不包括应用输入Cluster 列表域。

2.5.6 应用输入cluster列表

简单描述符的应用输入cluster 列表长度为 16*i,i 是应用输入 Cluster 计数域的值。这个域指明了该端点支持的输入Cluster 的列表,在服务发现和绑定程序期间使用。

应用输入Cluster 列表域应该仅当应用输入Cluster 计数域的值大于零时包含。

2.5.7 应用输出cluster计数域

简单描述符的应用输出cluster 计数域长度为8 位,指明了该端点支持的输出Cluster 的个数,它将出现在应用输出Cluster 列表域中。如果该域的值是零,应该不包括应用输出Cluster 列表域。

2.5.8 应用输出cluster列表

简单描述符的应用输出cluster 列表长度为16*o,o 是应用输出Cluster 计数域的值。指明了该端点支持的输出Cluster 的列表,在服务发现和绑定程序期间使用。

应用输出cluster 列表域应该仅当应用输出Cluster 计数域的值大于零时包含。

2.6 复杂描述符

复杂描述符包含该节点所含的每个设备描述的扩展信息。复杂描述符的使用是可选的。

因为该描述符内数据的扩展性和复杂性,它使用压缩XML 标记,以 XML 的形式表示。描述符的每个域展示在表2.40 中,因此可以按照任何顺序传输。因为该描述符需要无线传输,复杂描述符的总长度应该小于或等于apscMaxDescriptorSize。
在这里插入图片描述

2.6.1 语言和字符集域

语言和字符集域长度为 3 个字节,指明了复杂描述符中字符串使用的语言和字符集。语言和字符集域的格式在图2.18 中说明。
在这里插入图片描述
ISO 639-1 语言代码子域长度为2 个字节,指明了字符串使用的语言,如【B5】所定义。

字符集标识符子域长度为 1 个字节,指明了字符集中字符使用的编码。该子域应该设置为表 2.41所列的非保留值之一。
在这里插入图片描述
如果语言和字符集没有指定,语言应该默认为英语(语言代码=“EN”),且字符集为ISO 646。

2.6.2 制造商名称域

制造商名称域长度是可变的,包含一个字符串,表示设备制造商的名称。

2.6.3 模板名称域

模板名称域长度是可变的,包含一个字符串,表示设备的模板制造商的名称。

2.6.4 序列号域

序列号域长度是可变的,包含一个字符串,表示设备的制造商序列号。

2.6.5 设备URL域

设备URL 域长度是可变的,包含一个字符串,表示通过该URL 可以获得设备更多相关信息。

2.6.6 图标域

图标域长度是可变的,包含一个字节字符串,携带电脑、网关或PDA 上表示设备的图标数据。图标的格式应该是一个32 乘以32 像素的PNG 图像。

2.6.7 图标URL域

图标URL 域长度是可变的,包含一个字符串,表示通过该URL 可以获得该设备的图标。

2.7 用户描述符

用户描述符包含允许用户使用一个用户友好的字符串,比如“卧室TV”或“楼梯灯”来识别设备的信息。用户描述符的使用是可选的。该描述符只包含一个域,它使用ASCII 字符集,最多应该包含16 个字符。

用户描述符的域按照其传输的顺序展示在表2.42 中。
在这里插入图片描述

3. 功能描述

应用构架层应该可以通过APS 子层数据服务过滤到达的帧,只列出每个活动端点上的应用程序感兴趣的那些帧。

应用构架层通过 APSDE-DATA.indication 原语从 APS 子层接收数据,是针对一个特定的端点(DstEndpoint 参数)和一个特定的profile(ProfileId 参数)。

如果应用构架层收到一个针对一个不活动端点的帧,该帧应该被丢弃。否则,应用构架层应该确定指定的profile 标识符是否和指定端点上的profile 标识符相匹配。如果profile 标识符不匹配,应用构架层应该拒绝该帧。否则,应用构架层应该把收到帧的负载传递给指定端点上的应用程序。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高咩咩在人间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值