Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS 19000309 - LG TV webOS

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Zitat von plarad Beitrag anzeigen
    Was sollte ich tun, um schneller Reaktionen an den LBS-Ausgängen zu erhalten?
    Ich gehe davon aus, dass du die Hilfe und die Bezeichnung der Eingänge gelesen hast? Insbesondere E31 und E32?

    Kommentar


      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 anzeigen
        Deine obige Antwort muss ich jedoch als nicht sehr hilfreich einordnen.
        Ich habe in deiner Ausführung nichts davon gelesen, wie der LBS konfiguriert ist. Von daher ist eine nicht passende Konfiguration des LBS nicht so unwahrscheinlich.

        Zitat von plarad Beitrag anzeigen
        Aber trotzdem Danke für Deine Belehrung
        Wo genau siehst du eine Belehrung? Es war lediglich eine Frage.

        Zitat von plarad Beitrag anzeigen
        Eventuell gibt es ja einen ganz anderen Grund für die Verzögerung der Aktualisierung.
        Ja das denke ich auch.

        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.png
          Angehä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


              Seit einigen Tagen alle 30s folgenden Fehler im Log....
              EXE19000309.php | Fehlercode: 2 | Zeile: 657 | array_key_exists() expects parameter 2 to be array, null given ERROR

              ... jemand eine Idee?

              VG

              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'])) 
                Dann sollte der Fehler eigentlich weg sein.

                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]
                   ​
                  image.png​​
                  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 anzeigen
                    Der Power Status jedoch wird angezeigt, somit muss ja eine Verebindung bestehen.
                    Der Power Status wird aus der Netzwerk-Errreichbarkeit abgeleitet, ist also keine Indikation für eine API Kommunikation.
                    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.

                    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 anzeigen
                          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.
                          Hast du mal getestet, ob diese Implementierung läuft:

                          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
                              ​
                              Habe auch schon diverse Python Versionen probiert, immer das gleiche Ergebnis.

                              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

                                Kommentar

                                Lädt...
                                X