Maak van je Raspberry Pi een bluetooth radio

Aangezien je een Raspberry Pi voor zowat alles kunt gebruiken gaan we hem ook maar inzetten als radio. Gewoon omdat het kan ;). Op de Raspberry Pi zelf zit bluetooth, het enige wat je moet aanschaffen is een degelijke bluetooth speaker. Ik heb gekozen voor de JBL Go 2 Speaker, lekker compact, goed betaalbaar en een uitstekend geluid!

 

Benodigdheden

 

Software

Allereerst gaan we een aantal packages installeren op de Pi. Voer onderstaande commando’s uit in de terminal:

sudo -i
apt-get update
apt-get upgrade
apt-get dist-upgrade
apt-get install mplayer 
apt-get install bluealsa
apt-get install pulseaudio
apt-get install pulseaudio-module-bluetooth
curl -s https://raw.githubusercontent.com/lukasjapan/bt-speaker/master/install.sh | bash
sudo reboot

Nadat de Pi herstart is gaan we een bluetooth-verbinding maken. Eerst moet je het bluetooth MAC-adres van de speaker zien te achterhalen. Dit kan met een app (op je telefoon) als Bluetooth Discovery. Zorg ervoor dat de JBL Go 2 speaker voldoende opgeladen is en zet hem aan (knopje helemaal links). Daarna druk je op het 2e knop, zodat de speaker in connectie-modus staat. Het MAC-adres van mijn speaker is 70:69:2D:40:B6:81, schrijf dit ergens op (of kopieer het naar kladblok.

Om verbinding tussen de Raspberry Pi en de speaker te maken voer onderstaande commando’s in de terminal in:

sudo bluetoothctl
power on
agent on
scan on
connect 70:69:2D:40:B6:81
trust 70:69:2D:40:B6:81
scan off
exit

Na het connect-commando zal je iets als onderstaande zien, de speaker heeft dan verbinding met de Raspberry.

pi@raspberrypi:~ $ sudo bluetoothctl
[NEW] Controller B9:31:EB:AC:7B:E1 raspberrypi [default]
[NEW] Device 70:69:2D:40:B6:81 JBL GO 2
[JBL GO 2]# connect 70:69:2D:40:B6:81
Attempting to connect to 70:69:2D:40:B6:81
Connection successful
[JBL GO 2]#

Om te testen of het allemaal goed werkt geef je onderstaand commando in, je moet dan Q-Music te horen krijgen.

mplayer -noconsolecontrols http://icecast-qmusic.cdp.triple-it.nl/Qmusic_nl_live_96.mp3

Het kan voorkomen dat de verbinding een keer weg valt, maar daar is een oplossing voor. We maken een crontask aan:

sudo crontab -e

En voeg onderstaande regel toe.

*/1 * * * * /bin/echo -e 'connect 70:69:2D:40:B6:81 \n' | bluetoothctl &> /dev/null

Druk op CTRL+X en bevestig dat je de wijziging wilt opslaan.

Dan is er nog een ander probleem: van de EU moet tegenwoordig alles energiezuinig zijn, een bluetooth speaker dus ook. Indien er 10 minuten geen geluid afgespeeld wordt dan zal de speaker zichzelf uitschakelen. Dat is niet handig. Hier vind je MP3-bestand met geluid dat niet te horen is. Met het script, later in de artikel, laten we dit MP3-bestand iedere 5 minuten afspelen indien je geen radio-zender geselecteerd hebt in Domoticz. Pak het bestand uit met een extractor als WinRar en plaats het bestand in de folder /home/pi/domoticz/

Radio switch aanmaken

De volgende stap is om een radio switch aan te maken. Ga naar Setup -> Hardware en kies bij Type voor Dummy. Je mag zeg een herkenbare naam kiezen:

Zodra de Dummy Hardware toegevoegd is kunnen de radio switch gaan aanmaken. Klik hiervoor op Create Virtual Sensors (in het donkerblauw).

Maak nu de radio switch aan van het type “Selector Switch” en geef “Radio” als naam van de sensor in:

Ga nu naar het tabblad Switches en klik op “Edit” bij de Selector Switch. Bij Selector Style kies je voor “Select menu”, wijzig de huidige Selector Levels naar radio-zenders naar keuze. Indien je meer dan 3 radio-zenders wilt hebben dan kun je deze één voor één toevoegen bij Level name. Zodra je alle radio-zenders toegevoegd heb klik je op “Save”.

 

Script

Op regel 21, 26 en 31 vind je de streams van de radio-zenders. Als je meer radio-zenders hebt aangemaakt dan moet je deze uiteraard ook in het script toevoegen. Hier of hier vind je URL’s van streams. Ga nu in Domoticz naar Setup > More Options > Events en maak een dzVents script aan met de trigger “All”. Haal alle tekst/code weg en plak onderstaand script erin. Activeer het script en klik op “Save”.

Je kunt nu met de selector switch een radio-zender kiezen. Als je niet meer naar de radio wilt luisteren selecteer je “Off”. Het script zal dan iedere 5 minuten een MP3-bestand afspelen dat voor mensen niet te horen is, zodat wordt voorkomen dat de JBL Go 2 Speaker zichzelf uitzet. Ik heb de speaker aangesloten op een bureaulamp dit een USB-poort heeft, zodat de batterij van de speaker nooit leeg is.

  

 

return {
  on = {
    devices = {
      'Radio'
    },
      timer = {
         'every 5 minutes' 
      },
  },
  execute = function(domoticz, device)

       if domoticz.devices('Radio').state == 'Off' then 
            os.execute ("killall mplayer")
            os.execute ("mplayer -noconsolecontrols /home/pi/domoticz/testsound.mp3 -volume 100 &> /dev/null")
    end
    
    if  device.state ~= 'Off' then

        if device.state == 'Q-Music' then
            os.execute ("killall mplayer")
            os.execute ("mplayer -noconsolecontrols http://icecast-qmusic.cdp.triple-it.nl/Qmusic_nl_live_96.mp3 -volume 100 &> /dev/null")
        end
        
        if device.state == 'Radio 538' then
            os.execute ("killall mplayer")
            os.execute ("mplayer -noconsolecontrols http://playerservices.streamtheworld.com/api/livestream-redirect/RADIO538AAC.aac -volume 100 &> /dev/null")
        end
        
        if device.state == 'Sky Radio' then
            os.execute ("killall mplayer")
            os.execute ("mplayer -noconsolecontrols http://playerservices.streamtheworld.com/api/livestream-redirect/SKYRADIO.mp3 -volume 100 &> /dev/null")
        end
        
    end

end
}

 

Veel luisterplezier!

4 gedachten over “Maak van je Raspberry Pi een bluetooth radio

  • 28 januari 2019 om 12:48
    Permalink

    Leuk idee.!! Maar zou dit ook afgespeeld kunnen worden via Chromecast Audio die in het zelfde netwerkt hangt.?

    Beantwoorden
  • 28 januari 2019 om 21:34
    Permalink

    Precies bovenstaande stappen doorlopen. Configureren binnen Domoticz is ook succesvol. Alleen krijg ik geen geluid. Ook niet als ik via CLI handmatig een stream open middels mplayer.

    Dit is waar het waarschijnlijk door komt:

    Audio only file format detected.
    ==========================================================================
    Opening audio decoder: [mpg123] MPEG 1.0/2.0/2.5 layers I, II, III
    AUDIO: 48000 Hz, 2 ch, s16le, 192.0 kbit/12.50% (ratio: 24000->192000)
    Selected audio codec: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 layers I, II, III)
    ==========================================================================
    AO: [pulse] Init failed: Connection refused <<======
    Failed to initialize audio driver 'pulse' <<======
    AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
    Video: no video
    Starting playback…
    A: 12.3 (12.2) of 0.0 (unknown) 2.5% 41%

    Iemand die hier ook last van heeft / een oplossing voor heeft?!

    Beantwoorden
  • 16 februari 2019 om 17:41
    Permalink

    ik heb alles uitgevoerd, ik krijg bluetooth verbinding met mijn speaker maar er komt geen geluid uit

    Is er iemand die mij kan helpen.

    Alvast bedankt met vriendelijke groet

    Rene

    Beantwoorden
    • 17 februari 2019 om 11:28
      Permalink

      Beste Rene,

      Ik had hetzelfde probleem. Onderstaande info heeft het probleem bij mij opgelost!

      —-
      The solution is to set a default config:
      – sudo nano ~/.asoundrc

      And insert:

      pcm.bt_speaker {
         type plug
         slave {
            pcm {
               type bluealsa
               device 88:C6:26:A8:32:C9
               profile “a2dp”
            }
         }
         hint {
            show on
            description “BT Speaker”
         }
      }

      – Waarbij “device 88:C6:26:A8:32:C9” natuurlijk het bluetooth MAC moet zijn van de speaker. Daarna evt een sudo reboot.

      – Daarna de volgende syntax gebruiken voor je radiostreams (voorbeeld met SKYRADIO):

      mplayer -ao alsa:device=bt_speaker -noconsolecontrols http://playerservices.streamtheworld.com/api/livestream-redirect/SKYRADIO.mp3 -volume 100

      Beantwoorden

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *