ZigBee profile
每个ZigBee设备都与一个特定模板相关联,可能是公共模板或私有模板。这些模板定义了设备的应用环境、设备类型以及用于设备间通信的簇。采用公共模板,可以确保不同供应商的设备在相同应用领域的互操作。
一个ZigBee设备中,可以定义多个应用对象,每个对象通过一个端点连接到ZigBee堆栈。不同ZigBee设备之间的通讯,具体下来,归根为应用程序之间端点的通讯,这由一种称之为簇的数据结构来承载。
端点定义描述:endPoint为端点号,0号端点为ZDO保留使用,用于配置整个ZigBee设备。255号端点为广播端点,241~254为保留端点,其他为用户自定义端点。

其中,profile ID位于SimpleDescriptionFormat_t中,结构如下:

簇分为输入簇和输出簇,对于不同的命令方向,在绑定时需要注意。簇是一组命令代码的数组,每一个条目代表一个命令。两个设备间的簇要相互通信的话,方向要不同,簇ID要一致。
端点(应用层)通过注册使用应用支持子层(APS)提供的服务,APS通过网络层和安全服务层与端点相连接,并为数据传送、安全和绑定提供服务。APS使用网络层(NWK)提供的服务,NWK负责设备到设备的通讯,并负责网络中设备初始化、消息路由以及网络发现。MAC层负责相邻设备之间单跳数据通讯,它负责建立与网络的同步,支持关联和去关联以及MAC层安全,提供两个设备之间的可靠连接。
ZigBee Cluster Library
ZigBee Cluster Library(又称为Zigbee簇群库).一个族群就是一个容器,其中
使用时,先通过zclHA_Init函数,将zcl应用的端点设置为应用程序的端点,这样的话,发向应用程序的端点数据都会先经过ZCL应用。
然后,注册ZCL通用功能簇库回调函数(zclGeneral_RegisterCmdCallbacks),从应用程序的指定端点来的数据,如果符合ZCL通用请求,会调用相应的回调函数来处理。下图为ZCL通用profile的回调函数表,指明了对应命令的响应函数。在实际应用中,根据需要进行实现,其他未实现的设置为NULL即可。 
例如下图,只实现了前4个命令的响应函数。
有了命令响应函数,簇需要操作的内容为内部的属性,接着,需要注册应用的属性列表(zcl_registerAttrList),每个属性由两部分组成,属性附属的簇ID,属性具体的值。一个簇可以对于多个属性值,这种情况下,属性需要有属性ID来区分。

注册完属性列表后,ZCL应用基本上初始化完成了。那些非ZCL规定的命令,就需要应用程序来处理了,调用
zcl_registerForMsg来注册非ZCL命令处理事件,RegisterForKeys来注册按键时间,ZDO_RegisterForZDOMsg来注册ZDO的命令请求,afRegister注册一个应用终端。
ZCL消息的处理,在SYS_EVENT_MSG下的ZCL_INCOMING_MSG里面,对不同的ZCL命令请求,进行不同的响应。
有以下ZCL命令
Read attributes
Read attributes response
Write attributes
Write attributes undivided
Write attributes response
Write attributes no response
Configure reporting
Configure reporting response
Read reporting configuration
Read reporting configuration response
Report attributes
Default response
Discover attributes
Discover attributes response
总结ZCL的使用
创建一个ZCL应用,需要建立四个模块,xxxx为app名称。
zcl_xxxx.h 定义应用和应用的终端
zcl_xxxx.c
zcl_xxxx_data.c 数据定义和声明,包括应用支持的所有簇属性
OSAL_xxxx.c 应用与OSAL系统的接口
ZigBee安全机制
安全机制由安全服务层提供,系统的整体安全性由profle定义。每一层、MAC、网络或则应用层都可以被保护,它们可以分享安全密钥。SSP是通过ZDO进行初始化和配置。
标准安全 高度安全
ZCL通用簇库
ZigBee profile的更多相关文章
- zigbee ---- profile 和 cluster
在zigbee规范中,引入了profile, cluster的概念.具体说来,假设规范一个profile(可以理解成一套规定),这个profile用来规范智能家居领域的相关产品都要满足那些要求,那么h ...
- zigbee、profile、cluster、 endpoint、
1.引用ZigBee联盟的说法 Profile: a collection of device descriptions, which together form a cooperative appl ...
- 【转】zigbee协议的多种profile
- 【转译】加入ZigBee联盟,共画物联网的未来
Zigbee联盟是物联网全球革命的领导者,创造了随心控制的时代.Zigbee简化了无线产品的整合.加快了市场化,同时让那些希望引入高能效的无线控制的厂商,降低了成本和风险.我们的联盟成员在开放的全球环 ...
- [ZigBee] 16、Zigbee协议栈应用(二)——基于OSAL的无线控制LED闪烁分析(下)
说在前面:上一篇介绍了无线LED闪烁实现的OSAL部分,本篇介绍如何实现无线数据收发及数据处理: 上一篇是用SI跟着流程查看源码,我个人认为以架构的思维去了解代码能让人更清晰 ::ZMain.c程序入 ...
- ZHA profile与ZLL profile的一个例子
ZHA Coordinator 如何控制ZLL Light/Philips Hue Light 缩写: ZHA: ZigBee Home Automation profile ZLL: ZigBee ...
- 「2014-5-31」Z-Stack - Modification of Zigbee Device Object for better network access management
写一份赏心悦目的工程文档,是很困难的事情.若想写得完善,不仅得用对工具(use the right tools),注重文笔,还得投入大把时间,真心是一件难度颇高的事情.但,若是真写好了,也是善莫大焉: ...
- TI Zigbee Light Link 参考设计
TI Zigbee Light Link 参考设计 原文出处: http://processors.wiki.ti.com/index.php/Category:ZigBee_Light_Link ...
- ZigBee HA示例程序分析
ZigBee协议栈中自带的HomeAutomation例程,虽然也是操作灯泡,但是,是通过ZCL来统一处理的,符合HA profile规范,互连互操作性较好.下面就简要分析以下ZCL的使用. 在任务数 ...
随机推荐
- Linux 2.4调度系统分析--转
http://www.ibm.com/developerworks/cn/linux/kernel/l-k24sch/index.html 杨沙洲 (pubb@163.net)国防科技大学计算机学院 ...
- QQ会员AMS平台PHP7升级实践
作者:徐汉彬链接:https://zhuanlan.zhihu.com/p/21493018来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. QQ会员活动运营平台(AMS ...
- web开发下的各种下载方法
利用TransmitFile方法,解决Response.BinaryWrite下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题. 代码如下: Response.Co ...
- 使用sharepreferce记录数组数据
使用sharepreferce记录数组数据 /** * * sharepreference纪录news数据 * * */ private static final String name=" ...
- 跨平台高效率Lua网络库 ( 同步形式的API ,底层是异步非阻塞)
Joynet 项目地址:https://github.com/IronsDu/Joynet 介绍 high performance network library for lua, based on ...
- react-redux 学习笔记
react 是 view 层的一个框架,负责展示数据:redux 控制数据流动,把数据存在唯一的 store 里,通过 action 来触发事件,reducer 来根据事件处理数据. redux 在通 ...
- wamp修改多站点配置
本文介绍如果在wamp中修改配置支持多站点. 第1步,修改httpd.conf,增加8080端口的监听 #Listen 12.34.56.78:80Listen 80Listen 8080 第2步,修 ...
- 【AsyncTask整理 2】 AsyncTask方法代码演示
Android SDK为我们提供了一个后台任务的处理工具AsyncTask.AsyncTask就是一个封装过的后台任务类顾名思义就是异步任务,方便我们维护,Android开发网提示这样的好处可以解决一 ...
- onInterceptTouchEvent和onTouchEvent举例分析
首先自定义三个组件,其关系是:MyLayout在最上面,MySubLayout在MyLayout下面,MyView在MySubLayout下面. 一个点击事件进来,首先是DOWN动作,先是MyLayo ...
- iOS block简单传值
(1)声明block变量并设置返回值类型 typedef int(^MYBlock)(NSString *); @property (nonatomic, copy) MYBlock block; ( ...