Zitat von plarad
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
LBS 19000309 - LG TV webOS
Einklappen
X
-
Es liegt mir fern, die Mühen und Arbeiten anderer Menschen, die hier im Forum geteilt werden in irgendeiner Art zu bemängeln. Ich bin im Gegenteil froh über jede zielführende Information und Hilfe, wie ich sie hier in der Vergangenheit auch bereits öfter erleben konnte.
Deine obige Antwort muss ich jedoch als nicht sehr hilfreich einordnen. Aber trotzdem Danke für Deine Belehrung. Bevor ich hier im Forum eine (in Deinen Augen wohl blöde) Frage stelle, habe ich sicher bereits selbst versucht, eine Lösung zu finden. Und somit habe ich bestimmt auch die Hilfe des LBS gelesen.
Leider steht in der Hilfe schon mal nicht drin, dass die LBS-Version 1.0 nur noch mit CentOS 7 und php 7.x läuft. Da steht nur, dass ab V0.6 eine Kompatibilität zu CentOS 7 und php 7.x besteht. Kein Hinweis darauf, dass dies nun zwingend notwendig ist. Die Anzeige der Hilfe im Logikeditor sagt: „This LBS is compatible with…..“.
Nun aber zu den Informationen in der Hilfe, die ich besser lesen sollte und die mein Problem lösen sollen:
E31: 1 - Updates the outputs (A4 - A10) | >1 Updates dynamic and static outputs (A4-A16)
Das bedeutet für mich, dass ich über E 31 mit einer 1 die Ausgänge A4-A10 aktualisieren kann und mit einem Wert > 1 die Aktualisierung der Ausgänge A4 – A16 erfolgt.
E32: Update intervall of automated updates of outputs (A4-A9)
Das heißt für mich, dass in dem angegebenen Intervall eine automatische Aktualisierung der Ausgänge (A4-A9) erfolgt.
In welcher Zeiteinheit ist denn dieses Intervall anzugeben? Ich bin mal von Sekunden ausgegangen. Aber das war nur so eine Annahme. Denn geschrieben steht da nichts.
Ich bin bislang auch davon ausgegangen, dass eine Änderung an einem (Steuer-)Eingang (z.B. E15/Input) auch eine Aktualisierung der dynamischen Ausgänge oder zumindest des zugehörigen Ausgangs (hier dann A10 /Input) auslöst.
Da Du mich allerdings ausdrücklich auf E31 / 32 hingewiesen hast, habe ich nun folgendes getestet:
Bei einer Änderung an Eingang E15/Input sende ich mit 1,5 Sekunden Verzögerung eine 1 an Eingang E31. Dies sollte ja eine sofortige Aktualisierung der Ausgänge A4-A10 vornehmen.
Aber:
Auch das hat keine Lösung für die verzögerte Aktualisierung des Ausgangs A10 gebracht. Die Aktualisierung geht deswegen nicht schneller.
Für E32 hatte ich 15 (Sekunden?) bzw. 60 (Sekunden?) getestet, was auch keinen Einfluss hatte.
Trotz des netten Verweises auf die Hilfe besteht das Problem also immer noch.
Eventuell gibt es ja einen ganz anderen Grund für die Verzögerung der Aktualisierung. Bei anderen Geräten, die ich im Einsatz habe (Yamaha, Enigma2, usw.), funktioniert es ja auch schneller.
Gibt es noch einen anderen Trick als die Hinweise in der Hilfe oder interpretiere ich ggf. diese Hinweise einfach nur falsch?
M.f.G.
Plarad
Kommentar
-
Zitat von plarad Beitrag anzeigenDeine obige Antwort muss ich jedoch als nicht sehr hilfreich einordnen.
Zitat von plarad Beitrag anzeigenAber trotzdem Danke für Deine Belehrung
Zitat von plarad Beitrag anzeigenEventuell gibt es ja einen ganz anderen Grund für die Verzögerung der Aktualisierung.
- Likes 1
Kommentar
-
Hier ist noch die aktuelle Konfiguration des LBS mit der zusätzlichen Beschaltung von E31, die die Aktualisierung des Ausgangs A10 jedoch auch nicht beschleunigt.
Konfiguration 19000309_120722.pngAngehängte Dateien
Kommentar
-
Grundsätzlich wird nach dem Eingangswechsel ein Update aufgerufen. Kann sein, dass dies zu früh kommt, um schon den neuen Wert zu holen.
Bei mir funktioniert es aber über E31 und E31, d.h. E31 kurz nach Wechsel des Eingangs oder aber E32 auf 1 setzen.
Verwndest du den LBS für mehrere Geräte? Grundsätzlich mach es bei solchen LBS Sinn die Konfigurationseingänge statisch zu belegen und nicht über iKOs, damit der LBS beim Start alle notwendigen Infos hat, die er zum Start braucht. Und bei mehrere Geräten dann ja eine LBS Instanz je Gerät.
Kommentar
-
Das bedeutet, dass irgendwas beim Auslesen der App-Liste schief läuft, bzw. dass die App-Liste leer ist. (A13)
Was genau kommt an A13?
Das es alle 30 Sekunden passiert, liegt vermutlich daran, dass E31 alle 30 Sekunden getriggert wird.
Hast du evtl. Apps vom Gerät gelöscht, so dass jetzt ggf. gar keine mehr installiert ist?
Oder eine neue Firmware instaliert?
Du kannst die Zeile 1144 (was der Zeile 657 im EXEC Bereich entspricht) anpassen:
Aus
PHP-Code:if (array_key_exists('payload',$apps) && array_key_exists('launchPoints',$apps['payload']))
machst du
PHP-Code:if (is_array($apps) && array_key_exists('payload',$apps) && array_key_exists('launchPoints',$apps['payload']))
Kommentar
-
Moien,
hat jemand den LBS mit einem webOS 7.3.1-43 am laufen?
Bekomme kein Pairing hin.
Code:[TABLE="border: 0, cellpadding: 0, cellspacing: 0"] [TR] [TD]2023-10-23 21:30:52[/TD] [TD]848390[/TD] [TD]1496766[/TD] [TD]debug[/TD] [TD]EXE19000309 [v1.0]: Sending WS handshake: GET / HTTP/1.1[CR][LF]Upgrade: websocket[CR][LF]Connection: Upgrade[CR][LF]Sec-WebSocket-Version: 13[CR][LF]Sec-WebSocket-Key: SWs3eEtFaig1MnBtIm92PQ==[CR][LF]Host: 10.0.0.203:3000[CR][LF][CR][LF] (8239)[/TD] [/TR] [TR] [TD]2023-10-23 21:30:52[/TD] [TD]850378[/TD] [TD]1496766[/TD] [TD]debug[/TD] [TD]EXE19000309 [v1.0]: ERROR during WS handshake! (8239)[/TD] [/TR] [TR] [TD]2023-10-23 21:30:52[/TD] [TD]852102[/TD] [TD]1496766[/TD] [TD]debug[/TD] [TD]EXE19000309 [v1.0]: Connection closed to 10.0.0.203 (8239)[/TD] [/TR] [/TABLE]
Der Power Status jedoch wird angezeigt, somit muss ja eine Verebindung bestehen.
Gruß André...and I thought my jokes were bad!
Kommentar
-
Zitat von eXec Beitrag anzeigenDer Power Status jedoch wird angezeigt, somit muss ja eine Verebindung bestehen.
Ich habe leider kein WebOS 7 TV und kann somit keine qualifizierte Hilfe geben.
Die Fehlermeldung bedeutet, dass keine Antwort auf den Handshake Request gekommen ist.
Evtl. hat LG da was geändert.
- Likes 1
Kommentar
-
Hallo,
ich habe zwar kein webOS7, sondern 5.5.0-1101, habe aber damit neuerdings auch ein Problem mit dem WS-Handshake.
Ich nutze eine stark reduzierte Version des LBS 19000309, da ich einen Großteil der Funktionen nicht benötige (der LG arbeitet nur als Monitor).
Leider läuft dieser aber auch aktuell nicht mehr (außer das WOL zum Einschalten).
Ich habe eine Version des LBS unabhängig von EDOMI mit Apache NetBeans und XAMPP zum Testen. Damit kann ich auch schrittweise abarbeiten und habe folgendes Ergebnis:
fsockopen() funktioniert ohne Fehler.
Anforderung zum Aufbau der WS-Verbindung habe ich aus dem LBS 19000309 übernommen.
$ws_handshake_cmd = "GET " . $this->path . " HTTP/1.1\r\n";
$ws_handshake_cmd .= "Upgrade: websocket\r\n";
$ws_handshake_cmd .= "Connection: Upgrade\r\n";
$ws_handshake_cmd .= "Sec-WebSocket-Version: 13\r\n";
$ws_handshake_cmd .= "Sec-WebSocket-Key: " . $this->ws_key . "\r\n";
$ws_handshake_cmd .= "Host: " . $this->host . ":" . $this->port . "\r\n\r\n";
$path=‘/‘
$port=3000
$host=‘IP des TV‘
$ws-key generiert wie in LBS19000309
Versendet wird das mit fwrite($sock,$ws_handshake_cmd) und liefert 157 als Ergebnis. Also o.k.
stream_select($read, $write, $except, 5) liefert auf dem entsprechenden $sock im $read-Array die gewünschte 1 – auch o.k.
Und nun kommt das Problem:
$response belege ich zum Testen mit einem String z.B. xxxx und führe die Abfrage des Steams durch.
$response = stream_get_contents($sock);
Der Befehl wird ausgeführt, liefert jedoch nur einen leeren String (die xxxx sind weg). Aber der gewünschte json-String fehlt.
In den TV-Einstellungen ist::
Schnellstart (QuickStart+) auf aus
Mobilgeräte auf ein
Im versteckten Servicemenü
IP Control an
WOL auf an
Hat LG da eventuell bei einem Update etwas geändert?
Hat jemand eine Idee?
Danke bereits vorab.
Kommentar
-
Hallo,
meine Vermutung, dass das Problem des fehlerhaften Handshakes mit einem Firmwareupdate von LG in Zusammenhang steht hat sich durch weitere Informationen in anderen Foren verdichtet.
Dabei habe ich aber auch einen Lösungsansatz gefunden und diesen bereits erfolgreich getestet.
https://github.com/chros73/bscpylgtv
Hier gibt es eine Lösung, die auch mit aktueller LG-Firmware funktioniert. Es wird eine Möglichkeit geboten, auf der Ebene der Kommandozeile zu arbeiten.
Für einen schnellen Test wird eine Version für Windos-Kommandozeile bereitgestellt, die auch keine Pythoninstallation erfordert. Dieser Test lief sehr schnell und positiv.
Die Handshakeverbindung läuft jetzt über Port 3001 mit TLS1.2 (laut Wireshake)
Für andere Betriebssysteme wird die Installation von Python > Version 3.8 nötig.
Da CentOS 7.x dies nicht bereitstellt, habe ich nachträglich Python 3.10.13 auf CentOS 7 installiert, was nicht ganz so einfach war, wie es klingt. Es dauerte mehrere Versuche, bis alle benötigten Python 3.10.-Pakete installiert waren. Aber Hartnäckigkeit zahlt sich aus.
Ich habe nun auch auf der CentOS-Kommandozeile getestet und es läuft.
Nun muss das Ganze noch mit einem entsprechendem LBS weiter geformt werden. Da ich nur einen Bruchteil der Kommunikation mit LG benötige, wird mir dies wohl auch noch gelingen.
Schön wäre es, wenn sich ein Python-Kenner das obige Paket anschauen könnte und es schaffen würde, dies direkt in PHP umzusetzen.
Viele Grüße, Plarad
Kommentar
-
Zitat von plarad Beitrag anzeigenSchön wäre es, wenn sich ein Python-Kenner das obige Paket anschauen könnte und es schaffen würde, dies direkt in PHP umzusetzen.
https://github.com/StefanNemeth/PHP-LG-SmartTV
Da es schon PHP ist, wäre es vermutlich nicht so aufwändig, dies in einen LBS zu gießen. Ich würde das dann mal über die Weihnachtsferien versuchen umzusetzen.
Kommentar
-
Ich habe das gerade mal heruntergeladen und nur schnell auf der PHP-Interactiv Shell versucht. Bis $tv = new SmartTV() keine Fehler. Bei Pairing-Anforderung $tv->displayPairingKey() knallt es aber schon. Habe das Ganze mit den Ports 8080, 3000 und 3001 getestet. Immer das gleiche Ergebnis.
Als Standard-Port 8080 zu verwenden entspricht auch nicht dem, was ich mit Wireshake gesehen habe. Da läuft das aktuell über 3001 mit TLS1.2.
Da die Lösung bereits aus 2016 stammt und die Problem mit dem Handshake erst seit Mitte 2023 bestehen, kann ich mir vorstellen, dass das Handshake auch in dieser PHP-Version nicht funzt.
Viele Grüße, Plarad
Kommentar
-
Hallo plarad, wie hast du denn Python 3.10 auf CentOS 7 installiert bekommen? Bei mir scheitert die Installation immer mit einem Fehler
Code:./_bootstrap_python ./Programs/_freeze_module.py abc ./Lib/abc.py Python/frozen_modules/abc.h Fatal Python error: init_import_site: Failed to import the site module Python runtime state: initialized Traceback (most recent call last): File "/root/Python-3.12.2/Lib/site.py", line 73, in <module> import os File "/root/Python-3.12.2/Lib/os.py", line 29, in <module> from _collections_abc import _check_methods SystemError: <built-in function compile> returned NULL without setting an exception make[1]: *** [Python/frozen_modules/abc.h] Fehler 1 make[1]: Leaving directory `/root/Python-3.12.2' make: *** [profile-opt] Fehler 2
Ich wäre mit der Python Lösung sehr zufrieden. Modbus läuft bei mir auch sehr zuverlässig über den Python modbus-cli und dem EXEC LBS.
Danke!
Kommentar
-
Hier ein kurzer Auszug aus meiner Doku als pdf. Eventuell ist das ja hilfreich.
Ich habe mir 2 getrennte LBS für die Nutzung geschrieben, die jedoch auf meinen speziellen Anwendungsfall zugeschnitten sind und die ich deshalb auch nicht veröffentlicht habe.
Aber wenn erst einmal Python 3.10.x läuft, ist der Rest auch kein Problem mehr.
Viele Grüße
Angehängte Dateien
- Likes 2
Kommentar
Kommentar