zigbee 綁定

一    ,兩臺zigbee設備綁定成功的兩個必要條件:  1,profileID相同    2,clusterID對應(即一個設備的輸出 和輸入分別等於另一臺設備的輸入和輸出)






二  ,兩臺zigbee設備之間完成通信,主要有一下幾種方式:  1,廣播發送,這種方式不需要知道目標設備的16位網絡地址,因爲網絡中的所有設備都會收到信息,相應的,

此方式對系統的開銷(比如耗電量)也是最大 的    ;                2 ,單播發送,這種方式對系統的開銷最小,也最常用。要實現單播發送,兩臺設備必須先綁定或者匹配(類似綁定的操作);其實綁定操作和匹配操作的區別並不大,說實話我也不知道這兩者的具體區別,先不管吧,只要學會綁定就夠用了。下面是綁定的具體步驟:

A爲協調器,B和C是需要建立綁定的兩個EndDevice。

節點B和C分別通過按鍵機制調用函數ZDP_EndDeviceBindReq,這個函數將會向協調器發出綁定請求,如果在16S內兩個節點都執行了此函數,協調器就會協助實現綁定。綁定表放在OutCluster那邊,即綁定表存放在輸出控制命令的那邊。

         注意:

#        節點B和C需具有互補性,即B的outcluster是C的incluster。

#       綁定後只能是outcluster節點B給incluster節點C發送控制命令,因爲只有B中保存C的信息(綁定表),不能反過來控制。

#        規定的時間

          這個時間由參數APS_DEFAULT_MAXBINDING_TIME決定,默認爲16秒。


綁定成功之後,兩臺設備就可以發送消息了,但是只能是outcluster節點B給incluster節點C發送控制命令,而且B向C發送控制消息時,並不需要知道C設備的16位網絡地址,那消息怎麼傳送到C設備呢?答案是通過ep描述符和ClusterID  ,舉例如下:



                                      發送參數中afAddrType_t *dstAddr如下:
                                       dstAddr.addrMode = afAddrNotPresent;
                                       dstAddr.endPoint = 註冊的EP號;
                                       dstAddr.addr.shortAddr = 可以忽略;
              endPointDesc_t *srcEP 爲註冊的EP描述
              uint16 cID           爲註冊的命令號如TOGGLE_LIGHT_CMD_ID   //ClusterID  
              其它參數正常









                                    
 3 ,組播發送,這種發送介於單播發送和廣播發送之間,可靈活控制目標設備的數量,即只向指定組裏面的設備發送,想接受消息的設備只需要在本地創建組,並向aps註冊組即可,舉例如下:

SampleApp_Group.ID = 0x0001;
  osal_memcpy( SampleApp_Group.name, "Group 1", 7 );
  aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group );

















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章