每个ZigBee设备都与一个特定模板相关联,可能是公共模板或私有模板。这些模板定义了设备的应用环境、设备类型以及用于设备间通信的簇。采用公共模板,可以确保不同供应商的设备在相同应用领域的互操作。

Technorati 标签: ZigBee Profile

    一个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的更多相关文章

  1. zigbee ---- profile 和 cluster

    在zigbee规范中,引入了profile, cluster的概念.具体说来,假设规范一个profile(可以理解成一套规定),这个profile用来规范智能家居领域的相关产品都要满足那些要求,那么h ...

  2. zigbee、profile、cluster、 endpoint、

    1.引用ZigBee联盟的说法 Profile: a collection of device descriptions, which together form a cooperative appl ...

  3. 【转】zigbee协议的多种profile

  4. 【转译】加入ZigBee联盟,共画物联网的未来

    Zigbee联盟是物联网全球革命的领导者,创造了随心控制的时代.Zigbee简化了无线产品的整合.加快了市场化,同时让那些希望引入高能效的无线控制的厂商,降低了成本和风险.我们的联盟成员在开放的全球环 ...

  5. [ZigBee] 16、Zigbee协议栈应用(二)——基于OSAL的无线控制LED闪烁分析(下)

    说在前面:上一篇介绍了无线LED闪烁实现的OSAL部分,本篇介绍如何实现无线数据收发及数据处理: 上一篇是用SI跟着流程查看源码,我个人认为以架构的思维去了解代码能让人更清晰 ::ZMain.c程序入 ...

  6. ZHA profile与ZLL profile的一个例子

    ZHA Coordinator 如何控制ZLL Light/Philips Hue Light 缩写: ZHA: ZigBee Home Automation profile ZLL:  ZigBee ...

  7. 「2014-5-31」Z-Stack - Modification of Zigbee Device Object for better network access management

    写一份赏心悦目的工程文档,是很困难的事情.若想写得完善,不仅得用对工具(use the right tools),注重文笔,还得投入大把时间,真心是一件难度颇高的事情.但,若是真写好了,也是善莫大焉: ...

  8. TI Zigbee Light Link 参考设计

    TI  Zigbee Light Link 参考设计 原文出处: http://processors.wiki.ti.com/index.php/Category:ZigBee_Light_Link ...

  9. ZigBee HA示例程序分析

    ZigBee协议栈中自带的HomeAutomation例程,虽然也是操作灯泡,但是,是通过ZCL来统一处理的,符合HA profile规范,互连互操作性较好.下面就简要分析以下ZCL的使用. 在任务数 ...

随机推荐

  1. Linux合并文件、去除重复行的命令

    Linux合并文件命令: awk '{printf("%s\n",$0)}' YQ-*101?.txt >  123.txt   linux去除重复行命令:cat YQ-10 ...

  2. js与C#之间相互调用的一些方法

    1.获得aspx客户端请求地址: <a src= 'http://<%=Request.Url.Host %><%= ResolveUrl("../PayCenter ...

  3. 15+ tar command usages with examples – Unix/Linux--reference

    reference :http://crybit.com/tar-command-usages-with-examples/ The ‘tar’ saves many files together i ...

  4. LeetCode48 Rotate Image

    题目: You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwis ...

  5. excel 批量替换换行符

    在excel批量替换换行符操作步骤: 全选需要查找换行符的范围 CTRL+H调出查找和替换 在查找内容内输入"ctrl+enter"两个组合键 点击查找全部即可. 在excel中输 ...

  6. H - Frequent values

    Problem F: Frequent values You are given a sequence of n integers a1 , a2 , ... , an in non-decreasi ...

  7. PostgreSQL异步客户端(并模拟redis 数据结构)

    以前为了不在游戏逻辑(对象属性)变更时修改数据库,就弄了个varchar字段来表示json,由服务器逻辑(读取到内存)去操作它. 但这对运维相当不友好,也不能做一些此Json数据里查询. 所以后面就用 ...

  8. Android 高级UI设计笔记16:ViewStub的应用

    1. ViewStub 在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局. 那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为 ...

  9. “ArcGIS数据应用和地图打印输出

    中国科学院计算技术研究所教育中心 关于开展“ArcGIS数据应用和地图打印输出” 培训班的通知 各相关单位: 随着信息化.网络化.数字化向纵深发展,互联网与空间地理信息系统相互交织,数字地球.“智慧地 ...

  10. 【Android 界面效果29】研究一下Android滑屏的功能的原理,及scrollTo和scrollBy两个方法

    Android中的滑屏功能的原理是很值得我们去研究的,在知道这两个原理之前,有必要先说说View的两个重要方法,它们就是scrollTo 和scrollBy. Android View视图是没有边界的 ...