zigbee ---- profile 和 cluster

zigbee規範中,引入了profile, cluster的概念。具體說來,假設規範一個profile(能夠理解成一套規定),這個profile用來規範智能家居領域的相關產品都要知足那些要求,那麼home automation public profile就規定了智能家居都要作什麼。固然了,你能夠本身規範一個本身的profile,稱爲private 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了。
函數

 

 

 

總結說來,Profile規範了應該包括哪些cluster,一個cluster會有一個ID,在一個cluster下又會有不少command,也會有不少attibute;在一個cluster下面command 和attribute的ID要惟一,不一樣的cluster下能夠重複,不一樣的profile下clusterID也能夠重複。

學習

    再延伸一點兒,zigbee聯盟在協議棧以外又增長了一部分操做cluster的函數,那就是zigbee cluster library (ZCL),這裏邊已經以源代碼的形式提供了操做聯盟規範的那些public profile下的函數,主要功能包括一些command的transmit,response,indicate以及confirm等,還有讀寫attribute的一些操做函數。因此在理解了ZCL的工做機制基礎上,經過調用ZCL的函數實際上會讓應用程序設計變得簡單(可是學習ZCL卻是很麻煩)。
    假設咱們要控制一個LED,有一個遠程節點(發命令控制led ),一個本地節點(接受命令並真正的讓led亮起來),那麼若是引入ZCL的概念,你能夠設置這個操做led的事情是一個cluster,其下包含三個命令,一個open,一個close,一個read attribute,燈還有一個attribute,那就是當前的status,遠程節點能夠用ZCL的函數發open和close命令,也能夠隨時發一個read attibute命令讀取本地節點led 的狀態。這麼作的好處是不須要再本身設計一個規定(好比:一個數據包的第幾個字節表示什麼。。。),而是直接調用ZCL便可實現,這對於command和attribute數量不多的應用不見得有多大好處,可是當command和attribute數量不少的時候,引入ZCL會讓事情變得簡單
ui

相關文章
相關標籤/搜索