找回密碼
 立即註冊
惟家LINE群QRCODE
    查看: 3|回覆: 0

    影音整合:看電影模式、電視狀態偵測、多房間音樂

    [複製鏈接]

    !lvup!   100%

    363

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22005764
    發表於 3 天前 | 顯示全部樓層 |閱讀模式
    把影音接進 HA 之後,「看電影」可以變成一個按鈕。



    先把電視接進來

    Android TV / Google TV


    • HA 有官方整合(Android TV Remote)
    • 可以開關、換台、控制音量、送按鍵
    • 還能看到「現在在播什麼 App」
    • 設定時電視上會跳出配對碼


    LG(webOS)


    • 官方整合
    • 功能很完整(開關、音量、App、輸入源)
    • 注意:要在電視設定裡開「行動裝置開機(Wake on LAN)」才能遠端開機


    Samsung(Tizen)


    • 官方整合
    • 新機型可能要用 token 認證
    • 開機要靠 Wake on LAN


    Apple TV


    • 官方整合,功能很完整
    • 可以看到正在播什麼(含專輯封面)


    其他 / 老電視


    • 紅外線 —— 單向,不知道狀態
    • HDMI-CEC —— 用樹莓派可以做
    • 功率監測插座 —— 至少知道開著還是關著


    關鍵技巧:用功率判斷電視真正的狀態



    很多電視整合有一個問題


    • 電視關機後就斷網
    • HA 看到的是 unavailable,不是 off
    • 自動化很難寫


    解法:用功率監測插座
    1. template:
    2.   - binary_sensor:
    3.       - name: 電視真的開著
    4.         unique_id: tv_really_on
    5.         state: >
    6.           {{ states('sensor.電視功率') | float(0) > 20 }}
    7.         delay_off: "00:01:00"
    8.   - sensor:
    9.       - name: 電視狀態
    10.         unique_id: tv_state
    11.         state: >
    12.           {% set w = states('sensor.電視功率') | float(0) %}
    13.           {% if w > 60 %} 播放中
    14.           {% elif w > 20 %} 開機待機
    15.           {% elif w > 1 %} 待機
    16.           {% else %} 完全關閉
    17.           {% endif %}
    複製代碼

    這個比任何整合都可靠 —— 電就是電,不會騙人。

    看電影模式
    1. script:
    2.   看電影:
    3.     alias: 看電影模式
    4.     icon: mdi:movie-open
    5.     mode: restart
    6.     sequence:
    7.       # 1. 存下現在的狀態,等下可以還原
    8.       - action: scene.create
    9.         data:
    10.           scene_id: 看電影前
    11.           snapshot_entities:
    12.             - light.客廳主燈
    13.             - light.客廳氛圍
    14.             - cover.客廳窗簾
    15.       # 2. 關窗簾
    16.       - action: cover.close_cover
    17.         target:
    18.           entity_id: cover.客廳窗簾
    19.       # 3. 主燈慢慢暗下來
    20.       - action: light.turn_off
    21.         target:
    22.           entity_id: light.客廳主燈
    23.         data:
    24.           transition: 5
    25.       # 4. 留一點氛圍光(完全暗對眼睛不好)
    26.       - action: light.turn_on
    27.         target:
    28.           entity_id: light.客廳氛圍
    29.         data:
    30.           brightness_pct: 8
    31.           color_temp_kelvin: 2200
    32.           transition: 5
    33.       # 5. 開電視和音響
    34.       - action: media_player.turn_on
    35.         target:
    36.           entity_id: media_player.客廳電視
    37.       - action: media_player.turn_on
    38.         target:
    39.           entity_id: media_player.擴大機
    40.       - delay: "00:00:05"
    41.       - action: media_player.select_source
    42.         target:
    43.           entity_id: media_player.擴大機
    44.         data:
    45.           source: HDMI 1
    46.       # 6. 記錄狀態
    47.       - action: input_select.select_option
    48.         target:
    49.           entity_id: input_select.家庭狀態
    50.         data:
    51.           option: 看電影
    複製代碼

    退出看電影模式
    1. script:
    2.   結束看電影:
    3.     sequence:
    4.       - action: scene.turn_on
    5.         target:
    6.           entity_id: scene.看電影前
    7.         data:
    8.           transition: 3
    9.       - action: media_player.turn_off
    10.         target:
    11.           entity_id:
    12.             - media_player.客廳電視
    13.             - media_player.擴大機
    14.       - action: input_select.select_option
    15.         target:
    16.           entity_id: input_select.家庭狀態
    17.         data:
    18.           option: 在家
    複製代碼



    幾個很實用的小功能

    一、暫停就微微亮燈

    這個是體驗最好的一個。
    1. automation:
    2.   - alias: 暫停時亮燈
    3.     mode: restart
    4.     triggers:
    5.       - trigger: state
    6.         entity_id: media_player.客廳電視
    7.         from: playing
    8.         to: paused
    9.     conditions:
    10.       - condition: state
    11.         entity_id: input_select.家庭狀態
    12.         state: 看電影
    13.     actions:
    14.       - action: light.turn_on
    15.         target:
    16.           entity_id: light.客廳氛圍
    17.         data:
    18.           brightness_pct: 30
    19.           transition: 2
    20.   - alias: 繼續播放時暗燈
    21.     triggers:
    22.       - trigger: state
    23.         entity_id: media_player.客廳電視
    24.         from: paused
    25.         to: playing
    26.     conditions:
    27.       - condition: state
    28.         entity_id: input_select.家庭狀態
    29.         state: 看電影
    30.     actions:
    31.       - action: light.turn_on
    32.         target:
    33.           entity_id: light.客廳氛圍
    34.         data:
    35.           brightness_pct: 8
    36.           transition: 2
    複製代碼

    去廁所或拿飲料的時候不用摸黑。

    二、有人按門鈴就暫停
    1. automation:
    2.   - alias: 門鈴響就暫停
    3.     triggers:
    4.       - trigger: state
    5.         entity_id: binary_sensor.門鈴
    6.         to: "on"
    7.     conditions:
    8.       - condition: state
    9.         entity_id: media_player.客廳電視
    10.         state: playing
    11.     actions:
    12.       - action: media_player.media_pause
    13.         target:
    14.           entity_id: media_player.客廳電視
    複製代碼

    三、播完自動關
    1. automation:
    2.   - alias: 看完就關
    3.     triggers:
    4.       - trigger: state
    5.         entity_id: media_player.客廳電視
    6.         to: idle
    7.         for: "00:15:00"
    8.     actions:
    9.       - action: script.結束看電影
    複製代碼

    四、睡著了就關
    1. automation:
    2.   - alias: 在沙發睡著
    3.     triggers:
    4.       - trigger: state
    5.         entity_id: media_player.客廳電視
    6.         to: playing
    7.         for: "02:00:00"
    8.     conditions:
    9.       - condition: time
    10.         after: "23:00:00"
    11.       - condition: state
    12.         entity_id: binary_sensor.客廳動作
    13.         state: "off"
    14.         for: "00:40:00"
    15.     actions:
    16.       - action: media_player.volume_set
    17.         target:
    18.           entity_id: media_player.客廳電視
    19.         data:
    20.           volume_level: 0.1
    21.       - delay: "00:02:00"
    22.       - if:
    23.           - condition: state
    24.             entity_id: binary_sensor.客廳動作
    25.             state: "off"
    26.         then:
    27.           - action: script.結束看電影
    複製代碼

    先把音量調小 —— 如果人其實醒著,會有反應(然後自動化就不會關)。

    這種「先試探再動手」的設計很值得學



    多房間音樂

    選項


    • Sonos —— 最成熟,HA 整合很完整,但貴
    • Chromecast / Google Nest —— 便宜,可以群組
    • Music Assistant —— HA 的音樂整合中樞,值得一試
    • Snapcast —— 開源的同步播放方案(自己組的話用這個)
    • 藍牙音箱 —— 不建議(不能多房間同步)


    Music Assistant


    • HA 的附加元件
    • 把各種來源整合起來(本地檔案、Spotify、YouTube Music、網路電台)
    • 可以推到任何 HA 認得的播放器
    • 支援群組播放


    用途
    1. automation:
    2.   - alias: 早上音樂
    3.     triggers:
    4.       - trigger: state
    5.         entity_id: input_select.家庭狀態
    6.         from: 睡覺
    7.         to: 在家
    8.     conditions:
    9.       - condition: time
    10.         after: "06:00:00"
    11.         before: "10:00:00"
    12.     actions:
    13.       - action: media_player.volume_set
    14.         target:
    15.           entity_id: media_player.廚房音響
    16.         data:
    17.           volume_level: 0.2
    18.       - action: music_assistant.play_media
    19.         target:
    20.           entity_id: media_player.廚房音響
    21.         data:
    22.           media_id: 早晨播放清單
    23.           media_type: playlist
    複製代碼

    語音通知會蓋掉音樂

    這是個實務問題


    • TTS 播出來會蓋掉正在播的音樂
    • 有些播放器播完會自動恢復,有些不會


    解法
    1. script:
    2.   廣播:
    3.     fields:
    4.       訊息:
    5.         selector:
    6.           text:
    7.     sequence:
    8.       - variables:
    9.           原本音量: "{{ state_attr('media_player.客廳音響', 'volume_level') }}"
    10.           原本狀態: "{{ states('media_player.客廳音響') }}"
    11.       - action: media_player.volume_set
    12.         target:
    13.           entity_id: media_player.客廳音響
    14.         data:
    15.           volume_level: 0.5
    16.       - action: tts.speak
    17.         target:
    18.           entity_id: tts.piper
    19.         data:
    20.           media_player_entity_id: media_player.客廳音響
    21.           message: "{{ 訊息 }}"
    22.       - wait_template: >
    23.           {{ not is_state('media_player.客廳音響', 'playing') }}
    24.         timeout: "00:00:30"
    25.       - action: media_player.volume_set
    26.         target:
    27.           entity_id: media_player.客廳音響
    28.         data:
    29.           volume_level: "{{ 原本音量 }}"
    複製代碼

    至少把音量還原,不然下次播音樂會嚇到。

    一個小提醒:電視的待機耗電


    • 電視 + 機上盒 + 音響待機加起來可能 30-50W
    • 一年一千多塊
    • 用智慧插座在「離家」或「睡覺」時完全斷電


    但要注意


    • 完全斷電之後,電視開機比較慢
    • 有些機上盒斷電後要重新開機(很慢)
    • 自己權衡


    ---

    下一篇:新手最常問的三十個問題
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

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

    GMT+8, 2026-9-24 13:20 , Processed in 0.081411 second(s), 24 queries .

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