通知
裝 Companion App、綁定手機、送出第一則測試通知。這一章做完,你就打通了「HA 想告訴你事情」的最後一哩。
為什麼要通知
- 洗衣機洗完 → 手機叮一下。
- 門沒關 → 出門 100 公尺就提醒。
- 停電回來了 → 上班中的你先知道。
- 攝影機拍到人 → 帶縮圖的通知。
Companion App 就是這些通知的載體,同時也是你日常操作 HA 最方便的工具。
本章示範的通知是觸發它(手動測試);下一章 (ch8) 教你把通知塞進自動化——例如「洗衣機停止時發通知」「有人回家時開燈並通知」。
裝 Companion App
-
手機商店搜「Home Assistant」
iOS:App Store 搜 Home Assistant(開發者是 Home Assistant)。
Android:Play 商店搜 Home Assistant Companion。 -
打開後選「登入 Home Assistant」
App 會自動掃描區網有沒有 HA 主機。有掃到就直接點;沒掃到就手動輸入
http://homeassistant.local:8123或你自己的網址。
裝完 App 你會多拿到什麼:除了推播通知之外,Companion App 會自動把手機的電池電量、位置、WiFi 名稱、藍牙感測器等資料上傳到 HA,變成 sensor.你的名字_battery_level、device_tracker.你的名字_phone 等 entity。這些就是後面「回家自動開燈」、「電池低於 20% 提醒」自動化的原料。
用剛才建的帳號登入
-
輸入帳號、密碼
用第 5 章建立的個人帳號(不要用共用的管理員帳號)— 這樣通知才能點名發給你。
-
允許 App 存取的權限
會問要不要開通知、位置、藍牙、相機 等。建議至少開:
- 通知 — 這是本章重點,一定要開。
- 位置(永遠) — 「回到家」「離家」自動化的靈魂。
iOS 提醒:iOS 的「位置:永遠」要在系統設定裡改,第一次登入只能給「使用 App 時」。之後回設定改成「永遠」。 -
Home Assistant 端會自動出現一堆 sensor
回 HA 網頁 → 設定 → 裝置與服務,會看到一個新裝置叫你的手機名稱(例如「小明的 iPhone」),裡面有幾十個 sensor:電量、充電中、WiFi 名稱、Focus 模式等。
圖 7-1手機 App 註冊後,HA 自動出現的 sensor。
送出第一則通知
service: 也跟著改成 action:。-
設定 → 工具 → 動作
HA 網頁左側「設定」→「工具 (Tools)」→「動作 (Actions)」分頁。
-
動作欄選
notify.mobile_app_XXXXXX 是你剛才登入的手機名稱。這個動作是 App 自動幫你建的。
圖 7-2設定 → 工具的動作執行介面(截圖為舊版的開發者工具)。 通知動作命名規則:
notify.mobile_app_<裝置名>,裝置名裡的非英數字元會變成底線。例如 iPhone 13 Pro Max 會變成notify.mobile_app_iphone_13_pro_max。到「設定 → 工具 → 動作」下拉裡搜尋notify.mobile_app就能看到你的手機。 -
填 message 與 title
簡單試一下:
action: notify.mobile_app_xxx data: title: "測試通知" message: "從 HA 發來的第一則訊息"
-
按「執行動作」
手機立刻叮!— 恭喜,你的智慧家庭有「嘴巴」了。
進階:帶動作按鈕的通知
通知不只是靜態文字,可以帶按鈕讓你點:
action: notify.mobile_app_xxx
data:
title: "門口有人按電鈴"
message: "點下面決定要不要開門"
data:
actions:
- action: "OPEN_DOOR"
title: "開門"
- action: "IGNORE"
title: "不理"
然後在自動化裡監聽事件 mobile_app_notification_action,拿到 action: "OPEN_DOOR" 就執行開門動作。之後不管你在世界哪裡都能遠端開門。
- Android 一則通知最多 3 個動作按鈕;iOS 可以放到約 10 個但超過會需要下滑。跨平台就以 3 個為上限。
- action ID 是全域唯一的。如果你有兩個門鈴、都用同一個
action: OPEN_DOOR,點任一則都會觸發同一個自動化。想避免,用{{ context.id }}或設備名做前綴,例如action: OPEN_DOOR_FRONT。
tag 和 group:管理多則通知
tag: laundry:後一則相同 tag 的通知會取代前一則(例如洗衣進度:洗中 → 脫水中 → 完成)。group: security:相同 group 的通知會堆疊在一起(門鈴+警報全部收在同一堆)。
常見問題
通知沒收到?
能通知所有家人的手機嗎?
notify.notify,會發到所有已登入的手機 App。也可以自己建 notify group 只發給部分人。Email、Line、Telegram 也能發嗎?
常見卡關
手機收不到通知
notify.mobile_app 有沒有你的手機。iOS 收到通知但無聲
push: sound:。不設就是靜音顯示。