第 19 章

Health、Network Map 與診斷

用 Health & Diagnostics 把 Home Assistant、Bridge、Fabric、session、subscription 與網路分層判讀,再用 Network Map、live events、system log、metrics 與 System Information 建立不洩漏環境資料的診斷證據。

同一個「離線」可能有六種原因

Controller 顯示 No Response,只代表它目前不能可靠使用某個 Matter endpoint;原因可能是 Home Assistant WebSocket 中斷、Bridge stopped/failed、Fabric 尚未 commissioned、Controller session 不活躍、subscription 消失、mDNS 宣告到錯誤介面,或 endpoint 自身映射失敗。Health 的價值是把這些層次同時呈現,讓你先定位再動作,而不是反覆重配對。

Stable 2.0.55 有可到達的 /health 與 /network-map 路由。HealthPage 組合 Health Dashboard、Live Event Log、Network Diagnostics、System Information 與 Translation Editor;Network Map 則把依 rootVendorId 合併的 Controller vendor group、Hub、Bridge、Device 與 Failed 節點視覺化;它不是一個節點對一個 Fabric。這些頁面屬 Stable 維運功能,但它們描述 HAMH 所知的狀態,不是對 Controller UI 行為的保證。

診斷資料也是敏感資料:匯出的診斷可能包含實體名稱、Bridge 名稱、網路介面、錯誤內容與 Matter 識別資訊。只在可信管道分享經人工檢查與遮蔽的最小片段;本指南不提供也不要求任何真實環境值。
層級正常訊號異常訊號下一個檢查
Home Assistantconnecteddisconnected/ready 失敗HA URL、權限、WebSocket 與延遲
Bridgerunning、無 failed entitiesstopped/failed、status reasonBridge log、設定與資源
Fabric預期 Controller Fabric 存在零 Fabric 或不預期紀錄配對歷史與 Controller 端狀態
Sessionpeer active、有最近活動活動長期停滯網路可達性與 Controller hub
Subscription有 wildcard 或 endpoint-specific 訂閱數量為零或頻繁重建live events、session 健康
mDNS/介面綁定可達 LAN 介面Docker/Thread/多餘介面警告第 20 章網路設定

Health 狀態與連線訊號怎麼讀

後端基本 Health 將 HA connected 與 Bridge 統計彙整成 healthy、degraded、unhealthy。HA 已連線且沒有 stopped/failed Bridge 才是 healthy;HA 已連線但有 stopped 或 failed 是 degraded;HA 未連線則是 unhealthy。這是服務層摘要,不代表每個 entity 都正常,也不代表每個 Controller 都完整支援。

Detailed Health 為每座 Bridge 提供 status/reason、port、priority、device count、fabric count、failed entity count、Controller warnings、entity diagnostics,以及 session/subscription 摘要。Session 活動欄位可區分傳輸層仍有往來與 Interaction Model 指令是否停滯;subscription 又分 whole-node wildcard、endpoint-specific 或 unknown scope。單看「有 session」仍不足以證明控制正常。

Fabric 是信任關係;session 是某段時間內的安全連線;subscription 是 Controller 要 Bridge 主動回報哪些資料的訂閱。Fabric 存在但 session 為零,可能是 Controller hub 暫時離線或網路不可達;session 存在但 subscription 為零,可能只能讀寫卻沒有持續狀態回報;session 與 subscription 都在但單一 endpoint failed,則優先查映射與來源 entity。

Liveness 與 readiness:Stable 2.0.55 提供 health live 與 ready 端點。live 只表示程序能回答;ready 以 Home Assistant 是否連線判斷。它們適合程序監控,不應被解讀成所有 Bridge、Fabric 與裝置都健康。

DiagnosticsPage 存在,但 v2.0.55 沒有路由

重要版本事實:DiagnosticsPage.tsx 在 v2.0.55 程式碼中存在,HealthPage 也重用其中的 LiveEventLog;然而 routes.tsx 沒有註冊獨立 DiagnosticsPage 路由。因此你不能在 Stable 2.0.55 教學中聲稱側欄有一個獨立 Diagnostics 頁或提供杜撰網址。可操作入口是 Health & Diagnostics 頁內嵌的即時事件區與 Export Diagnostic。

功能Release channel成熟度Controller 支援
Health、Network Map 路由Stable 2.0.55Stable 維運 UI不依特定 Controller;資料完整度取決於實際連線
Health 內 Live Event LogStable 2.0.55Stable 診斷元件事件類型由 HAMH 觀測,不保證 Controller 暴露細節
獨立 DiagnosticsPage程式碼存在未註冊路由不可寫成可到達 Stable 頁面
Translation EditorStable 2.0.55 Health 內嵌本機 UI 覆寫工具不影響 Controller 語言
Server Mode 與實驗性 endpoint 健康Stable 內可觀察實驗性(experimental-in-Stable)依 Controller 類型而異

Network Map 是從 Bridge 與 device API 建圖,不是封包擷取,也不是路由器的實體拓撲。圖上的 Controller vendor group 由 commissioned Fabric records 的 rootVendorId 建立並去重;同 vendor 的多個 Fabric 會合併成一個節點,因此節點數與邊線不能當精確 Fabric 數或一對一拓撲。精確 Fabric records 請看 Detailed Health;線條也不代表即時封包方向或訊號強度。Failed 節點則是 HAMH 建置 endpoint 時的失敗項目,不等同 Controller 宣告的故障。

從摘要走到可驗證根因

  1. 開啟 Health & Diagnostics,先讀全域摘要

    確認版本、uptime、Home Assistant connected,以及 running/total Bridge 比例。不要先按 Restart。若 HA disconnected,先處理共同上游;若只有一座 Bridge failed,縮小到該 Bridge。

  2. 逐座展開 Bridge 與 Fabric health

    比對 device count、fabric count、failed entity count、Controller warning。再查看每個 Fabric 的 session 與 subscription 彙整。只記錄「有/無、近期/停滯、數量趨勢」,公開紀錄不要抄出 Fabric 或 Node 識別值。

  3. 用 Live Event Log 建立時間線

    保留 state update、command received、entity error/warning、session opened/closed、subscription changed、bridge started/stopped 所需類型;用 filter chip 隔離症狀,先重現一個低風險操作。Clear Events 只清前端觀察清單,不是修復。

  4. 執行 Network Diagnostics

    閱讀 pass/warn/fail 與建議,再展開 interface 表。確認 bound interface 是可達 LAN 介面、IPv4 開關符合部署、IPv6 存在且不是只靠不可跨網段的 link-local。不要把畫面中的真實位址貼到工單。

  5. 切換 Network Map 交叉比對

    確認 Hub 到各 Bridge、依 rootVendorId 建立並去重的 Controller vendor group,以及 Device 節點是否符合預期;個別 Fabric records 請回 Detailed Health 核對。點 Refresh Data 重新載入資料。拖曳位置只改瀏覽器 local storage 的版面;Undo 可撤回移動,Reset Layout 清除保存位置,Fullscreen 只改檢視。

  6. 最後才匯出診斷或調整設定

    若仍無法定位,按 Export Diagnostic,先離線檢查內容並遮蔽所有識別、網路、entity name 與錯誤中的秘密片段。需改 mDNS、Firewall 或 VLAN 時轉第 20 章;需重啟或重設時回第 18 章/第 22 章的備份與回復流程。

Network Map、log、metrics 與翻譯工具

Network Map 互動

Network Map 支援縮放、平移、MiniMap、Controls、節點拖曳、單步 Undo、Reset Layout、Refresh Data 與 Fullscreen。拖曳後位置保存於目前瀏覽器 local storage;換瀏覽器、清除網站資料或按 Reset Layout 後不會保留。Refresh Data 重新抓 Bridge,接著載入每座 Bridge devices;它不進行 Matter Factory Reset,也不會修復失敗實體。

System log 與 Live Event

System log 適合看啟動、mDNS、HA 連線、Bridge failure、Plugin 與資源警告;Live Event 偏向執行期間的 state、command、session 與 subscription 時序。把兩者對齊:先標記症狀時間,再看相鄰事件與 log。Protocol debug 可能包含逐封包資訊,只能暫時啟用並嚴格保護,完成後回復正常等級。

Metrics 與 System Information

Metrics JSON 包含 uptime、heap/RSS、Bridge total/running/stopped/failed、device/Fabric totals、HA connected 與 registry 數;Prometheus 格式另有每座 Bridge status 與 device count label。System Information 顯示版本與執行環境資料,適合核對架構、Node 與資源。監控應看趨勢,不要把一次高峰直接判為洩漏。

Translation Editor

Translation Editor 可選語言、搜尋 key、篩選 missing/edited、編輯本機覆寫、逐 key reset、reset all、複製/匯出 JSON、匯入 JSON,也能建立與移除 custom language。覆寫與 custom language 由瀏覽器 local storage 還原,影響的是此瀏覽器上的 HAMH UI,不會改 Home Assistant 翻譯,也不會推送到 Controller。

匯入翻譯前先確認 JSON 只含字串 key/value,不含環境描述或秘密。Reset key 回到內建字串;Reset All 清除此語言的本機編輯。Custom language 若刪除,該瀏覽器不再提供它;要跨瀏覽器搬移,先 Export JSON,再在目標端 Import,並保留可回復副本。

工具回答的問題不會做的事
Health & DiagnosticsHA/Bridge/Fabric/session/subscription 是否健康證明所有 Controller UI 支援
Live Event症狀前後發生哪些事件長期取代 server log
Network Diagnostics介面與 mDNS 組態是否可疑自動改路由器或 firewall
Network MapHAMH 目前邏輯關係顯示封包路徑或 Wi-Fi 訊號
Metrics資源與數量趨勢暴露後自帶存取控制
Translation Editor本瀏覽器 UI 文案覆寫翻譯 Controller 或修改後端行為

三種診斷路徑

全部 Controller 同時異常:先看 HA connected 與所有 Bridge 是否一起 degraded;若 HA disconnected,先修共同連線。若 Bridge 都 running,再看 Network Diagnostics 的 bound interface 與 mDNS warning。這比逐座重配對更能命中共同根因。

只有一個 Controller 異常:Fabric 仍存在,但對應 session 或 subscription 停滯;其他 Controller session 正常。此時優先檢查該 Controller hub 與 VLAN/mDNS 路徑,不要 Factory Reset 整座 Bridge。Controller 支援差異也可能造成單一 device type 缺失。

只有一個 entity 異常:Bridge 與 session 健康,Network Map 出現 failed device 或 Health entity diagnostic 提供 reason。回到 Bridge 詳細頁修正 HA 狀態、Filter 或 mapping;Network Map 的 Refresh Data 用於確認結果,不是修復按鈕。

最小重現:選一個不涉及門鎖、警報或高功率設備的低風險 endpoint,做一次 Controller 指令與一次 HA 狀態變更,觀察 command、state update 與 subscription。不要用安全關鍵設備做診斷測試。

常見卡關與安全返回點

  1. Health 顯示 unhealthy

    檢查:HA connected 與 ready;unhealthy 首先反映 HA 未連線。安全修復:確認 HA 服務、URL、權限與 WebSocket,不先重設 Fabric;連線恢復後再看 Bridge recovery。

  2. Health 是 healthy,但 Controller 仍 No Response

    檢查:對應 Fabric 的 session 活動、subscription、Network Diagnostics 與 Controller hub。安全修復:先修 mDNS/IPv6/multicast 或 Controller hub,必要時單座 restart;healthy 不是 endpoint 支援保證。

  3. Network Map 一直載入

    檢查:Bridges API 與每座 devices 是否都能完成、瀏覽器 console/WebSocket、是否有大型 Bridge。安全修復:回 Bridges 找失敗者、按一次 Refresh Data;不要連續按 Reset Layout,因為它只清位置。

  4. Live Event 顯示 Offline

    檢查:反向代理是否轉送 WebSocket upgrade、base path 是否一致。安全修復:修正 proxy 後重新載入 Health;不要因前端 socket 斷線推論 Matter Fabric 已遺失。

  5. Network Diagnostics 綁到多餘介面

    檢查:介面用途,特別是 container 與 Thread 介面。安全修復:在啟動選項綁定真正 LAN 介面,重啟服務後重跑診斷;名稱必須取自你自己的唯讀畫面。

  6. 翻譯覆寫換瀏覽器就消失

    檢查:是否在原瀏覽器 local storage、是否曾 Export。安全修復:由可信 JSON Import;若資料已清除且沒有匯出,就回到內建翻譯,不要把翻譯檔誤當系統備份。

常見問題

DiagnosticsPage 在 Stable 2.0.55 可以直接打開嗎?
不能據此宣稱可以。元件檔存在,但 routes.tsx 沒有註冊獨立路由;請使用 Health 內嵌 Live Event、Network Diagnostics、System Information 與 Export Diagnostic。
Health 顯示 healthy 就代表每個裝置都能控制嗎?
不是。全域 healthy 主要看 HA 與 Bridge stopped/failed;仍要看 failed entities、session、subscription、映射與 Controller 支援。
Network Map 是即時網路封包圖嗎?
不是。它由 Bridge 與 devices 資料建立邏輯圖,支援版面互動;不表示實體路由、延遲或訊號強度。
metrics 端點可以直接公開給監控平台嗎?
不應直接公開。它包含版本、資源、Bridge label 與數量,仍是營運資訊;應放在受控網路並套用 proxy 驗證與最小權限。
清除 Live Event 會修好 subscription 嗎?
不會。Clear Events 只清前端收集的事件顯示;session/subscription 問題要從網路、Controller 與 Bridge health 修復。
Translation Editor 會改到其他使用者嗎?
本機覆寫保存在目前瀏覽器;其他瀏覽器或 Controller 不會自動套用。跨端需要人工匯出與匯入。

固定版本來源