第一個自動化
前面 7 章把家的架構、命名、儀表板、通知都設好了。這一章帶你寫下第一個自動化,讓 HA 真的動起來。
為什麼要學這個
自動化(Automation)是 HA 的核心,也是它跟一般智慧插座 App 最大的差別。
如果只把 HA 當成「一個能遠端開關燈的網頁」,那它其實不比小米 / Google Home 好用。真正讓 HA 值得裝的,是它能夠:
- 根據時間(日落、每天早上七點)做事。
- 根據感應器(有人進門、溫度太高、電費超過某個值)做事。
- 根據多重條件(有人在家 + 天黑 + 週間)決定要不要做。
不寫自動化,HA 只是一台比較貴的遙控器。從這一章開始,我們讓它變成家裡的自動管家。
三段式概念:觸發 / 條件 / 動作
HA 的每一個自動化,都由三個區塊組成,記住這三個字,之後看任何範例都不會迷路:
- 觸發(Trigger):什麼時候要「開始檢查」這個自動化。例如:日落時、某個開關被按下、溫度超過 28 度。
- 條件(Condition):觸發後,要不要真的執行。例如:只有「有人在家」時才開燈、只有「非假日」才響鬧鐘。條件是過濾器。
- 動作(Action):實際要做什麼。例如:開燈、發推播、播音樂、關窗簾。
device_id 與 entity_id 的陷阱
這是 HA 社群公認的第一大坑,也是很多人自動化「用一陣子就壞了」的原因。
在 UI 建立自動化時,HA 預設會用裝置(device)作為觸發對象,例如「客廳燈這台裝置被打開」。看起來很直覺,但這樣寫的自動化是綁在那顆實體硬體上的識別碼(device_id)。一旦你把燈換一顆、重新配對 Zigbee、或整合被移除重加,device_id 就變了,自動化就整條壞掉,而且不會有錯誤訊息,它只是安靜地不動。
entity_id(例如 light.livingroom_ceiling),不用 device_id。UI 上會顯示為「實體」選項而非「裝置」選項。entity_id 是邏輯名稱,是你在第 4 章時親手命名的那串。設備換了、整合重裝了,只要你把新設備改成同樣的 entity_id,所有自動化就會自動接回去,不用改。
這也是為什麼第 4 章的命名與標籤那麼重要——好的 entity_id 是可維護自動化的地基。
延伸閱讀:HA 社群討論:為什麼要避開 device_id。
動手做:當日落時打開客廳燈
我們用最經典的「日落開燈」來實作。目標:太陽下山後 30 分鐘,把客廳主燈打開,並發一則手機推播通知。
trigger: → triggers:、condition: → conditions:、action: → actions:;動作裡的 service: 改成 action:、service_data: 改成 data:。舊寫法官方沒有廢除、還是跑得動,所以你在網路上看到舊範例不用緊張。下面的步驟一律用新名稱,括號裡標的舊名就是舊版畫面上會看到的字。-
建立新的自動化
到「設定 → 自動化與場景 → 建立自動化」,選擇「從空白開始」。給它一個好懂的名字,例如「日落 · 客廳主燈開啟」。
圖 8-1從空白開始,命名務必描述「什麼時候做什麼」。 -
設定觸發:太陽(Sun)
點「新增觸發器」,選擇「Sun(太陽)」。事件選「日落(sunset)」,偏移(Offset)填
+00:30:00,代表日落後 30 分鐘。
圖 8-2Sun 觸發器:日落 / 日出 + 前後偏移。 -
(可選)加條件:只在有人在家時執行
點「新增條件」,選「狀態」,實體選
zone.home(或你在第 3 章設定的家庭區域),狀態為「大於 0」。這樣沒人在家時就不會浪費電。
圖 8-3條件是過濾器,觸發後才判斷。 -
設定動作:開燈
點「新增動作」,選「執行動作(Perform action,舊版叫「呼叫服務 Call service」)」,動作選
light.turn_on。重點:目標欄請切換到「實體(Entity)」而非「裝置(Device)」,選light.livingroom_ceiling(或你的客廳主燈 entity_id)。亮度可以設 60%。
圖 8-4動作務必用 entity_id,見上一節說明。 -
加一個推播通知動作
再點「新增動作」,選
notify.mobile_app_xxx(第 7 章設定的通知動作),訊息填「客廳燈已隨日落開啟」。
圖 8-5動作可以串很多個,會依序執行。 -
儲存並測試
右下角「儲存」,取名確認後,回自動化列表可以看到剛建立的那一條。點它旁邊的「執行」按鈕手動觸發一次,確認燈會亮、手機會收到通知。
圖 8-6手動執行可以跳過觸發條件,直接驗證動作。
執行模式:single / restart / queued / parallel
當自動化在「還在跑」時又被觸發了一次,該怎麼辦?這就是執行模式要決定的事。到自動化編輯頁最下方可以看到「模式」設定。
| 模式 | 行為 | 適用情境 |
|---|---|---|
| single(預設) | 上一次還在跑就忽略新觸發 | 日落開燈、每日備份這類「跑完就好」的自動化 |
| restart | 收到新觸發就中斷上一次,從頭跑 | 動作感應器開燈 + 5 分鐘後關(每次有人動就重新計時) |
| queued | 新觸發排隊,等前面跑完再依序執行 | 按門鈴要「叮咚」一聲一聲不能疊,或短時間內大量事件 |
| parallel | 同時跑多份 | 很少用,只有明確要多份並行才選 |
不確定就留 single,這是最安全的預設值。
Blueprint 藍圖:一鍵匯入別人寫好的自動化
Blueprint 是 HA 官方的「自動化樣板」機制。作者把邏輯寫好、把可調整的部份留成表單欄位,你只要填幾個下拉選單就有一條可用的自動化。
常見用途:
- Zigbee 按鈕綁定(IKEA、Aqara、Hue 遙控器)
- 動作感應器開燈 + 逾時關燈
- 洗衣機 / 烘衣機完成通知
- 低電量電池提醒
匯入流程:
- 到 HA Blueprint Exchange 論壇 或 GitHub 找想要的藍圖,複製它的 URL。
- 在 HA「設定 → 自動化與場景 → 藍圖 → 匯入藍圖」,貼上網址。
- 回到「自動化」,點「以藍圖建立自動化」,選剛匯入的那份,填入設備 / 實體參數即可。
常見卡關
問題 1:自動化沒跑,也沒錯誤訊息。
到自動化列表點那條進去,右上角有個「軌跡(Trace)」按鈕。這裡會顯示最近 5 次觸發的完整流程:哪個觸發器啟動、條件通過與否、動作跑到哪一步。看軌跡是排錯的第一步,比看 log 直接。
問題 2:觸發有發生,但條件把它擋掉。
Trace 會用顏色標示:條件那格如果變成灰色 / 白色,代表沒通過,滑鼠移上去會顯示當下實體的實際值。常見原因:zone.home 判斷成 0(大家都不在家)、時間條件與時區沒對齊。
問題 3:實體名字拼錯 / 已改名。
如果你改了 entity_id,舊自動化不會自動跟著改,會安靜地跑不動。HA 2024 版之後新增了「未使用的實體」和「重新命名時提示更新」,但舊自動化建議手動用「設定 → 工具 → YAML → 檢查設定」(Settings → Tools → YAML;這頁舊版叫「開發者工具」,2026.2 搬進「設定」底下、2026.8 再簡化成「工具」)跑一次驗證。