Troubleshooting und Tipps zur LMS Gateway-Funktion

Übermittelte Daten

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)

Logdateien

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.

Troubleshooting

Fehler bitte am besten direkt in im Issue-Tracker erfassen.

Status wird nicht richtig aktualisiert

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.

Verbindungsprobleme

Das LMS-Gateway verwendet folgende Einstellungen im Plugin und im LoxBerry:

Wo Was Wofür
Squeezelite Player PluginLogitech Media Server Adresse Zum Verbinden zum LMS CLI
Squeezelite Player PluginLMS CLI Port (Default 9090) Der Port zum LMS CLI
Squeezelite Player PluginEmpfänger-Miniserver Auswahl der in LoxBerry konfigurierten Miniserver (nur sichtbar wenn mehr als einer)
Squeezelite Player PluginMiniserver UDP Port (Default 9093) Der Empfangsport am Miniserver
Squeezelite Player PluginLoxBerry 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).

Keine UDP-Daten

  • Der Eingangs-Assistent setzt im Template die Eingangs-IP-Adresse auf die lokale Adresse des LoxBerry. Bitte prüfe, ob die Adresse korrekt ist. Sollte der LoxBerry (warum auch immer) mehrere IP-Adressen haben, probiere beim UDP-Eingang in der Loxone Config diese Adressen durch.
  • Daten werden "inkrementell" übertragen, also nur dann, wenn etwas passiert. Wenn in einer Zone nichts passiert, wird auch der Status (z.B. nach einem Miniserver-Neustart) nicht sofort aktualisiert. Alle fünf Minuten sendet das Gateway den kompletten Status aller Zonen.
  • Ich weiß nicht, was am Miniserver passiert, wenn es mehrere virtuelle UDP-Eingänge mit gleicher Adresse und Port gibt. In diesem Fall testweise die Konfiguration so durchführen, dass nur ein Virtueller UDP-Eingang (mit allen Befehlen) mit der gleichen Senderadresse und Eingangsport konfiguriert ist.
  • Stelle sicher, dass sich die MAC-Adresse (z.B. einer Zone) nicht geändert hat. Die MAC-Adresse (=Player-ID) wird in der Befehlserkennung verwendet.

Keine Text-Daten

  • Bitte überprüfe, ob du die Virtuellen Texteingänge wirklich korrekt erzeugt hast. Die Eingänge heißen immer "LMS <MAC-Adresse> <Art>". Dazwischen sind echte Leerzeichen, die MAC-Adresse des Players enthält die Doppelpunkte.
  • Der in der LoxBerry Miniserver-Konfiguration eingerichtete Miniserver-Benutzer und sein Kennwort müssen richtig sein.
  • Stelle sicher, dass sich die MAC-Adresse (z.B. einer Zone) nicht geändert hat. Die MAC-Adresse (=Player-ID) ist der Schlüssel für die HTTP REST-Übertragung.

Kann ich bedenkenlos den Namen einer Zone ändern?

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.

Wie stark belastet das den Miniserver?

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.

Was passiert im Hintergrund?

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.