Raspberry Pi mit Synology NAS als Squeezebox mit Webradiofunktion in openHAB

Kürzlich habe ich bereits über das Thema Sprachausgabe beim Rasbperry auf Basis von openHAB und TTS-Services geschrieben. Leichter geht das Ganze wohl mit einem bestehenden Netz-Musikgerät (WLAN-Lautsprecher o.ä.). Hier gibt es von Logitech die Squeezebox welche in den ersten Versionen inzwischen schon eingestellt wurde. Die Software wurde dann in einer Version als open-Source freigegeben und lässt sich nun einfach nutzen. So können wir den Rasbperry Pi einfach als Squeezeplayer und ggf. auch Server verwenden.

Logitech Media Server installieren

Wer eine Synology-NAS besitzt, der kann einfach und bequem den Logitech Media Server installieren. Zur Installation des Pakets ist es lediglich notwendig, die gewünschten NAS-Pfade für das Speichern von Musik und Wiedergabelisten anzugeben und ein mysqueezeboxkonto muss schnell (kostenlos) eingerichtet und aktiviert werden. Dann steht unter dem Port 9002 eine Weboberfläche zur Verfügung, allerdings fehlt noch der Player, um Musik auch wiedergeben zu können.

Squeezebox / Squeezelite installieren

Hierzu muss diesmal nicht viel gemacht werden. Für raspbian steht das squeezelite-Paket schon vorbereitet zur Verfügung, welches wir einfach installieren müssen.

sudo apt-get install squeezelite
sudo /etc/init.t/squeezelite start

Nun läuft der Service, der Player ist unter dem Hostname (Standard rasbperrypi) und der MAC-Adresse des Rasbperries für den Server erreichbar und wird auch schnell selbst gefunden. Oben rechts taucht er im Webinterface als Player aus und kann selektiert werden:

Nun kann auf dem Rasbperry per Webinterface Sound an den angeschlossenen Boxen abgespielt werden.

Integration in openHAB

Um das Ganze in openHAB einzubinden muss das squeezebox-binding installiert werden:

sudo apt-get install apt-get install openhab-addon-binding-squeezebox openhab-addon-action-squeezebox openhab-addon-io-squeezeserver

Dann muss die Konfiguration entsprechend angepasst werden in der openhab.cfg:

### Squeezebox Action and Binding ###
squeeze:server.host=<IP_SYNOLOGY_NAS>
squeeze:server.cliport=9090
squeeze:server.webport=9002

squeeze:raspberrypi.id=<MAC_ADRESS_RASPBERRYPI>

Per Selektion in der items-Datei kann man so z.B. nun verschiedene Radiosender per openhab steuern.

.sitemap

    Frame label="Squeezebox-Player" {
        Selection item=squeezeboxEG mappings=[1="Aus",2="Radio 2Day München",3="SWR3",4="Bayern 1",5="Charivari"]
    }

.items

Number    squeezeboxEG        "SquezeboxEG"         <network>

.rules

rule "Squeezebox Kommando"
when
    Item squeezeboxEG received command
then
    switch(receivedCommand) {
        case 1: {
            squeezeboxStop("raspberrypi")
        }
        case 2: {
            squeezeboxPlayUrl("raspberrypi", "http://radio2day.ip-streaming.net/radio2day.m3u")
        }
        case 3: {
            squeezeboxPlayUrl('raspberrypi','http://mp3-live.swr3.de/swr3_m.m3u')
        }
        case 4: {
            squeezeboxPlayUrl('raspberrypi','http://streams.br.de/bayern1nbopf_2.m3u')
        }
        case 5: {
            squeezeboxPlayUrl('raspberrypi','http://www.vtuner.com/vtunerweb/mms/m3u33003.m3u')
        }
    }
        
end

Dann openhab neu starten (wegen Config-Änderung, nicht wegen sitemap, rules und items notwendig):

sudo service openhab restart

Behebung von Audio-Problemen (Aussetzer, Verzögerungen)

Mit der Zeit allerdings ergaben sich hier Probleme, denn der Raspberry hatte immer wieder Sound-Aussetzer, die dann doch immer wieder genervt haben. Hier scheint das squeezelite-Paket mit dem Raspberry nicht so ganz optimal zusammenzuarbeiten.

Um ein Debugging zu ermöglichen kann man als Parameter squeezelite den Namen einer Logdatei mitgeben, die beschrieben werden soll. Zusätzlich habe ich einen Lösungsansatz auf dieser Seite gefunden, welcher ideal funktioniert und die Soundaussetzer Geschichte sein lässt. In Kombination habe ich nun die /etc/default/squeezelite editiert und folgende Option der Datei angefügt:

SB_EXTRA_ARGS=" -f /var/log/squeezelite.log -d all=info -a 80:4::"

Danach squeezelite restarten und die Probleme sind gelöst. Und wenn etwas nicht klappt hilft das Logfile weiter.

Schreibe einen Kommentar

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