当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘 要:鉴于国内ZigBee产品协议标准不统一的现状和市场对符合统一标准的ZigBee产品的需求,为了实现基于 Z-stack协议栈且符合HA规范的应用开发,通过对ZigBee联盟制定的相关规范和标准文件的学习和解读,结合Z-stack协议 栈的结构特点及其提供的函数库,总结归纳了基于该协议栈来实现HA规范的ZigBee应用开发的基本流程和相关注意事项。

引言

目前,国内市场上ZigBee产品虽然很多,但大多采用 的都是私有协议栈,阻碍了不同厂家产品之间的互用和替代, 这也是ZigBee市场规模无法迅速扩大的一个重要原因,因 此,开发具有符合标准规范的ZigBee产品成为当务之急。目 前国内的ZigBee行业规范还正在处于形成阶段,但国际上的 ZigBee规范已经建立并受到国际上众多厂商的追随,因此, 本文就如何开发符合ZigBee联盟规定的HA规范的ZigBee 应用进行了探讨。

Z-stack是TI公司推出的ZigBee协议栈系统,这是一个 通过ZigBee联盟认证的符合ZigBee2007规范的平台。借由 TI公司ZigBee芯片及SOC产品在国内的广泛接受,Z-stack 也称为众多芯片厂商提供的协议栈中开发者接受度比较广的一 款ZigBee协议栈。本文探讨的ZigBee产品应用开发是基于 Z-stack协议栈的。

收稿日期:2013-01-30

ZCL 库(ZigBee cluster library)111

在ZigBee协议栈中,簇是一组命令和属性的集合,这些 命令和属性组合起来,构成了实现某一功能的实体。

ZCL是由ZigBee联盟制定的包含了大量功能簇(cluster) 的大集合。在应用开发中,以ZCL中已有的簇作为功能单元 来使用,可以增强通用性,避免重复开发。

ZCL对功能簇进行了分类和描述。每个功能簇都包含有 一个或多个属性及命令,ZCL对每个属性都进行了定义和描 述,包括属性ID、名称、数据类型、数值范围、初始值、可 读写性以及强制性;同时,也对此簇所包含的命令进行了定义, 包括命令ID、命令名称、命令数据帧内容和触发效果等。

ZCL中的通信是基于Client/Server模型的以簇为单位进 行的。两个不同功能设备之间的相互通信,是基于某一个或多 个功能簇的。用来储存这些簇属性的设备,称为Server端; 而用来操作这些簇属性的设备,称为Client端。针对Client/ Server端口类型的不同,同一个簇也具有不同的属性和命令。例如,操作属性的命令,通常由Client端发送给Server 端;而用针对这些操作命令的回复,通常由Server端发送给 Client 端。另外,报告类型的命令(report attribute command) 通常由Server端发送给Client端。以On/Off簇为例,该簇的 作用是实现开关设备的开/关状态的控制,体现在设备上,分 为Client端和Server端两种角色的设备,比如开关是Client端, 而某个具有ZigBee模块的灯节点则代表了相应的Server端。 Server端作为命令的接收者,必须能够识别开/关/切换这几 个来自Client端的命令(在ZCL中,已经规定好这些命令对 应的ID,如0x00代表关,0x01代表开,0x02代表切换),同时, 由于命令操作的是属性,因此,该Server端必须保存有开关 状态这一属性。

另外,ZCL制定了基于cluster的各类命令帧的格式(包 括读、写、报告等);定义了用于寻址的各指示参数(包括规 范ID、设备ID、簇ID、属性ID和命令ID);规定了用于各 属性和命令中各类数据的数据类型;还规定了在通信中可能 会出现的所有状态的枚举数组。

HA(home automation)规范[2]

HA规范是由ZigBee联盟(ZigBee alliance)制定的对用 于住宅环境的各类常见应用的设备描述和操作规范。通过这 一规范,为不同厂商的ZigBee HA设备提供了标准的接口和 定义,确保其相互之间能够相互通信并协同工作。

HA规范的范围主要集中在对家用设备进行的实时操 作,该规范可以构筑在ZigBee2007的两个子规范(ZigBee、 ZigBee pro)之上。

HA规范可以简单分成围绕网络特性的参数设置和围绕 功能实现的设备描述分类(包括相应设备的簇以及特性和功 能)这两大部分的内容。

2.1参数设置

HA规范对涉及到协议栈各功能方面的一些参数进行 了明确的规定,例如用于设备启动时的启动参数集(startup attribute sets),要求每个设备都必须内置这些参数,例如将 PAN ID设置成0xffff等。还有比如用于网络重连接的时间间 隔、安全中心连接秘钥等等参数。

在安全参数的设置方面,HA规范中规定,设备的初始 网络安全秘钥(network key)是空的,即每个设备的网络安全 秘钥必须由安全中心来统一分配;而安全中心连接秘钥(trust center link key)是每个设备都预置好的。

2.2设备描述

HA规范对可能会用到的设备进行了划分并设置了相应的 ID,在HA网络中的每个终端都必须符合至少一项该分类图 中给出的设备描述分类(如果同时符合多个设备描述的话,需 要在自己的设备描述中枚举这些设备类型)。

在HA规范中,每个设备描述都详细规定了其所支持的 簇,以及所支持的特性和功能。以通用设备中的开关(On/Off Switch)设备为例。其所支持的簇如表1所列。

基于Z-stack协议栈ZCL库且符合HA规范的ZigBee应用开发

也就是说,如果某个设备是开关的Client端节点,则必 须具有On/Off簇,用以发出控制On/Off属性的命令。

针对每一类设备,HA规范都通过特性和功能描述对其 进行行为上的描述,而通过其所包含的cluster来对其进行程 序层面上功能域与接口的界定。从整体上来讲,HA规范中为 一个设备应该实现什么以及如何实现进行了明确的说明。

Z-stack中的ZCL库及使用

Z-stack协议栈中包含有针对ZigBee联盟的ZCL规范进 行编写的ZCL库,用以在自己的协议栈中支持ZCL的实现叫 ZCL层API封装了大量针对ZCL的包括帧格式、命令ID等 细节,而只是向开发者提供了简单明了的命令函数,通过引入 ZCL层API,可以大大简化标准化应用的开发。在Z-stack中, 利用ZCL层API开发符合HA规范的应用的步骤如下叫 3.1 ZCL层的注册及初始化

首先,必须将ZCL层初始化并注册到任务列表中 去。ZCL的初始化是在osalInitTasks函数中添加zcl_Init( taskID++ )语句,用来给ZCL层的事件分配一个任务ID ;注 册即是在OSAL的任务列表tasksArr[]中,添加zcl_event_ loop, zcl_event_loop是在zcl.c里定义的用来处理ZCL层事 件的一个任务循环函数。

ZCL层的注册和初始化必须放在应用层之前。

3.2应用层的注册和初始化

用ZCL来构建基于HA规范的应用层,与ZCL层的注 册和初始化相类似,也必须在任务列表里添加应用层的任务 循环,并在初始化函数中进行初始化。

应用层的初始化主要包括以下几个方面。

3.2.1终端节点的注册

通过zclHA_Init函数对终端节点进行注册,表明该节点 是HA规范中的一个节点,该注册过程同时也包括了该节点相 应功能簇的注册。

3.2.2 ZCL回调函数集的注册

ZCL中每一类设备都会包含一系列与其实现功能相关的命令(包括自身发出的和来自其他设备的),ZCL回调函数集 用以接收并处理这些来自其他设备发出的命令。

HA规范中每个功能域都有不同的回调函数集,用以接收 不同种类的命令。以HA规范中的General功能域为例,其所 包含的回调函数类型如下:

typedef struct

{

zclGCB_BasicReset_t pfnBasicReset; // Basic Reset zclGCB_Identify _t pfnIdentify; // Identify Response zclGCB_IdentifyQueryRsp_t pfnIdentifyQueryRsp; // Identify Query Rsp

zclGCB_OnOff_t pfnOnOff; // On/Off cluster zclGCB_LevelControlMoveToLevel_t pfnLevelControlMoveTbLevel; // MoveToLevel

zclGCB_LevelControlMove_t pfnLevelControlMove; // Move

zclGCB_LevelControlStep_t pfnLevelControlStep; // Step zclGCB_LevelControlStop_t pfnLevelControlStop; // Stop zclGCB_GroupRsp_t pfnGroupRsp; // Group Response zclGCB_SceneStoreReq_t pfnSceneStoreReq; // Scene Store Request

zclGCB_SceneRecallReq_t pfnSceneRecallReq; // Scene Recall Request

zclGCB_SceneRsp_t pfnSceneRsp; // Scene Response zclGCB_Alarm_t pfnAlarm; // Alarm Req & Rsp zclGCB_Location_t pfnLocation; // RSSI Location zclGCB_LocationRsp_t pfnLocationRsp; // RSSI Location Rsp

} zclGeneral_AppCallbacks_t;

每个节点根据功能域的划分来选择对应的回调函数集的 类型(例如节点用到的是General功能域下的某些功能簇,则 使用zclGeneral_AppCallbacks_t类型来构建回调函数集),并 根据实际功能的需要来裁剪和自定义自己的回调函数集。

在完成回调函数集的构建之后,通过调用相应功能 域的注册函数来注册该功能域的回调函数集(如要注册 zclGeneral_AppCallbacks_t类型的回调函数集,则需要使用 相应的 zclGeneral_RegisterCmdCallbacks 函数)。

3.2.3 ZCL属性的注册

每个簇都有相应的一个或者多个属性,在Z-stack中, 簇属性由zclAttribute_t类型来表征。具体结构如下所示:

typedef struct

{

uintl6 attrId; // Attribute ID

uint8 dataType; // Data Type - defined in AF.h

uint8 accessControl; // Read/write - bit field

void *dataPtr; // Pointer to data field

} zclAttribute_t;

由于每个簇可能有多个属性,并且每个节点可以有多个功 能簇,因此,通过属性列表zclAttrRec_t类型来表征一个节 点所具有的属性集合。

typedef struct

{

uint16 clusterID; // Cluster ID

zclAttribute_t attr; // Attribute record

} zclAttrRec_t;

开发人员在构建了该应用节点的属性列表之后,通过zcl_ registerAttrList函数完成这些属性的注册。

3.2.4 ZCL层消息的注册

由于ZCL是一个中间层,其负责接收并初步处理的一些 消息需要上传至应用层来处理。为了实现这一功能,需要调用 zcl_registerForMsg函数来在应用层进行注册,确保经ZCL层 预加工的消息能够传达到应用层。

3.2.5其他注册

其他注册包括一般应用都需要的按键事件的注册、ZDO 层消息的注册[5]以及一些非HA规范节点的注册等。

3.3应用层逻辑的实现

应用层逻辑的开发与一般应用开发的区别,主要就是 使用ZCL层API来进行命令的发送,比如当触发开关按 键时,使用ZCL库的API来发送相应的命令zclGeneral_ SendOnOff_CmdOn,可以看到,在应用层只需写入这种标准 命令函数,协议栈会自动调用下层的函数库来进行相应的操作 并实现命令的发送。

另外还需要注意的一点是,在应用层的节点行为以及网 络层的参数设置上,也必须符合HA规范给出的限定,例如 PAN ID的设置、安全相关的一些秘钥的初始值设置以及终端 设备向父节点轮询的时间间隔等参数和行为的设定。

4结语

可以看到,通过在协议栈中引入ZCL层,可以大大简化 符合HA标准的ZigBee应用的开发:来自应用层的数据通过 ZCL层的封装处理后,实现了数据和命令格式的标准化;同样, 来自其他设备或节点的消息通过ZCL层的分析和提取,能够 将应用层敏感的命令和相关数据直接呈现给应用层,从而保 证应用层只需关注于其节点自身功能的实现,而将繁琐的标准 化通信任务交给下层来处理。

20211020_61702baf2afa0__基于Z

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭