[82_LGTV_WebOS.pm] Modul für LG TV's mit WebOS !!!NEW!!!

Begonnen von CoolTux, 02 Februar 2022, 12:54:52

Vorheriges Thema - Nächstes Thema

CoolTux

Ich habe jetzt erstmal ein Update für alle bereit gestellt. Ganz normal über FHEM Update einspielen.

Alle die getestet haben vielen Dank und bitte entfernt die Updatequelle jetzt wieder

update list  -  falls die Quelle nicht mehr bekannt ist

update delete https://git........
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

mumpitzstuff

#91
2022.03.31 09:07:38.067 2: LGTV_WebOS (LGTV) - can't read from socket, autodie exception: Can't sysread(IO::Socket::INET=GLOB(0x55bf7ad7a4d0), <BUFFER>, 10240): No route to host at lib/FHEM/Devices/LGTV/LGTVWebOS.pm line 758


Ich hatte den Fernseher über das Modul eingeschaltet und dann per Fernbedienung ausgeschaltet. Der Status blieb dann ewig auf grün, wurde anscheinend sehr viel später aber rot, eventuell wegen des oben zu sehenden Logeintrages. Vermutlich befindet sich der Fernseher noch eine Weile in Lauerstellung, schaltet dann aber irgendwann ganz ab und dann geht sysread schief.

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

JoWiemann

Zitat von: CoolTux am 31 März 2022, 12:01:28
Ich danke Dir.

Hier nochmal ein Log. Es dauert wirklich einige Zeit, bis das Aus des TV erkannt wird. Nach dem Update heute folgendes Log:


2022.03.31 13:04:18 3: delete -> GHoma (GHoma_d35f78)
2022.03.31 13:04:18 3: GHomaSRV_192.168.0.27_9706: GHoma_d35f78 passt -> Handles uebertragen
2022.03.31 13:04:17 3: delete -> GHoma (GHoma_d35b54)
2022.03.31 13:04:17 3: GHomaSRV_192.168.0.38_16088: GHoma_d35b54 passt -> Handles uebertragen
2022.03.31 13:04:14 3: delete -> GHoma (GHoma_4cfb28)
2022.03.31 13:04:14 3: GHomaSRV_192.168.0.57_12037: GHoma_4cfb28 passt -> Handles uebertragen
2022.03.31 13:04:13 3: delete -> GHoma (GHoma_d33e14)
2022.03.31 13:04:13 3: GHomaSRV_192.168.0.44_10690: GHoma_d33e14 passt -> Handles uebertragen
2022.03.31 13:04:10 3: delete -> GHoma (GHoma_d33618)
2022.03.31 13:04:10 3: GHomaSRV_192.168.0.20_10806: GHoma_d33618 passt -> Handles uebertragen
2022.03.31 13:04:08 4: LGTV_WebOS (TV) Couldn't connect to 192.168.0.171:3000
2022.03.31 13:04:08 4: LGTV_WebOS (TV) - Baue Socket Verbindung auf
2022.03.31 13:03:57 4: LGTV_WebOS (TV) Couldn't connect to 192.168.0.171:3000
2022.03.31 13:03:57 4: LGTV_WebOS (TV) - Baue Socket Verbindung auf
2022.03.31 13:03:48 0: SONOS0: Das Lauschen auf der Schnittstelle wurde beendet. Prozess endet nun auch...
2022.03.31 13:03:45 2: SONOS0: LastProcessAnswer way too old (Lastanswer: 1648724115 ~ 2022-03-31 12:55:15)... try to restart the process and connection...
2022.03.31 13:03:45 1: 192.168.0.200:3493 reappeared (USV)
2022.03.31 13:03:45 4: LGTV_WebOS (TV) Couldn't connect to 192.168.0.171:3000
2022.03.31 13:03:45 4: LGTV_WebOS (TV) - Baue Socket Verbindung auf
2022.03.31 13:03:45 4: LGTV_WebOS (TV) - socket not connected
2022.03.31 13:03:45 4: LGTV_WebOS (TV) - WriteFn called
2022.03.31 13:03:45 5: LGTV_WebOS (TV) - Sending command: {"client-key":"4fe9b538158f581a91011ff376945184","type":"request","id":"request_1648724625.54081","uri":["ssap://tv/getExternalInputList"]}
2022.03.31 13:03:45 4: LGTV_WebOS (TV) - LGTV_WebOS_GetExternalInputList: 0
2022.03.31 13:03:45 4: LGTV_WebOS (TV) - socket not connected
2022.03.31 13:03:45 4: LGTV_WebOS (TV) - WriteFn called
2022.03.31 13:03:45 5: LGTV_WebOS (TV) - Sending command: {"client-key":"4fe9b538158f581a91011ff376945184","type":"request","id":"request_1648724625.53656","uri":["ssap://com.webos.service.tv.display/get3DStatus"]}
2022.03.31 13:03:45 4: LGTV_WebOS (TV) - LGTV_WebOS_Get3DStatus: 0
2022.03.31 13:03:45 4: LGTV_WebOS (TV) - socket not connected
2022.03.31 13:03:45 4: LGTV_WebOS (TV) - WriteFn called
2022.03.31 13:03:45 5: LGTV_WebOS (TV) - Sending command: {"uri":["ssap://com.webos.applicationManager/getForegroundAppInfo"],"client-key":"4fe9b538158f581a91011ff376945184","type":"request","id":"request_1648724625.51973"}
2022.03.31 13:03:45 4: LGTV_WebOS (TV) - LGTV_WebOS_GetForgroundAppInfo: 0
2022.03.31 13:03:44 4: LGTV_WebOS (TV) - Socket Disconnected
2022.03.31 13:03:44 4: LGTV_WebOS (TV) - ReadFn started
2022.03.31 13:03:44 3: HZ_Badezimmer: Steckdose - off-for-timer
2022.03.31 13:03:44 3: FS20 set HZ_ST_Badezimmer off-for-timer
2022.03.31 13:03:44 3: HZ_Badezimmer: Steckdose - off-for-timer
2022.03.31 13:03:44 3: FS20 set HZ_ST_Badezimmer off-for-timer
2022.03.31 13:03:43 1: 192.168.0.200:3493 disconnected, waiting to reappear (USV)

2022.03.31 13:03:43 2: LGTV_WebOS (TV) - can't write to socket, autodie exception: Can't syswrite(IO::Socket::INET=GLOB(0x7070fb8), <BUFFER>): No route to host at lib/FHEM/Devices/LGTV/LGTVWebOS.pm line 709
"5>rpq[;A8aid/mDdg|Fuk@.nmq#aw\.l;o6
-5!*9(z1Tx7/ 5(
2022.03.31 12:55:17 4: LGTV_WebOS (TV) - ���2K{;F2p|q"kW:u|A?"5"d;ir|C>ejF1/s7+z1.s6* y"5(lpW%t4Y.y;i4Wrb,s1,
2022.03.31 12:55:17 4: LGTV_WebOS (TV) - WriteFn called
2022.03.31 12:55:17 5: LGTV_WebOS (TV) - Sending command: {"type":"request","id":"request_1648724117.86392","client-key":"4fe9b538158f581a91011ff376945184","uri":["ssap://tv/getCurrentChannel"]}
2022.03.31 12:55:17 4: LGTV_WebOS (TV) - LGTV_WebOS_GetCurrentChannel: 0
za {1(T-3.r4,s4;O
2022.03.31 12:55:15 4: LGTV_WebOS (TV) - ���2K{;G9i;"jA*p#dalV"o6U.tJF*tlAi]5?yiWi:;@.qlW8t;ii}q"kW:u|A?_(8.1(e8,}1;icu[.nm e`q"-T.9{x8(sf,
2022.03.31 12:55:15 4: LGTV_WebOS (TV) - WriteFn called
2022.03.31 12:55:15 5: LGTV_WebOS (TV) - Sending command: {"uri":["ssap://audio/getStatus"],"type":"request","id":"request_1648724115.85761","client-key":"4fe9b538158f581a91011ff376945184"}
2022.03.31 12:55:15 4: LGTV_WebOS (TV) - LGTV_WebOS_GetAudioStatus: 0
2022.03.31 12:55:15 4: LGTV_WebOS (TV) - run get functions
z5!T~8(Sr1)zf|6 ~1!i,;F2p|q"kW:u|A?"5"d;ir|C>ejF1/s7+z1*s5, |"5>rpq[;A8aid/mDdg|FxmW9nx^niG?LpA?"DO
2022.03.31 12:55:13 4: LGTV_WebOS (TV) - ���2K{;Q'i|\?-rW2"#f| )5*
2022.03.31 12:55:13 4: LGTV_WebOS (TV) - WriteFn called
2022.03.31 12:55:13 5: LGTV_WebOS (TV) - Sending command: {"client-key":"4fe9b538158f581a91011ff376945184","type":"request","id":"request_1648724113.85597","uri":["ssap://tv/getExternalInputList"]}
2022.03.31 12:55:13 4: LGTV_WebOS (TV) - LGTV_WebOS_GetExternalInputList: 0
2022.03.31 12:55:11 4: LGTV_WebOS (TV) - ���2K{;G9i;"jA*p#dcv_ew|P$s7A.ro[(e7F=.}[8puS2/~W?3]a?amG8"Dii}q"kW:u|A?_(8.1(e8,x5;it`B."#9ehG.smg"z^"ewFfk|Ki:;-e P~3!~8s1x z0(-f*}9-z8-6
2022.03.31 12:55:11 4: LGTV_WebOS (TV) - WriteFn called
2022.03.31 12:55:11 5: LGTV_WebOS (TV) - Sending command: {"uri":["ssap://com.webos.service.tv.display/get3DStatus"],"id":"request_1648724111.85635","type":"request","client-key":"4fe9b538158f581a91011ff376945184"}
2022.03.31 12:55:11 4: LGTV_WebOS (TV) - LGTV_WebOS_Get3DStatus: 0
z5!T~8(Sr1)zf|6 ~1!i}


Was mich stört ist das nach dem Fehler "can't write to socket" auch die Verbindung zur USV und zu den GHoma Steckdosen verloren geht.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

the ratman

und nur für die vollständigkeit - am tv per shield tv und cec einschalten immer noch:2022.03.31 14:00:51 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 4965.
2022.03.31 14:00:51 1: stacktrace:
2022.03.31 14:00:51 1:     main::__ANON__                      called by fhem.pl (4965)
2022.03.31 14:00:51 1:     main::readingsBulkUpdateIfChanged   called by lib/FHEM/Devices/LGTV/LGTVWebOS.pm (1324)
2022.03.31 14:00:51 1:     FHEM::Devices::LGTV::LGTVWebOS::WriteReadings called by lib/FHEM/Devices/LGTV/LGTVWebOS.pm (1015)
2022.03.31 14:00:51 1:     FHEM::Devices::LGTV::LGTVWebOS::ResponseProcessing called by lib/FHEM/Devices/LGTV/LGTVWebOS.pm (797)
2022.03.31 14:00:51 1:     FHEM::Devices::LGTV::LGTVWebOS::Read called by fhem.pl (3934)
2022.03.31 14:00:51 1:     main::CallFn                        called by fhem.pl (781)
ausschalten per lan oder auch einschalten per ir-modul bringt kein warning
→do↑p!dnʇs↓shit←

JoWiemann

Hallo,

gestern Abend ist Fhem wieder gestorben:


2022.03.31 22:45:06 1: PERL WARNING: Use of uninitialized value in subroutine entry at /usr/lib/arm-linux-gnueabihf/perl/5.24/Encode.pm line 231.
2022.03.31 22:45:06 3: GHomaSRV_192.168.0.44_10500: GHoma_d33e14 passt -> Handles uebertragen
2022.03.31 22:45:06 3: GHomaSRV_192.168.0.51_9636: GHoma_94c640 passt -> Handles uebertragen
W 2022-03-31 22:45:06,749 yowsup.layers.protocol_ib.layer - Unsupported ib node: <ib from="s.whatsapp.net">
  <notice id="20210302" stage="0" version="1" t="1648759506" />
</ib>


Das Perl Warning zu Encode.pm habe ich seit Jahren des Fhem Betriebs das erste mal. Zusammenhang mit WebOS!?

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

CoolTux

LGTV_WebOS verwendet zwar Encode aber einen wirklichen Zusammenhang kann ich aus der Fehlermeldung an sich nicht sehen. Was sagen den die Zeilen davor und danach. Das ist ein bisschen wenig zum genaueren Analysieren.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

JoWiemann

Zitat von: CoolTux am 01 April 2022, 08:28:43
LGTV_WebOS verwendet zwar Encode aber einen wirklichen Zusammenhang kann ich aus der Fehlermeldung an sich nicht sehen. Was sagen den die Zeilen davor und danach. Das ist ein bisschen wenig zum genaueren Analysieren.

Es gibt keine Zeilen vorher, nachher. Ich habe jetzt erst einmal Dein Update von heute morgen eingespielt. Wenn ich heute Zeit habe drehe ich verbose noch einmal hoch und teste.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

the ratman

dafür haben sich die warnings beim einschalten meines tv's per cec verdoppelt:2022.04.01 12:37:56 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 4965.
2022.04.01 12:37:56 1: stacktrace:
2022.04.01 12:37:56 1:     main::__ANON__                      called by fhem.pl (4965)
2022.04.01 12:37:56 1:     main::readingsBulkUpdateIfChanged   called by lib/FHEM/Devices/LGTV/LGTVWebOS.pm (1328)
2022.04.01 12:37:56 1:     FHEM::Devices::LGTV::LGTVWebOS::WriteReadings called by lib/FHEM/Devices/LGTV/LGTVWebOS.pm (1019)
2022.04.01 12:37:56 1:     FHEM::Devices::LGTV::LGTVWebOS::ResponseProcessing called by lib/FHEM/Devices/LGTV/LGTVWebOS.pm (801)
2022.04.01 12:37:56 1:     FHEM::Devices::LGTV::LGTVWebOS::Read called by fhem.pl (3934)
2022.04.01 12:37:56 1:     main::CallFn                        called by fhem.pl (781)
2022.04.01 12:38:06 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 4965.
2022.04.01 12:38:06 1: stacktrace:
2022.04.01 12:38:06 1:     main::__ANON__                      called by fhem.pl (4965)
2022.04.01 12:38:06 1:     main::readingsBulkUpdateIfChanged   called by lib/FHEM/Devices/LGTV/LGTVWebOS.pm (1328)
2022.04.01 12:38:06 1:     FHEM::Devices::LGTV::LGTVWebOS::WriteReadings called by lib/FHEM/Devices/LGTV/LGTVWebOS.pm (1019)
2022.04.01 12:38:06 1:     FHEM::Devices::LGTV::LGTVWebOS::ResponseProcessing called by lib/FHEM/Devices/LGTV/LGTVWebOS.pm (801)
2022.04.01 12:38:06 1:     FHEM::Devices::LGTV::LGTVWebOS::Read called by fhem.pl (3934)
2022.04.01 12:38:06 1:     main::CallFn                        called by fhem.pl (781)
→do↑p!dnʇs↓shit←

mumpitzstuff

2022.04.01 12:47:15.132 4: LGTV_WebOS (LGTV) - LGTV_WebOS_GetForgroundAppInfo: 0
2022.04.01 12:47:15.133 5: LGTV_WebOS (LGTV) - Sending command: {"uri":["ssap://com.webos.applicationManager/getForegroundAppInfo"],"client-key":"42aae624257058a5b6fe17f51dcbfd33","type":"request","id":"request_1648810035.13286"}
2022.04.01 12:47:15.133 4: LGTV_WebOS (LGTV) - WriteFn called
2022.04.01 12:47:15.133 4: LGTV_WebOS (LGTV) - ���2K{;G9i;"jA*p#dcv_ew|P$s7S;pu[(am[$nTS%a~W9/~W?Fv@.gk]>n}s;pP\-o;og"z^"ewFfk|Ki:;yaxW}2-~7)sa,P}f||f,/c{T/3*g"mK;e;ir|C>ejFi,;[/"#9ehG.smmz6-
s1)x57x2!i}
2022.04.01 12:47:17.134 4: LGTV_WebOS (LGTV) - LGTV_WebOS_Get3DStatus: 0
2022.04.01 12:47:17.134 5: LGTV_WebOS (LGTV) - Sending command: {"type":"request","id":"request_1648810037.13468","client-key":"42aae624257058a5b6fe17f51dcbfd33","uri":["ssap://com.webos.service.tv.display/get3DStatus"]}
2022.04.01 12:47:17.135 4: LGTV_WebOS (LGTV) - WriteFn called
2022.04.01 12:47:17.135 4: LGTV_WebOS (LGTV) - ���2K{;F2p|q"kW:u|A?"5"d;ir|C>ejF1/s8({3.z3-s"5(lpW%t4Y.y;i4+S*e/2,{5!S~b/T.1.T~1}Q)f}x"5>rpq[;A8aid/z]&.nW)oj8ekD"c|?v7V"si^*y6U.t*vtxF>s;o6
2022.04.01 12:47:17.960 4: LGTV_WebOS (LGTV) - ReadFn started
2022.04.01 12:47:17.965 4: LGTV_WebOS (LGTV) - can't read from socket, autodie exception: Can't sysread(IO::Socket::INET=GLOB(0x55a76e6643a8), <BUFFER>, 10240): No route to host at lib/FHEM/Devices/LGTV/LGTVWebOS.pm line 760

2022.04.01 12:47:17.966 4: LGTV_WebOS (LGTV) - Socket Disconnected
2022.04.01 12:47:19.132 4: LGTV_WebOS (LGTV) - LGTV_WebOS_GetExternalInputList: 0
2022.04.01 12:47:19.132 5: LGTV_WebOS (LGTV) - Sending command: {"type":"request","id":"request_1648810039.13271","client-key":"42aae624257058a5b6fe17f51dcbfd33","uri":["ssap://tv/getExternalInputList"]}
2022.04.01 12:47:19.133 4: LGTV_WebOS (LGTV) - WriteFn called
2022.04.01 12:47:19.133 4: LGTV_WebOS (LGTV) - socket not connected
2022.04.01 12:47:21.137 4: LGTV_WebOS (LGTV) - Baue Socket Verbindung auf
2022.04.01 12:47:21.238 4: LGTV_WebOS (LGTV) Couldn't connect to 192.168.178.59:3000
2022.04.01 12:47:31.241 4: LGTV_WebOS (LGTV) - Baue Socket Verbindung auf
2022.04.01 12:47:31.342 4: LGTV_WebOS (LGTV) Couldn't connect to 192.168.178.59:3000
2022.04.01 12:47:41.344 4: LGTV_WebOS (LGTV) - Baue Socket Verbindung auf
2022.04.01 12:47:41.445 4: LGTV_WebOS (LGTV) Couldn't connect to 192.168.178.59:3000


Hier mal ein vollständigeres Log wenn sich der Fernseher nach einiger Zeit ausschaltet.

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

JoWiemann

#101
Auch von mir nochmal ein Log mit der aktuellen Version:

Hab gerade gesehen, zu viel Code. Ich poste gleich ein File.

PS: Anbei das Log-File.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

setstate

Könnte man beim LGTV_WebOS Modul auch noch "set remoteControl ..." einbauen, wie beim LGTV_IP12?

Ich möchte gerne beim Erscheinen von der Nachricht "Der Projektor wird in 5 Minuten abgeschaltet, um Strom zu sparen. Drücken Sei eine beliebige Taste, um abzubrechen" (oder so ähnlich), von Remote die "OK" Taste schicken.

Das Protokoll muss das unterstützen, mit der iOS App funktioniert das

CoolTux

Wenn Du mir da die entsprechenden API Endpoints und values geben kannst gerne. Ich habe da leider aktuell keine Info zu.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

setstate

#104
ich vermute über ssap://com.webos.service.networkinput/getPointerInputSocket müsste das gehen

Erst einen pointerSocket anlegen

var init_pointer_socket = function(fn) {
  send_command("pointer_", "request", "ssap://com.webos.service.networkinput/getPointerInputSocket", null, function(success, response) {
          if (success && response.type != "error")
          {
              console.log("socketPath: ", response.payload);
              pointerSocket = new WebSocket(response.payload.socketPath);
              pointerSocket.onmessage = function (event) { console.log(event.toString); };
              fn(RESULT_OK, pointerSocket);
          } else {
              fn(RESULT_ERROR, {});
          }
   });
};


Und dann den Button senden: pointer_button("ENTER");


var pointer_button = function (keyName) {
  if (pointerSocket != null) {
      pointerSocket.send("type:button\n" + "name:" + keyName + "\n" + "\n");
  } else {
      console.log("pointerSocket is not connected");
  }
};


Ich habe gerade die Chrome Extension (https://github.com/felipefacundes/LGTV-control-extension) ausprobiert. Die Pointer Events LEFT, UP, ENTER, DOWN, RIGHT funktionieren sehr gut.