找回密碼
 立即註冊
    查看: 9|回覆: 0

    把電視變成通知螢幕:覆疊通知的完整設定,以及不會被家人要求拆掉的五條規則

    [複製鏈接]

    !lvup!   100%

    383

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22005836
    發表於 4 天前 | 顯示全部樓層 |閱讀模式
    目標:門鈴響的時候,電視畫面角落跳出一個帶門口照片的小視窗,影片不會被打斷;瓦斯漏氣的時候,畫面正中央跳出不透明的紅色警告。一般的訊息(洗衣機好了)不會打斷任何人。

    目標:門鈴響的時候,電視畫面角落跳出一個帶門口照片的小視窗,影片不會被打斷;瓦斯漏氣的時候,畫面正中央跳出不透明的紅色警告。一般的訊息(洗衣

    步驟 1:先決定什麼訊息值得打斷

    這一步比任何技術設定都重要。打斷看電視的成本很高,亂用的結果是家人要求你把整套關掉——而那會連真正該通知的事情一起沒了。

    分成三級,動手前先把你家的清單列出來:


    • 一定要打斷:瓦斯、漏水、煙霧、闖入。這些要蓋住畫面正中央
    • 值得在角落提示:門鈴、家人到家、電話
    • 不要上電視:洗衣機好了、裝置電量低、每日摘要。這些走手機推播


    實務上最後留下來的通常不超過五個。列多了就是在自找家庭糾紛。

    步驟 2:在電視上裝 App 並開權限

    做法一用的是一個叫 Notifications for Android TV 的 App(Fire TV 上叫 Notifications for Fire TV,在 Amazon Appstore)。它在電視上跑一個服務,收到 HTTP 請求就把訊息覆疊在畫面上。


    • 在電視的 Google Play 商店(Fire TV 是 Amazon Appstore)搜尋 Notifications for Android TV,安裝
    • 打開它


    你會看到:App 首頁顯示這台電視的 IP 位址,以及兩個權限的開關狀態。

    ⚠ 兩個權限一定要開,而且系統不會主動提示你:


    • 通知存取(Notification access)
    • 顯示在其他應用程式上層(Display over other apps)


    App 裡面有按鈕會直接帶你去對應的系統設定頁。兩個都開了 App 首頁會顯示綠色的勾。

    只有一個是綠的 → 通知會送得出去但看不到,症狀是「Home Assistant 說成功了,電視上什麼都沒有」。

    順手把電視的 IP 做 DHCP 保留(在路由器管理頁面找「DHCP 保留」或「位址保留」),IP 變了整合就會斷。

    步驟 3:加入整合

    Home Assistant → 設定 → 裝置與服務 → 新增整合 → 搜尋 Notifications for Android TV。

    填入步驟 2 看到的電視 IP。名稱建議填英文,例如 `Living room TV`。

    ⚠ 名稱填中文的話,Home Assistant 不會產生中文的動作名稱,它會把中文音譯成拼音(`notify.ke_ting_dian_shi`)。後面 YAML 裡寫 `notify.客廳電視` 會指到一個不存在的動作,執行時會報 Service not found,但如果那一步在腳本中間,你可能要很久才會發現。

    你會看到:到 設定 → 工具 → 動作,在動作欄位打 `notify`,清單裡出現 `notify.living_room_tv`。

    步驟 4:送出第一則測試通知

    到 設定 → 工具 → 動作,切到 YAML 模式:
    1. action: notify.living_room_tv
    2. data:
    3.   title: 測試
    4.   message: 這是一則測試通知
    5.   data:
    6.     duration: 10
    7.     fontsize: large
    8.     position: bottom-right
    9.     color: indigo
    10.     transparency: "25%"
    複製代碼

    按執行動作。

    你會看到:電視畫面右下角跳出一個半透明的深藍色方塊,顯示「測試 / 這是一則測試通知」,十秒後消失。正在播的影片不會被打斷。

    完全沒出現:回步驟 2 確認兩個權限。再確認電視是醒著的(螢幕保護或待機時收不到)。

    出現了但是灰色的:這就是下面要講的第一個陷阱。

    ⚠ 陷阱一:color 只吃具名顏色,不吃十六進位

    網路上(包括這篇文章的舊版)常見的寫法是 `color: "#1a73e8"`。

    這個整合的 color 欄位只接受九個具名值:
    1. grey(預設)  black  indigo  green  red  cyan  teal  amber  pink
    複製代碼

    填十六進位不會報錯,不會有警告,通知照樣送出去——只是永遠是預設的灰色。照舊教學寫的人會設計一套「緊急紅色、一般藍色」的分級,然後拿到九個一模一樣的灰方塊,而且找不到哪裡錯。

    ⚠ 陷阱二:transparency 只有五個離散值

    合法的只有 `0%` / `25%` / `50%` / `75%` / `100%`,沒有 40%、沒有 30%。填別的值同樣是靜靜地被忽略。

    你會看到(怎麼確認自己踩到了):把上面的測試改成 `color: red`,再執行一次。

    你會看到:這次方塊是紅色的。還是灰色代表 App 版本太舊,去 Play 商店更新。

    步驟 5:所有可用的選項
    1. action: notify.living_room_tv
    2. data:
    3.   title: 標題
    4.   message: 內文
    5.   data:
    6.     # 顯示幾秒,整數,預設 5
    7.     duration: 15
    8.     # small / medium / large / max,預設 medium
    9.     fontsize: max
    10.     # bottom-right / bottom-left / top-right / top-left / center
    11.     # 預設 bottom-right
    12.     position: center
    13.     # grey / black / indigo / green / red / cyan / teal / amber / pink
    14.     # 預設 grey
    15.     color: red
    16.     # 0% / 25% / 50% / 75% / 100%,預設 25%
    17.     transparency: "0%"
    18.     # ⚠ 這個才是「打斷對方」的開關,預設 false
    19.     interrupt: true
    20.     # 帶一張圖:path 是本機路徑,url 是網址
    21.     image:
    22.       path: /config/snapshots/doorbell.jpg
    複製代碼

    ⚠ `interrupt` 是原文完全沒提、但最重要的一個選項。


    • `interrupt: false`(預設):通知只是覆疊在畫面上,使用者可以完全不理它,等 duration 到了自己消失
    • `interrupt: true`:通知會搶走焦點,要按確認才會消失


    瓦斯、煙霧、漏水才用 true。門鈴用 false。用錯的後果是「看電影看到一半被一個要按確認的視窗擋住」,這是最快讓家人叫你拆掉的做法。

    步驟 6:門鈴通知帶攝影機快照

    先處理快照要放哪裡——這件事有安全性。

    在 configuration.yaml 最上層加:
    1. homeassistant:
    2.   allowlist_external_dirs:
    3.     - /config/snapshots
    複製代碼

    然後用檔案編輯器或 SSH 建立 `/config/snapshots/` 這個資料夾,重啟 Home Assistant。

    ⚠ 不要用 `/config/www/snapshots/`。

    `/config/www/` 對應的網址是 `/local/`,而那個路徑不需要登入就能存取。把門口的照片寫進去,等於任何知道檔名的人都能從外面看你家門口——而檔名就是你在 YAML 裡寫死的那個。

    用 `/config/snapshots/` 加上 `allowlist_external_dirs`,檔案只有 Home Assistant 自己讀得到,nfandroidtv 的 `image: path:` 是從 Home Assistant 內部讀檔再傳給電視的,完全不經過公開網址。
    1. alias: 門鈴通知到電視
    2. id: doorbell_notify_tv
    3. mode: single
    4. triggers:
    5.   - trigger: state
    6.     entity_id: binary_sensor.doorbell
    7.     to: "on"
    8. conditions:
    9.   # 電視沒開就不用送
    10.   - condition: state
    11.     entity_id: binary_sensor.tv_is_on
    12.     state: "on"
    13. actions:
    14.   # 1. 先拍一張
    15.   - action: camera.snapshot
    16.     target:
    17.       entity_id: camera.front_door
    18.     data:
    19.       filename: /config/snapshots/doorbell.jpg
    20.   # 2. 等檔案寫完
    21.   - delay: "00:00:01"
    22.   # 3. 送到電視
    23.   - action: notify.living_room_tv
    24.     data:
    25.       title: 門口有人
    26.       message: "{{ now().strftime('%H:%M') }}"
    27.       data:
    28.         duration: 15
    29.         fontsize: large
    30.         position: top-right
    31.         color: amber
    32.         transparency: "25%"
    33.         interrupt: false
    34.         image:
    35.           path: /config/snapshots/doorbell.jpg
    複製代碼

    `delay: "00:00:01"` 不能省。`camera.snapshot` 是非同步的,動作回傳的時候檔案不一定寫完了。沒有這一秒的話,電視上會顯示一張上次的舊照片,或者根本沒有圖,而且不會有錯誤。

    你會看到:按門鈴之後三到五秒,電視右上角出現一個琥珀色的方塊,裡面有門口的即時照片和時間。

    方塊出現了但沒有圖:到 設定 → 系統 → 記錄 找 `not allowed to access`。看到這個錯誤代表 `allowlist_external_dirs` 沒設好或沒重啟。

    `binary_sensor.tv_is_on` 從哪來:這顆感測器要自己建。最通用的做法是給電視接一顆計量插座,用功率判斷:

    以下還有約 61% 的內容
    登入後即可閱讀完整教學

    登入繼續閱讀使用 Google 登入
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

    延伸閱讀

    加入惟家 LINE 群 QR Code加入惟家 LINE 群

    Archiver|手機版|惟家的智能論壇

    GMT+8, 2026-9-25 12:03 , Processed in 0.130169 second(s), 24 queries .

    快速回覆 返回頂部 返回列表