Teil 2 - Integration von SONOS
Die hier beschriebenen Erfahrungen beziehen sich ausschließlich auf die Integration von SONOS Komponenten! Sie geben meine subjektive Meinung in meiner Smarthome-Umgebung wieder.
Ich habe folgende SONOS Player im Einsatz: 4 x Play1, 1 x Play5. Bei diesem Test ging es mir um die grundsätzliche Integration von SONOS sowie das Verhalten, wenn ein Player vom Strom getrennt wird.
FHEM
Die SONOS Einbindung in FHEM erfolgt mit dem Modul SONOS. Voraussetzung ist, dass man vorher die notwendigen Perl-Module installiert. Andernfalls schlägt die Defintion der Player fehl. Man definiert einen SONOS Player mit dem für FHEM üblichen define Befehl und erhält als Ergebnis (sehr) viele Devices unterschiedlicher Typen (SONOS, SONOSPLAYER, ReadingGroups usw.) mit (sehr) vielen Readings, von denen man im Normalbetrieb nur einen Bruchteil benötigt. Die vielen Devices sind erforderlich, um in der Standard FHEM Oberfläche eine einigermaßen komfortable Bedienoberfläche bereitzustellen (s. Screenshot FHEM_Sonos_Control).
Dazu kommen Unmengen von Set/Get Befehlen, um die Geräte zu steuern. Weniger wäre hier mehr. Einen neuen Nutzer verwirrt das eher als dass es hilft. Hier wäre eine Wahlmöglichkeit zwischen Basis- und Expertenmodus hilfreich.
Wer seine SONOS Player über ein separates Frontend (z.B. TabletUI) steuern möchte, benötigt eigentlich nur die Player-Devices. Hier wäre es vorteilhaft, wenn man bereits beim ersten Define angeben könnte, ob man nur die Player haben möchte oder die Rundumglücklich-Lösung.
Als Beispiel die defines für einen Player:
define d_sonhome_Kueche SONOSPLAYER RINCON_5CAAFD4224A601400_MR
define d_sonhome_KuecheRG readingsGroup d_sonhome_Kueche:<{SONOS_getCoverTitleRG($DEVICE)}@infoSummarize2>
define d_sonhome_KuecheRG_Favourites readingsGroup d_sonhome_Kueche:<{SONOS_getListRG($DEVICE,"Favourites",1)}@Favourites>
define d_sonhome_KuecheRG_Radios readingsGroup d_sonhome_Kueche:<{SONOS_getListRG($DEVICE,"Radios",1)}@Radios>
define d_sonhome_KuecheRG_Playlists readingsGroup d_sonhome_Kueche:<{SONOS_getListRG($DEVICE,"Playlists")}@Playlists>
define d_sonhome_KuecheRC remotecontrol
define d_sonhome_KuecheRC_Notify notify d_sonhome_KuecheRC set d_sonhome_Kueche $EVENT
define d_sonhome_KuecheRC_Weblink weblink htmlCode {fhem("get d_sonhome_KuecheRC htmlcode", 1)}
Leider funktioniert die SONOS-Integration seit einigen Monaten nur noch schlecht bzw. läuft instabil, insbesondere wenn man Player zeitweise vom Strom trennt. Dann wird das FHEM-Logfile permanent mit Fehlern vollgeschrieben und irgendwann funktioniert die Steuerung der noch aktiven Player gar nicht mehr. Dann hilft nur noch ein Neustart von FHEM.
Wertung: Das SONOS-Modul in FHEM lässt was Konfigurierbarkeit und Funktionsumfang angeht keine Wünsche offen. Wenn man Player nur steuern möchte, gilt eher: Nicht alles was machbar ist, macht auch Sinn. Aufgrund der vielen Probleme insbesondere bei temporärerem Ausschalten von Playern ist das SONOS Modul in FHEM für mich nur noch (sehr) eingeschränkt nutzbar. Da die Probleme schon seit Monaten bekannt sind, erscheint es mir unwahrscheinlich, dass sie zeitnah behoben werden.
IOBroker
Die Installation des SONOS-Adapters aus der Weboberfläche heraus gestaltet sich einfach. Man gibt im Suchfeld Sonos ein und klickt auf den Install Button. Während der Installation wird ein Fenster geöffnet, in dem die Ausgabe der ausgeführten npm Befehle angezeigt wird. Nach Abschluss der Installation öffnet sich ein Fenster, in dem einige Einstellungen des Adapters festgelegt werden können (s. Screenshot IOBroker_Sonos_Adapter). Hier gibt es auch einen Button, über den man eine Suche nach Playern starten kann.
Leider erkennt der Adapter Player nicht automatisch, d.h. man muss immer explizit danach suchen lassen. Die Suche arbeitet unzuverlässig. Wenn 2 Player zu einem Stereopaar verbunden sind, wird nur einer der Player gefunden. Außerdem wurde bei meinen Tests immer ein Player mit der IP Adresse 0.0.0.0 gefunden, der jedoch über keinerlei Funktion verfügte. Unschön ist auch, dass gefundene Player nur mit ihrer IP-Adresse angezeigt werden. Den Namen und den Raum muss man manuell eintragen. Wenn ein Player nicht gefunden wird, kann man ihn manuell durch Eingabe der IP-Adresse hinzufügen. Man sollte also wissen, welche IP welchem Player gehört.
Nach dem Abspeichern der Adapter-Konfiguration symbolisiert ein grüner Kreis vor dem Adapternamen, dass der Adapter funktioniert. Die Player und ihre Attribute findet man im Reiter "Objekte" (s. Screenshot IOBroker_Sonos_Objekte). Die Werte bzw. Zustände der Attribute findet man im Reiter "Zustände".
Der SONOS Adapter bringt eine Weboberfläche zur Steuerung der Player mit (s. Screenshot IOBroker_Sonos_Control). Diese ist weitgehend identisch mit der Oberfläche der SONOS-App. Man muss also nicht erst ein Dashboard in IOBroker definieren, um die Basisfunktionen eines Players nutzen zu können.
Das Ausschalten eines Players wird vom Adapter nicht erkannt, d.h. der Player steht weiterhin auf active = true. Bei einem Druck auf den Play Button passiert erwartungsgemäß nichts, es wird auch keine Fehlermeldung angezeigt. Nach dem Einschalten kann der Player jedoch ohne weitere Maßnahme wieder genutzt werden.
Wertung: Wie vieles bei IOBroker scheint auch der SONOS Adapter sich noch in einem Beta Stadium zu befinden. Insbesondere die fehlende Erkennung von Player-Name und Raum macht die Einrichtung sehr umständlich. Der Adapter erkennt nicht, wenn ein Player vom Strom genommen wird. Dies ist noch schlechter gelöst als in FHEM, wo zumindest der Player als "disappeared" angezeigt wird.
OpenHab
Die Integration von SONOS Playern in OpenHab erfolgt über die Weboberfläche PaperUI. Sobald man das SONOS-Bindung aktiviert hat, erscheinen die gefundenen Player in der Inbox von OpenHab. Von dort können sie in die aktive Konfiguration übernommen werden und finden sich dann unter der Rubrik "Things" (s. Screenshot OpenHab_Sonos_Things). OpenHab findet alle Player, auch gruppierte oder Stereopaare. Die Player werden mit Name und IP-Adresse erkannt.
Mit einem Klick auf einen Player unter "Things) wird die Liste der verfügbaren Channels angezeigt (s. Screenshot OpenHab_Sonos_Channels). Der Channel "Control" dient der Steuerung eines Players, während andere Channels wie Current Artist mit Readings in FHEM vergleichbar sind. Zu jedem benötigten Channel erzeugt man ein Item und verbindet es mit dem Channel (s. Screenshot OpenHab_Sonos_Link). Das ist mit ein paar Mausklicks erledigt. Ich habe ein Item für die Steuerung und ein weiteres für die Anzeige des aktuellen Titels angelegt. Danach konnte ich den Player in der Weboberfläche steuern (s. Screenshots OpenHab_Sonos_Control). Leider sind in der Weboberfläche PaperUI nicht alle Parameter eines Players auswählbar. Fehlende Parameter müssen über Konfigurationsdateien eingebunden werden.
Eine Trennung vom Stromnetz hat problemlos funkioniert. Der entsprechend Player wird dann einfach als "offline" angezeigt. Nach dem Einschalten erkennt OpenHab den Player wieder als "online".
Wertung: Die Einbindung eines SONOS-Players in OpenHab ist sehr einfach über das Webinterface möglich. Mit ein paar Mausklicks hat man eine funktionale, auf die persönlichen Bedürfnisse zugeschnittene Steuerung ohne Overhead implementiert. Schade ist, dass einige Parameter nicht über das Webfrontend eingebunden werden können.
Fazit Teil 2 - SONOS Integration
Am besten gefällt mir die SONOS-Integration in OpenHab. Hier kommt man am schnellsten ans Ziel. Die Player werden inklusive Raum und Name gefunden und alle wichtigen Attribute stehen zur Verfügung. Allerdings ist je nach benötigtem Parameter manuelle Nacharbeit notwendig. Der SONOS-Adapter in IOBroker muss noch etwas reifen und bietet keine Verbesserung gegenüber FHEM. Negativ fällt v.a. die manuelle Konfiguration der Playernamen auf. Das SONOS Modul in FHEM ist für mich aufgrund der aktuellen oben beschriebenen Probleme eigentlich nicht mehr nutzbar. Daher würde ich, selbst wenn ich bei FHEM bleiben sollte, für die SONOS-Integration eine andere Lösung verwenden (z.B. IOBroker mit FHEM Adapter oder Homematic Virtual Layer).
P.S. Teil 3 - Homematic dürfte etwas aufwändiger werden, daher bitte etwas Geduld.