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

    影音整合實作:電視狀態偵測三選一、看電影模式、Music Assistant 多房間音樂

    [複製鏈接]

    !lvup!   100%

    386

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22006063
    發表於 2026-9-21 14:10:52 | 顯示全部樓層 |閱讀模式
    這篇做三件事:把電視的「真實狀態」弄準、把「看電影」變成一個按鈕、把音樂送到每個房間。

    三件事互相獨立,你可以只做其中一件。但第一件是其他兩件的地基 —— 電視狀態抓不準,看電影模式就會在錯的時候亂動。

    第一件是其他兩件的地基

    第一步:先把電視接進 HA

    依你的電視型別選一條。每一條都要跑一次,不能跳。

    1-1 Android TV / Google TV(含小米盒子、NVIDIA Shield、部分 Sony / TCL / 禾聯)


    • 設定 → 裝置與服務 → 新增整合
    • 搜尋 Android TV Remote(不是 Android Debug Bridge,那是另一個)
    • 填電視的 IP(在電視的 設定 → 網路 裡看得到)
    • 電視螢幕上會跳出一組六位數配對碼,填進 HA


    你會看到:裝置頁面多出一台裝置,底下有一個 `media_player.xxx` 和一個 `remote.xxx`。

    到開發者工具 → 狀態找那個 `media_player`,開著電視時屬性應該是:
    1. state: playing
    2. source: Netflix
    3. app_id: com.netflix.ninja
    4. friendly_name: 客廳電視
    複製代碼

    三個常見的卡關:


    • 配對成功後馬上顯示「Need to pair again」 —— 這是已知問題。要重新啟動 HA 才能重新開始配對,光刪掉整合重加是沒用的
    • NVIDIA Shield 遠端開不了機 —— 到 Shield 的 設定 → 遙控器與配件 → 簡化喚醒按鈕,把「僅以電源鍵和 Netflix 鍵喚醒」關掉
    • 在搜尋框裡打不出字 —— 部分電視的螢幕鍵盤不能跟虛擬鍵盤並存。解法是電視改用 Gboard,或到 HA 這個整合的設定頁把 Enable IME 取消勾選


    1-2 LG(webOS)


    • 新增整合 → 搜尋 LG webOS Smart TV
    • 填 IP,電視上會跳出「是否允許」的視窗,用遙控器按確認
    • 要能遠端開機的話:電視的 設定 → 一般 → 行動裝置開機(Mobile TV On) 要打開。這是 Wake on LAN,電視完全斷電時無效


    1-3 Samsung(Tizen)


    • 新增整合 → 搜尋 Samsung Smart TV
    • 新機型會在電視上跳出授權視窗,要按允許
    • 開機一樣靠 Wake on LAN,電視的「網路待機」或「行動裝置開機」要開著


    1-4 Apple TV


    • 新增整合 → 搜尋 Apple TV
    • 通常會自動被發現,按 設定 即可
    • 要輸入兩次配對碼(一次給遙控器協定、一次給狀態協定),兩次都要輸入才算完成


    1-5 老電視 / 沒有網路功能的電視

    跳到第二步的 2-3(功率判斷),那條完全不需要電視有網路。

    第二步:讓「電視到底開著沒有」這件事變準

    第二步:讓「電視到底開著沒有」這件事變準

    這是整篇最重要的一段。 所有影音自動化的可靠度,上限就是這個判斷的可靠度。

    三種做法,優缺點不同,可以疊加。

    2-1 做法一:用網路整合的狀態(最省事,但有一個致命缺點)

    第一步接好之後,`media_player.ke_ting_dian_shi` 就有狀態了:`playing` / `paused` / `idle` / `off`。

    致命缺點:很多電視關機後就整台斷網,HA 拿到的是 `unavailable` 而不是 `off`。

    為什麼這很麻煩:`unavailable` 也會在「網路斷線」「HA 剛重開」「電視在更新韌體」時出現。你沒辦法分辨「關機」和「出事」,而自動化寫 `to: "off"` 就永遠不會觸發。

    適合:Apple TV、Android TV 盒子這類待機時仍然連著網路的裝置。Android TV Remote 是電視主動推播狀態給 HA 的(不是 HA 定時去問),所以狀態變化幾乎是即時的。

    2-2 做法二:HDMI-CEC(能控制沒網路的電視,但相依性很脆)

    CEC 是走 HDMI 線的控制協定。HA 有內建的 HDMI-CEC 整合,它沒有被移除(被移除的是 2021.7 拿掉的樹莓派內建 CEC 硬體支援,很多舊文章把兩件事搞混了)。

    成立條件:


    • 跑 HA 的那台機器本身要有 HDMI 輸出,而且要用 HDMI 線接到電視或擴大機。HA 裝在 NAS 的 Docker 裡、或裝在機房的小主機上,這條就不可能
    • 機器本身不支援的話,可以買 USB CEC 轉接器(搜尋關鍵字「Pulse-Eight USB CEC Adapter」,約 1500~2500 元)
    • 它是 YAML-only 的整合,沒有畫面可以設定


    設定。放在 configuration.yaml 的最外層:
    1. hdmi_cec:
    2.   host: 127.0.0.1
    3.   devices:
    4.     Television: 0.0.0.0
    5.     AVReceiver: 1.0.0.0
    6.     PlayStation: 1.1.0.0
    複製代碼

    那串數字是 HDMI 的「實體位址」:`0.0.0.0` 永遠是電視本身;接在電視 HDMI 1 的裝置是 `1.0.0.0`,接在 HDMI 2 是 `2.0.0.0`;再串一層(例如擴大機的 HDMI 1)就是 `1.1.0.0`。

    存檔重啟後,你會看到狀態頁多出 `switch.television`、`switch.avreceiver` 等實體,開關電視時它們會跟著變。

    ⚠ 最常見的失敗:HA 的日誌出現
    1. No module named 'cec'
    複製代碼

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

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

    本版積分規則

    延伸閱讀

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

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

    GMT+8, 2026-11-10 00:37 , Processed in 0.133617 second(s), 25 queries .

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