refer to ZigBee_Cluster_Library_Public_download_version
1.zcl 分为几个不同的功能领域,
每个领域霸占一部分clusterid

比如通用领域有如下的clusterid




........
在协议栈的zcl.h中有对这些clusterid定义,对应上面的文档,但是不完整

  1. // General Clusters
  2. #define ZCL_CLUSTER_ID_GEN_BASIC                             0x0000
  3. #define ZCL_CLUSTER_ID_GEN_POWER_CFG                         0x0001
  4. #define ZCL_CLUSTER_ID_GEN_DEVICE_TEMP_CONFIG                0x0002
  5. #define ZCL_CLUSTER_ID_GEN_IDENTIFY                          0x0003
  6. #define ZCL_CLUSTER_ID_GEN_GROUPS                            0x0004
  7. #define ZCL_CLUSTER_ID_GEN_SCENES                            0x0005
  8. #define ZCL_CLUSTER_ID_GEN_ON_OFF                            0x0006
  9. #define ZCL_CLUSTER_ID_GEN_ON_OFF_SWITCH_CONFIG              0x0007
  10. #define ZCL_CLUSTER_ID_GEN_LEVEL_CONTROL                     0x0008
  11. #define ZCL_CLUSTER_ID_GEN_ALARMS                            0x0009
  12. #define ZCL_CLUSTER_ID_GEN_TIME                              0x000A
  13. #define ZCL_CLUSTER_ID_GEN_LOCATION                          0x000B
  14. #define ZCL_CLUSTER_ID_GEN_KEY_ESTABLISHMENT                 0x0800
  15. // Closures Clusters
  16. #define ZCL_CLUSTER_ID_CLOSURES_SHADE_CONFIG                 0x0100
  17. // HVAC Clusters
  18. #define ZCL_CLUSTER_ID_HVAC_PUMP_CONFIG_CONTROL              0x0200
  19. #define ZCL_CLUSTER_ID_HAVC_THERMOSTAT                       0x0201
  20. #define ZCL_CLUSTER_ID_HAVC_FAN_CONTROL                      0x0202
  21. #define ZCL_CLUSTER_ID_HAVC_DIHUMIDIFICATION_CONTROL         0x0203
  22. #define ZCL_CLUSTER_ID_HAVC_USER_INTERFACE_CONFIG            0x0204
  23. // Lighting Clusters
  24. #define ZCL_CLUSTER_ID_LIGHTING_COLOR_CONTROL                0x0300
  25. #define ZCL_CLUSTER_ID_LIGHTING_BALLAST_CONFIG               0x0301
  26. // Measurement and Sensing Clusters
  27. #define ZCL_CLUSTER_ID_MS_ILLUMINANCE_MEASUREMENT            0x0400
  28. #define ZCL_CLUSTER_ID_MS_ILLUMINANCE_LEVEL_SENSING_CONFIG   0x0401
  29. #define ZCL_CLUSTER_ID_MS_TEMPERATURE_MEASUREMENT            0x0402
  30. #define ZCL_CLUSTER_ID_MS_PRESSURE_MEASUREMENT               0x0403
  31. #define ZCL_CLUSTER_ID_MS_FLOW_MEASUREMENT                   0x0404
  32. #define ZCL_CLUSTER_ID_MS_RELATIVE_HUMIDITY                  0x0405
  33. #define ZCL_CLUSTER_ID_MS_OCCUPANCY_SENSING                  0x0406
  34. // Security and Safety (SS) Clusters
  35. #define ZCL_CLUSTER_ID_SS_IAS_ZONE                           0x0500
  36. #define ZCL_CLUSTER_ID_SS_IAS_ACE                            0x0501
  37. #define ZCL_CLUSTER_ID_SS_IAS_WD                             0x0502
  38. // Protocol Interfaces
  39. #define ZCL_CLUSTER_ID_PI_GENERIC_TUNNEL                     0x0600
  40. #define ZCL_CLUSTER_ID_PI_BACNET_PROTOCOL_TUNNEL             0x0601
  41. #define ZCL_CLUSTER_ID_PI_11073_PROTOCOL_TUNNEL              0x0614
  42. // Advanced Metering Initiative (SE) Clusters
  43. #define ZCL_CLUSTER_ID_SE_PRICING                            0x0700
  44. #define ZCL_CLUSTER_ID_SE_LOAD_CONTROL                       0x0701
  45. #define ZCL_CLUSTER_ID_SE_SIMPLE_METERING                    0x0702
  46. #define ZCL_CLUSTER_ID_SE_MESSAGE                            0x0703
  47. #define ZCL_CLUSTER_ID_SE_REGISTRATION                       0x0704
  48. #define ZCL_CLUSTER_ID_SE_SE_TUNNELING                       0x0705
  49. #define ZCL_CLUSTER_ID_SE_PRE_PAYMENT                        0x0706

2.每个clusterid由一些属性集合和命令集合组成
比如
general领域的basic clusterid就有以下这么多的属性(分为了两部分,基本设备信息和设备配置信息)


general领域的basic clusterid还有1个命令

clusterid的属性和命令在协议栈的实现,比如general领域的basic clusterid,位于zcl_general.h

  1. /********************************/
  2. /*** Basic Cluster Attributes ***/
  3. /********************************/
  4. // Basic Device Information
  5. #define ATTRID_BASIC_ZCL_VERSION                          0x0000
  6. #define ATTRID_BASIC_APPL_VERSION                         0x0001
  7. #define ATTRID_BASIC_STACK_VERSION                        0x0002
  8. #define ATTRID_BASIC_HW_VERSION                           0x0003
  9. #define ATTRID_BASIC_MANUFACTURER_NAME                    0x0004
  10. #define ATTRID_BASIC_MODEL_ID                             0x0005
  11. #define ATTRID_BASIC_DATE_CODE                            0x0006
  12. #define ATTRID_BASIC_POWER_SOURCE                         0x0007
  13. // Basic Device Settings
  14. #define ATTRID_BASIC_LOCATION_DESC                        0x0010
  15. #define ATTRID_BASIC_PHYSICAL_ENV                         0x0011
  16. #define ATTRID_BASIC_DEVICE_ENABLED                       0x0012
  17. #define ATTRID_BASIC_ALARM_MASK                           0x0013
  18. ...
  19. /******************************/
  20. /*** Basic Cluster Commands ***/
  21. /******************************/
  22. #define COMMAND_BASIC_RESET_FACT_DEFAULT                  0x00
  23. <span style="font-family:SimSun;">
  24. </span>

各个领域的clusterid和属性分别位于
zcl_general.h-通用
zcl_closures.h-室内or 门禁?
zcl_hvac.h-空调
zcl_lighting.h-照明
zcl_ms.h-Measurements and Sensing
zcl_ss.h
zcl_pi.h

有了clusterid的属性的宏定义,还需对属性配置(赋值)
比如,zcl_samplelight.c中对clusterid ZCL_CLUSTER_ID_GEN_BASIC的各个属性进行的配置:

  1. CONST zclAttrRec_t zclSampleLight_Attrs[SAMPLELIGHT_MAX_ATTRIBUTES] =
  2. {
  3. // *** General Basic Cluster Attributes ***
  4. {
  5. ZCL_CLUSTER_ID_GEN_BASIC,             // Cluster IDs - defined in the foundation (ie. zcl.h)
  6. {  // Attribute record
  7. ATTRID_BASIC_HW_VERSION,            // Attribute ID - Found in Cluster Library header (ie. zcl_general.h)
  8. ZCL_DATATYPE_UINT8,                 // Data Type - found in zcl.h
  9. ACCESS_CONTROL_READ,                // Variable access control - found in zcl.h
  10. (void *)&zclSampleLight_HWRevision  // Pointer to attribute variable
  11. }
  12. },
  13. {
  14. ZCL_CLUSTER_ID_GEN_BASIC,
  15. { // Attribute record
  16. ATTRID_BASIC_ZCL_VERSION,
  17. ZCL_DATATYPE_UINT8,
  18. ACCESS_CONTROL_READ,
  19. (void *)&zclSampleLight_ZCLVersion
  20. }
  21. },
  22. {
  23. ZCL_CLUSTER_ID_GEN_BASIC,
  24. { // Attribute record
  25. ATTRID_BASIC_MANUFACTURER_NAME,
  26. ZCL_DATATYPE_CHAR_STR,
  27. ACCESS_CONTROL_READ,
  28. (void *)zclSampleLight_ManufacturerName
  29. }
  30. },
  31. {
  32. ZCL_CLUSTER_ID_GEN_BASIC,
  33. { // Attribute record
  34. ATTRID_BASIC_MODEL_ID,
  35. ZCL_DATATYPE_CHAR_STR,
  36. ACCESS_CONTROL_READ,
  37. (void *)zclSampleLight_ModelId
  38. }
  39. },
  40. {
  41. ZCL_CLUSTER_ID_GEN_BASIC,
  42. { // Attribute record
  43. ATTRID_BASIC_DATE_CODE,
  44. ZCL_DATATYPE_CHAR_STR,
  45. ACCESS_CONTROL_READ,
  46. (void *)zclSampleLight_DateCode
  47. }
  48. },
  49. {
  50. ZCL_CLUSTER_ID_GEN_BASIC,
  51. { // Attribute record
  52. ATTRID_BASIC_POWER_SOURCE,
  53. ZCL_DATATYPE_UINT8,
  54. ACCESS_CONTROL_READ,
  55. (void *)&zclSampleLight_PowerSource
  56. }
  57. },
  58. {
  59. ZCL_CLUSTER_ID_GEN_BASIC,
  60. { // Attribute record
  61. ATTRID_BASIC_LOCATION_DESC,
  62. ZCL_DATATYPE_CHAR_STR,
  63. (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
  64. (void *)zclSampleLight_LocationDescription
  65. }
  66. },
  67. {
  68. ZCL_CLUSTER_ID_GEN_BASIC,
  69. { // Attribute record
  70. ATTRID_BASIC_PHYSICAL_ENV,
  71. ZCL_DATATYPE_UINT8,
  72. (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
  73. (void *)&zclSampleLight_PhysicalEnvironment
  74. }
  75. },
  76. {
  77. ZCL_CLUSTER_ID_GEN_BASIC,
  78. { // Attribute record
  79. ATTRID_BASIC_DEVICE_ENABLED,
  80. ZCL_DATATYPE_BOOLEAN,
  81. (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
  82. (void *)&zclSampleLight_DeviceEnable
  83. }
  84. },
  85. // *** Identify Cluster Attribute ***
  86. {
  87. ZCL_CLUSTER_ID_GEN_IDENTIFY,
  88. { // Attribute record
  89. ATTRID_IDENTIFY_TIME,
  90. ZCL_DATATYPE_UINT16,
  91. (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
  92. (void *)&zclSampleLight_IdentifyTime
  93. }
  94. },
  95. // *** On/Off Cluster Attributes ***
  96. {
  97. ZCL_CLUSTER_ID_GEN_ON_OFF,
  98. { // Attribute record
  99. ATTRID_ON_OFF,
  100. ZCL_DATATYPE_UINT8,
  101. ACCESS_CONTROL_READ,
  102. (void *)&zclSampleLight_OnOff
  103. }
  104. },
  105. }

3.除了clusterid的专有命令之外,还有部分通用命令,比如读取clusterid的某个属性,


在协议栈的实现,位于zcl.h

  1. /*** Foundation Command IDs ***/
  2. #define ZCL_CMD_READ                                    0x00
  3. #define ZCL_CMD_READ_RSP                                0x01
  4. #define ZCL_CMD_WRITE                                   0x02
  5. #define ZCL_CMD_WRITE_UNDIVIDED                         0x03
  6. #define ZCL_CMD_WRITE_RSP                               0x04
  7. #define ZCL_CMD_WRITE_NO_RSP                            0x05
  8. #define ZCL_CMD_CONFIG_REPORT                           0x06
  9. #define ZCL_CMD_CONFIG_REPORT_RSP                       0x07
  10. #define ZCL_CMD_READ_REPORT_CFG                         0x08
  11. #define ZCL_CMD_READ_REPORT_CFG_RSP                     0x09
  12. #define ZCL_CMD_REPORT                                  0x0a
  13. #define ZCL_CMD_DEFAULT_RSP                             0x0b
  14. #define ZCL_CMD_DISCOVER                                0x0c
  15. #define ZCL_CMD_DISCOVER_RSP                            0x0d
  16. #define ZCL_CMD_MAX                                     ZCL_CMD_DISCOVER_RSP

zigbee zcl规范及其协议栈实现1相关推荐

  1. zigbee zcl规范及其协议栈实现3 读取服务器端属性值

    zigbee zcl规范及其协议栈实现2   中有介绍 对通用命令的处理,按照那个思路和信息流程添加读取服务器端属性值的功能 客户端samplesw想要知道与自己的12号端点SAMPLESW_ENDP ...

  2. (转载)ZigBee zcl规范及其协议栈实现1

    zigbee zcl规范及其协议栈实现1 http://www.cnblogs.com/-song/archive/2013/03/16/3331818.html refer to ZigBee_Cl ...

  3. (转载)zigbee zcl规范及其协议栈实现2

    zigbee zcl规范及其协议栈实现2   中有介绍 对通用命令的处理,按照那个思路和信息流程添加读取服务器端属性值的功能 客户端samplesw想要知道与自己的12号端点SAMPLESW_ENDP ...

  4. zigbee zcl规范及其协议栈实现2

    对通用命令的处理: 对zcl的通用命令的响应,zcl自己已经实现,比如读取某个clusterid的某个属性值,应用只需将这个属性设置好即可, 通用命令包括,zcl.h /*** Foundation ...

  5. ZigBee 3.0理论教程-通用-1-09:ZCL规范与Cluster

    [源码.文档.软件.硬件.技术交流.技术支持,入口见文末] [所有相关IDE.SDK和例程源码均可从群文件免费获取,免安装,解压即用] 持续更新中,欢迎关注! 一.ZCL规范 (待补充) 二.Clus ...

  6. 【ember zigbee】序章:协议栈相关文档学习笔记

    原文地址:https://blog.csdn.net/tainjau/article/details/90648114 文章目录 写在前面 一.材料出处 二.文档解析 2.1.EZSP Protoco ...

  7. 《安富莱嵌入式周报》第310期:集成大语言模型的开源调试器ChatDBG, 多功能开源计算器,M7内核航空航天芯片评估板, Zigbee PRO规范

    周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Pow ...

  8. ZigBee无线传感器的网络协议栈

    小结: Z-Stack协议栈 = OSAL操作系统 + CC2530硬件模块 + AF无线网络应用 协议定义的是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据收发;协议栈是协议的具体实现 ...

  9. 【Zigbee】Zigbee ZCL report command 相关翻译

    #ZIGBEE CLUSTER LIBRARY SPECIFICATION #Chapter 2 Foundation Specification (基础规范) ##2.4 General Comma ...

最新文章

  1. 什么是POM maven
  2. Andorid SQLite数据库开发基础教程(2)
  3. ADB 无线连接设备
  4. 深入c#的string类
  5. 关于SWT/JFace中其他常用的事件
  6. 添加组合索引时,做相等运算字段应该放在最前面
  7. Java面试之设计模式七大原则
  8. java字符串构造函数的应用_构造函数中的参数0需要找不到类型为'java.lang.String'的bean...
  9. Js跨域解决方法总结
  10. Java操作Linuxshell并且获取返回值
  11. matlab 一维 fft,matlab - 一维信号的频谱分析(FFT等) - 堆栈内存溢出
  12. CF1151FSonya and Informatics
  13. 极速信使【IOS最强大的局域网聊天软件】
  14. ERROR: sdl2 requested but not found
  15. Tapestry学习4
  16. 洛谷 1144 最短路计数 bfs
  17. 仿xp画板、画图重绘、五子棋总结
  18. 专家:大数据正成为促进经济转型新动能
  19. 如何基于阿里的OneData理论进行数据仓库建设
  20. 即有集团:品牌化运作成为集团发展“新基因”

热门文章

  1. 在网站上就能直接实现视频剪辑? #Runway
  2. Windows程序设计作业1
  3. 计算机模拟与生态工程,生态工程学导论
  4. 学习韩顺平老师java io 笔记整理
  5. 领导提拔你的原因,只有这点最真实
  6. CDR和DMG以及PKG的格式的区别
  7. 【启动-机器学习】基于Keras的 准确率从10%到99%的手写体识别案例的优化
  8. 跟我学,你的服务器安全吗?第三篇----apache安全篇
  9. 440Hz窄带(5Hz)声控开关原理图
  10. 在Microsoft Edge中选择了“始终允许在关联的应用中打开此类链接”,如何取消关联?