iobroker-community-adapters / ioBroker.lgtv

LG WebOS SmartTV adapter for ioBroker
http://iobroker.net/
MIT License
22 stars 21 forks source link

Remote key right is doing two steps #172

Closed Haifeif closed 1 month ago

Haifeif commented 8 months ago

Describe the bug
When I activate the remote key right command, it is doin double action!

To Reproduce
Use the command

Version 2.1.1

Haifeif commented 3 months ago

Any 1 out there?

Ilovegym66 commented 3 months ago

yes, somebody here..

on my LG's is the adapter working fine, I'm on latest version 2.1.2

Haifeif commented 3 months ago

When I use , my TV does 2 steps to the right. So either the adapter sends 2 commands, or the command is too long and gets interpreted as 2 commands?

I also use 2.1.2, and it is the only command doing that!

Haifeif commented 2 months ago

Thanx for 2.2.0 - but the cursor is still doing 2 steps to the right. Based on my experience, I guess it is a problem with the length of the IR data. Would you mind to check that?

Danke für Version 2.2.0 - aber wenn ich die Funktion ausführe, springt der Cursor um 2 Schritte nach rechts. In der Vergangenheit waren solche Effekte meist im "gelernten" IR Befehl begründet. Es wäre Klasse, wenn das gefixt werden könnte.

LastPerfectTobi commented 1 month ago

Same problem here with v2.2.0

All Buttons for remote makes two steps. Any solution for this known? Maybe a workaround with blockly?

LastPerfectTobi commented 1 month ago

Wenn man die Datenpunkte über den Objektbrowser ändert dann reagiert z.B. "Lautstärke Plus" wenn ich den Datenpunkt (Button) auf true setze und auch wieder wenn ich den auf false setze. Jede Statusänderung verändert die Lautstärke in die selbe Richtung.

Der Adapter sollte nur auf true triggern.

Ilovegym66 commented 1 month ago

Das ist ein button, der muss so sein, den setzt man auch nur auf true..

LastPerfectTobi commented 1 month ago

Das ist ein button, der muss so sein, den setzt man auch nur auf true..

Richtig, den setzt man auf true wenn man ihn "drückt". Aber wenn der Button virtuell losgelassen wird, dann springt der Datenpunkt automatisch auf false (sieht man nur nicht in Klartext im Datenpunkt).

Und wegen diesem Bug wird dann die die Aktion zweimal ausgeführt, weil der Adapter auch auf false reagiert und nicht nur auf true.

Ilovegym66 commented 1 month ago

kann ich leider nicht nachvollziehen, der Datenpunkt ist true, bleibt true, und macht auch nur einmal was er soll. Da geht nix auf false... gerade getestet und mit influx geloggt.. Setz den Adapter mal auf debug und poste das mal, vielleicht sieht man da was..??

LastPerfectTobi commented 1 month ago

Also ich hab mir in Blockly mal einen Trigger auf den Remote-Key Up gesetzt.

Wenn der Button gedrückt wird, dann kommt das dabei raus:

2024-06-18 20:58:01.354 - error: javascript.0 (16697) script.js.common.Fernseher_App: true
2024-06-18 20:58:01.363 - error: javascript.0 (16697) script.js.common.Fernseher_App: false

Wenn ich im Objektbrowser in der Expertenansicht den Datenpunkt manuell auf True setze bleibt er auch true - und die Aktion KeyUp wird am Fernseher auch nur einmal ausgelöst.

Wenn ich den dann manuell auf false zurückstelle, wird die selbe Funktion KeyUp wieder ausgeführt (und das sollte meiner Meinung nach nicht sein).

Daher die Zweifache Ausführung wenn der Datenpunkt als Button betätigt wird.

mcm1957 commented 1 month ago

Hab mal kurz in den Code geschaut:

Volume up ist offensichtlich ein BUTTON und verhält sich lt. Code richtig. Anlog sieht der Code für remote keys aus. Der VALUE eines Buttons ist irrelevant - jedes Beschreiben eines States mit der Role BUTTON mit ACK=FALSE löst eine Aktion aus. Normalerweise wird ein Button nur mit val=true, ack=false beschrieben. Da ein Button aber im Grunde genommen keinen Wert hat, löst auch ein Beschreiben mit val=false ack=false eine AKtion aus.

Ergo sehe ich hier eigentlich einen Verwendungsfehler.

Du schreibst "Wenn der Button gedrückt wird". Was meinst du damit genau. Welcher Button wird wo gedrückt? Das Bumper Symbol im Objektbrowser? In der VIS solltest du kein SWITCH sondern ein Taster Widget verwenden und das sollte eigentlich nur einmal den Wert auf true setzen (und nie auf false).

Also bitte um genaue Info: Welcher State mit welcher Id wird wie beschrieben?

mcm1957 commented 1 month ago

Das ist ein button, der muss so sein, den setzt man auch nur auf true..

Richtig, den setzt man auf true wenn man ihn "drückt". Aber wenn der Button virtuell losgelassen wird, dann springt der Datenpunkt automatisch auf false (sieht man nur nicht in Klartext im Datenpunkt).

Und wegen diesem Bug wird dann die die Aktion zweimal ausgeführt, weil der Adapter auch auf false reagiert und nicht nur auf true.

a) Ein State springt eigentlich nicht virtuell herum :-) Bist du sicher, dass du den State nicht mittels SCHALTER betätigst? b) Was passiert wenn du den Bumper im Objektbrowser verwendets? c) Ich kann (noch) nicht ausschließen dass im Adapter etwas falsch läuft. ABER du bzw deine VIS dürfen den State NICHT auf false zurücksetzen - oder sich nicht wundern, wenn eine zweite Aktion ausgelöst wird. Buttons reagieren auf das Beschreiben mit acj=false und unabhängig vom Wert.

mcm1957 commented 1 month ago

Wenn der Button gedrückt wird, dann kommt das dabei raus:

2024-06-18 20:58:01.354 - error: javascript.0 (16697) script.js.common.Fernseher_App: true
2024-06-18 20:58:01.363 - error: javascript.0 (16697) script.js.common.Fernseher_App: false

Welcher Button wird da gedrückt?

Wenn ich im Objektbrowser in der Expertenansicht den Datenpunkt manuell auf True setze bleibt er auch true - und die Aktion KeyUp wird am Fernseher auch nur einmal ausgelöst.

Das ist das richtige Verhalten.

Wenn ich den dann manuell auf false zurückstelle, wird die selbe Funktion KeyUp wieder ausgeführt (und das sollte meiner Meinung nach nicht sein).

Auch das ist richtig und soll bei einem Button so sein.

Daher die Zweifache Ausführung wenn der Datenpunkt als Button betätigt wird.

Ja, da der State ja 2x beschrieben wird. Mit welchem Wert ist bei einem Button per definition egal.

mcm1957 commented 1 month ago

Also bitte um genaue Info: Welcher State mit welcher Id wird wie beschrieben?

Die Kernfrage ist nun - von welchem BUTTON wird hier geredet. Wo ist der?

Ilovegym66 commented 1 month ago

Ich denke, das Issue kann man zu machen, hier liegt eindeutig ein Fehler in der Bedienung (oder des Skriptes ) vor.

mcm1957 commented 1 month ago

Ja - nur würd ich die Frage welcher Button hier angesprochen wurde noch klären.

Ilovegym66 commented 1 month ago

es geht hier im Titel um lgtv.0.remote.right. dann um lgtv.0.states.volumeUp. Sind alles Button.

LastPerfectTobi commented 1 month ago

image

Diese sind gemeint. Entweder im Objektbrowser oder halt per VIS geschalten.

Aber für mich okay, wenn das Verhalten vom Adapter so korrekt ist dann muss ich bei mir das anders realisieren.

mcm1957 commented 1 month ago

Wenn die Buttons im Object Browser false setzen muss man / ich das checken

LastPerfectTobi commented 1 month ago

Da ja anscheinend nur der Themenstarter und ich das Problem haben ist es für mich auch ok, dann hab ich ein falsches Verständnis von der Funktionsweise 🙂

Wie gesagt, ich bau einen Workaround mit Blockly und verhindere dadurch die doppelte Auslösung.

Ilovegym66 commented 1 month ago

@mcm1957 er macht das mit VIS, ich nehme an, anstatt ein Button nimmt er einen Schalter, und der setzt den Button auf true/false, was halt eine falsche Anwendung ist. Wenn ich im Objektbrowser den Button mit True begluecke, dann macht er auch nur ein true. (protokolliert mit influx-history)

Hier nimmt der User aber ein Skript, das den Button erst auf true und dann auf false setzt, und daher loest der Adapter den Befehl 2x aus. Also alles richtig, bis auf den Anwendungsfehler und das Skript.

@LastPerfectTobi Wenn du einen "echten" Schalter in iobroker fuer deine Vis oder sonstige Faelle brauchst, dann mach dir einfach einen extra Datenpunkt unter 0_userdata.0. und ein kleines Script, dass hier ein/aus schaltet.

Ilovegym66 commented 1 month ago

Ah, hat sich ueberschnitten, genauso, soll man es machen.

Ilovegym66 commented 1 month ago

@LastPerfectTobi Admin 7.0.1 wurde wieder zurueckgezogen, besser wieder auf die letzte Beta zurueck gehen..

mcm1957 commented 1 month ago

Ok ich fasse dann mal zusammen:

Mit dem Button im Objectbrowser sollte es funktionieren - wenn nicht bitte Bescheid geben.

Per Skript den State NUR auf val=zrue mit ack=false setzen. NICHT auf false retour setzen.

In einer VIS unbedingt einen Button und keinen Schalter verwenden.

Wenn dann noch immer was nicht so funktioniert wie erwartet gerne nochmals melden.