【XBEE手冊】網絡調試與診斷

【XBEE手冊】網絡調試與診斷

@(ZigBee)[ZigBee, XBEE手冊]

[轉載請註明出處,謝謝!]



放置設備

爲了使網絡安裝成功,安裝人員必須能夠確定將各個XBee設備放在何處以在整個網絡中建立可靠的鏈接。

測試網絡中的鏈路 - 環回羣集(loopback cluster)

要測量網絡性能,用戶可以通過網絡將單播數據從一個設備發送到另一個設備,以確定多個傳輸的成功率。爲簡化鏈路測試,設備支持數據端點(0xE8)上的環回羣集ID(0x12)。數據端點上的羣集ID將傳輸給它的任何數據發送回發送方。

下圖演示瞭如何使用Loopback羣集ID和數據端點來測量網狀網絡中的鏈路質量。
enter image description here

將數據發送到環回羣集ID的配置步驟取決於設備所處的模式。有關設置模式的詳細信息,請參閱API Enable。以下部分列出了基於設備模式的步驟。

透傳操作模式配置(AP = 0)
要將數據發送到遠程設備的數據端點上的環回羣集ID,請執行以下操作:

  1. 將CI命令設置爲0x12。
  2. 將SE和DE命令設置爲0xE8(默認值)。
  3. 將DH和DL命令設置爲遠程地址(0表示協調器,或64位遠程地址)。

退出命令模式後,設備會將收到的所有串行字符發送到遠程設備,然後將這些字符返回給發送設備。

API操作模式配置(AP = 1或AP = 2)
發送顯式尋址命令幀 - 0x11使用0x12作爲羣集ID,0xE8作爲源和目標端點。

遠程設備將它接收的數據包回送給發送設備。

RSSI指標

可以使用DB命令測量設備上的接收信號強度。DB返回最後接收的數據包的RSSI值(以-dBm爲單位)。但是,這個數字可能會誤導Zigbee的網絡。該DB值僅表示最後一跳的接收信號強度。如果傳輸跨越多跳,則DB值不提供總傳輸路徑或最差鏈路的質量的指示; 它只表示最後一個鏈路的質量。

使用RSSI / PWM器件引腳(TH引腳6 / SMT引腳7)確定硬件中的DB值。如果啓用RSSI PWM功能(P0命令),則當設備接收數據時,它會將RSSI PWM設置爲基於接收數據包的RSSI的值(此值僅指示最後一跳的質量)。用戶可以將此引腳連接到LED,以指示鏈路是否穩定。

設備發現

網絡發現
使用network discovery命令發現已加入網絡的所有設備。發出ND命以在整個網絡中發送廣播網絡發現命令。接收該命令的所有設備都會發送包含以下內容的響應:

  • 設備尋址信息
  • 節點標識符字符串(參見NI命令)
  • 其他相關信息

用戶可以使用此命令生成網絡中所有模塊地址的列表。

ZDO發現
Zigbee設備配置文件包括用於發現所有Zigbee設備(包括非Digi產品)支持的網絡中的設備的規定,包括LQI請求(羣集ID 0x0031)和網絡更新請求(羣集ID 0x0038)。用戶可以使用LQI請求來讀取遠程設備的鄰居表中的設備,並使用遠程設備的網絡更新請求來完成主動掃描以發現所有附近的Zigbee設備。用戶可以使用XBee Explicit API發送幀(0x11)發送這兩個ZDO命令。有關更多信息,請參閱API操作。有關這兩個ZDO幀的格式詳細信息,請參閱Zigbee規範。

加入宣佈
所有Zigbee設備在加入Zigbee網絡(ZDO羣集ID 0x0013)時發送ZDO Device Announce廣播傳輸。如果AO設置爲1,則這些幀作爲顯式Rx指示符API幀(0x91)從設備的串行端口發出。設備通告有效負載包括以下信息:

[序列號] + [16位地址] + [64位地址] + [功能]

以小端字節順序(LSB優先)接收16位和64位地址。有關詳細信息,請參閱Zigbee規範。

調試按鈕和關聯LED

XBee設備支持一組調試按鈕和LED功能,以幫助設備部署和調試。其中包括調試按鈕定義和關聯LED行爲。硬件支持以下功能:

按鈕和LED可以連接到XBee / XBee-PRO Zigbee RF模塊 引腳33和28(SMT)或引腳20和15(TH)分別 支持調試按鈕和關聯LED功能。

調試按鈕

調試按鈕定義提供了各種簡單的功能,以幫助在網絡中部署設備。通過將D0(AD0 / DIO0配置)設置爲1(默認啓用)啓用引腳20 上的調試按鈕功能 。

按鈕按下 描述
1 開始加入。無論ST / SN設置如何,都會喚醒睡眠終端設備30秒。如果加入網絡,它還會發送節點標識廣播。
Zigbee設備在Associate引腳上閃爍(AI - 32)次,表示一個數字錯誤代碼,指示加入失敗的原因。
與網絡相關但未經認證的SE路由器或SE終端設備離開其網絡; 然後嘗試加入。
2 啓用加入。廣播Mgmt_Permit_Joining_req(ZDO ClusterID 0x0036),TC_Significance設置爲 0x00。如果NJ爲0x00或0xFF,則PermitDuration設置爲1分鐘,否則PermitDuration設置爲NJ。
4 將配置恢復爲默認值並離開網絡。相當於發出NR,RE和AC 命令。

使用CB命令模擬軟件中的按鈕按下。發出一個CB命令,其參數設置爲用戶想要執行的按鈕數量。例如,發送CB1執行與單個按鈕按下相關聯的動作。

節點識別幀類似於節點發現響應幀; 它包含設備的地址,節點標識符字符串(NI命令)和其他相關數據。接收節點標識幀的所有API設備將其作爲節點標識指示幀(0x95)發送出其串行接口。

關聯LED

Associate引腳(pin 28/SMT, pin 33/TH)指示設備的網絡狀態。如果設備未加入網絡,則Associate引腳設置爲高電平。設備成功加入網絡後,Associate引腳會以固定的時間間隔閃爍。下圖顯示了設備的連接狀態。
enter image description here

關聯引腳可以指示設備的加入狀態。一旦設備加入網絡,關聯引腳就會以規則的間隔(Δt)切換狀態。使用LT命令設置時間。

的LT命令定義了準銷的閃爍時間。如果設置爲0,則設備使用默認閃爍時間(協調器爲500 ms,路由器和終端設備爲250 ms)。

診斷支持
Associate引腳與調試按鈕配合使用,以提供其他診斷行爲,以幫助部署和測試網絡。如果按下調試按鈕一次,並且設備尚未加入網絡,則關聯引腳會閃爍一個數字錯誤代碼,以指示加入失敗的原因。閃爍次數等於(AI值 - 0x20)。例如,如果AI = 0x22,則發生2次閃爍。

如果按下調試按鈕一次並且設備已加入網絡,則設備發送廣播節點標識包。如果啓用了關聯LED功能(D5命令),則接收此傳輸的設備將快速閃爍其關聯引腳1秒鐘。

下圖說明了當設備未加入網絡時按下調試按鈕一次的行爲,導致關聯引腳閃爍以指示AI代碼:AI = #blinks + 0x20。在此示例中,AI = 0x22。
enter image description here

下圖說明了在遠程設備上按一次按鈕的行爲,導致發送廣播節點標識傳輸。如果啓用了關聯LED功能(D5 = 1),接收此傳輸的所有設備將快速閃爍其關聯引腳一秒鐘。
enter image description here

捆綁

Digi XBee固件支持三種綁定請求消息:

  • 終端設備綁定
  • 捆綁
  • 解除綁定

End_Device_Bind_req
Zigbee規範中描述了終端設備綁定請求(ZDO羣集0x0020)。

在部署期間,安裝程序可能需要將交換機綁定到燈。按下每個設備上的調試按鈕序列後,這會使它們在一個時間窗口(60秒)內向協調器發送End_Device_Bind_req消息。每條消息的有效負載是一個簡單的描述符,它列出了輸入和輸出的clusterID。協調器通過配對互補的clusterID來匹配請求。匹配完成後,它會發送消息以將設備綁定在一起。當進程結束時,兩個設備的綁定表中都有條目,這些條目支持在綁定端點之間間接尋址消息。

R1-> C End_Device_Bind_req

R2-> C End_Device_Bind_req

R1,R2在相隔60秒內將End_Device_Bind_req發送給C

C匹配請求。

C測試一個以查看綁定是否已經到位:

R2 <-C Unbind_req

R2-> C Unbind-rsp(狀態代碼 - NO_ENTRY)

C繼續在兩個設備上創建綁定表條目。

R1 <-C Bind_req

R1-> C Bind_rsp

R2 <-C Bind_req

R2-> C Bind_rsp

C發送對原始End_Device_Bind_req消息的響應。

R1-

組表API

與使用ZDO命令管理的綁定表不同,Zigbee組表由Zigbee羣集庫組羣(0x0006)和ZCL命令管理。

Digi Zigbee XBee固件旨在與外部處理器配合使用,其中實現了具有端點和羣集的公共應用程序配置文件,包括組羣集。配置Zigbee XBee固件以將發往該組羣的所有ZCL命令轉發出UART(參見ATAO3)。XBee Zigbee不會使用遠程組羣集命令來管理自己的組表。

但是要在XBee中實現多播(組)尋址,外部處理器必須使XBee設備的組表狀態與其自身保持同步。因此,定義了一個Group Table API,外部處理器可以管理XBee / XBee-PRO Zigbee RF模塊組表的狀態。

XBee固件的Group Table API的設計源自ZCL Group Cluster 0x0006。使用顯式尋址命令幀 - 0x11尋址到Digi設備對象端點(0xE6),使用Digi XBee ProfileID(0xC105)向本地設備發送命令和請求。

Zigbee家庭自動化公共應用程序配置文件表示,組僅應用於超過五臺設備的集合。這意味着管理五個或更少設備的集合應該使用多個綁定表條目(而不是用組表)。

API中實現了五個命令:

  • 添加組命令
  • 查看組
  • 獲得組成員資格
  • 刪除組
  • 刪除所有組

ZCL中描述了Group Cluster的第六個命令:Add Group If If Identifying。此API不支持此命令,因爲其實現需要訪問識別羣集,而這不在XBee上維護。外部處理器需要在使用Group Table API時實現該服務器命令,以使用五個命令原語使XBee設備的組表保持同步。

添加組

“Add Group”命令的目的是添加組表條目,以將活動端點與groupID和可選的groupName相關聯。groupID是一個雙字節值。groupName由0到16個ASCII字符組成。

以下示例添加一個組表條目,該條目將端點E7與groupID 1234和groupName“ABCD”相關聯。

請求數據包

7e001e11010013a2004047b55cfffee6e70006c105000001ee0034120441424344c7

數據包由序言,ZCL標頭和ZCL有效負載三部分組成:

Preamble = “11 01”+ LocalDevice64Addr +“FFFE E6 E7 0006 C105 00 00”

數據包使用0xE6的源端點,0x0006的clusterID和0xC105的profileID尋址到本地節點。目標端點E7保存“Add Group”命令的端點參數。

ZCL_header =“01 ee 00”

第一個字段(字節)是幀控制字段,它使用客戶端 - >服務器方向(0x00)指定Cluster Specific命令(0x01)。第二個字段是用於將響應與命令請求相關聯的交易序列號。第三個字段是“Add Group”(0x00)的命令標識符。

ZCL_payload =“3412 04 41 42 43 44”

前兩個字節是小端形式的要添加的組ID。下一個字節是字符串名稱長度(如果沒有字符串,則爲00)。其他字節是ASCII字符串表示的組表名稱(“ABCD”)。

響應數據包(由兩個數據包組成):

7e0018910013a2004047b55cfffee7e68006c1050009ee0000341238
7e00078b01fffe00000076

第一個響應數據包

解碼內容

Zigbee Explicit Rx Indicator
API 0x91 64DestAddr 0x0013A2004047B55C 16DestAddr 0xFFFE SrcEP 0xE7 DestEP 0xE6
ClusterID 0x8006 ProfileID 0xC105 Options 0x00
RF_Data 0x09EE00003412

其序言,ZCL標頭和ZCL有效載荷:

Preamble = “910013a2004047b55cfffee7e68006c10500”

數據包的端點值與請求相反,clusterID爲0x8006,表示組羣集響應。

ZCL_header =“09 ee 00”

第一個字段是幀控制字段,它使用Server-> Client方向指定Cluster Specific命令(0x01)。第二個字段是用於將響應與命令請求相關聯的交易序列號。第三個字段是命令標識符“Add Group”(0x00)。

ZCL_payload =“00 3412”

第一個字節是狀態字節(SUCCESS = 0x00)。接下來的兩個字節以小端格式保存的組ID(0x1234)。

第二個響應數據包

它是原始命令請求的Tx狀態。如果原始命令請求中的FrameId值爲零,或者在發送UART緩衝區中沒有可用空間,則不會發生Tx狀態消息。

解碼內容

Zigbee Tx Status
API 0x8B FrameID 0x01 16DestAddr 0xFFFE
Transmit Retries 0x00 Delivery Status 0x00 Discovery Status 0x00 Success

查看組

View Group命令的目的是獲取與特定端點和groupID關聯的名稱字符串。

以下示例獲取與端點E7和groupID 1234關聯的名稱字符串。

請求數據包:

7e001911010013a2004047b55cfffee6e70006c105000001ee013412d4

其序言,ZCL標頭和ZCL有效載荷:

Preamble =“11 01”+ LocalDevice64Addr +“FFFE E6 E7 0006 C105 00 00”

數據包使用0xE6的源端點,0x0006的clusterID和0xC105的profileID尋址到本地節點。目標端點E7是“查看組”命令的端點參數。

ZCL_header =“01 ee 01”

第一個字段是幀控制字段,它使用客戶端 - >服務器方向(0x00)指定集羣特定命令(0x01)。第二個字段是交易序列號,用於將響應與命令請求相關聯。第三個字段是命令標識符“View Group”(0x01)。

ZCL_payload =“3412”

兩個字節值是以little-endian表示的groupID。

響應數據包(由兩個數據包組成):

7e001d910013a2004047b55cfffee7e68006c1050009ee01003412044142434424
7e00078b01fffe00000076

第一個響應數據包

解碼內容

Zigbee Explicit Rx Indicator
API 0x91 64DestAddr 0x0013A2004047B55C 16DestAddr 0xFFFE SrcEP 0xE7 DestEP 0xE6 
ClusterID 0x8006 ProfileID 0xC105 Options 0x00
RF_Data 0x09EE010034120441424344

其序言,ZCL標頭和ZCL有效載荷:

Preamble =“910013a2004047b55cfffee7e68006c10500”

數據包的端點值與請求相反,clusterID爲0x8006,表示組羣集響應。

ZCL_header =“09 ee 01”

第一個字段是幀控制字段,它使用服務器 - >客戶端方向(0x08)指定特定於集羣的命令(0x01)。第二個字段是一個交易序列號,它將響應與命令請求相關聯。第三個字段是命令標識符“View Group”(0x01)。

ZCL_payload =“00 3412 0441424344”

第一個字節是狀態字節(SUCCESS = 0x00)。接下來的兩個字節以little-endian形式保存groupID(0x1234)。下一個字節是名稱字符串長度(0x04)。其餘字節是ASCII名稱字符串字符(“ABCD”)。

第二個響應數據包
它是原始命令請求的Tx狀態。如果原始命令請求中的FrameId值爲零,或者在發送UART緩衝區中沒有可用空間,則不會發生Tx狀態消息。

解碼內容

Zigbee Tx Status
API 0x8B FrameID 0x01 16DestAddr 0xFFF
Transmit Retries 0x00 Delivery Status 0x00 Discovery Status 0x00 Success

獲得組成員資格

獲得組成員資格(1/2)

第一種形式的Get Group Membership命令的目的是獲取與特定端點關聯的所有groupID。

該示例的目的是獲取與端點E7關聯的所有groupID。

請求數據包:

7e001811010013a2004047b55cfffee6e70006c105000001ee020019

其序言,ZCL標頭和ZCL有效載荷:

Preamble = “11 01 “+LocalDevice64Addr+”FFFE E6 E7 0006 C105 00 00"

數據包使用0xE6的源端點,0x0006的clusterID和0xC105的profileID尋址到本地節點。目標端點E7保存“Get Group Membership”命令的端點參數。

ZCL_header =“01 ee 02”

第一個字段(字節)是幀控制字段,它使用客戶端 - >服務器方向(0x00)指定特定於集羣的命令(0x02)。第二個字段是交易序列號,用於將響應與命令請求相關聯。第三個字段是“Get Group Membership”(0x02)的命令標識符。

ZCL_payload =“00”

第一個字節是組計數。如果爲零,則將在響應中返回具有與給定端點參數匹配的端點值的所有groupID。

響應數據包(由兩個數據包組成):

7e0019910013a2004047b55cfffee7e68006c1050009ee02ff01341235
7e00078b01fffe00000076

第一個響應數據包

解碼內容

Zigbee Explicit Rx Indicator
API 0x91 64DestAddr 0x0013A2004047B55C 16DestAddr 0xFFFE SrcEP 0xE7 DestEP 0xE6 ClusterID 0x8006 ProfileID 0xC105 Options 0x00
RF_Data 0x09EE02FF013412

其序言,ZCL標頭和ZCL有效載荷:

Preamble =“910013a2004047b55cfffee7e68006c10500”

數據包的端點與請求相反,clusterID爲0x8006,表示組羣集響應。

ZCL_header =“09 ee 02”

第一個字段是幀控制字段,它使用服務器 - >客戶端方向(0x08)指定特定於集羣的命令(0x01)。第二個字段是交易序列號,用於將響應與命令請求相關聯。第三個字段是命令標識符“Get Group Membership”(0x02)。

ZCL_payload =“FF 01 3412”

第一個字節是組表的剩餘容量。0xFF表示未知。XBee返回此值,因爲組表的容量取決於綁定表的剩餘容量,因此組表的容量未知。第二個字節是組計數(0x01)。剩餘的字節是little-endian形式的groupID。

第二個響應數據包
它是原始命令請求的Tx狀態。如果原始命令請求中的FrameId值爲零,或者在發送UART緩衝區中沒有可用空間,則不會發生Tx狀態消息。

解碼內容

Zigbee Tx Status
API 0x8B FrameID 0x01 16DestAddr 0xFFFE
Transmit Retries 0x00 Delivery Status 0x00 Discovery Status 0x00 Success

獲得組成員資格(2/2)

Get Group Membership命令的第二種形式的目的是獲得與特定端點相關聯的groupID集合,該特定端點是給定groupID列表的子集。

以下示例獲取與端點E7關聯的groupID,它們是給定的groupID列表(0x1234,0x5678)的子集。

請求數據包:

 7e001c11010013a2004047b55cfffee6e70006c105000001ee02023412785603

其序言,ZCL標頭和ZCL有效載荷:

Preamble =“11 01”+ LocalDevice64Addr +“FFFE E6 E7 0006 C105 00 00”

數據包使用0xE6的源端點,0x0006的clusterID和0xC105的profileID尋址到本地節點。目標端點E7是“Get Group Membership”命令的端點參數。

ZCL_header =“01 ee 02”

第一個字段(字節)是幀控制字段,它使用客戶端 - >服務器方向(0x00)指定特定於集羣的命令(0x02)。第二個字段是交易序列號,用於將響應與命令請求相關聯。第三個字段是“Get Group Membership”(0x02)的命令標識符。

ZCL_payload =“02 34127856”

第一個字節是組計數。剩餘的字節是使用little-endian表示的groupID。

響應數據包(由兩個數據包組成):

7e0019910013a2004047b55cfffee7e68006c1050009ee02ff01341235 
7e00078b01fffe00000076

第一個響應數據包

解碼內容

Zigbee Explicit Rx Indicator
API 0x91 64DestAddr 0x0013A2004047B55C 16DestAddr 0xFFFE    SrcEP 0xE7    DestEP 0xE6 
ClusterID 0x8006 ProfileID 0xC105    Options 0x00
RF_Data 0x09EE02FF013412

其序言,ZCL標頭和ZCL有效載荷:

Preamble =“910013a2004047b55cfffee7e68006c10500”

數據包的端點與請求相反,clusterID爲0x8006,表示組羣集響應。

ZCL_header =“09 ee 02”

第一個字段是幀控制字段,它使用服務器 - >客戶端方向(0x08)指定特定於集羣的命令(0x01)。第二個字段是交易序列號,用於將響應與命令請求相關聯。第三個字段是命令標識符“Get Group Membership”(0x02)。

ZCL_payload =“FF 01 3412”

第一個字節是組表的剩餘容量。0xFF表示未知。XBee返回此值,因爲組表的容量取決於綁定表的剩餘容量,因此組表的容量未知。第二個字節是組計數(0x01)。剩餘的字節是little-endian表示的groupID。

第二個響應數據包
它是原始命令請求的Tx狀態。如果原始命令請求中的FrameId值爲零,或者在發送UART緩衝區中沒有可用空間,則不會發生Tx狀態消息。

解碼內容

Zigbee Tx Status
API 0x8B    FrameID 0x01    16DestAddr 0xFFFE
Transmit Retries 0x00 Delivery Status 0x00 Discovery Status 0x00 Success

刪除組

Remote Group命令的目的是刪除將給定端點與給定groupID相關聯的Group Table條目。

該示例的目的是刪除groupID [TBD]與端點E7的關聯。

請求數據包:

7e001911010013a2004047b55cfffee6e70006c105000001ee033412d2

其序言,ZCL標頭和ZCL有效載荷:

Preamble = “11 01”+ LocalDevice64Addr +“FFFE E6 E7 0006 C105 00 00”

數據包使用0xE6的源端點,0x0006的clusterID和0xC105的profileID尋址到本地節點。目標端點E7是“刪除組”命令的端點參數。

ZCL_header =“01 ee 03”

第一個字段是幀控制字段,它使用客戶端 - >服務器方向(0x00)指定集羣特定命令(0x01)。第二個字段是交易序列號,用於將響應與命令請求相關聯。第三個字段是命令標識符“Remove Group”(0x03)。

ZCL_payload =“3412”

兩個字節值是要以little-endian表示的要刪除的groupID。

響應數據包(由兩個數據包組成):

7e0018910013a2004047b55cfffee7e68006c1050009ee0300341235
7e00078b01fffe00000076

第一個響應數據包

解碼內容

Zigbee Explicit Rx Indicator
API 0x91 64DestAddr 0x0013A2004047B55C 16DestAddr 0xFFFE SrcE 0xE DestEP 0xE6 
ClusterID 0x8006 ProfileID 0xC105選項0x00
RF_Data 0x09EE03003412

其序言,ZCL標頭和ZCL有效載荷:

 Preamble = “910013a2004047b55cfffee7e68006c10500”

數據包的端點值與請求相反,clusterID爲0x8006,表示組羣集響應。

ZCL_header =“09 ee 03”

第一個字段是幀控制字段,它使用服務器 - >客戶端方向(0x08)指定特定於集羣的命令(0x01)。第二個字段是交易序列號,用於將響應與命令請求相關聯。第三個字段是命令標識符“Remove Group”(0x03)。

ZCL_payload =“00 3412”

第一個字節是狀態字節(SUCCESS = 0x00)。接下來的兩個字節是little-endian形式的groupID(0x1234)值。

第二個響應數據包
它是原始命令請求的Tx狀態。如果原始命令請求中的FrameId值爲零,或者在發送UART緩衝區中沒有可用空間,則不會發生Tx狀態消息。

解碼內容

Zigbee Tx Status
API 0x8B     FrameID 0x01    16DestAddr 0xFFFE
Transmit Retries 0x00 Delivery Status 0x00 Discovery Status 0x00 Success

刪除所有組

“Remove All Groups”命令的目的是清除組表中與目標端點關聯的所有條目。

以下示例刪除與端點E7關聯的所有組。

請求數據包:

7e001711010013a2004047b55cfffee6e70006c105000001ee0417

其序言,ZCL標頭和ZCL有效載荷:

Preamble =“11 01”+ LocalDevice64Addr +“FFFE E6 E7 0006 C105 00 00”

數據包使用0xE6的源端點,0x0006的clusterId和0xC105的profileID尋址到本地節點。目標端點E7是“Remove All Groups”命令的端點參數。

ZCL_header =“01 ee 04”

第一個字段是幀控制字段,它使用客戶端 - >服務器方向(0x00)指定集羣特定命令(0x01)。第二個字段是交易序列號,用於將響應與命令請求相關聯。第三個字段是命令標識符“Remove All Groups”(0x04)。

ZCL_payload =“”

此命令不需要有效負載。

響應數據包(由兩個數據包組成):

7e0016910013a2004047b55cfffee7e68006c1050009ee04007c
7e00078b01fffe00000076

第一個響應數據包

解碼內容

Zigbee Explicit Rx Indicator
API 0x91 64DestAddr 0x0013A2004047B55C 16DestAddr 0xFFFE    SrcEP 0xE7    DestEP 0xE6 
ClusterID 0x8006 ProfileID 0xC105    Options 0x00
RF_Data 0x09ee0400

其序言,ZCL標頭和ZCL有效載荷:

Preamble =“910013a2004047b55cfffee7e68006c10500”

數據包的端點值與請求相反,clusterID爲0x8006,表示組羣集響應。

ZCL_header =“09 ee 04”

第一個字段是幀控制字段,它使用服務器 - >客戶端方向(0x08)指定特定於集羣的命令(0x01)。第二個字段是交易序列號,用於將響應與命令請求相關聯。第三個字段是命令標識符“Remove All Groups”(0x04)。

ZCL_payload =“00”

第一個字節是狀態字節(SUCCESS = 0x00)。

第二個響應數據包
它是原始命令請求的Tx狀態。如果原始命令請求中的FrameID值爲零,或者在發送UART緩衝區中沒有可用空間,則不會發生Tx狀態消息。

解碼內容

Zigbee Tx Status
API 0x8B    FrameID 0x01    16DestAddr 0xFFFE
Transmit Retries 0x00 Delivery Status 0x00 Discovery Status 0x00 Success

默認回覆

許多錯誤都作爲默認響應返回。例如,包含08010b788b的響應的RFData有效載荷將被解碼爲:

ZCL_header = “08 01 03" - general command/server-to-client, transseqnum=1, 
default_response_command(0x03)
ZCL_payload = “78 8b” - original cmdID, status code (0x8b) 
EMBER_ZCL_STATUS_NOT_FOUND

常見的狀態代碼

本節列出了一些常見的狀態代碼。

0x00 EMBER_ZCL_STATUS_SUCCESS:命令請求成功
0x01 EMBER_ZCL_STATUS_FAILURE:命令請求失敗 - 例如,從組表中刪除條目的調用返回錯誤
0x80 EMBER_ZCL_STATUS_MALFORMED_COMMAND:API幀中沒有RFData; ZCL Payload可能從預期的位置截斷
0x81 EMBER_ZCL_STATUS_UNSUP_CLUSTER_COMMAND:意外的方向 ①ZCL標頭的幀控制字段中意外的方向; ②ZCL頭中的意外命令標識符代碼值中意外的方向
0x82 EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND:意外幀類型 - ZCL頭的幀控制字段中的意外幀類型
0x84 EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND:意外ZCL標頭的幀控制字段中的製造商特定指示
0x8b EMBER_ZCL_STATUS_NOT_FOUND:在嘗試獲取組成員資格或刪除組時無法在組表中找到匹配的條目
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章