当前位置:首页 > 物联网学习笔记 > 正文

zigbee术语之属性群集设备描述端点簇

1.属性
属性 Attribute 是一个反映物理数量或状态的数据值,比如开关值(On/Off),温度值、百分比等。

2.群集
群集 Cluster 是包含一个或多个属性(attribute)的群组。简单的说,群集就是属性的集合。每个群集都被分配一个唯一的群集 ID且每个群集最多有 65536 个属性。

3.设备描述
设备描述 Device Description 是指一个大型目标应用的一部分,包括一个或多个群集,并且指定群集是输入还是输出。描述符有:简单描述符、端点描述符等。

4.端点
端点(endpoint):一个八位的数,用来定义不同的应用。一个设备包含了最多240个应用程序对象,每个应用程序对象在OSAL中对应了一个任务,当网络层接收到信息以后如何决定将此信息传递给哪个任务呢?ENDPOINT决定了传递方向。其中endpoint 0是每个设备都必须具有的,是用于寻址设备配置文件,是ZDO和APS之间的一个重要接口。endpoint 0xff是用在广播时,寻址所有活动的端点(我还没有实践过)。在两个设备进行无线通信时,端点号必须相同,否则数据无法送达目的地址。

看个图,更明白:
zigbee术语

5.簇
簇(cluster):就是属性的集合。当一个任务接收到消息(这里所说的消息是指无线网络之中的数据)之后,一定会对消息进行处理。但是我们的应用肯定不会盲目的处理所有消息,消息一定会被分门别类。“簇”代表了消息的类型,为与相同簇的消息具有相同的类型,而这个类型可以被用户自定义。像我们如果要控制两组灯的开关,这时我们可以分配两个不同的CLUSTERID来区分,实现对不同灯的控制。注意接收设备的输入簇需与发送设备的输出簇相同。

在SimpleApp的例子中定义了一个输出簇和一个输入簇:在SimpleApp.h中

#define TOGGLE_LIGHT_CMD_ID 1

这个是灯状态切换的一个命令,也可以说是一个串或者簇,ID为1.作为灯设备来说,该命令是输入命令,所以定义在输入命令列表中:在文件SimpleController.c

const cId_t zb_InCmdList[NUM_IN_CMD_CONTROLLER] =
{
TOGGLE_LIGHT_CMD_ID
};

该设备的简单描述符定义为:
const SimpleDescriptionFormat_t zb_SimpleDesc =
{
MY_ENDPOINT_ID, // 端点(2)
MY_PROFILE_ID, // Profile ID 0x0F10
DEV_ID_CONTROLLER, // 设备ID
DEVICE_VERSION_CONTROLLER, // 设备版本
0, // 保留
NUM_IN_CMD_CONTROLLER, // 输入命令数量(1)
(cId_t *) zb_InCmdList, // 输入命令列表
NUM_OUT_CMD_CONTROLLER, // 输出命令数量(2)
(cId_t *) NULL // 输出命令列表(空)
};

作为开关设备,该命令为输出命令,所以定义在输出命令列表中:

const cId_t zb_OutCmdList[NUM_OUT_CMD_SWITCH] =
{
TOGGLE_LIGHT_CMD_ID
};

该设备的简单描述符定义为:

const SimpleDescriptionFormat_t zb_SimpleDesc =
{

MY_ENDPOINT_ID, // 端点(2)
MY_PROFILE_ID, // Profile ID
DEV_ID_SWITCH, // 设备ID
DEVICE_VERSION_SWITCH, // 设备版本
0, // 保留
NUM_IN_CMD_SWITCH, // 输入命令数量(0)
(cId_t *) NULL, //输入命令列表(空)
NUM_OUT_CMD_SWITCH, // 输出命令数量(1)
(cId_t *) zb_OutCmdList // 输出命令列表
};

标签:
上一篇: 下一篇:

报歉!评论已关闭。