第 7 章

通知

裝 Companion App、綁定手機、送出第一則測試通知。這一章做完,你就打通了「HA 想告訴你事情」的最後一哩。

為什麼要通知

  • 洗衣機洗完 → 手機叮一下。
  • 門沒關 → 出門 100 公尺就提醒。
  • 停電回來了 → 上班中的你先知道。
  • 攝影機拍到人 → 帶縮圖的通知。

Companion App 就是這些通知的載體,同時也是你日常操作 HA 最方便的工具。

本章示範的通知是觸發它(手動測試);下一章 (ch8) 教你把通知塞進自動化——例如「洗衣機停止時發通知」「有人回家時開燈並通知」。

裝 Companion App

  1. 手機商店搜「Home Assistant」

    iOS:App Store 搜 Home Assistant(開發者是 Home Assistant)。
    Android:Play 商店搜 Home Assistant Companion

  2. 打開後選「登入 Home Assistant」

    App 會自動掃描區網有沒有 HA 主機。有掃到就直接點;沒掃到就手動輸入 http://homeassistant.local:8123 或你自己的網址。

裝完 App 你會多拿到什麼:除了推播通知之外,Companion App 會自動把手機的電池電量、位置、WiFi 名稱、藍牙感測器等資料上傳到 HA,變成 sensor.你的名字_battery_leveldevice_tracker.你的名字_phone 等 entity。這些就是後面「回家自動開燈」、「電池低於 20% 提醒」自動化的原料。

用剛才建的帳號登入

  1. 輸入帳號、密碼

    第 5 章建立的個人帳號(不要用共用的管理員帳號)— 這樣通知才能點名發給你。

  2. 允許 App 存取的權限

    會問要不要開通知位置藍牙相機 等。建議至少開:

    • 通知 — 這是本章重點,一定要開。
    • 位置(永遠) — 「回到家」「離家」自動化的靈魂。
    iOS 提醒:iOS 的「位置:永遠」要在系統設定裡改,第一次登入只能給「使用 App 時」。之後回設定改成「永遠」。
  3. Home Assistant 端會自動出現一堆 sensor

    回 HA 網頁 → 設定 → 裝置與服務,會看到一個新裝置叫你的手機名稱(例如「小明的 iPhone」),裡面有幾十個 sensor:電量、充電中、WiFi 名稱、Focus 模式等。

    手機自動註冊的 sensor
    圖 7-1手機 App 註冊後,HA 自動出現的 sensor。

送出第一則通知

這個功能改過名:側欄以前有一個獨立的「開發者工具」,2026.2 起整包搬進設定裡,2026.8 又把名字從「開發者工具」簡化成工具(Tools)。所以新版路徑是設定 → 工具 → 動作,舊版是側欄的開發者工具 → 動作,裡面的分頁內容完全一樣。另外,以前叫「服務(Service)」的東西,2024.8 起正式改叫動作(Action),YAML 裡的 service: 也跟著改成 action:
  1. 設定 → 工具 → 動作

    HA 網頁左側「設定」→「工具 (Tools)」→「動作 (Actions)」分頁。

  2. 動作欄選 notify.mobile_app_XXX

    XXX 是你剛才登入的手機名稱。這個動作是 App 自動幫你建的。

    設定 → 工具 → 動作
    圖 7-2設定 → 工具的動作執行介面(截圖為舊版的開發者工具)。

    通知動作命名規則notify.mobile_app_<裝置名>,裝置名裡的非英數字元會變成底線。例如 iPhone 13 Pro Max 會變成 notify.mobile_app_iphone_13_pro_max。到「設定 → 工具 → 動作」下拉裡搜尋 notify.mobile_app 就能看到你的手機。

  3. 填 message 與 title

    簡單試一下:

    action: notify.mobile_app_xxx
    data:
      title: "測試通知"
      message: "從 HA 發來的第一則訊息"
  4. 按「執行動作」

    手機立刻叮!— 恭喜,你的智慧家庭有「嘴巴」了。

驗證:手機應該在 5 秒內跳出「測試通知」。沒收到的話:(1) App 通知權限有開嗎,(2) 手機不在勿擾模式,(3) 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" 就執行開門動作。之後不管你在世界哪裡都能遠端開門。

兩個很容易踩的坑:
  1. Android 一則通知最多 3 個動作按鈕;iOS 可以放到約 10 個但超過會需要下滑。跨平台就以 3 個為上限。
  2. action ID 是全域唯一的。如果你有兩個門鈴、都用同一個 action: OPEN_DOOR,點任一則都會觸發同一個自動化。想避免,用 {{ context.id }} 或設備名做前綴,例如 action: OPEN_DOOR_FRONT

tag 和 group:管理多則通知

  • tag: laundry:後一則相同 tag 的通知會取代前一則(例如洗衣進度:洗中 → 脫水中 → 完成)。
  • group: security:相同 group 的通知會堆疊在一起(門鈴+警報全部收在同一堆)。
進階應用預告:攝影機動作 → 通知帶截圖 → 有動作按鈕「錄影 30 秒」/「打電話報警」。這些留給下一個系列教學。

常見問題

通知沒收到?
依序檢查:(1)手機系統的 App 通知權限是不是開的;(2)App 內「設定 → Companion App → 通知」是不是開的;(3)執行的動作名稱有沒有寫對;(4)手機是不是在勿擾模式。
能通知所有家人的手機嗎?
可以。有個特殊動作叫 notify.notify,會發到所有已登入的手機 App。也可以自己建 notify group 只發給部分人。
Email、Line、Telegram 也能發嗎?
可以。SMTP、Telegram Bot、Line Notify(已停止服務改用 Messaging API)都有整合。不過建議先把手機 App 玩熟,其他管道是備援。

常見卡關

手機收不到通知
照順序檢查:(1) Companion App 開過通知權限;(2) 手機不在飛航/勿擾/省電模式;(3) HA 對外網路 OK(App 需要連 Firebase/APNs);(4) 動作名對嗎,去「設定 → 工具 → 動作」搜 notify.mobile_app 有沒有你的手機。
iOS 收到通知但無聲
iOS 需要在 App 裡設「Notification Sounds」,並在通知 data 裡指定 push: sound:。不設就是靜音顯示。
離家在外收不到(家裡收得到)
Companion App 通知是走 Firebase/APNs,只要手機能上網就會收到,跟你有沒有 Nabu Casa 或 DDNS 無關。但要用 App「操作」HA(不是收通知),才需要遠端連線——見附錄。