Sonos Integration 2.0

Sonos Integration 2.0

In einem früheren Artikel habe ich bereits einmal darauf verwiesen, dass eine vollständige Sonos Steuerung im Moment kaum möglich ist. Beispielsweise ist das Gruppieren unterschiedlicher Player nur sehr eingeschränkt möglich und intelligent lässt hier kaum etwas steuern. Nun habe ich eine Alternative im Einsatz, die keine bzw. kaum Wünsche offen lässt.

Node-Sonos-Http-API

Diese Alternative heißt Node-Sonos-HTTP-API und ist bei GitHub zu finden. Es handelt sich um ein sehr interessantes Projekt zur Steuerung von Sonos Komponenten mittels HTTP-Get Aufrufen. Dieses benötigt zwar einen zusätzlichen Server/Rechner um die API zu betreiben, allerdings lohnt sich ein tieferer Blick in jedem Fall. Das Framework stellt (fast) alle Sonos-Funktionen zur Verfügung und das bei sehr einfacher Bedienung und Integration in das Fibaro Home Center 2. Alle Steuerbefehle werden durch einfache URLs ausgelöst. Damit ist in der Theorie auch der Betrieb mit einem Home Center Lite möglich, da für die Erstellung des virtuellen Devices kein LUA Code benötigt wird.

Lediglich die Installation und der Betrieb unter Node.js erfordern weiterführende Kenntnisse. So ist die Installation der benötigten Serverumgebung nicht ganz trivial. Gern kann ich bei Bedarf einen eigenen Artikel dazu verfassen. Einfach in der Kommentarfunktion nachfragen. Bei entsprechender Resonanz mache ich mich gleich ans Werk. Den Artikel zur Installation von Node.js und der API habe ich mittlerweile hier veröffentlicht. Ich freue mich über jedes Feedback.

Unterstützte Funktionen

Die in das HC2 integrierten virtuellen Devices unterstützen meist die gängigsten Sonos Funktionen wie Play, Pause, Stop, Next, Last. Diese werden natürlich auch von der Sonos-HTTP-API unterstützt. Der Einsatz zusätzlicher Hardware rechtfertig sich erst durch die Integration von Playlisten, Favoriten, einer zuverlässigen und sehr schnellen Text-to-Speech Funktion sowie der Möglichkeit Sonos Geräte beliebig zu gruppieren. Weiterhin lassen sich Gruppen vordefinieren und damit Szenarien realisieren die mit dem Home Center allein nicht durchführbar sind.

Steuerbefehle

Die Kommunikation mit den Sonos Playern über die API erfolgt über eine „sprechende“ HTTP Schnittstelle. So lautet der Befehl zum Abspielen der Playlist Charts beispielsweise:

http://API-IP:5005/bad/playlist/charts

Die Wiedergabe von TTS ist ebenso simpel und nach erfolgter Ausgabe werden die MP3 Dateien auf dem Server gespeichert und dienen als Cache für noch schnellere Umsetzungen:

http://API-IP:5005/bad/say/Dies ist eine TTS Ausgabe/de-de

Demovideo zur Sprachausgabe

Liste der Befehle (Auszug)

– play
– pause
– playpause (toggles playing state)
– volume (parameter is absolute or relative volume. Prefix +/- indicates relative volume)
– groupVolume (parameter is absolute or relative volume. Prefix +/- indicates relative volume)
– mute / unmute
– groupMute / groupUnmute
– trackseek (parameter is queue index)
– timeseek (parameter is in seconds, 60 for 1:00, 120 for 2:00 etc)
– next
– previous
– state (will return a json-representation of the current state of player)
– favorite
– favorites (with optional „detailed“ parameter)
– playlist
– lockvolumes / unlockvolumes (experimental, will enforce the volume that was selected when locking!)
– repeat (on/off)
– shuffle (on/off)
– crossfade (on/off)
– pauseall (with optional timeout in minutes)
– resumeall (will resume the ones that was pause on the pauseall call. Useful for doorbell, phone calls, etc. Optional timeout)
– say
– sayall
– queue
– clearqueue
– sleep (values in seconds)

Vollständige Liste und Dokumentation unter GitHub.

Integrationsbeispiele

Ich habe mittlerweile alle (anderen) virtuellen Devices zur Steuerung der Multiroomlautsprecher aus meinem Home Center entfernt und durch die Steuerung mit dieser API ersetzt. Zwar lassen sich fast alle Anwednungsbeispiele auch mit anderen verfügbaren VDs , aber die meist komplexe Implementierung schreckte mich immer wieder ab größere Dings zu implementieren. In diesem Abschnitt zeige ich ein paar Beispiele aus meinem Smart Home. Insbesondere die Gruppierungsfunktionen haben sich als sehr nützlich und zuverlässig erwiesen.

TV Ton überall

In meinem Wohnzimmer nutze ich Sonos Connect um Audiomaterial über meine teuren Boxen genießen zu können. Der Connect verfügt aber neben der Ausgabe auch die Möglichkeit Audiosignale ins Sonos Netz einzuspeisen. Hier habe ich meinen A/V Receiver angeschlossen und lasse das Audiosignal zusätzlich streamen. Gehe ich bei laufendem Fernseher in die Küche oder ins Bad, wird das Audiosignal des Fernsehers auf die dort befindlichen Sonos Geräte übertragen und ich verpasse nichts von der aktuellen Sendung oder dem spannenden Fussballspiel. Ist der Fernseher nicht eingeschaltet, so läuft in Küche und Bad meine Lieblingsmusik oder Radio.

Guten Morgen Programm

Beim ersten betreten des Badezimmers am Morgen lasse ich mir die aktuelle Audioversion der Tagesschau in 100 Sekunden vorspielen und bin so bestens über die Geschehnisse in der Welt informiert. Steht in meinem Outlook Kalender für heute oder morgen ein Termin wird dieser ebenfalls vorgelesen. So vergesse ich nie wieder einen Geburtstag oder eine Verabredung. Vorausgesetzt der Kalender ist gepflegt.

Je nach Lust und Laune startet danach mein Lieblingsradiosender oder die aktuelle Deezer Playlist mit meinen Lieblingstiteln aus der Sonos Playlist „Moin Moin“.

Akustische Bestätigungen

Es klingelt an der Tür, die Waschmaschine ist fertig oder der Postbote öffnet den Briefkasten. Jedes dieser Ereignisse wird mit einer entsprechenden Ansage über alle meine Sonos Lautsprechern verkündet. Die aktuelle Wiedergabe wird dafür unterbrochen und anschließend mit derselben Konfiguration (Gruppierung, Lautstärke, Quelle) fortgesetzt.

Verlasse ich das Haus und aktiviere mit dem RFID Tag die Alarmanlage weißt Sonos mich ggf. darauf hin, dass noch Fenster geöffnet sind und/oder bestätigt die Aktivierung der Alarmanlage. Selbiges bei meiner Heimkehr. Es wird informiert, ob jemand am Briefkasten war, es geklingelt oder jemand angerufen hat.

Virtuelles Device

Natürlich darf bei einer Integration in das Home Center 2 ein virtuelles Device nicht fehlen. Das VD ist auf Grund der simplen API recht einfach gehalten und kann nach Belieben erweitert werden. Das Grundgerüst mit vielen nützlichen Funktionen ist im offiziellen Fibaro Forum zu finden.

Sonos VD für Node API
Sonos VD für Node API

UPDATE: Mit der Version 1.0.1 der API haben sich ein paar Kleinigkeiten in der JSON Ausgabe geändert. Die dafür notwendigen Anpassungen im virtuellen Device habe ich vorgenommen und biete es hier zum Download an.

Download “Sonos-NodeJS-VD.zip” Sonos-NodeJS-VD.zip – 47-mal heruntergeladen – 2 kB

Icons

Ich verwende bei mir folgende Icons:

Sonos Connect
Sonos Connect
Sonos Play 1
Sonos Play 1

Installation und Konfiguration

Mein Eindruck ist bisher, dass die wenigsten Fibaro User einen weiteren Server in ihrem Netzwerk betreiben wollen. Daher habe ich mich bei diesem Artikel auf die reine Vorstellung der Sonos API beschränkt um aufzuzeigen, was alles möglich ist.

Sollte ich mich täuschen und der Bedarf für eine detaillierte Installationsanleitung doch gegeben sein, so lasst es mich über die Kommentarfunktion wissen.

Da die Nachfrage doch deutlich größer war, als ich es erwartet habe. Gibt es hier nun einen Artikel zur Installation und Konfiguration des Node.js mit der Sonos API.