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!

 

UPDATE:

Mocht de JBL Go 2 Speaker wel verbinding maken, maar er komt geen geluid uit, volg dan onderstaande stappen:

sudo nano ~/.asoundrc

Er zal nu een leeg bestand geopend worden. Plak onderstaande tekst erin (uiteraard wel het MAC-adres even aanpassen!):

pcm.bt_speaker {
   type plug
   slave {
      pcm {
         type bluealsa
         device 70:69:2D:40:B6:81
         profile "a2dp"
      }
   }
   hint {
      show on
      description "BT Speaker"
   }
}

De Raspberry Pi even rebooten:

sudo reboot

De muziek-stream van bv. Skyradio start je met onderstaand commando:

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

Indien je deze stappen hebt uitgevoerd moet je ook in het script de regels met mplayer blablabla  aanpassen naar bovenstaand format.

10 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
  • 23 maart 2019 om 21:19
    Permalink

    ik krijg wel geluid als de mplayer wordt gestart vanaf de cli.
    Wanneer ik het probeer via domoticz dan wordt er wel een stream gestart maar heb ik geen geluid…

    Weet iemand waar dat aan kan liggen?

    Alvast bedankt met vriendelijke groet,

    Tjerk

    Beantwoorden
  • 24 maart 2019 om 23:16
    Permalink

    Ik heb het probleem gevonden.
    Domoticz start mplayer als root i.p.v. user pi.
    Door, in het dzVents, voor elk commando ‘sudo -u pi’ te plaatsen werkt het wel.

    os.execute(“sudo -u pi mplayer -noconsolecontrols http://play………

    met vriendelijke groet,

    Tjerk

    Beantwoorden
  • 21 mei 2019 om 10:09
    Permalink

    Ik krijg 1 seconde geluid van de stream en dan gaat hij op pauze? Iemand enig idee hoe dit te verhelpen?

    Starting playback…
    ../../../src/asound/bluealsa-pcm.c:226: Starting
    ../../../src/asound/../shared/ctl-client.c:443: Requesting PCM resume for F8:DF:15:05:C1:A7
    ../../../src/asound/bluealsa-pcm.c:122: Starting IO loop
    ../../../src/asound/../shared/ctl-client.c:219: Getting transport for F8:DF:15:05:C1:A7 type 1
    ../../../src/asound/bluealsa-pcm.c:429: BlueALSA delay: 274.9 ms (13195 frames)
    ../../../src/asound/bluealsa-pcm.c:133: IO thread paused: 4
    A: -0.7 (unknown) of 0.0 (00.0) ??,?% 94%

    MPlayer interrupted by signal 2 in module: unknown

    MPlayer interrupted by signal 2 in module: enable_cache
    ../../../src/asound/bluealsa-pcm.c:266: Stopping
    ../../../src/asound/bluealsa-pcm.c:330: Freeing HW
    ../../../src/asound/../shared/ctl-client.c:417: Closing PCM for F8:DF:15:05:C1:A7
    ../../../src/asound/bluealsa-pcm.c:284: Closing plugin

    Beantwoorden
  • 25 augustus 2019 om 21:57
    Permalink

    Hallo,

    Is er ook een manier om vanuit domoticz het volume te regelen?

    Beantwoorden
  • 9 november 2019 om 14:53
    Permalink

    Ik krijg ook geen geluid op mijn Beats pill
    – sudo nano ~/.asoundrc en script met mijn MAC adress geplaatst en een file bij de testsound gezet en het volgende commando ingegeven, maar er is toch iets misgegaan

    pi@raspberrypi:~ $ mplayer -noconsolecontrols /home/pi/domoticz/Editors.mp3 -volume 100
    MPlayer 1.3.0 (Debian), built with gcc-8 (C) 2000-2016 MPlayer Team
    do_connect: could not connect to socket
    connect: No such file or directory
    Failed to open LIRC support. You will not be able to use your remote control.

    Playing /home/pi/domoticz/Editors.mp3.
    libavformat version 58.20.100 (external)
    Mismatching header version 58.12.100
    Audio only file format detected.
    Clip info:

    Beantwoorden

Geef een reactie

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