Sonos & der Miniserver: home Automation meets Multiroom Audio

Florian Woess
4. November 2011 IN Technologie

Info: Der neue, seit 2015 erhältliche Loxone Music Server erlaubt eine Integration einfacher Sonos Befehle wie zB. Lautstärke, Pause oder Next. Es können ebenfalls Sonos Lautsprecher als Wireless-Zonen des Loxone Music Servers verwendet werden. Diese Zonen können dann für Anwendungen wie Text To Speech oder Alarm genutzt werden. Eine Steuerung von Playlists, Titeln etc. über die Loxone App ist nicht möglich.


 

In der heutigen Welt der Hausautomation geht es nicht nur um Beleuchtung & Beschattung sondern auch immer häufiger um den Wunsch nach zentralen Lösung für die Beschallung mehrerer Räume bzw. Zonen. Multiroom Audio – um es beim Fachbegriff zu nennen.

Sonos bietet hier eine tolle dezentrale LAN-basierte Lösung die sich mit ein paar Handgriffen auch bestens in die Loxone Hausautomation integrieren lässt. Wie das im Detail aussieht sehen wir uns im Folgenden an.

Multiroom Audio und Loxone

Dank der offenen Architektur des Loxone Miniservers lassen sich auch andere Lösungen bestens integrieren wie etwa die Logitech Squeeze Box oder das von uns empfohlene Casa Tunes.

Vorgefertigte Unterstützungen für einige Systeme wie z.B. auch Denon oder Pioneer erleichtern die Einbindung und ermöglichen eine Umsetzung einfacher Befehle innerhalb von Minuten.

Es gibt zu dem Thema auch bereits eine Reihe älterer (wenn auch nicht veralteter) Beiträge (einfach in der Tagcloud unter “Multiroom Audio” suchen).

Warum überhaupt beide Welten vernetzen? Vorteile?

So manchem mag sich nun die Frage aufdrängen welchen Nutzen die Vernetzung dieser beiden Welten mit sich bringt. Am besten lässt sich dies mit ein paar Beispielen aus der Praxis verdeutlichen:

  • Einfachste Musiksteuerung
    Play/Pause, Lauter/Leiser und ähnliche Dinge ganz einfach per Tastendruck abrufen, ohne ein Bedienterminal in die Hand nehmen zu müssen. Oder anders gesagt: Ein Wippentaster (klassischerweise für Jalousie eingesetzt Rauf/Runter) könnte die Lauter/Leiser-Steuerung übernehmen.
  • Alles Aus
    Der bereits oft erwähnte “Alles Aus” oder “Gute Nacht” Taster dreht dann nicht nur das Licht ab sondern auch die Musik.
  • Zentralfunktionen
    Ein Tastendruck auf “Abendessen” setzt nicht das Licht in die richtige Szene sondern startet auch die entsprechende Playlist/Radio Sender.
  • Musik on Demand
    Denkt man an Hotels oder Gemeinschaftsbereiche kann das abspielen der Musik auch mit einem Präsenzmelder gekoppelt werden. Lässt sich natürlich auch in den eigenen vier Wänden realisieren wenn man möchte.
  • Und wie üblich: Vieles mehr
    Ich bin überzeugt bei manchen Leser laufen die Räder schon. Man kann aus den obigen Beispielen bereits erahnen was sonst noch alles möglich ist. Die Grenzen liegen wie üblich im Kopf.

Das Beispielszenario

Am besten wir sehen uns das ganze Anhand eines Beispiels aus meiner eigenen Installation an. Im Bad steht bei mir ein Sonos Connect:Amp (früher Zoneplayer) inkl. Lautsprecher schön versteckt oberhalb der Sauna hinter der Verkleidung.

Bei der Eingangstür habe ich ein Tastenfeld für die üblichen Dinge wie Licht (inkl. Szenen für Sauna & Co.), Beschattung, Sauna Ein/Aus und eben auch Audio. Konkret befinden sich hier folgende Tasten/Befehle:

  • Play / Pause
  • Nächster Sender
  • Lauter
  • Leiser

Somit können wir auf einen Tastendruck beim reingehen ins Bad auf Wunsch Musik abspielen ohne erst langwierig einen Sonos Controller suchen und aktivieren zu müssen (meist liegen die Dinger nämlich dort wo man sie aktuell gerade nicht braucht – ist das nur bei uns so?).

Beispiel Datei – Download

Sie finden das das dazugehörige Beispiel mit allen erwähnten Funktionen in unserem Downloadbereich

Zum Downloadbereich für Musterdateien.

Die Technische Umsetzung

Sonos und die Schnittstellenthematik

Bevor wir ins Detail gehen noch ein paar Worte zu der Politik von Sonos was das Thema Schnittstellen angeht. Sonos bietet keine offiziellen Schnittstellen, sprich Möglichkeiten um das System fremd zu steuern!

Sonos hat hier eine unverständliche Produktpolitik, die es nicht einfach macht das System einzubinden. Ich würde mir wünschen, dass sich hier etwas ändert und auch bei Sonos endlich die Kirchturmdenke ein Ende hat. Das Web ist voll von Foren und Beiträgen in denen sich User aus aller Welt über “Workarounds” und “Hacks” austauschen.

Was bedeutet das für uns? Dass manche Dinge vielleicht etwas schwieriger zu lösen sind als bei anderen Systemen (wie z.B. Casa Tunes) aber dennoch nicht unmachbar 🙂

Erste Schritte

Für die ersten Schritte bzw. die Bascics der Integration verweise ich hier auf einen meiner älteren Beiträge zu dem Thema: “Jetzt neu: Volle Sonos Audio Integration mit Loxone”.

Der Beitrag ist zwar von August 2010. Damals war es noch eine Beta und seither sind einige Punkte dazugekommen, die grundlegenden Dinge haben sich jedoch nicht geändert.

Wenn man das oben erwähnte Beispiel durchgeht so sieht man rasch, dass die Einbindung simpler Befehle wie Play, Pause, Lauter und Leiser eine Sache auf wenige Minuten ist.

Play & Pause

Ich habe die Programmierung seit damals noch etwas verfeinert. Die Umsetzung von Play und Pause sieht nun wie folgt aus:

Loxone Config

Über einen Sequencer und dahinter gehängten Tastschalter Bausteinen rufe ich einmal den Play- und beim nächsten mal den Pause-Befehl auf. Diese Befehle sind, wie im genannten Beitrag geschildert, virtuelle Ausgangsverbinder welche wir in der Konfigurationssoftware fix fertig zur Verfügung stellen.

Bei Doppelklick habe ich noch eine Sonderfunktion eingebaut zum “Reinitialisieren” der Audio Einstellungen wie Lautstärke und Senderwahl. Mehr dazu später.

Lauter & Leiser

Hier kommt schon das erste Sonos Spezifikum zu tragen: Sonos bietet keinen Befehl wie etwa “Erhöhe Lautstärke um 1” sondern man kann nur eine fix definierte Lautstärke senden, also “Setze Lautstärke auf 60%”. Das ist im Grunde nicht schlimm kann jedoch in Ausnahmesituationen zu einem “fehlverhalten” führen nämlich genau dann wenn erst über einen Sonos Controller die Lautstärke geändert wird und danach über eine Taste.

Da der Miniserver die aktuelle Lautstärke nicht kennt (wahrscheinlich könnte man auch dies irgendwie lösen, jedoch war mir dies zu aufwändig 🙂 kann es hier zu einem “Lautstärke Sprung” kommen.

Die Umsetzung sieht bei mir wie folgt aus:

Loxone Config

Über den Baustein “2 Auswahltasten” habe ich das Erhöhen und Senken des Lautstärkewertes realisiert. Über den oben erwähnten Doppelklick rufe ich bei Bedarf den Analogspeicher ab und setze somit die Lautstärke auf einen von mir vorgegebene Wunschwert (konkret in diesem Fall 15%) zurück.

Nächster Radiosender bzw. Senderwahl

Das fertige Bild sieht bei mir wie folgt aus:

Loxone Config

Die Taste “Nächster Sender” schaltet per Sequencer von einem Virtuellen Ausgangsverbinder zum nächsten. Für jeden Sender habe ich einen eigenen Verbinder angelegt. Die Ein- Ausschaltverzögerung ermöglicht ein rasches durchschalten der Sender, ohne das jedes mal ein Befehl an Sonos gesendet wird. Baut man das nicht ein, bewirkt 3 mal drücken (weil man zB zum dritten Sender möchte) ein vielfaches absetzen von Befehlen an Sonos was viel Zeit braucht.

Im Tastschalter habe ich noch eine kleine Verzögerung eingebaut damit der Play Befehl etwas später als der Sender Befehl abgesendet wird.

Bevor wir in die Tiefe gehen gleich vorweg: Ab jetzt wirds haarig 🙂

Da Sonos hier keine guten fertigen Befehle bietet um dies abzubilden müssen wir in die Trickkiste greifen. Und zwar Tief.

Das Gute daran: Hat man die Mechanik der folgenden Schritte mal verstanden lässt sich dies auf alles anwenden. Egal ob man eine Playlist, einen bestimmten Titel oder wie in meinem Fall einen bestimmten Radiosender abspielen möchte.

Die notwendigen 3 Schritte sind:

  • 1. Befehle im Netz mitsniffen (=abhören)
  • 2. Virtuellen Ausgangsbefehl “bauen”
  • 3. Befehl einbinden

 

1. Befehl im Netz mitsniffen

Die Grundidee ist folgende: Man ruft den gewünschten Befehl auf und “hört” auf der Leitung mit wie denn hier der genaue Befehl lautet.

Ich benutze dazu Wireshark, das Tool läuft sowohl auf Mac als auch Windows. Über Details zur Bedienung des Tools möchte ich mich hier nicht auslassen, da gibt es ausreichend Infos dazu auf der Wireshark Website.

Zum Absetzen des gewünschten Befehls bitte unbedingt den am selben System installierten Sonos Desktop Controller (for Mac/PC) verwenden.

Folgende Schritte sind notwendig:

1. Sonos Desktop Controller starten

2. Wireshark vorbereiten und starten
Ich empfehle alles vorzubereiten dass man nur mehr auf “Start” drücken muss um die Aufzeichnungszeit möglichst kurz zu halten.

Wireshark

3. Befehl in Sonos absetzen
In unserem Beispiel habe ich mir einfach den Befehl zum abspielen für “Lounge FM” herausgepickt.

Sonos

4. Paket finden/identifizieren
Als erstes den Scan in Wireshark beenden.

Wireshark

Dann sollten Sie eine Ergebnisliste mit allen in der Zeit gesendeten Paketen haben die etwa wie folgt aussieht:

Wireshark

Bei diesem Schritt sollte man unbedingt die eigene IP Adresse (in meinem Fall 192.168.63.101) sowie die des Sonos Players (192.168.63.111) kennen (Spalte Source und Destination). Das erleichtert das auffinden der richtigen Pakete denn Wireshark zeichnet alles auf – nicht nur die PC > Sonos Kommunikation.

Einfach die Zeile auswählen und dann Menü “Analyze“ den Punkt “Follow TCP Stream” aufrufen. Nach etwas Suchen sollten Sie ein Paket finden das wie das folgende aussieht:

Follow TCP Stream

 

2. Virtuellen Ausgangsbefehl “bauen”

Den im ersten Schritt gesnifften Code übernehmen wir nun in unseren virtuellen Ausgangsverbinder. Wichtig dabei ist das 100% richtige setzen aller Eigenschaften. Am besten dazu einfach das Beispielfile runterladen und die Eigenschaften mit obigen Screenshot vergleichen dann bekommt man schnell einen Eindruck wie das funktioniert.

Die Eigenschaften sehen für einen Sender dann wie folgt aus:

Eigenschaften

Man sieht hier bereits dass die einzusetzenden Befehle sehr lang sind.

Wichtig: Es reicht nicht einfach nur den Senderbefehl aufzurufen. Sonos erwartet sich hinten nach auch noch den Play Befehl. Diesen habe ich einfach im selben Verbinder als “Befehl bei AUS” eingebaut was mir einen weiteren Baustein/Aufruf erspart (den Code hierfür kann man von dem fix fertigen virtuellen Ausgangsverbinder übernehmen).

3. Befehl einbinden

Den nun fertigen virtuellen Ausgangsverbinder kann man in Loxone Manier verwenden wie man möchte, auch z.B. in Verbindung mit einem Präsenzmelder.

Am besten einfach mal in das File selbst reinschauen.

Zuletzt noch ein Tipp

Der Einfachheit halber würde ich empfehlen Ihr Sonos System nicht vom Strom zu trennen, ausgenommen vielleicht bei längerer Abwesenheit – Stichwort Urlaubsmodus.

Nimmt man das Sonos vom Strom startet es wieder von Null. Das hat folgende Nachteile:

  • Sender die man gestern auf Pause gesetzt hat starten heute nicht mehr klick auf Play.
  • Das System braucht eine gewisse Zeit zum initialisieren (Hochfahren, IP Adresse beziehen, usw.). D.h. Befehle können auch erst abgesetzt werden nachdem alles verfügbar ist.
  • Im schlimmsten Fall (je nach LAN-Konfiguration) bekommt das Gerät eine neue IP Adresse. Was eine Änderung in der Konfiguration nach sich zieht.

Fazit & Ausblick

Wie man sieht ist eine volle Integration möglich jedoch mit einigen Handgriffen verbunden die Know How erfordern. Es gibt Überlegungen erweiterte Sonos Objekte für eine einfachere Umsetzung zur Verfügung zu stellen. Das ganze hat jedoch einen großen Haken: Nachdem es sich bei allem was wir hier machen um keine offiziell von Sonos unterstützten Schnittstellen handelt kann es sein dass beim nächsten Sonos Update alles wieder anders ist. Der gesamte Entwicklungsaufwand wäre dann umsonst gewesen.

Würde Sonos hier seine Politik überdenken würde das einiges ändern. Ansonsten bin ich begeistert von den Sonos Produkten bis auf den Punkt Integrationsmöglichkeit. Naja – die Hoffnung bleibt.

Ich denke man hat in diesem Beitrag wieder mal sehr gut gesehen welche Möglichkeiten der Loxone Miniserver bietet.

Ich freue mich über jedes Feedback und natürlich über jede Bestellung 🙂

Sprechen wir über Ihr Smart Home

Überzeugt? Dann lassen Sie uns über Ihr Smart Home sprechen! Wir beantworten Ihre Fragen rund um das Leben in einem Loxone Smart Home und helfen Ihnen den perfekten Loxone Partner zu finden.