幾個重要概念:
node(節點):
在zigbee堆棧中最多有三種節點:Coordinator(協調器)、Router(路由器)、End Device(終端)。
其中Coordinator負責選擇工作頻段,建立網路,允許子裝置加入網路;Router負責傳遞訊息,允許子裝置加入網路;End Device只負責收發訊息。
一個網路中可以有若干Router和End Device,但只能有一個Coordinator。
下面幾個圖說得更清楚點
profile:
有人將profile翻譯為“規約”,它規定了裝置的具體應用環境(這是由zigbee使用聯盟制定的,我們只能選擇其一)。
其中stack profile定義了網路類型、深度等;application profile針對給定的stack profile定義了不同功能的標準函數,說明了裝置類型、介面、如何傳輸資料等等。
總之,profile就是對裝置的描述。目的是形成標準,便於不同製造商間產品的相容。
descriptor:
cluster:
attribute:
endpoint:
endpoint的作用舉例說明下:
假如我們想讓node1的開關1控制node2的燈1、2、3,開關2隻控制燈4。但是由於節點間資訊只依靠網路地址定位,所以node2接收到node1的控制資訊後,無法判斷究竟是哪個開關的控制資訊。所以引入了endpoint概念(這和TCP/IP協議裡的“端點”概念很像),給node2兩個endpoint(連接埠),一個對應開關1,一個對應開關2。這樣node2的應用程式就能通過接收到的endpoint來區別究竟是接收到哪個開關的資訊了。
雜記:
ZigBee網路層的主要功能是路由,路由演算法是它的核心。目前ZigBee網路層主要支援兩種路由演算法——樹狀路由和網狀路由。樹狀路由(具體可以參考ZigBee的協議棧規範)把整個網路看作是以協調器為根的一棵樹,因為整個網路是由協調器所建立的。協調器的子節點可以是路由器或者是末端節點,路由器的子節點也可以是路由器或者末端節點,而末端節點沒有子節點,相當於樹的葉子。樹狀路由利用了一種特殊的地址分配演算法,使用四個參數—深度、最大深度、最大子節點數和最大子路由器數來計算新節點的地址,於是定址的時候根據地址就能計算出路徑,而路由只有兩個方向——向子節點發送或者向父節點發送。樹狀路由不需要路由表,節省儲存資源,但缺點是很不靈活,浪費了大量的地址空間,並且路由效率低。ZigBee當中還有一種路由方法是網狀路由,這種方法實際上是AODV路由演算法的一個簡化版本,非常適合於低成本的無線自組織網路的路由。它可以用於較大規模的網路,需要節點維護一個路由表,耗費一定的儲存資源,但往往能達到最優的路由效率,而且使用靈活。除了這兩種路由方法,ZigBee當中還可以進行鄰居表路由,其實鄰居表可以看作是特殊的路由表,只不過只需要一跳就可以發送到目的節點。