答疑解惑区里面有人问这样的问题,我就把自己的理解发在这里吧。
在zigbee规范中,引入了profile, cluster的概念。具体说来,假设规范一个profile(可以理解成一套规定),这个profile用来规范智能家居领域的相关产品都要满足那些要求,那么home automation public profile就规定了智能家居都要做什么。当然了,你可以自己规范一个自己的profile,称为provite 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了,在这个cluster下面,要有以下命令:
#define COMMAND_LIGHTING_MOVE_TO_HUE 0x00 #define COMMAND_LIGHTING_MOVE_HUE 0x01 #define COMMAND_LIGHTING_STEP_HUE 0x02 #define COMMAND_LIGHTING_MOVE_TO_SATURATION 0x03 #define COMMAND_LIGHTING_MOVE_SATURATION 0x04 #define COMMAND_LIGHTING_STEP_SATURATION 0x05 #define COMMAND_LIGHTING_MOVE_TO_HUE_AND_SATURATION 0x06 #define COMMAND_LIGHTING_MOVE_TO_COLOR 0x07 #define COMMAND_LIGHTING_MOVE_COLOR 0x08 #define COMMAND_LIGHTING_STEP_COLOR 0x09 #define COMMAND_LIGHTING_MOVE_TO_COLOR_TEMPERATURE |