1.引用ZigBee联盟的说法
Profile: a collection of device descriptions, which together form a cooperative
application. (配置文件:共同促成交互式应用的多种设备描述项的集合。)
ZigBee devices describe themselves using descriptor data structures. The actual data
contained in these descriptors is defined in the individual device descriptions.
There are five descriptors: node, node power, simple, complex and user.(ZigBee
设备以描述项数据结构刻画自己,包含在这些描述项内部的具体数据定义在该设备描述项中。
有5种描述项:节点,节点电源,简化,复杂和用户。)
2.我们的观点
Profile是对逻辑设备及其接口的描述集合,是面向某个应用类别的公约、准则。
Descriptor是为分布式应用提供的描述项,多种描述项共同组成描述集合Profile。它
根据应用必须处理的数据包和必须执行的操作来描述分布式应用。
总之,配置文件使得ZigBee 设备可以互操作。ZigBee 联盟已经定义了很多标准的配置
文件,比如远程控制开关配置文件和光传感器配置文件等。任何遵循某一标准配置文件的节
点都可以与其他实现相同配置文件的节点进行互操作。
【相关问答】
Guest:
我看协议上说一个温度计节点和一个炉子节点构成一个profile啊!所以我觉得实现一定功
能的几个节点的集合就是一个profile?
ZigBee会友:
几个节点的集合和profile不是在一个层面上说的。profile是面向某个应用,解决一系列事
务的公约,是对逻辑设备及其接口关系的描述集合。任何遵循这一描述集合的节点之间都可
以交互工作(只要双方可以通信)。例如:依据加热应用的条例规定,一个节点上的温度调
节器可以和另一个节点上的加热炉交互工作。
Guest:
device description、device profile和profile有什么区别啊?!
ZigBee会友:
description 是理论性描述集合profile中的具体事项,device profile是profile对具体
device的有关规定和描述项,目前profile中有5种描述项。
Guest:
那么对于zigbee的通讯来说,就需要有两个不同类型的endpoint来相互通讯?endpoint的类
型取决于Profile?
ZigBee会友:
Profile规定了接点的类型和接口关系,endpoint当然是取决于具体应用中开发人员自己的
配置,只不过要交互工作,必须遵循Profile的相关规定而已。
Guest:
profile是一个更大一点的概念,是不是有人所说的“应用框架”?也就是说在这个框架中
定义设备类型 设备之间的控制管理接口等等?
ZigBee会友:
嗯,只要明确其中的含义,当然也可以用你自己的说法,目前相关说法还有“侧面”、“概
貌”等。
Guest:
endpoint根据cluster进行绑定,进而构成profile?一个网络有多个profile,难道只需要
一个profile identifier?
ZigBee会友:
profile 是“公约”、“准则”、“法律条款”。profile identifier即profileID就是对
应条款的识别序号,就像:民法、刑法、野生动物保护法……
Guest:
这样理解可以吧:profiles 理解为联合国宪章条款,cluster 是伊朗核问题,attribute
就是谈判, cluster是在遵守profile的情况下制定的?
ZigBee会友:
profiles 是面向具体应用的公约准则,cluster 此应用涉及到的事务关系,attribute
就是某事务可以预料的各种情况。
Guest:
请问,在zdo、profile、af之间的各种关如何?我弄不明白啊?
ZigBee会友:
zdo是ZigBee设备对象,属于特殊的Endpoint(特制自己);profile面向某个应用的公约或
准则,包括5种描述项;AF是应用层侦。
Guest:
但是我看zdo中定义的功能在device profile中都定义啦,你们分析了microchip的协议了
吧?我觉得挺难理解的,各个层次间的文件定义觉得很难……
ZigBee会友:
profile是法律条款,zdo是逻辑工作实体(自己);profile中的多种描述项是条例、是图
纸,zdo是具体实现。
Guest:
我想问问,配置文件到底是什么?协议中好像说是设备描述符和簇描述符和服务类型
(KVP或MSG)。难道profile是设备描述符和簇描述符和服务类型(KVP或MSG)的集合?
ZigBee会友:
Profile也可以翻译成配置文件,实质上大家公认的在某个方面应用的公共准则(对逻
辑设备及其接口的描述集合)。
Guest:
那Profile是如何划分的, 根据实际location 还是app的相关性分得?
ZigBee会友:
根据应用相关性。
cluster是不是指一个应用?事务是service 是吗 ,比如 KVP service 类型, 是吧?
ZigBee会友:
cluster是“事务”,是特性的集合(或者说属性的集合);Attribute是“事务”的具
体情况,比如节点的开或关。
Guest:
啊, 好像明白一点,原来总是把它和 multicast 往一起混,就乱了。谢谢!
ZigBee会友:
总之profile是面向应用的公约或准则;具体包括多种事务关系;每种事务关系又分多
种情况。
ENDPOINT
很多资料将其翻译为“端点”,我们不如也这么叫。不过问题的关键不是它如何称呼,而是如何认识它。我们来研究这样一个事实:outman在看我的帖子的同时他又使用QQ和别人聊天。假设他的电脑IP地址为192.168.1.2。那么当他的QQ好友向他发送了一句话的时候,这个信息里面包含了目的IP地址,所以通过TCP/TP协议可以到达outman的电脑。但是问题随之而来。当outman电脑上的操作系统接收到此条信息时,它将把这个信息交给浏览器(我们刚才说了,他在看帖子,所以肯定开着浏览器)呢,还是交给QQ?操作系统通过怎么样的方法作出裁决呢?显然,只通过IP地址是没有办法决定的,所以这条消息除了包含IP地址以外,还要告诉目的机,这条消息应该交由哪个应用程序来处理。于是端口(Port)的概念产生了。操作系统为应用程序提供了很多端口,消息由IP地址到达操作系统,再由端口找到处理消息的应用程序。同样的道理,在ZigBee的应用程序框架里(结构图请看《深入浅出Z-Stack 2006 OSAL多任务资源分配机制》)包含了最多240个应用程序对象,每个应用程序对象在OSAL中对应了一个任务,当网络层接收到信息以后如何决定将此信息传递给哪个任务呢?ENDPOINT决定了传递方向,于是我们可以说ENDPOINT的作用与TCP/IP协议中的端口的作用是一样的。
【综述】
1.引用ZigBee联盟的说法
Cluster: is a container for one or more attributes. (一个或更多属性的集合)
Attribute: a data entity which represents a physical quantity or state.(反映物
理特性或状态的一个数据实体)
2.我们的观点
Cluster是逻辑设备之间的事务关系,Attribute则是某种事务关系的具体特例;也就是说
Cluster定性,Attribute定量。
【相关问答】
Guest:
请问,attribute这个词怎么理解? 温度 等等?
ZigBee会友:
在温度这个cluster里面,attribute就是具体的温度值。“属性”attribute是“事务”
cluster里面分的具体情况,就像C语言的swich ,case 语句里的用法。
Guest:
请问“事务”又是个什么概念?是不是就是一个事件?我理解cluster是属性的集合?
ZigBee会友:
cluster的确是属性的集合,和一般提到的事件不一样,在网络理解为事务关系更贴切,
Endpoint之间依据“事务关系”(cluster)通讯。
Guest:
一个endpoint对应一个application?比如一个switch对应“开关”这个application?
ZigBee会友:
你的这种提法不规范,一个endpoint是一个逻辑设备,可以包含多个Cluster,每个
Cluster包含不同的属性(开、关是“灯控制” Cluster对应不同情况的attribute)。
Guest:
这样理解可以吧:profiles 理解为联合国宪章条款,cluster 是伊朗核问题,attribute
就是谈判, cluster是在遵守profile的情况下制定的?
ZigBee会友:
profiles 是面向具体应用的公约准则,cluster 此应用涉及到的事务关系,attribute
就是某事务可以预料的各种情况。
Guest:
问一个问题:规定240个endpoint是指一个node上还是整个cluster呢,也就是说一个
cluster最多允许有240个endpoint还是240*240个endpoint呢?
ZigBee会友:
协议中的说法指一个node。 endpoint、node、cluster是三个概念 :node是物理设备,
endpoint是逻辑工作端,cluster是大家通讯的事务关系(属性的集合)。另外,网络拓扑
结构中提到的cluster是集群树,包括家长(parent)及其子女(child)。
Guest:
我想问问,配置文件到底是什么?协议中好像说是设备描述符和簇描述符和服务类型
(KVP或MSG)。难道profile是设备描述符和簇描述符和服务类型(KVP或MSG)的集合?
ZigBee会友:
Profile也可以翻译成配置文件,实质上大家公认的在某个方面应用的公共准则(对逻
辑设备及其接口的描述集合)。
Guest:
那Profile是如何划分的, 根据实际location 还是app的相关性分得?
ZigBee会友:
根据应用相关性。
Guest:
cluster是不是指一个应用?事务是service 是吗 ,比如 KVP service 类型, 是吧?
把它和 multicast 往一起混,就乱了。谢谢!
ZigBee会友:
总之profile是面向应用的公约或准则;具体包括多种事务关系;每种事务关系又分多
种情况。
Guest:
协议上的nwk_addr_req() 标注是cluser ID0x00,后面还有如clusterID 0x01的,
clusterID不是应该是不固定吗?!
ZigBee会友:
clusterID和cluster一一对应,不同的cluster当然用不同的clusterID 。
Guest:
哦!可能我对cluster的理解有问题!我觉得cluster就是在绑定时产生的,所以
clusterID应该是随机的。为什么协议里primitive也会有clusterID呢?!而且不同的
primitive有不同的 固定的clusterID呢?!
ZigBee会友:
primitive是一个广泛意义上的名次,泛指行为和操作,primitive和clusterID没有必
然的对应关系。
Guest:
ClusterID=0x21 Bind_req(SrcAddress,SrcenEp,clusterID,DstAddress,DstenEp )
那ClusterID=0x21什么意思!?
ZigBee会友:
就是约定好的某事务对应的事务号,双方以此建立对应关系(邦定关系)。比如端设备
一的开关控制端设备三的灯,五个参数对应关系:(端设备一SrcAddress,开关SrcenEp,灯
控制clusterID, 端设备三DstAddress,灯DstenEp)。现在理解吗?
Guest:
这我理解!那个cluserID=0x21,我不清楚!为什么是固定的!
ZigBee会友:
cluserID=0x21表示“灯控制”灯控制这个cluser
cluserID=0x20表示“电流”这个cluser
Guest:
我对cluser的理解正确吗!?就是在绑定的时候,产生的!? 那难道每个primitive都
有一个clusterID?
ZigBee会友:
当然了每个邦定都围绕着一个cluser ,邦定三个要素:source、cluser、dest
Guest:
我就是不明白,为什么把primitive跟cluster扯上关系?
ZigBee会友:
primitive就是“原语”,和cluster没有必然的联系,就是某种行为的说法,描述逻辑
设备之间的操作和行为时偶然和某个cluster扯上关系,在描述设备内部工作实体之间的操
作和行为时就没有了。