Bluetooth AutoPlay Script

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 …

12 Gedanken zu „Bluetooth AutoPlay Script“

  1. 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

    1. 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

  2. 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

    1. 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

  3. 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

    1. 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

      1. 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

        1. 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

          1. 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

          2. 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

  4. 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?

    1. 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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert