Inhaltsverzeichnis

Plugin-Daten
AutorOliver Lewald
Logo
StatusSTABLE
Version5.9.1
Min. LB Version3.0
Release Downloadhttps://github.com/Liver64/LoxBerry-Sonos/archive/refs/tags/v5.9.1.zip
BeschreibungDas Sonos4Lox Plugin stellt basierend auf dem LoxBerry eine Komplettlösung zur Steuerung einer Sonos Multi Room Installation zur Verfügung.
SprachenEN, DE
Diskussionhttps://www.loxforum.com/forum/projektforen/loxberry/plugins/74862-loxberry-sonos-plugin-v1-0-0-verf%C3%BCgbar

Sonos4Loxone

Aufgabe des Plugins

Das Plugin dient zur Steuerung einer Sonos Multi Room Installation aus Loxone heraus. Es stehen die gängigen Standardbefehle, aber auch Text-to-speech (T2S), Sonos-to-speech, Clock-to-speech, bei installiertem Wunderground Plugin auch weather-to-speech und sonstige Befehle zur Verfügung. Darüberhinaus können auch Werte (z.B. Temperatur oder Fensterstatus) von Loxone in die text-to-speech Ansagen integriert werden. 

Zusätzlich werden Informationen wie Titel/Interpret, Play/Stop/Pause und Lautstärke je Zone per UDP oder MQTT und über virtuelle Texteingangsverbinder zur Verfügung gestellt.

Ein ganz besonderer Dank gilt Michael Schlenstedt und Sven Thierfelder ohne deren Hilfe das Plugin nicht hätte realisiert werden können 

Allgemeines

Das Sonos System ist grundsätzlich sehr ausgeklügelt und durchdacht aufgebaut, auch von seiner Topology und der Flexibilität. Grundsätzlich funktioniert Sonos und das Plugin nahezu wartungsfrei, es gibt aber ein/zwei Besonderheiten die es bei der Nutzung zu beachten gibt.

Die Sonos Player sind nicht gerade als Stromsparwunder bekannt, von daher gibt es User die ihre Player (Zonen) über schaltbare Steckdosen ausschalten und nur bei Bedarf wieder einschalten. Das kann, gerade bei einer Programmierung in einer Hausautomation, zu Problemen z.B. bei T2S führen, so dass im schlimmsten Fall die T2S nicht abgespielt werden kann, da eine Zone nicht erreichbar ist. Von daher empfehle ich alle Zonen immer am Netz zu lassen, da diese auch bis zu 2 Minuten benötigen um im SonosNet als Zone zur Verfügung zu stehen. Es ist zwar auch eine Abfrage bzgl. Online Verfügbarkeit eingebaut, diese aber nicht in der stabilen Qualität läuft wie ich es mir eigentlich wünsche.

Des weiteren gibt es noch LAN-Installationen die eine Sonos Bridge verwenden, diese produzierte in der Vergangenheit immer mal wieder Probleme durch eine Mischinstallation mit WLAN. Von daher empfehle ich jedem seine Sonos Installation per Wireless zu betreiben, wobei ja mind. 1 Zone per LAN verbunden sein sollte, aber halt ohne Bridge. Außerdem bereitet die Bridge im Verbund mit dem Plugin zunehmend Probleme, gerade bei der folgenden Grundkonfiguration.

WICHTIG: Um einen möglichst reibungslosen Betrieb des Plugins zu gewährleisten MÜSSEN alle Sonos Player (Maximum 32 Player) über eine statische IP-Adressierung verfügen, da das Plugin IP basierend die einzelnen Befehle ausführt. Das Gleiche gilt für die IP-Adresse des LoxBerry's, diese sollte statisch oder noch besser über einen DNS Service eingebunden sein. Falls die lokale IP-Adresse des LB's geändert wird bitte das Plugin aufrufen und 1x speichern damit diese Änderung zum Tragen kommt.

Zusammenfassung:

Konfigurationsoptionen Loxberry

Als erstes muss eine Grundkonfiguration durchgeführt werden. Das heißt im Detail die vorhanden Sonos Player hinzufügen und diverse Parameter ergänzen.

Sonos Zonen hinzufügen

Durch Betätigen des Buttons "Scan Zonen" durchsucht das Plugin dein Netzwerk nach vorhanden Sonos Playern. Dabei werden Bridge, Dock, Boost und Subwoofer nicht berücksichtigt.

Hinweis: Bitte vorher unbedingt sicherstellen das alle Player ONLINE sind!

Nach erfolgtem Scan sollte folgender Bildschirm erscheinen:

Falls nach dem Scan keine Player erscheinen überprüfe dein Netzwerk (Fritzbox, Switch, Firewall, Virenscanner etc.) ob Mulitcast enabled ist. Eigentlich sollte das im Standard der Fall sein, aber gerade Virenscanner und managed Switches haben Multicast zum Teil disabled.

Security (VLAN)

Aufgrund der Nutzung des CIFS Netzwerkprotokolls für T2S kann es für Betreiber mehrerer VLAN's notwendig sein die TCP Ports 137-139 und 445 in der Firewall zu öffnen

Das Skript sucht basierend auf dem SSDP Protokoll nach UPnP Devices mit folgender Multicast Adresse: 239.255.255.250 Port:1900. Dieser Port muss nicht explizit im Router konfiguriert werden!

Raum Einstellungen

Die Angaben für Raum und Modell sind NICHT änderbar und sind analog zur Sonos App. Falls eine Zone in der Sonos App umbenannt wird, muss anschließend in der Konfiguration der alte Eintrag gelöscht werden (Tick-box vor der jeweiligen Zone) und speichern, dann erneut einen Scan ausführen um die umbenannte Zone zu finden. Das gleiche gilt auch für neu hinzugefügte Player.

Wenn du einen Player aus irgendeinem Grund löschen möchtest, markiere die Tick-Box des entsprechenden Players und speichere die Konfiguration. Solange du nicht wieder den Scan Button betätigst ist die Zone für den MS nicht mehr erreichbar.

Als nächsten Schritt müssen folgende 3 Werte je Zone/Player ergänzt werden:

Die Spalte Clip gibt an ob der entsprechende Player die T2S AudioClip Funktion unterstützt.

Standard bedeutet dass ohne Angabe von Volume innerhalb der Syntax diese Lautstärkewerte genommen werden. Näheres über die Verwendung von Volume in der Syntax findest du im Kapitel "Syntax".

Erst nach erfolgreicher Ergänzung dieser Werte lässt sich das Plugin speichern.

Zeitsteuerung

Optional kann je Player eine zeitgesteuerte Funktion genutzt werden. Wenn nichts gepflegt wird ist der Player, insofern er Online ist, immer verfügbar. Wenn Zeiten gepflegt sind nur innerhalb des angegebenen Zeitfensters.

Hier einige Beispiele was passiert wenn außerhalb des Zeitfensters ein Player genutzt wird:

Mit der Zeitfunktion können z.B. bei Nutzung von member=all als Klingel einzelne Räume z.B. Kinderzimmer zeitgesteuert exkludieren.

Ist ein Player außerhalb des Zeitfensters zur Runtime wird der Background orange eingefärbt.

Backup Config

Mit der Backupfunktion kann immer die aktuellste Konfiguration gespeichert werden um z.B. das Plugin zu deinstallieren und neu zu installieren. Sobald das Plugin neu installiert wurde erscheint eine Restore Funktion.

Text-to-speech (T2S)

Um die speech Funktionen nutzen zu können benötigt man eine Speech Engine, diese kann entweder Online oder Offline sein. Folgende T2S Optionen stehen zur Auswahl:

Nach erfolgreichem Generieren der entprechenden Key(s) müssen diese in den entsprechenden Feldern eingetragen werden. Wenn jemand die Offline T2S Version für OS X verwenden möchte kann ich ihm gerne einen Ansprechpartner nennen, da ich selber keinen OS X Server besitze.

API key: Bitte den gültigen API key von VoiceRSS/Google Cloud/MS Azure oder AWS Polly eingeben

Secret key: Bitte den gültigen secret key von Polly eingeben

Auswahl der Standardstimme (Azure/Google Cloud/Polly/ElevenLabs): wähle Stimme

Die Stimme, als auch die Sprache, kann innerhalb der Syntax für T2S jederzeit geändert werden.

Verweildauer der MP3 Dateien: Anzahl der Tage oder Cache Größe die eine MP3 gespeichert werden soll bevor Sie automatisch gelöscht wird.

Dateiname für Jingle MP3: Name der Datei die vor einer Durchsage abgespielt werden soll. Diese Datei muss in das Unterverzeichnis /tts/mp3 kopiert werden. Als Beispiel ist die Datei "2_Airport_gong.mp3" bereits enthalten. Näheres zur Nutzung der Funktion unter T2S Durchsagen

Sonos Daten senden: Schalter um verschiedenste Infos an Loxone per UDP/MQTT, und Titel/Interpret Informationen über virtuelle Texteingang Verbinder zu senden. Näheres zur Nutzung der Funktion unter Loxone Anbindung

Kommunikation zum Miniserver entweder per UDP oder MQTT

UDP-Port: Port des MS an den die UDP Pakete geschickt werden sollen. 

Die Syntax zur Verwendung von T2S ist unter T2S Durchsagen genauer beschrieben.

Player Online check

Das Plugin kann regelmäßig den Status aller Player prüfen ob diese im Netzwerk erreichbar sind. Das gilt NUR für User die ihre Sonos Player an schaltbaren Steckdosen angeschlossen haben, für alle anderen User ist diese Konfigurationsoption überflüssig (Off).

Backup

Um eine Plugin Neuinstallation durchzuführen kann die gegenwärtige Konfiguration gesichert werden um anschließend das Plugin komplett zu deinstallieren und neu zu installieren. Nach der Neuinstallation erscheint automatisch ein Restore Button um die "alte" Konfiguration zu laden.

Hinweis: Der Backup Button steht nur bei noch nicht durchgeführtem Backup oder bei unterschiedlichen Versionen der Konfiguration und der Backup Dateien zur Verfügung

Optionen

Bei den Feinstellungen können noch einige nice-to Optionen eingestellt werden.

Sprachnachricht T2S fehlerhaft: Gibt eine T2S aus falls die Standardausgabe nicht prozessiert wurde.

Lautstärke Änderung per Klick: Hier handelt es sich um eine typische Tasterfunktion um die Lautstärke einer Zone zu ändern. Der hier angegebene Wert erhöht/verringert in den jeweilig angegebenen Sprüngen die Lautstärke.

Ansage der Radio Station: Bei der Funktion say&sonos kann zwingend die Ansage des aktuell laufenden Senders vorgegeben werden

Lautstärkeanhebung: Bei den Funktionen nextradio und zapzone gibt es optional die Möglichkeit den Titel/Interpret/Radio Sender vorm abspielen ansagen zu lassen (nur bei Single Playern, nicht für Gruppen). Dabei kann es sein das die Ansagelautstärke u.U. zu leise ist. Durch Anpassen des Schiebereglers kann diese etwas lauter eingestellt werden.

Rampto Parameter: Rampto ist eine Funktion zum langsamen, kontinuierlichem Erhöhen der Lautstärke. Es stehen 3 verschiedene Parameter zur Verfügung die alle leider nicht in der Laufzeit konfigurierbar sind:

  1. Sleep → erhöht UND verringert die Lautstärke langsam innerhalb von ca. 17 Sekunden auf die gewünschte Lautstärke (typische Weckeinstellung)
  2. Alarm → erhöht zügig und kontinuierlich die Lautstärke auf den gewünschten Wert.
  3. Auto→ erhöht relativ schnell die Lautstärke auf den gewünschten Wert.

Bsp: Die Zone steht auf Pause und die Funktion Play wird betätigt. Ist die gegenwärtige Lautstärke < 25 greift der Rampto Parameter und erhöht gemäß der Konfiguration die Lautstärke, ist der Wert darüber geht es mit diesem Lautstärkewert unvermittelt los.

Rampto Volume: Schwellwert der angegebenen oder gerade laufenden Lautstärke unterhalb dessen einer der 3 zur Verfügung stehenden Parameter automatisch greifen soll.

Lautstärke bei Anruf: Wert auf den die Lautstärke bei Anruf (Fritz.box) zügig reduziert werden soll

Unterdrückung T2S während Telefonates: Bei Ein wird eine evtl. anfallende T2S während eines Anrufes blockiert

Wartezeit bis T2S erneut ausgegeben wird: Zeit innerhalb der eine T2S nicht ein 2. Mal ausgegeben werden soll (Notwendig für T2S aus dem Statusbaustein)

Radio Favoriten für Tasterbedienung

Hierbei handelt es sich auch um eine typische Tasterfunktion mit Hilfe derer man durch einen jeweiligen Tastenklick sich durch seine Radiofavoriten durchzappen kann. Ist das Script am Ende der Liste angekommen beginnt es wieder von vorne. Die URL Daten für deine Favoriten werden folgendermaßen ermittelt:

Suche dir deine(n) Sender im Internet (z.B.: google.com und dann Schlagworte "SWR3 URL stream"). Kopiere dann die gewünschte Stream URL ins Feld "Sender URL" und gebe bei "Sender Name" den Sendernamen ein. Achte bitte darauf das nur Streams die mit http:// beginnen genutzt werden können und folgende Zeichen nicht Bestandteil der URL sein dürfen ? { } | & ~ ! [ ] ( ) ^ " =

Beispiel: Für SWR3 wäre die URL für 128 kBit/s Qualität dann http://mp3-live.swr3.de/swr3_m.m3u

Weitere Sender findet man hier: https://streamurl.link/

Der entscheidende Vorteil liegt in der Sonos unabhängigen URL Struktur und des daraus resultierenden Performance Zuwachs beim Wechseln der Sender.

Diese Schritte musste du für jeden deiner Favoriten Sender erneut durchführen.

Gimmick am Rande

Als Sender Name kannst du auch irgendwas anderes eingeben (z.B. "Namen deiner Frau> Lieblingssender" um deine Frau zu überraschen. Der Name erscheint dann auch automatisch in der Sonos App.

Wenn alle Parameter ergänzt wurden speichere bitte die Konfiguration und teste die erfolgreiche Installation als erstes im Browser bevor es an die Loxone Integration geht.

Dafür kopierst du aus dem Bereich Syntax einen Befehl, ergänzt die Zone und solltest dann eigentlich etwas hören. Nur nicht bitte Play wenn in der entsprechenden Zone weder Radio noch eine Playliste geladen ist.

Weitere Details zum Umgang mit den Radio-Favoriten sowie Playlisten, Diensten und lokalen Dateien findest du unter Playlisten / Radio / Dienste / lokale Dateien.

Sound Profile

Sound Profile sind reine Audio Profile die zur klangtechnischen Optimierung von Streaming Diensten genutzt werden können. Es können bis zu 10 unterschiedliche Profile im Plugin angelegt werden die anschließend in der Syntax für Playlisten/Radio/Streaming genutzt oder auch durch eine Syntax auf aktuell laufende Audio angewendet werden können. Es spielt keine Rolle ob sich die Player in einer Gruppe befinden oder als Single Player.

Für Text-to-speech sind die Profile nicht nutzbar!

Je Player und Profil können folgende Einstellungen vorgegeben werden:

Beim Erstaufruf des Tabs "Sound Profile" werden je Player die aktuellen Einstellungen/Werte ausgelesen und gespeichert. Um ein weiteres Profil zu erstellen auf "New Volume Profile" klicken, dann wird ein leeres Volume Profile erstellt. Um nicht wieder alles eingeben zu müssen kann man entweder:

Erfahrungsgemäß ist es einfacher die Einstellungen/Werte mit der Sonos App zu tätigen und wenn das abgeschlossen ist die getätigten Einstellungen mit klick auf die Musiknote in ein (neues) Profil zu laden.

Syntax für Ausgangsbefehle:

Funktion Syntax Einzel Gruppe Beschreibung
profile /plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=profile&profile=standard X ändert die Einstellungen der angegebenen Zone gemäß dem gewählten Profil
profile /plugins/sonos4lox/index.php?zone=DEINE_ZONE&member=ZONE1,ZONE2&action=profile&profile=standard X ändert die Einstellungen der angegebenen Zone und Group Member gemäß dem gewählten Profil
/plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=playradiofavorite&profile=standard X setzt die Einstellungen der angegebenen Zone gemäß dem gewählten Profil beim Aufruf eines Streamingdienstes
/plugins/sonos4lox/index.php?zone=DEINE_ZONE&member=ZONE1,ZONE2&action=playradiofavorite&profile=standard X setzt die Einstellungen der angegebenen Zone inkl. Group Member gemäß dem gewählten Profil beim Aufruf eines Streamingdienstes

Bei Nutzung der Autogruppierfunktion (MA mit/ohne ME) ist zu beachten das die Zone die in der Syntax (URL) angegeben wird nicht Teil dieser Gruppe wird!

Download

 1228539788.pdf

Fehlerberichte

Fehlerberichte bitte direkt im Forum oder Github posten.

Tipps & Tricks

Die Erfahrung zeigt dass es Sinn macht die zu verwendende Syntax immer erst einmal im Browser zu testen bevor sie in Loxone als Ausgangsbefehl angelegt wird.

Es ist auch möglich z.B. für immer wiederkehrende Ansagen (Waschmaschine fertig usw.) vor erstellte MP3 Dateien zu nutzen ohne ständig die T2S Engines zu nutzen. Diese MP3 Dateien müssen a: numerisch sein (4.mp3) und b: mit Hilfe von z.B. WinSCP im Verzeichnis loxberry/data/plugins/sonos4lox/tts/mp3/ gespeichert werden. 

Um numerische MP3 Dateien zu erstellen mache bitte folgendes:

  1. Generiere eine Textansage:

/plugins/sonos4lox/index.php?zone=DEINE_ZONE&playgong=yes&action=sendmessage&text=Waschmaschine ist fertig&volume=20

  1. Wechsel in das Verzeichnis  loxberry/data/plugins/sonos4lox/tts/ und benenne die oberste Datei die ungefähr so aussehen müsste 7e7fbecd034c7c8eb7d6fdd2f2790949.mp3 in 1.mp3 um
  2. kopiere mit Hilfe von z.B. WinSCP diese Datei in das Verzeichnis loxberry/data/plugins/sonos4lox/tts/mp3/
  3. Rufe Sie anschließend über folgende Syntax immer wieder auf:

/plugins/sonos4lox/index.php?zone=DEINE_ZONE&playgong=yes&action=sendmessage&messageid=1

Ich persönlich mache mir dann immer noch eine Kopie der numerischen MP3 Datei und hänge mir noch einen Text dran damit ich weiß um welchen Ansagetext es sich handelt (1_Waschmaschine.mp3)

Zusätzliche Software

Apps für iOS

https://itunes.apple.com/us/app/sonos-voice/id689673100?mt=8

https://itunes.apple.com/de/app/sonophone/id815251931?mt=8

https://itunes.apple.com/de/app/sonocontrols-widget-for-sonos/id1082647737?mt=8

Sonos Hard-/Software Infos

RAM Übersicht

Anbei eine RAM Übersicht der einzelnen Player. Je nach verfügbarem RAM bzw. Storage dauert es unterschiedlich lange bis eine Funktion ausgeführt wird.

Sonos Network Matrix

da es unter Umständen zu Verbindungsproblemen bzw.-latenzen kann hier einige Infos um ggf. die WIFI Performance zu überprüfen und zu optimieren. Eine Übersicht bzgl. der WIFI Details folgenden Befehl im Browser eingeben:
http://<IP SONOS DEVICE>:1400/support/review

anschließend auf "Network Matrix" klicken

Sonos Network Matrix mit guten Verbindungen

Sonos Network Matrix mit Optimierungspotential

Das kann natürlich auch anders aussehen als beim obigen Bild. Genau dann hilft das Sonos Web-Interface eben weiter und bietet die Möglichkeit das Netzwerk zu optimieren. Die Matrix liest sich wie folgt: Grüne Felder zeigen eine gute Signalverbindung, graue Felder zeigen Sonos-Module die nicht drahtlos miteinander kommunizieren (etwa kabelgebundene Einheiten), gelbe und rote Felder weisen auf eher schlechte Funkverbindungen hin.

Optimieren kann man nämlich hauptsächlich an zwei Punkten: Einerseits am verwendeten WLAN Kanal und andererseits bei der Wahl der Root Bridge.

Bekannte Probleme

Roadmap

FAQ / Troubleshooting

Wer Fehler im How-to findet darf sie gerne behalten oder selber korrigieren