雜談:Home Assistant在遠端電腦播放聲音 / TALK: Playing Audios on a Remote Computer with Home Assistant
結論寫在前面,最後我還是在Home Assistant使用vlc-telnet播放聲音,這是最簡單的做法了。
Home Assistant播放聲音的需求 / The Need to Play Sounds in Home Assistant
Home Assistant的主要功能是蒐集各種感測器的資訊,並在設定好的規則下去遙控不同的設備。其中,聲音的播放其實也是遙控的目標之一。
我使用Home Assistant播放聲音的情況大致上可以分成兩類:特定情境下播放的背景音樂、提示的語音播報。前者是在我在工作、準備睡覺需要助眠、鬧鐘提醒等情況下播放對應的音樂;後者則是用於任何需要提醒我的情況,例如水壺的水燒開了(沒錯,如果不提醒的話,我會完全忘記我在燒開水)、洗衣機的衣服洗好了。之前我甚至利用語音播報功能,播放手機裡面的特定消息,例如指定某些人的LINE或Messenger訊息。這樣就可以讓我不用拿起手機看,用聽的就能知道訊息的開頭。
Home Assistant播放聲音的功能中,主要使用的瀏覽器跟VLC-TELNET這兩種做法。如果我們有固定用來操控Home Assistant的設備,那用網頁瀏覽器應該是很直覺的選擇。不過大多時候我會用手邊的設備來操控Home Assistant。在電腦前面就用網頁,拿起手機或平板的時候,就用這些行動裝置操控Home Assistant。因此VLC-TELNET一般來說會是更好用的選擇。
遠端操控VLC播放器:VLC-TELNET / Remotely Controlling VLC Media Player: VLC-TELNET
https://www.youtube.com/watch?v=upshdP-1K_0
VLC 是一款功能強大的多媒體播放器,除了基本的播放功能外,它還提供了透過 Telnet 協定進行遠端控制的功能。這意味著使用者可以透過網路,從另一台裝置 (例如電腦或手機) 對 VLC 進行控制,例如播放、暫停、調整音量、切換曲目等等。這個功能對於需要遠端管理多媒體播放的場合非常實用,例如在家庭劇院系統中,或是需要在不同房間控制音樂播放的情況。
在安裝好VLC播放器之後,以下指令可以讓VLC播放器開啟遠端遙控的功能:
vlc -I telnet --telnet-password=secret
接著我們就可以在Home Assistant的整合功能中,用VideoLAN中的VLC media player via Telent來將它加入Home Assistant。
之後我們就可以在Home Assistant裡面,讓該VLC播放對應的聲音檔案了。
繞遠路:PulseAudio remote / A Roundabout Way: PulseAudio Remote
vlc-telnet可以透過指定IP去操控遠端電腦沒錯,但一開始我把它當作只能連線到localhost本機端的播放工具。後來我需要在Home Assistant主機之外的地方播放音樂時,我就在找尋可以用的遠端播放音樂的解決方案。
https://ivonblog.com/posts/vnc-pulseaudio/
當時我參考了Ivon的介紹,他提到可以用PulseAudio的遠端音訊功能,遠端電腦的聲音輸出介面連到Home Assistant的伺服器上,而此時Home Assistant在本機播放的音樂就可以串流到遠端電腦的喇叭裡。
這是一個可行的方案,但設定起來頗為複雜。而且奇妙的是,在音樂播放好幾個小時之後,PulseAudio會莫名其妙的斷線。我必須要把遠端電腦的聲音播放裝置拔掉再重插,讓遠端電腦重新接上聲音裝置,這樣聲音串流才能繼續進行。
後來我將Home Assistant轉換成Proxmox VE上運作的虛擬機器後,我就放棄了PulseAudio遠端音訊設定,改回使用VLC-TELENT。現在運作下來,的確比PulseAudio Remote穩定的多。
真是意外地繞了個遠路啊,在這邊就記錄一下這件事情吧。