Alle Zahlenwerte werden per UDP übertragen. Der Eingangs-Assistent stellt dafür ein fertiges Template zur Verfügung.
Texte werden mittels HTTP-REST Aufruf an das Miniserver Webservice an Virtuelle Texteingänge übertragen. Die virtuellen Texteingänge müssen manuell angelegt werden. Der Eingangs-Assistent stellt die genauen Beschreibungen für Copy&Paste zur Verfügung.
<Player> steht jeweils für die MAC-Adresse der Zone.
Suchstring | Variable | Beschreibung |
UDP-Eingänge (das Plugin erstellt dafür das Template für deine LMS-Umgebung) | ||
<Player> power | 0 oder 1 | Power aktiv oder inaktiv |
<Player> playlist newsong | <Titel - Artist> | Titel und Interpret des Songs Bei einem Stream gibt es nur den Titel, der normalerweise den Interpreten enthält. Ist die Zone aus oder nicht verbunden, wird das im Titel übermittelt. |
<Player> playlist shuffle | 0, 1 oder 2 | Zufällige Wiedergabe 0 … Aus, 1 … Zufällige Titel, 2 … Zufällige Alben |
<Player> playlist repeat | 0, 1 oder 2 | Wiederholung 0 … Aus, 1 … Dieser Titel, 2 … Gesamte Playlist |
<Player> is_stream | 0 oder 1 | 0 wenn lokale Musik wiedergegeben wird, 1 bei einem Stream (z.B. Radiosender) |
<Player> is_synced | 0 oder 1 | 0 spielt alleine, 1 wenn Teilnehmer einer Synchronisationsgruppe |
<Player> mode_text | <Status> | Aus, Stop, Pause, Play, Nicht verbunden |
<Player> mode_value | <Wert> | -3 … Nicht verbunden, -2 … Aus, -1 … Stop, 0 … Pause, 1 … Play |
<Player> mixer volume | 0…100 | Lautstärke |
<Player> mixer muting | 0 oder 1 | 0 … Normale Wiedergabe 1 … Mute |
<Player> connected | 0 oder 1 | Wird 0, wenn der Player nicht mehr verbunden ist |
<Player> name | <String> | Name des Players |
(Die Texte in der UDP-Übertragung sind aktiv, sofern in Zukunft der Miniserver doch mal Texte unterstützt.) | ||
Virtuelle Texteingänge (diese müssen selbst erstellt werden und exakt so heißen) | ||
LMS <Player> name | <Playername> | Die Bezeichnung im Logitech Media Server |
LMS <Player> title | <Titel - Artist> | Titel und Interpres des Songs |
LMS <Player> mode | <Status> | Aus, Stop, Pause, Play, Nicht verbunden |
LMS <Player> last_tts | <Text> | Der Text der zuletzt ausgeführten Sprachausgabe dieser Zone (ab V1.x) |
LMS all last_tts | <Text> | Der Text der zuletzt ausgeführten Sprachausgabe (zonenunabhängig) (ab V1.x) |
Die Kommunikation zwischen Logitech Media Server und Miniserver über das Gateway wird wegen der Datenmenge nicht aufgezeichnet.
Es wird nur eine Logdatei für das Starten des Gateways erstellt. Dieses befindet sich in /opt/loxberry/log/plugins/squeezelite
und heißt lms2udp.log
. Nur bei einem Fehler wird in dieses Log geschrieben.
Das Webinterface des LMS Gateways schreibt sein Log ebenfalls in /opt/loxberry/log/plugins/squeezelite
, dieses heißt lms2udp_cgi.log
.
Während das Plugin läuft, wird auf der RAM-Disk, in /run/shm
ein lms2udp.<pid>
File angelegt. Beim Neustart wird der Prozess mit dieser PID beendet und das Service (mit neuer PID) gestartet. Jede Stunde wird geprüft, ob ein Prozess mit dieser PID noch existiert. Ist das nicht der Fall, wird das Service neu gestartet.
Fehler bitte am besten direkt in im Issue-Tracker erfassen.
Das LMS Gateway ist noch neu - Fehler sind nicht ausgeschlossen!
Funktioniert das Gateway grundsätzlich, jedoch in einer speziellen Konstellation wird der Status nicht korrekt aktualisiert: Bitte schildere in deiner Beschreibung den Ausgangszustand, die ausgeführte Aktion und den SOLL-Zustand sowie den fehlerhaften IST-Zustand.
Das LMS-Gateway verwendet folgende Einstellungen im Plugin und im LoxBerry:
Wo | Was | Wofür |
Squeezelite Player Plugin | Logitech Media Server Adresse | Zum Verbinden zum LMS CLI |
Squeezelite Player Plugin | LMS CLI Port (Default 9090) | Der Port zum LMS CLI |
Squeezelite Player Plugin | Empfänger-Miniserver | Auswahl der in LoxBerry konfigurierten Miniserver (nur sichtbar wenn mehr als einer) |
Squeezelite Player Plugin | Miniserver UDP Port (Default 9093) | Der Empfangsport am Miniserver |
Squeezelite Player Plugin | LoxBerry Plugin-Eingangsport (Default 9092) | Nur wenn vom Miniserver mit dem Plugin kommuniziert werden will. Aktuell noch nicht relevant. |
LoxBerry / Miniserver | IP-Adresse oder Hostname | Zum Verbinden zum Loxone Miniserver |
LoxBerry / Miniserver | Portnummer | Zur Übertragung von Texten per HTTP REST Webservice-Aufrufen |
LoxBerry / Miniserver | Miniserver Benutzername | Zur Übertragung von Texten per HTTP REST Webservice-Aufrufen (Anmeldung) |
LoxBerry / Miniserver | Miniserver Kennwort | Zur Übertragung von Texten per HTTP REST Webservice-Aufrufen (Anmeldung) |
Sofern ihr beim Miniserver oder beim Logitech Media Server Änderungen der Einstellungen vorgenommen habt, bitte die Einstellungen in LoxBerry und dem Plugin nachziehen.
Im Logitech Media Server muss das CLI-Plugin aktiviert sein (ist standardmäßig aktiv).
Ja, kein Problem. Alle geht über die MAC-Adresse, die auch für den Logitech Media Server die eindeutige Player-ID darstellt.
Wenn sich die MAC-Adressen von Zonen ändern, müssen aber auch die virtuellen Eingänge aktualisiert werden.
In der Tat werden etliche UDP-Pakete versandt, die vom Miniserver verarbeitet werden müssen.
Die aktuelle Implementierung wartet mindestens 0,15 Sekunden für jede einzelne Übertragung - in dieser Zeit könnte der Raspberry Pi 3 etwa 300 Millionen Befehle ausführen, das sollte auch für den Miniserver reichen.
Fakt ist jedoch, dass es sich um eine inkrementelle Übertragung handelt: Kommt der nächste Song in der Playlist, wird nur der Titel des nächsten Songs übertragen. Erhöht man die Lautstärke, wird nur die Lautstärke übertragen. Dies passiert immer nur für jene Player, bei denen Aktivitäten eintreten. Das hat von der Last einen wesentlichen Vorteil gegenüber einem Polling aller Daten im 5-Sekunden-Takt, 24 Stunden am Tag, 365 Tage im Jahr.
Tipp: Alle Virtuellen UDP-Eingangsbefehle, die du nicht brauchst, aus der Loxone Config löschen. Sie können im Falle eines Falles über das Template jederzeit wieder angelegt werden.
Es wird eine TCP-Socket-Verbindung zum LMS aufgerufen und ein "Mithören" angefordert (listen). Alle Tastendrücke (im Web, in den Apps) und alle Statuswechsel werden mitgehört. Diese Daten werden nicht direkt weitergeleitet, sondern jeder relevante Statuswechsel hat im Gateway eine Logik hinterlegt, was damit passieren soll.
Beispiel 1: Bei einem neuen Song wird vom LMS nur der Titel des Songs übermittelt, nicht jedoch der Interpret. Deswegen wird vom Gateway der Interpret angefordert, und sobald diese Information verfügbar ist, wird an den Miniserver die "Titel - Interpret" Information übermittelt. Das passiert allerdings nur bei lokalen Medien. Streams, bei denen Titel und Interpret vom Sender gemeinsam übermittelt werden, werden erkannt und sofort übertragen.
Beispiel 2: Beim Weiterschalten zum nächsten Song übermittelt der LMS erst einen Stop-Befehl, bevor der nächste Titel geladen wird. Zum Zeitpunkt des Stops ist noch nicht klar, ob das "endgültig" ist, oder noch was kommt. Deswegen wird bei einem Stop der tatsächliche Modus abgefragt, bevor eine Übertragung an den Miniserver stattfindet.
Beispiel 3: Bei einer Volume-Änderung über das Webinterface oder die Squeezebox-App wird nur die relative Änderung (+2%, -4% usw.) übertragen. Es könnte jedoch auch die absolute Lautstärke (50%) übertragen werden. Da der Miniserver mit einer relativen Änderung nichts anfangen kann, erkennt das LMS Gateway, dass es sich um eine relative Änderung handelt, und fragt die absolute Lautstärke ab. Wurde eine absolute Lautstärke übermittelt, wird diese natürlich sofort weitegeleitet.
Beispiel 4: Ändert sich die Lautstärke innerhalb des Übertragungsintervalls von 0,15 Sekunden mehrmals (z.B. in iPeng wird der Volume-Slider bewegt), wird - um den MS nicht zu überlasten - nicht jede Änderung, sondern nur die letzte Änderung im 0,15 Sekunden-Intervall übertragen.