【XBEE手冊】網絡調試與診斷
@(ZigBee)[ZigBee, XBEE手冊]
[轉載
請註明出處,謝謝!]
放置設備
爲了使網絡安裝成功,安裝人員必須能夠確定將各個XBee設備放在何處以在整個網絡中建立可靠的鏈接。
測試網絡中的鏈路 - 環回羣集(loopback cluster)
要測量網絡性能,用戶可以通過網絡將單播數據從一個設備發送到另一個設備,以確定多個傳輸的成功率。爲簡化鏈路測試,設備支持數據端點(0xE8)上的環回羣集ID(0x12)。數據端點上的羣集ID將傳輸給它的任何數據發送回發送方。
下圖演示瞭如何使用Loopback羣集ID和數據端點來測量網狀網絡中的鏈路質量。
將數據發送到環回羣集ID的配置步驟取決於設備所處的模式。有關設置模式的詳細信息,請參閱API Enable。以下部分列出了基於設備模式的步驟。
透傳操作模式配置(AP = 0)
要將數據發送到遠程設備的數據端點上的環回羣集ID,請執行以下操作:
- 將CI命令設置爲0x12。
- 將SE和DE命令設置爲0xE8(默認值)。
- 將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引腳會以固定的時間間隔閃爍。下圖顯示了設備的連接狀態。
關聯引腳可以指示設備的加入狀態。一旦設備加入網絡,關聯引腳就會以規則的間隔(Δt)切換狀態。使用LT命令設置時間。
的LT命令定義了準銷的閃爍時間。如果設置爲0,則設備使用默認閃爍時間(協調器爲500 ms,路由器和終端設備爲250 ms)。
診斷支持
Associate引腳與調試按鈕配合使用,以提供其他診斷行爲,以幫助部署和測試網絡。如果按下調試按鈕一次,並且設備尚未加入網絡,則關聯引腳會閃爍一個數字錯誤代碼,以指示加入失敗的原因。閃爍次數等於(AI值 - 0x20)。例如,如果AI = 0x22,則發生2次閃爍。
如果按下調試按鈕一次並且設備已加入網絡,則設備發送廣播節點標識包。如果啓用了關聯LED功能(D5命令),則接收此傳輸的設備將快速閃爍其關聯引腳1秒鐘。
下圖說明了當設備未加入網絡時按下調試按鈕一次的行爲,導致關聯引腳閃爍以指示AI代碼:AI = #blinks + 0x20。在此示例中,AI = 0x22。
下圖說明了在遠程設備上按一次按鈕的行爲,導致發送廣播節點標識傳輸。如果啓用了關聯LED功能(D5 = 1),接收此傳輸的所有設備將快速閃爍其關聯引腳一秒鐘。
捆綁
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:在嘗試獲取組成員資格或刪除組時無法在組表中找到匹配的條目