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.