1、Profile
最上面的是剖面Profile,这里可以理解为领域,zigbee应用现有如下的几个领域:每个领域就是剖面Profile,都有一个Profile值的!
Home Automation的Profile为0x0104
Buiding Automation的Profile为0x0105
Light link的Profile应该为0xc05e,但是为了互通性,HA的0x0104同样作为ZLL的ProfileID,0xc05e作为一个副ProfileID使用
2、DeviceID
以前觉得DeviceID和ClusterID有隶属关系,其实不是了!DeviceID与ClusterID没有隶属关系!DeviceID是各种设备(传感器、控制器)在ZHA协议中被编订一个对应数值!客户端通过这个值来识别这个设备!
DeviceID在zstack里被zcl_ha.h文件、zcl_ll.h(light link)或zba.h(Building Automation)文件定义
3、ClusterID
一个ClusterID是一群AttributeID的集合!ClusterID是一个容器,容纳了许多AttributeID!他两是有隶属关系的!任何设备是通过ClusterID和AttributeID来描述设备的属性!
ClusterID在zstack里被zcl.h定义
4、AttributeSet
将相近的attribute集合到一个成为AttributeSet,每个AttributeSet有16个attributeID
这个集合Set就像中国行政中的地市,尽管存在着市管县,但是官方文件确明确表示我们是省/县/乡三级行政机构!故这个SetID没有在协议体现出来!
不过也有联系,AttributeID的十六进制的前三个数实为其所在的AttributeSet编码,比如0x0001其所在的Set编码为0x000,0x0011其所在的Set编码为0x001
同样从侧面反映出为啥一个Set最多只可包含16个attribute了!从0到F嘛!
5、AttributeID
AttributeID是每个设备的一项属性!比如把人看做一个设备,那么其身高,发型,籍贯等等都可以作为其一个Attribute,并编订一个ID来表示这个属性!客户端接收这个ID即知道这个是什么属性,表述何种信息!任何设备是通过ClusterID和AttributeID来描述设备的属性!
AttributeID在zstack里被zcl_hvac.h、zcl_lighting.h这样的文件定义
1
2
3
4
5
|
typedef
struct
{
uint16 clusterID;
// Real cluster ID
zclAttribute_t attr;
} zclAttrRec_t;
|
包含下
1
2
3
4
5
6
7
8
|
// Attribute record
typedef
struct
{
uint16 attrId;
// Attribute ID
uint8 dataType;
// Data Type - defined in AF.h
uint8 accessControl;
// Read/write - bit field
void
*dataPtr;
// Pointer to data field
} zclAttribute_t;
|