Im letzten Beitrag zum Thema Bluetooth Lautsprecher ging es darum, wie ein Raspberry Pi mit Bluetooth Lautsprecher verbunden wird. Heute geht es um ein Bluetooth AutoPlay Script das automatisch die Wiedergabe eines Livestreams startet sobald die Bluetooth Lautsprecher verbunden sind. Natürlich geht das ganze auch mit einem Bluetooth Headset. Das Skript selbst hat sicherlich noch potential nach oben aber es funktionierte stabil über Wochen hinweg und das ist ja das Wichtigste.
Requirements
Ein funktionierendes Pairing zwischen Raspberry Pi und Bluetooth Lautsprecher sollte vorhanden sein. Auf dem Raspberry Pi muss ein Mediaplayer wie der mplayer installiert sein. Um diesen zu installieren, einfach die folgende Zeile ausführen. Andere Mediapayer sollten auch möglich sein, dazu muss aber das Skript entsprechend angepasst werden.
sudo apt-get install mplayer
Bluetooth AutoPlay Script
Das Skript habe ich unter /home/pi abgelegt da es später auch als User pi gestartet wird.
joe /home/pi/player.sh
Im Skript müssen noch die Adresse vom Bluetooth Lautsprecher sowie eventuell der Wert “volume” für die Lautstärke im mplayer Aufruf angepasst werden.
#! /bin/bash address="15:05:21:27:17:2E" streaming=0 ps aux | grep -i mplayer | awk {'print $2'} | xargs kill while (sleep 5) do connected=`bt-device -i BS-2` > /dev/null if [[ $connected == *"Connected: 0"* ]] then connect=0 else connect=1 fi if [ $streaming == "0" ] && [ $connect == "1" ] then echo "Start Streaming" mplayer -volume 50 -ao alsa:device=bluetooth http://1live-diggi.akacast.akamaistream.net/7/965/119435/v1/gnl.akacast.akamaistream.net/1live-diggi & streaming=1 fi if [ $streaming == "1" ] && [ $connect == "0" ] then echo "Stop Streaming" sleep 8 ps aux | grep -i mplayer | awk {'print $2'} | xargs kill sleep 8 ps aux | grep -i mplayer | awk {'print $2'} | xargs kill streaming=0 fi done
Autostart
Jetzt muss nur noch die Suche nach Bluetooth Geräten aktiviert und das Bluetooth AutoPlay Script gestartet werden. Ich habe mich für den Start über die rc.local entschieden.
sudo joe /etc/rc.local
Die folgenden Zeilen vor Exit 0 einfügen.
# Set HCI0 BT USB stick to auto connect hciconfig hci0 piscan # Control mplayer for bluetooth playback su pi -c '/home/pi/player.sh'
Weitere Ideen
– Informationen vom Live-Stream oder der Playlist auslesen und über HTTP an einen Arduino senden um diese auf ein Display auszugeben.
– HTTP Schnittstelle um den Stream zu wechseln, Lautstärke zu regulieren und vielleicht noch andere Spielereien …
Hallo Stefan,ich kann dein Bluetooth AutoPlay Script nicht automatisch starten
Manuel über Terminal läuft alles wunderbar ,sobald ich Terminal schliesse gehen die Lautsprecher aus
Für deine Hilfe werde ich sehr dankbar
Grüß Bodo
Hallo Bodo,
wenn du das Skript in einem Terminalfenster und nicht wie unter Autostart beschrieben starten möchtest, solltest du das Skript durch anhängen von ” &” als Hintergrundprozess starten. So kannst du das Fenster schließen und das Skript läuft weiter.
Viele Grüße
Stefan
Hallo Stefan ,mit der Script läuft alles wunderbar.
Geht das nur mit einem Sender? oder kann man noch paar Sender mehr betreiben?
Ich habe bose mini soundlink 2
Grüß Bodo
Hallo Bodo,
freut mich das du weitergekommen bist. Was genau meinst du? Zwei Sender und ein Empfänger (Bose) kannst du doch überprüfen in dem du mit einem Smartphone als zweiten Sender arbeitest?! Für mehrere Empfänger müsste das Skript umgeschrieben werden.
Viele Grüße
Stefan
Hallo Stefan.
Ja ,das geht um dein Script,ob ich noch ein oder zwei Internetradio Sender eintragen kann.
Bei Bose ,wenn ich die Menü Taste 2 mal drücke dann überspringt auf nächste Sender .
Ist da was zu machen ,mit dem Script was du geschrieben hast?
Ich bin Anfänger mit Linux ,kannst du mir helfen ?
Grüß Bodo
Hallo Bodo,
mir ist leider keine Möglichkeit bekannt wie man die Tasten von einem Bluetooth Device abfragen kann. Ich habe einen Senderwechsel über eine Webseite bzw. einem HTTP Befehl geplant, weiß aber selber noch nicht wie ich das umsetzte.
Viele Grüße
Stefan
Hallo Stefan und Bodo,
unter diesem Link: https://kernelschmelze.de/blog/post/pi_als_bluetooth_audioschleuder/
wird ein Lösungsansatz dazu skizziert.
Die Streams sind unter MPD in eine Playliste aufzunehmen und die Einbindung der Tasten erfolgt über esekeyd.
Beschrieben ist das für ein Bluetooth-Headset, kann ja aber eventuell für die Box angepasst werden.
Falls die Auswahl des Streams über einen Browser erfolgen soll ist folgender Artikrl interessant:
http://wiki.lug-saar.de/projekte/internetradio
Gruß
Uli
Hallo Uli,
vielen Dank für die ganzen Hinweise! Genau sowas hatte ich gesucht! Ich werde das mal aufgreifen und weiter verfolgen.
Viele Grüße
Stefan
Hallo Stefan,
danke für diese Super-Anleitung. Bei mir hat es auf Anhieb funktioniert. Konntest du schon den Lösungsansatz bzgl. “Senderwechsel” auf dein Script anwenden?
Viele Grüße,
Christian
Hallo Christian,
freut mich das es geklappt hat! Sorry, mit dem Senderwechsel habe ich mich noch nicht beschäftigt, das Thema steht aber noch auf meiner ToDo Liste.
Viele Grüße
Stefan
Wie ist eigentlich die Audio Qualität? Quasi in jedem Blog, wo es um Audio mit dem Raspberry geht, wird davon berichtet dass die 3,5mm Klinke sehr schlechte Audio Ausgabe liefert. Ist das per Bluetooth deutlich besser?
Hallo Christian,
bei der Qualität ist mir kein Unterschied zu einem normalen Windows PC aufgefallen. Da das Signal komplett digital übertragen wird, kann es sich eigentlich nur durch die eingesetzte Software unterscheiden.
Der Sound über die Klinke ist nicht der Hammer, würde ihn aber auch nicht als sehr schlecht bezeichnen. Das Problem kann man aber umgehen indem man den HDMI Anschluss nutzt, eine USB Soundkarte anschließt oder eine Bluetooth Verbindung herstellt.
Viele Grüße
Stefan