第 1 章

版本邊界與 Node-RED 在 Home Assistant 中的角色

先把 Add-on、Node-RED runtime、Home Assistant 節點套件與選裝儀表板分清楚,你才能知道畫面、功能與相容性究竟由哪一層決定。本指南固定在可重現的四組版本,不以滾動中的主分支推測行為。

為何需要本章

你在 Home Assistant 裡按下「開啟網頁介面」時,看到的是 Node-RED 編輯器,但負責安裝、啟動、Ingress、資料掛載與權限授予的是 Home Assistant Community App: Node-RED。編輯器內又同時存在 Node-RED 核心節點與 Home Assistant WebSocket 節點。若把這些都叫成「Node-RED 22」,遇到問題時便很容易查錯版本、套用錯誤設定,甚至誤以為某個網路入口已受另一層的登入保護。

本指南的家庭情境是假設你想逐步完成走廊感應燈、離家提醒、溫度觀察等自動化。第一條 Flow 不控制任何設備;稍後才會在明確驗證 entity、觸發條件與回復方式後使用 Home Assistant 的 Action 節點。舊文件或既有 flow 可能稱它為 Call Service;那是舊版介面脈絡,本文後續一律使用目前 UI 名稱 Action。

先記住:編輯器裡拖曳或儲存設定,和把變更 Deploy 到 runtime 是兩件事;Home Assistant Add-on 的重新啟動,又是第三件事。理解三者邊界是安全操作的起點。
本指南用語:Flow(流程)是由節點與接線組成的自動化;node(節點)負責接收、處理或送出資料;wire(接線)決定訊息流向;message/msg(訊息物件)是在節點間傳遞的資料;runtime(執行環境)則負責實際執行已 Deploy 的流程。介面名稱與程式碼會保留英文,解說文字優先使用中文。

核心觀念

四層不是四種叫法,而是四份責任

層級本指南固定版本負責內容不應外推
Home Assistant Community App: Node-RED22.0.1容器映像、Supervisor manifest、Ingress、direct listener、掛載、啟動設定與預裝套件不是 Node-RED runtime 的版本號
Node-RED5.0.2瀏覽器編輯器、runtime、訊息模型、Deploy 與核心節點不要引用其他修補版畫面或行為
node-red-contrib-home-assistant-websocket0.80.3連線 Home Assistant 的設定節點、事件、狀態查詢、Action 與 companion entity 節點不是 Home Assistant Core 本身
FlowFuse Dashboard 21.30.2,選裝另行安裝後提供 dashboard config 與 widget 節點未列於 Add-on direct dependencies,不能說是內建

Add-on 的固定 node-red/package.json 明列 node-red 5.0.2 與 node-red-contrib-home-assistant-websocket 0.80.3;也明列 theme collection 5.0.1,卻沒有 @flowfuse/node-red-dashboard。因此 dashboard 只能視為選修擴充。套件名稱中的「Dashboard 2」是產品世代,不代表本指南鎖定的 npm major 必須是 2。

開始前的五步版本盤點

  1. 確認安裝品項。

    在 Home Assistant 的 Add-on 詳細頁確認你使用的是 Node-RED Add-on,而不是另一台主機上自行安裝的 Node-RED。記下 Add-on 顯示版本;本指南只驗證 22.0.1。

  2. 從啟動紀錄核對 runtime。

    先閱讀 Add-on 日誌,確認服務能正常啟動;不要把包含 token、URL、entity ID 或完整訊息內容的日誌貼到公開處。本指南的 runtime 基線是 Node-RED 5.0.2。

  3. 核對 Home Assistant 節點套件邊界。

    Add-on 已預裝 HA WebSocket 0.80.3,不需要為了第一個練習再安裝同名套件,也不要自行改動預設 server connection。等到第 8 章才檢查連線節點。

  4. 先選擇無副作用練習。

    依序閱讀本章、安裝、編輯器,再建立 Inject → Change → Debug。此流程只產生記憶體中的訊息與 Debug 顯示,不呼叫 Action、不寫檔、不操作照明。

  5. 為未來操作建立變更紀錄。

    記下版本、變更目的、Deploy scope 與觀察結果,但清除私人位置、真實 ID、憑證和內部位址。版本不符時先查 release note,不要假定本章每個 UI 細節仍相同。

版本對照與兩種 Home Assistant 門檻

Add-on 22.0.1 的 manifest 宣告 homeassistant: 2023.3.0。這是 Supervisor 判斷 Add-on 是否可安裝的門檻,不是 HA WebSocket 0.80.3 對使用者承諾的完整相容需求。後者的固定 README 明列 Home Assistant 2024.3+、Node-RED 3.1.1+、Node.js 18.2.0+。在本指南組合中,內嵌 Node-RED 5.0.2 高於該 Node-RED floor;你仍應以 Home Assistant 2024.3+ 作為使用 HA WebSocket 0.80.3 的前提。

數字來源與用途正確判讀
2023.3.0Add-on manifest 的 homeassistantSupervisor 安裝門檻
2024.3+HA WebSocket 0.80.3 README該整合套件的 Home Assistant prerequisite
3.1.1+HA WebSocket README套件最低 Node-RED;不是本站實際基線
18.2.0+HA WebSocket README套件最低 Node.js;Add-on 內由映像管理
aarch64、amd64Add-on manifest 的 arch22.0.1 宣告的兩種架構;另有 init: false

init: false 是 container manifest 層的旗標,與設定 safe_mode 讓 Node-RED 以 --safe 啟動不同。也不要把套件內部常數、Add-on 安裝門檻與 README 對使用者列出的 prerequisite 混成單一「最低 HA 版本」。

畫面或文件不同時:先核對 Add-on、Node-RED 與 HA WebSocket 版本,再於無副作用的測試流程驗證;不要直接套用其他版本的 UI 選項或預設值。

從家庭情境看系統角色

以「玄關有人經過時,夜間才亮燈」為例:Home Assistant 整合負責把動作感測器與燈具表達成 entity,並維持其狀態;HA WebSocket 節點可訂閱狀態事件、查詢其他 entity,最後透過 Action 請 Home Assistant 執行開燈;Node-RED runtime 負責讓訊息沿著節點與 wires 流動、判斷條件與管理流程生命週期;Add-on 則讓這個 runtime 在 Home Assistant 管理環境內啟動、持久化與透過 Ingress 開啟。

  • Home Assistant:設備與服務語意的權威端。Node-RED 不會因為畫布上寫了某個名稱,就自動建立真實設備。
  • HA WebSocket 0.80.3:溝通橋梁。它包含 server config、state/event、Action 與 companion entity 等節點;不同節點有不同輸入覆寫及輸出規則。
  • Node-RED 5.0.2:執行圖形化程式。每個 msg 是 JavaScript object,可有 payload、topic、_msgid 與其他欄位,不只是單一文字。
  • Add-on 22.0.1:部署包裝。它提供資料路徑、proxy、權限與套件集合,但不替你判斷自動化是否安全。

所以「開燈失敗」至少可能落在 entity 不可用、HA connection、Action 設定、訊息條件、runtime Deploy 或 Add-on 啟動等不同層級。先定位層級,再讀對應日誌,遠比反覆重啟有效。

資料、控制與安全責任分層

編輯、部署與重新啟動

你在工作區移動節點是編輯器狀態;按下 Deploy 才把選定範圍交給 runtime;修改 Add-on 設定後,官方 Add-on 文件要求重新啟動 Add-on。Deploy 可能重啟受影響節點,Add-on restart 則重建更外層的服務。對計時器、事件訂閱與有外部副作用的節點而言,範圍不同就可能有不同結果。

認證也不能混為一談

Home Assistant Ingress、direct listener、editor route、flow 建立的 HTTP endpoint、static content 與選裝 dashboard 是不同邊界。能從 Home Assistant 側欄安全開啟 editor,不代表所有 direct endpoint 都自動套用同一層保護;細節在第 2 章拆解。

高權限能力不是每條 flow 都需要

Add-on manifest 授予 Home Assistant API、Supervisor manager、host network、UART 與多個掛載。這描述容器可用能力,不代表你應在 flow 中任意讀寫 Home Assistant 設定、掃描區網或操作序列設備。第三方節點也在 Node-RED process 權限下執行,安裝前必須審查來源與必要性。

由無副作用到家庭自動化的學習路徑

  1. 第 2 章:透過 Add-on 文件的 Install → Start → Logs → OPEN WEB UI 路徑建立環境,先使用 Ingress,理解 direct port、TLS 與各種認證層。
  2. 第 3 章:只巡覽 workspace、Palette、sidebar、Help 與三種 Deploy scope。截圖或辨識畫面時不要按 Deploy。
  3. 第 4 至 7 章:用手動 Inject 練習 msg、Change、Switch、時間與 context;輸出只到 Debug,避免實體副作用。
  4. 第 8 至 12 章:確認 HA server connection 後,先讀事件與狀態,再學 Action。範例 ID 一律換成你環境中經驗證的 entity,且先設停止與回復條件。
  5. 後續實戰:加入去彈跳、可用性處理、錯誤路徑、通知與維運。走廊燈等範例先在不影響安全設備的測試對象驗證。

FlowFuse Dashboard 2 只在需要人機介面時選裝。它不是完成 Home Assistant 自動化的先決條件;先把訊息、狀態與錯誤路徑學好,能降低把漂亮畫面誤當可靠控制的風險。

故障排除:先找對層

  • 看到 22.0.1,卻在 editor 找不到「Node-RED 22」功能:22.0.1 是 Add-on 版本;應查內嵌 Node-RED 5.0.2 的固定 editor/core 來源。
  • Add-on 可安裝,但 HA 節點行為異常:不要只拿 manifest 的 2023.3.0 判斷。核對 HA WebSocket 0.80.3 README 所列 Home Assistant 2024.3+ prerequisite,再看已清除敏感資訊的 Add-on 日誌。
  • 教學提到 Dashboard,Palette 卻沒有:FlowFuse Dashboard 2 1.30.2 是選裝且未內建;不是 Add-on 安裝失敗。不要為了前四章先安裝。
  • 搜尋到的 Deploy 或 Action 畫面不同:先確認文章是否針對 Node-RED 5.0.2 與 HA WebSocket 0.80.3。新版 UI 名稱是 Action,舊稱 Call Service 只應用於辨識既有資料。
  • 不確定問題屬哪層:依序記錄「Add-on 能否啟動、editor 能否開啟、Node-RED 核心 Inject/Debug 能否通、HA server 是否連線、特定 HA 節點是否報錯」。公開回報前移除 token、URL、位置與真實 ID。

固定來源與查證界線

官方文件可用來理解概念;若畫面、預設值或相容性說明不同,先與以上固定版本來源核對,再於無副作用的測試流程確認。

常見問題

Add-on 與 Node-RED runtime 會共用版本號嗎?
不會。22.0.1 是 Home Assistant Community App 的版本;它在固定 package manifest 中內嵌 Node-RED 5.0.2。
看到較新的 Node-RED 修補版說明時,應直接套用嗎?
先不要把後續版本當成本指南基線。先核對 Add-on 實際內嵌版本;若仍是 5.0.2,就以本站固定來源判讀。只有在維護流程核准升級後,才先備份、閱讀對應 release notes,並以無副作用 Flow 重驗 editor、Deploy 與核心節點行為。
為什麼安裝後沒有 FlowFuse Dashboard 2?
因為 @flowfuse/node-red-dashboard 1.30.2 是選裝套件,未列在 Add-on 22.0.1 direct dependencies。前四章也不需要它。
看到舊 flow 的 api-call-service 要改成 action 嗎?
不要手改 persisted type。HA WebSocket 0.80.3 的 palette/UI 名稱是 Action,但相容資料中的 type 仍可為 api-call-service;日後應透過 editor 檢查與遷移。
同事只回報「Node-RED 22」時,應先追問什麼?
先分別取得 Add-on、Node-RED、HA WebSocket、Home Assistant 與 Node.js 版本,再記錄問題發生於安裝、編輯器、執行環境或 HA 節點。不要用一個模糊版本號開始升級或重裝。