SONOS (lokal)
Mit diesem Funktionsbaustein können
SONOS Lautsprecher direkt über das Netzwerk gesteuert werden. Die
Steuerung erfolgt lokal über das Sonos-eigene Netzwerkprotokoll
(UPnP) — es wird keine Zusatzsoftware und keine
Cloud-Verbindung benötigt.
Die Lautsprecher werden automatisch im Netzwerk gesucht. Die Zonen
werden über den Raumnamen angesprochen (exakt wie in der Sonos
App). Sind Lautsprecher zu einer Gruppe zusammengefasst, wirken
Wiedergabe-Funktionen (Play, Pause, Next, ...) auf die ganze
Gruppe, Lautstärke und Mute auf den einzelnen Lautsprecher.
Änderungen im Sonos-System brauchen etwas Zeit: Die
Steuerung liest die Zonen und Lautsprecher alle 5 Minuten neu ein.
Wird in der Sonos App eine Zone umbenannt, ein Lautsprecher
hinzugefügt oder entfernt oder eine Gruppe umgebaut, kann es
deshalb bis zu 5 Minuten dauern, bis die Steuerung das
übernimmt — erst danach testen. Das gilt besonders für die Zone
sayall, die neue
Lautsprecher erst nach dem Neueinlesen erreicht. Schlägt ein
Kommando fehl oder ist die Zone unbekannt, liest die Steuerung die
Zonen zusätzlich sofort neu ein. Ein Neustart der Steuerung wirkt
ebenfalls sofort.
Für die Funktion Text to Speech wird ein externer Dienst (Google)
verwendet, der derzeit noch kostenlos ist. Sollte sich das in
Zukunft ändern, muss ein anderer Dienst verwendet werden. Darauf
haben wir keinen Einfluss und diese Funktion kann daher nicht
garantiert werden. Einmal erzeugte Ansagen werden lokal
gespeichert und benötigen beim nächsten Aufruf kein Internet mehr.
|
TR
|
Trigger
|
Trigger zur Ausführung
|
ER
|
Fehler
|
Fehler des letzten Kommandos: 1 = Kommando konnte
nicht ausgeführt werden (Zone nicht gefunden, Lautsprecher nicht
erreichbar, Text to Speech fehlgeschlagen), 0 = letztes Kommando
erfolgreich. |
|
Name Zone
|
Name der Zone. Der Name muss exakt so eingegeben
werden wie an der SONOS App.
Wird statt eines Zonennamens sayall
eingetragen, gilt die Funktion für alle Lautsprecher. Lautstärke und
Stumm werden dabei an jedem Lautsprecher einzeln gesetzt, alle übrigen
Funktionen wirken je Gruppe einmal. Sind Lautsprecher in der SONOS App
gruppiert, erhält die Gruppe den Befehl also nur einmal. |
|
Funktion
|
Auszuführende Funktion
- Play
- Pause
- Play/Pause
- Mute
- Unmute
- Next
- Previous
- Volume Inc.
- Volume Dec.
- Volume val., Datenfeld ist 0-100
- Volume abs., Datenfeld ist 0-100
- Favorites, Datenfeld ist Name
- Playlist, Datenfeld ist Name
- Text to Speech., Datenfeld ist "Text/Sprachcode/Volume",
beispielsweise "Mittagessen ist fertig/de/50" gibt den Text
"Mittagessen ist fertig" in deutsch (de) mit 50% Lautstärke aus.
Wenn als Name der Zone "sayall" angegeben wird, wird der Text an
allen Lautsprechern ausgegeben. Die laufende Wiedergabe wird
für die Ansage unterbrochen und danach automatisch
fortgesetzt. Der Text darf maximal ca. 200 Zeichen lang sein.
Hinweis: Bei "Volume val." wird der Sollwert für die Lautstärke
über den Eingang vorgegeben, deshalb muss als Trigger Alle
Telegramme vorgegeben werden.
|
|
Trigger
|
- 0->1 steigende Flanke
- 1->0 fallende Flanke
- Telegramm
|
|
Daten
|
Optionale Daten. Z.B. bei Auswahl Favoriten der Name
des Favoriten.
|
|
Debug
|
Nur wenn aktiviert, gibt die Steuerung zusätzliche
Debug-Meldungen in den Meldungen aus (z.B. gefundene Lautsprecher,
ausgeführte Kommandos). Fehler werden immer gemeldet.
|
Update aus bestehenden Projekten
Alte SONOS-Bausteine (Variante mit externer Zusatzsoftware), die sich
noch im Projekt befinden, können weiterverwendet werden und
funktionieren auch weiterhin. Neu anlegen lässt sich der alte Baustein
allerdings nicht mehr.
Wenn das Projekt bearbeitet wird, sollten die alten Bausteine durch
diese neue Variante ersetzt werden: Damit ist keine externe Software
mehr nötig und es werden mehr Ressourcen an der Steuerung frei.
Vorgehen beim Ersetzen:
- Neuen Baustein "Sonos (lokal)" anlegen und die Parameter (Name
Zone, Funktion, Trigger, Daten) vom alten Baustein übernehmen — die
Einstellungen sind identisch aufgebaut.
- Die Trigger-Adresse mit dem Eingang TR verbinden. Der neue Baustein
hat keinen Freigabe-Eingang (FG) mehr; eine dort projektierte
Freigabe-Logik muss bei Bedarf vor den Trigger verlagert werden.
- Den alten Baustein anschließend löschen. Solange beide Bausteine
mit demselben Trigger und derselben Funktion im Projekt sind, wird
das Kommando doppelt ausgeführt.
Netzwerk-Funktionen
Der Baustein verwendet folgende Netzwerk-Mechanismen:
- Automatische Suche (SSDP): Die Lautsprecher werden per
Multicast-Suche (UDP an 239.255.255.250, Port 1900) gefunden. Die
Antworten der Lautsprecher kommen als normale UDP-Pakete an die
Steuerung zurück. Multicast funktioniert nur innerhalb desselben
Netzwerksegments — ein Router zwischen Lautsprechern und Steuerung
leitet die Suche nicht weiter.
- Steuerung: Kommandos gehen als HTTP-Verbindungen (TCP, Port
1400) direkt an die Lautsprecher.
- Text to Speech: Die Lautsprecher laden die Ansage-Datei von
der Steuerung herunter (TCP, Port 1402, bei Belegung 1403-1410). Die
Verbindung wird also vom Lautsprecher zur Steuerung aufgebaut — die
Steuerung muss aus Sicht der Lautsprecher erreichbar sein.
- Merken der Player-Adresse: Je Sonos-System wird eine
funktionierende Lautsprecher-IP gespeichert und bei der regelmäßigen
Aktualisierung (alle 5 Minuten) direkt abgefragt. Schlägt die
Multicast-Suche fehl (z.B. nach einem Neustart in einem Netz mit
blockiertem Multicast), bleiben die Lautsprecher so trotzdem
erreichbar.
- Mehrere Sonos-Systeme: Ein Lautsprecher kennt nur die Räume
seines eigenen Systems. Laufen im selben Netz mehrere Systeme (z.B.
ältere S1-Geräte neben S2, eine zweite Wohnung), werden die Räume aller
gefundenen Systeme zusammengeführt. Wird eine projektierte Zone nicht
gefunden, sucht die Steuerung erneut im Netzwerk (höchstens einmal pro
Minute). Gibt es denselben Raumnamen in zwei Systemen, wird der zuerst
gefundene verwendet. Die Zone sayall
spricht die Lautsprecher aller Systeme an.
Wichtig: Lautsprecher und Steuerung sollten sich im selben
Netzwerk (Subnetz) befinden. Sind sie durch einen Router, ein VLAN oder
ein Gäste-Netzwerk getrennt, kann es zu Problemen kommen: Die
automatische Suche findet keine Lautsprecher (Multicast wird nicht
geroutet), NAT oder Firewall-Regeln können die Steuerverbindungen
blockieren, und bei Text to Speech erreichen die Lautsprecher die
Steuerung nicht. Auch Geräte mit "IGMP Snooping" (manche Switches)
oder WLAN-Access-Points mit aktivierter Client-Isolation können die
Suche bzw. die Steuerung verhindern.
FAQ - was bei Problemen getestet werden kann
- Es werden keine Lautsprecher gefunden (ER = 1 bei jedem
Kommando):
- Sind Lautsprecher und Steuerung im selben Subnetz? IP-Adressen
und Subnetzmaske vergleichen (z.B. beide 192.168.1.x).
- Lautsprecher von einem PC im selben Netz anpingen bzw. im
Browser http://<IP des
Lautsprechers>:1400/xml/device_description.xml öffnen —
kommt eine XML-Seite, ist der Lautsprecher erreichbar.
- Funktioniert die Sonos App auf einem Handy im selben WLAN? Wenn
nicht, liegt das Problem im Netzwerk, nicht in der Steuerung.
- IGMP Snooping / Multicast-Filter am Switch bzw. Access Point
testweise deaktivieren, Client-/AP-Isolation im WLAN ausschalten.
- Firewall der Steuerung prüfen: eingehende UDP-Antworten der
Suche und eingehende TCP-Verbindungen auf Port 1402 (TTS) müssen
erlaubt sein (unter Windows die Windows-Firewall).
- Zone wird nicht gefunden, andere Kommandos funktionieren:
Name der Zone exakt wie in der Sonos App eingeben
(Groß-/Kleinschreibung ist egal, aber der Name muss vollständig
übereinstimmen). Nach einer Umbenennung in der App dauert die
Übernahme bis zu 5 Minuten — oder Steuerung neu starten. Die
Fehlermeldung „ZONE '…' NOT FOUND“ im Diagnosefenster nennt alle
Räume, die die Steuerung kennt, und die IPs, über die sie abgefragt
wurden. Fehlen dort Räume, gehören sie zu einem Sonos-System, das die
Steuerung nicht erreicht.
- Play/Next wirkt auf einen anderen Raum: Der Lautsprecher ist
Teil einer Gruppe — Wiedergabe-Kommandos wirken immer auf die ganze
Gruppe (den Gruppen-Koordinator). Gruppe in der Sonos App auflösen,
wenn der Raum einzeln gesteuert werden soll.
- Text to Speech: keine Ansage zu hören:
- Bei der ersten Erzeugung einer Ansage braucht die Steuerung
Internetzugriff auf Google-Dienste (Firewall/Proxy prüfen) und
eine Runtime-Variante mit SSL-Unterstützung. Ohne SSL meldet der
Baustein bei Text to Speech einen Fehler, alle anderen Funktionen
arbeiten normal.
- Die Lautsprecher müssen die Steuerung auf Port 1402 erreichen
(Firewall auf/vor der Steuerung, Router/VLAN dazwischen).
- Text kürzen (max. ca. 200 Zeichen) und Sonderzeichen bzw.
unsichtbare Unicode-Zeichen entfernen.
- Limit des Google-Dienstes überschritten, z.B. wenn der Trigger
ständig ausgelöst wurde (Fehler im Projekt). Bereits erzeugte
Ansagen sind nicht betroffen (lokaler Speicher).
- Nach der Ansage spielt die Musik nicht weiter: Bei manchen
Quellen (z.B. Streaming über AirPlay oder TV-Ton) kann die vorherige
Wiedergabe nicht wiederhergestellt werden — das ist eine Einschränkung
der Lautsprecher, nicht der Steuerung.
- Kommandos kommen verzögert: Nach einem Fehler versucht der
Baustein automatisch eine neue Suche und wiederholt das Kommando
einmal — das kann einige Sekunden dauern. Häufige Fehler deuten auf
ein Netzwerkproblem hin (siehe oben).
Siehe auch allgemeine Parameter aller
Funktionsbausteine.