Home automation, ook wel domotica genoemd, draait om het automatiseren van apparaten in woonhuizen. Whirlwind volgt deze ontwikkelingen met interesse en schrijft uit eigen ervaring zo nu en dan een artikel over dit onderwerp. In dit artikel koppelen we een Bluetooth-speaker aan Snapcast, een multi-room-audioserver en client voor onder andere Raspberry Pi (meer informatie over Snapcast is vermeld in ons artikel Multi-room Spotify via Raspberry Pi). Veel Bluetooth-speakers hebben een accu en kunnen bijvoorbeeld gebruikt worden op een terras, balkon of in een badkamer.
We gebruiken een Raspberry Pi met besturingssysteem Raspbian Stretch. Raspbian Stretch bevat bluealsa. Bluealsa zorgt voor de koppeling tussen het Linux-geluidssysteem ALSA (Advanced Linux Sound Architecture) en Bluetooth zodat het geluid naar de Bluetooth-speaker wordt gestuurd.
Overigens kan de Raspberry Pi aan één Bluetooth-speaker gekoppeld worden. Verder treedt een lichte vertraging op vanwege het Bluetooth-protocol; de muziek op de Bluetooth-speaker loopt iets achter ten opzichte van andere Snapcast-clients. Als Snapclient ingesteld wordt op een latency van bijvoorbeeld 150 milliseconden, is deze vertraging minder merkbaar.
Met de volgende commando’s wordt de software op de Raspberry Pi bijgewerkt en vervolgens opnieuw gestart.
sudo apt-get update
sudo apt-get dist-upgrade (eventueel met --fix-missing)
sudo reboot
We gebruiken pi-btaudio, een installatiescript dat het volgende doet:
Download en installeer pi-btaudio met:
git clone https://github.com/bablokb/pi-btaudio.git
cd pi-btaudio
sudo tools/install
De volgende stap is het koppelen van de Bluetooth-speaker aan de Raspberry Pi.
sudo bluetoothctl
power on
pairable on
agent on
default-agent
scan on
Schakel de Bluetooth-speaker in en wacht totdat deze gedetecteerd is. Noteer het MAC-adres van de Bluetooth-speaker, bijvoorbeeld 00:58:56:0F:04:4B en voer de volgende commando’s in.
trust 00:58:56:0F:04:4B
pair 00:58:56:0F:04:4B
connect 00:58:56:0F:04:4B
Sluit bluetoothctl met exit.
Open het ALSA-configuratiebestand met sudo nano /etc/asound.conf en vul het MAC-adres van de Bluetooth-speaker in bij defaults.bluealsa.device.
Voor Snapcast is het noodzakelijk om een virtuele geluidskaart aan te maken. Voeg het onderstaande toe aan asound.conf:
pcm.bt_speaker {
type plug
slave {
pcm {
type bluealsa
device 00:58:56:0F:04:4B
profile "a2dp"
}
}
hint {
show on
description "BT Speaker"
}
}
Herstart de Raspberry Pi met sudo reboot. Na de herstart wordt de Bluetooth-speaker als het goed is automatisch verbonden. Stel eventueel het volume in met alsamixer.
Snapclient moet aan de virtuele geluidskaart gekoppeld worden. Vraag een lijst van geluidskaarten op met snapclient -l.
Stel dat de virtuele geluidskaart bt_speaker met 1 wordt aangeduid, configureer Snapclient dan als volgt. Open het Snapclient-configuratiebestand met sudo nano /etc/default/snapclient en wijzig de onderstaande variabele in:
SNAPCLIENT_OPTS="--soundcard 1 --latency 150"
Herstart de Snapcast client. De muziek wordt nu afgespeeld op de Bluetooth-speaker.