每个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. 面试感悟----一名3年工作经验的程序员应该具备的技能 JAVA 必读书

    http://www.cnblogs.com/xrq730/p/5260294.html#3470685 http://www.cnblogs.com/xrq730/p/4994545.html

  2. java中set和get方法的理解

    对于JAVA初学者来说,set和get这两个方法似乎已经很熟悉了,这两个方法是JAVA变成中的基本用法,也是出现频率相当高的两个方法. 为了让JAVA初学者能更好的理解这两个方法的使用和意义,今天笔者 ...

  3. No Entertainment!

    今天决定去打印一个“No Entertainment”的横幅,贴在电脑的旁边.这其实是很久以前的事了,却搁浅到了现在.也正因为如此,今天想起来也觉得格外刻不容缓,内心好似义愤填膺,便写下这愤慨的独白. ...

  4. java笔记 chapter1 java是什么,能干什么,有什么,特点,开发环境

    一,java是什么 二,java能干什么 三,java有什么 四,java的特点 五,java的三大特性:虚拟机,垃圾回收和代码安全 六,构建JSE开发环境:下载安装jdk和配置环境变量 七,编写并运 ...

  5. [xPlugins] 开发中常用富文本编辑器介绍

    富文本编辑器学习,常见富文本编辑器有: CKeditor(FCkeditor).UEditor(百度推出的).NicEdit.KindEditor CKEditor 即 FCKEditor FCKed ...

  6. 【阿里云产品公测】离线归档OAS,再也不用担心备份空间了

    [阿里云产品公测]离线归档OAS,再也不用担心备份空间了 作者:阿里云用户莫须有3i 1 起步  1.1 初识OAS  啥是OAS,请看官方说明: 引用: 开放归档服务(Open Archive Se ...

  7. Java Script基础(二) 基本语法

    一.变量的声明和使用 JavaScript是一种弱类型的语言,没有明确的数据类型,在声明变量时,不需要指定变量的类型,变量的类型由赋给变量的值决定. 变量声明的语法: var 变量名; 示例: var ...

  8. web前端开发(3)

    css 类命名使用骆驼命名法,可以与划线法结合使用. 骆驼命名法用于区别单词,划线命名用于表达从属关系. 尽量不要使用子选择器,否则容易引起冲突隐患. css可以分为 base.common.page ...

  9. 关于VIM在Win10下的无意义折腾

    这两天和VIM较上劲了,总结下来其实是极无意义的折腾,浪费了很多宝贵的时间! 事情是这样的,无意中发现vim在Win10的控制台窗口无参数打开时不显示那个“乌干达儿童”的界面(其实就是:intro的内 ...

  10. C#之ArrayList

    using System.Collections; 新建: ArrayList list = new ArrayList(); 添加元素: int a = 1; list.Add(a); 遍历: fo ...