在zigbee规范中,引入了profile, cluster的概念。具体说来,假设规范一个profile(可以理解成一套规定),这个profile用来规范智能家居领域的相关产品都要满足那些要求,那么home automation public profile就规定了智能家居都要做什么。当然了,你可以自己规范一个自己的profile,称为private profile,而zigbee联盟则已经规范了一些profile,比如home automation,smart energy,building automation等,一个public profile也规定了profile 的ID,比如智能家居就规定是0x104。协议栈本身也有一个profile,就是Zigbee Device Profile,也就是ZDP了,这里规范了一个zigbee节点都要具备那些功能,比如路由能力啊,网络发现能力啊,各个协议层都要做什么啊,如此。

在一个profile的规范下,又提出了cluster的概念,这个cluster要理解成一个大方向下的一个特定对象,比如智能家居下的一个调光器,操作这个调光器就需要一些命令,比如变亮,变暗,关灯,开灯这些,另外,这个调光器也会有一个attribute,也就属性,比如当前的亮度啊,由亮变暗的过程经历多长时间啊(一下子变亮视觉感觉没有渐变效果好喔)。对于home
automation 的public profile已经规定了调光器应该有哪些cluster,如:Color Control
Cluster,Ballast
Configuration Cluster 等。然后,profile也规范了color control cluster
的ID,这个就是clusterID了。

总结说来,Profile规范了应该包括哪些cluster,一个cluster会有一个ID,在一个cluster下又会有很多command,也会有很多attibute;在一个cluster下面command 和attribute的ID要唯一,不同的cluster下可以重复,不同的profile下clusterID也可以重复。

再延伸一点儿,zigbee联盟在协议栈之外又增加了一部分操作cluster的函数,那就是zigbee
cluster library (ZCL),这里边已经以源代码的形式提供了操作联盟规范的那些public
profile下的函数,主要功能包括一些command的transmit,response,indicate以及confirm等,还有读写attribute的一些操作函数。所以在理解了ZCL的工作机制基础上,通过调用ZCL的函数实际上会让应用程序设计变得简单(但是学习ZCL倒是很麻烦)。
    假设我们要控制一个LED,有一个远程节点(发命令控制led
),一个本地节点(接受命令并真正的让led亮起来),那么如果引入ZCL的概念,你可以设置这个操作led的事情是一个cluster,其下包含三个命令,一个open,一个close,一个read

attribute,灯还有一个attribute,那就是当前的status,远程节点可以用ZCL的函数发open和close命令,也可以随时发一个read
attibute命令读取本地节点led
的状态。这么做的好处是不需要再自己设计一个规定(比如:一个数据包的第几个字节表示什么。。。),而是直接调用ZCL即可实现,这对于command和attribute数量很少的应用不见得有多大好处,但是当command和attribute数量很多的时候,引入ZCL会让事情变得简单。

最新文章

  1. 使用win10远程控制ubuntu16.04
  2. browserify使用手册
  3. NeHe OpenGL教程 第八课:混合
  4. (转)android Fragments详解四:管理fragment
  5. java给图片加水印代码
  6. DataGridView添加另外一个控件。
  7. ios创建的sqlite数据库文件如何从ios模拟器中导出
  8. ubuntu 包维护
  9. C#中大List的内存分配
  10. iOS网络编程笔记——XML文档解析
  11. js之正则的坑
  12. MySQL按周统计 WEEK 实例
  13. Vue的双向数据绑定
  14. 如何将极客时间课程制作成kindle电子书
  15. Mac 下 Gradle 环境配置
  16. 1、 LwIP协议栈规范翻译——简介
  17. 常用笔记:MySQL
  18. Ubuntu16.04安装NVIDIA显卡驱动
  19. SQL Prompt 智能提示插件
  20. Android 混合式开发AppCan介绍

热门文章

  1. HDU暑假多校第八场J-Taotao Picks Apples
  2. Spark Streaming实时处理应用
  3. c/c++指针传参
  4. LeetCode:24. Swap Nodes in Pairs(Medium)
  5. nginx error_page
  6. Sql Server 2008 R2数据库中插入中文变成了问号
  7. 部署:阿里云ECS部署Docker CE
  8. hadoop中的方法的作用
  9. 【多校联合】(HDU6043)KazaQ's Socks
  10. 多个excel合并(excel2007)