RaspberryPi3でAmazonEchoをBluetoothスピーカにする2(スクリプト)

ALL
スポンサーリンク

下記の記事で説明した、RaspberryPi 3 で AmazonEcho を Bluetoothスピーカとして使用する場合に、利用できるスクリプトです。
先に下記記事での設定をおこなっておきます。

RaspberryPi 3 で AmazonEcho を Bluetoothスピーカにする パソコン鳥のブログ

また、以降の XX:XX:XX:XX:XX:XX は、上の記事中で確認した値に置き換えて下さい。

スポンサーリンク

Pulseaudio の設定を起動時に自動的に行う

RaspberryPi 3 で AmazonEcho を Bluetoothスピーカにする の「Pulseaudio の設定」を RaspberryPi起動時に行う必要がありますが、それを自動的に実行するスクリプトです。

ユーザ pi で crontab -e を実行し、次の1行を追加します。
Linuxで起動時に1度だけコマンドを実行する で説明したように、起動時に実行されます。

@reboot /home/pi/scripts/exec_restart_pulseaudio.sh

次にディレクトリ /home/pi/scripts を作成します。
そこに次のスクリプトを作成し、chmod +x /home/pi/scripts/exec_restart_pulseaudio.sh します。

これで、RaspberryPi起動時に、Pulseaudio の設定を自動的に行います。

/home/pi/scripts/exec_restart_pulseaudio.sh

#!/bin/bash
device=XX:XX:XX:XX:XX:XX
export PATH=/bin:/usr/bin:$PATH
sleep 60
killall pulseaudio
sleep 5
pulseaudio -D
sleep 5
sudo bluetoothctl <<EOF
disconnect $device
quit
EOF
/bin/sleep 3
sudo bluetoothctl << EOF
connect $device
exit
EOF

Amazon Echo に接続する

Bluetoothスピーカとして Amazon Echo に接続するスクリプトです。
(正確には Bluetoothデバイスに接続するスクリプトです)

次のスクリプトを作成し、chmod +x /home/pi/scripts/connect_bt.sh します。
スクリプト実行で、Amazon Echo に接続実行し、接続完了まで待ち合わせます。

既に接続済みの場合は、接続動作は行いませんので、Amazon Echo に接続済みかどうかに関わらず、とりあえずこれを実行すればOKです。

/home/pi/scripts/connect_bt.sh

#!/bin/bash
device=XX:XX:XX:XX:XX:XX
export PATH=/bin:/usr/bin:$PATH
result=`echo -e "info $device\nexit\n" | bluetoothctl | grep "Connected: yes"`
if [ -z "$result" ]; then
    echo "connect $device\nexit\n" | sudo bluetoothctl
fi
FOUND=`pacmd list-sinks | grep "Echo-"`
while [ -z "$FOUND" ]
do
    sleep 1
    FOUND=`pacmd list-sinks | grep "Echo-"`
done

Amazon Echo への再生音量を設定する

Bluetoothスピーカとして接続した Amazon Echo の、音量を設定するスクリプトです。

次のスクリプトを作成し、chmod +x /home/pi/scripts/set_bluetooth_volume.sh します。

音量変更は、現在の Amazon Echo の音量を100%として、
/home/pi/scripts/set_bluetooth_volume.sh 80%
のように実行します。
100%以上も指定できます。

/home/pi/scripts/set_bluetooth_volume.sh

#!/bin/sh
device=XX:XX:XX:XX:XX:XX
VOL=$1
export PATH=/bin:/usr/bin:$PATH
/home/pi/scripts/connect_bt.sh
INDEX=`pacmd list-sinks | grep "* index: " | sed -e 's/  \* index\: //'`
pactl set-sink-volume "$INDEX" "$VOL"

コメント