Update: Umstieg meines "Multiroom-Audiosystems" von xbmc auf SqueezeboxSo - geschafft - meine erste "Beta-Version" läuft.

Nachdem ich hier im Forum soviel gutes über den Squeezebox-Server gelesen habe,
wollte ich es unbedingt mal ausprobieren. Anders als bei meiner xbmc-Lösung ist hierbei
echtes syncrones Audio möglich.
Ein weiterer Vorteil für mich ist der Einsatz von piCore-Playern auf meinen Pis – diese laden Ihr komplettes
„Mini-Squeezebox-Client-Linux“ nach dem booten ins RAM – es wird also nichts auf der SD geschrieben und es kann
sogar im Betrieb der Stecker gezogen werden. Karten-Crashes wie ich sie bei xbmc hatte, sollten damit der Vergangenheit angehören...
Aber der Reihe nach – so habe ich das umgesetzt:
1)
Installation des Logitech Squeezebox-Servers auf einem PI 2 (mit Raspbian)nach dieser Anleitung:
http://allthingspi.webspace.virginmedia.com/lms.phpDer Squeezebox-Server kann nach der Installation vollständig über sein webinterface
(IP_des_Squeezebox_Servers:9000) konfiguriert werden.
Ich habe meine Musik auf einem NAS, das muß natürlich auf dem PI gemounted werden.
Im webinterface unter „Einstellungen“ habe ich ein playlisten-Verzeichnis definiert.
Für meine Radiosender habe ich einfach eine .m3u-Datei erstellt, die die Stream-URL des Senders enthält.
Diese Datei habe ich per ftp auf den Squeezebox-Server geschoben.
Die Playlisten für die Musik von meiner NAS-Platte können sehr komfortabel im webinterface des LMS erstellt und gespeichert werden.
2)
Installation der PiCore-Player auf den Client-Pis:https://sites.google.com/site/picoreplayer/homeBei der Installation hatte ich 2 Probleme:
a) Der piCorePlayer soll sich auch per eigenem webinterface konfigurieren lassen. Bei mir wurden
Änderungen nach einem reboot jedoch nicht übernommen. Ist evt. Ein Linux-Rechteproblem -
egal – es gibt eine Datei auf der Boot-Partition der erstellten SD-Karte, die heisst newconfig.cfg.
In diese Datei kann man alles eintragen: Player-Name, WLAN ja/nein, SSID, WLAN pw usw.
b) Bei Playern die über LAN angebunden sind, wird als standard die MAC-Adresse 00:00:00:00:00:00 eingetragen.
Der Logitech Server kommt mit 2 gleichen Mac-Adressen aber nicht klar, also muß diese unbedingt geändert werden.
Ich habe einfach die letzte Stelle geändert also xx.xx.xx.01, xx.xx.xx.02 usw.
Die Änderung kann man ebenfalls in der .cfg-Datei vornehmen.
3)
Ich habe mir die Module SB_SERVER und SB_PLAYER für fhem heruntergeladen...und den Server per „define“ eingebunden wie hier beschrieben:
http://forum.fhem.de/index.php?topic=17667.0Per autocreate wurden sofort alle piCorePlayer erkannt. Diese habe ich dann umbenannt.
Weil: der Name im FHEM muß mit dem Namen im Squeezebox-Server identisch sein
4)
Ich habe mir einen floorplan gebastelt:Ich habe die SB_PLAYER eingebunden.
Per "attr Mein_SB_PLAYER_Kueche webcmd playlists:volume" bekomme jetzt ich den Lautstärke-Slider
und ein dropdown-Menü für alle Playlisten des Squeezbox-Servers.
Ich hatte das Problem, dass das devStateIcon des Players im Floorplan sich nur bei jedem 2. Klick oder bei browser refresh
aktualisiert hat.
http://forum.fhem.de/index.php/topic,30139.msg287151.html#msg287151Das Atrribut "donotnotify" des Players muß auf "false" gesetzt werden, dann geht es.
(Diese Einstellung ist auch für das ordnungsgemäße Aktualiseren der readings "currentTitle" und "currentArtist" notwendig - siehe weiter unten)
Um damit nicht zuviele events zu erzeugen, habe ich folgendes Attribut gesetzt (Danke kvo1! ):
attr Mein_SB_Player event-on-change-reading currentTitle,currentArtist,state
Ich habe mir einen zusätzlichen dummy gebaut, weil ich zusätzlich noch die Stromversorgung meiner
Aktiv-Lautsprecher an- und abschalten möchte:
*** siehe Hinweis "Update 2"define JNSKuechePower dummy
attr JNSKuechePower room SB_PLAYER
attr JNSKuechePower setList on off
attr JNSKuechePower devStateIcon off:mroom_kueche.off.png on:mroom_kueche.on.png
define JNSKuechePowerAn notify JNSKuechePower:on set Kueche on;;set JogiNetAudio5Power off
define JNSKuechePowerAUS notify JNSKuechePower:off set Kueche off';;set JogiNetAudio5Power on
Ich lasse für den im floorplan eingebundenen SB-Player (hier heisst der „Kueche“) also nur „commands only“ anzeigen, dann
werden die webcmds „volume und playlists“ angezeigt, den dummy setze ich direkt darüber.
Zusätzlich lasse ich mir den gerade gespielten Titel/Interpreten
per readings-group anzeigen:
define KuecheText readingsgroup Kueche:currentTitle,currentArtist
attr KuecheText room SB_PLAYER
attr KuecheText noheading 1
attr KuecheText nonames 1
attr KuecheText notime 1
attr KuecheText style style="color:lightblue;font-size:15px"
attr KuecheText visibility hidden
Um diese Readings nur bei aktivem Player einzuschalten, habe ich ein weiteres DOIF erstellt:
define KuecheTextVis DOIF ([Kueche] eq "on") (set KuecheText visibility show) DOELSEIF ([Kueche] eq "off") (set KuecheText visibility hide)
attr KuecheTextVis room SB_PLAYER
Jetzt zum syncen der Einzelnen Player:
Ich möchte die Möglichkeit haben, jeden Player mit jedem anderen Player zu syncen.
Also habe ich mir für jeden Sync einen dummy gebaut.
Am Player „Kueche“ beispielsweise hängt also für jedes meiner anderen Geräte ein dummy:
define JNSsyncKuecheAussen dummy
attr JNSsynxKuecheAussen room SB_PLAYER
attr JNSsyncKuecheAussen setList on off
attr JNSSyncKuecheAussen devStateIcon on:aussen_ticked.png off:aussen_unticked.png
ein notify für „An“ synct den Player mit dem gewünschten Gerät und schaltet den entsprechenden
Verstärker (per Homematic-Schalter) mit ein:
define JNSsyncKuecheAussenAN notify JNSsyncKuecheAussen:on set JNSAussenPower on;set Kueche sync Aussen;set Kueche play
das „Aus“-Notify entfernt den Player aus der Sync-Gruppe:
define JNSsyncKuecheAussenAUS notify JNSsyncKuecheAussen:off set JNSAussenPower off; set Aussen unsync
So einen dummy habe ich jetzt für alle devices angelegt, für die Küche also:
define JNSsyncKuecheWohnzimmer dummy,...
define JNSsyncKuecheBad dummy...
blabla...
Ergibt bei mittlerweile 7 Playern die sich jeweils mit den anderen 6 Playern syncen können sollen 42 dummys.
Wird für einen Player ein weiterer dummy geklickt, hängt sich der jeweilige Player einfach an die sync-Gruppe dran.
(http://www.bramborka.com/fp/sb_sync.png)
(in diesem Beispiel sind Bad und Wohnzimmer mit dem Player im Arbeitszimmer gesynct)
Für das Anlegen der vielen dummys Ist ein bischen Fleißarbeit erforderlich. Theoretisch kann man den sync auch in ein webcmd legen.
Ich fand es aber so wesentlich übersichtlicher.
So sieht es im floorplan aus (im Beispielbild läuft im Arbeitszimmer "Radio Latina", das Bad und das Wohnzimmer sind dazugesynct.
Parallel läuft im Schlafzimmer "Alsterradio")
(http://www.bramborka.com/fp/fp_squeezebox.png)
Es ist also auch möglich, in Zimmer A Sender/playlist X „gesynct“ zu hören, während im Zimmer B Sender/Playlist Y spielt.
Ist schon sehr komfortabel und - wie gesagt -
auf meinen Pis absolut synchron.
Wenn ich zusätzlich eine andere Hardware (z.B. Tablet mit Player-App)
als Player laufen lassen möchten, ergibt sich evt. aus der unterschiedlichen Hardware ein Zeitversatz. Diesen kann man auf
der web-Oberfläche des LMS unter Einstellungen/Player anpassen.
Die Buttons play,pause,<<,>> habe ich über das Modul "remotecontrol" / layout "itunes" eingebunden - notify auf die SB_Player.
Zu guter letzt habe ich mir noch einen dummy „alle Zonen aus“ angelegt – damit wird auf Knopfdruck alles auf Null gesetzt.
Ist alles wie gesagt noch im Beta-Test, läuft aber insgesamt schon sehr gut.
Ich suche außerdem noch eine Möglichkeit, den Sound meines PCs auf das Squeezebox-System zu bekommen – um z.B. den Ton von gerade laufenden YouTube-Videos im ganzen Haus zu hören. (
***gelöst, siehe Update 4)
Airplay wäre auch schick. Na. Mal sehn...
Wer Tipps, Anregungen und Verbesserungsvorschläge hat: immer her damit !
Gruß, Jochen
Update 1: Klaus/kvo1 hat mich darauf hingewiesen, dass sich die readings currentArtist/currentTitle nicht richtig aktualiseren.
Ich habe jetzt das "donotnotify" der SB_PLAYER auf true gesetzt und meine DOIFs entsprechend geändert, damit scheint es zu laufen.
Damit ist mein Weg, den SB_PLAYER auf PERL-Ebene anzusprechen auch nicht mehr erforderlich. Ich habe es i.d. Beschreibung geändert.
Update 2: derron/Ronny hat mich drauf hingewiesen, dass ein Schaltaktor im SB_PLAYER auch bei "amplifier" eingetragen werden kann.
Damit kann ich mir eigentlich den zusätzlichen "Power-Dummy" sparen. Ich hab's jetzt so gelassen, damit ich nicht meine ganzen dummys/notifys
wieder ändern muß. Außerdem kann ich den Zusatz-dummy im Floorplan etwas flexibler (unabhängig vom webcmd des Players) positionieren
(wobei das nicht das "Killer-Kriterium" sein sollte..)
Update 3: Mein Problem, dass bei Aufruf des Floorplan die readings "currentTitle"/"currentArtist" angezeigt wurden, obwohl die Player aus
sind, konnte ich lösen, indem ich die Player mit dem Attribut "hidden" initialisiere. Hab's in der Beschreibung geändert.
http://forum.fhem.de/index.php/topic,36655.0.htmlUpdate 4: Auch den Ton meines PCs kann ich jetzt auf die Squeezebox-Player schicken:
http://forum.fhem.de/index.php/topic,33088.msg288843.html#msg288843