Home Assistantで、 Bluetoothスピーカーを使う。

アリエクで3点買うと送料無料ってのでポチッとしてしまった、600円のBluetoothスピーカー。何んか使うこともあるだろうというぐらいの気持ちで買ったのですが。

スマホに繋ぐだけではつまらない。他に使い道はないかと考えたとき、再構築しようとしているラズパイによる音楽サーバーに繋げられないかと試行錯誤を開始。しかし、いくらやってもうまくいかない。ラズパイとは接続しているが、音楽サーバー側で認識していない。数日いろいろやってみたが諦めた。

次にHomeAssistantのスピーカーにできないかとやってみたところ、かなり良い感じに繋がりました。HomeAssistantに最初から入っているText-to-speechで日本語を喋らせたり、Radio Browserにあるネットラジオも再生できました。

手順の要点

1. アドオンのTerminal & SSHをインストールする。
2. Terminal & SSHのコマンドラインで、bluetoothctlを使ってBluetoothスピーカーを接続し設定する。
3. アドオンのVLCをインストールする。
4. Text-to-speechやRadio Browserで音が出るか試す。

手順の詳細

1. Terminal & SSHのインストール

私はTerminal & SSHのWEBコンソールで何かできると思っていなく、わざわざPCからSSH接続して作業していました。しかし、HomeAssistant上のWEBコンソールからも作業できるようです。

2. Bluetoothスピーカーの接続と設定

Terminal & SSHのコマンドラインで以下実行。

bluetoothctl

[core-ssh ~] から[bluetoothctl]へ移行します。ちなみに[bluetoothctl]から出るにはexitと打ちます。

power on
agent on
scan on

[NEW] Device XX:XX:XX:XX:XX:XXという形の目的のBluetoothスピーカーが見つかると思います。

pair XX:XX:XX:XX:XX:XX
trust XX:XX:XX:XX:XX:XX
connect XX:XX:XX:XX:XX:XX

スピーカーが接続したら、exitでbluetoothctlを終了し、次を実行します。

pactl info

Default Sink:の部分を確認。多分、ラズパイのイヤホンジャックであるalsa_output.platform-bcm2835_audio.stereo-fallbackになっていると思います。なので、Bluetoothスピーカーをデフォルトに設定します。

pactl set-default-sink bluez_sink.XX:XX:XX:XX:XX:XX.a2dp_sink

これでBluetoothスピーカーがデフォルトに設定されます。

3. アドオンのVLCをインストール

設定の出力の項目に、目的のBluetoothスピーカーが表示されると思います。

私の場合は、最初に実行したときは、デフォルトに設定したBluetoothスピーカーしか表示されていなかったのですが、電源切ったり再起動しているうちに、イヤホンジャックのビルトインオーディオが、いつの間にか表示される様になっていました。デフォルトの設定はBluetoothスピーカーなので、デフォルトを選ぶとBluetoothスピーカーとなりますが。

今回買ったBluetoothスピーカーが良かったのか、一度接続するとスピーカーの電源を切るまでしっかり繋がっていて非常に良いシステムになりそうです。何を喋らせようかと、妄想が広がります。