NEWS
[Gelöst] Doppelter Tastendruck
-
Hi, ich versuche auch ein Doppelter Tastendruck zu fangen, dieses Mal von einem Ikea Tradfri Taster. Ich habe versucht es vie hier zu machen Doppelter Tastendruck innerhalb 3 Sekunden [gelöst] aber das funktioniert bei mir leider nicht. Ich kriege immer nur "Function 1" als Ausgabe. Hier mein Blockly:

Und das JavaScript:
var timeout; on({id: 'deconz.0.sensors.ec1bbdfffeaac1cb.buttons.1.release_press', val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (timeout) { (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); console.log('Function 1'); } else { timeout = setTimeout(function () { timeout = null; console.log('Function 2'); }, 1000); } });Das Problem ist dass anscheinend das Tastendrücken auf dem Ikea Tradfri Schalter automatisch 2 mal das Wert auf "true" setzt, direkt nacheinander innerhalb 10-20 ms. Das hier ist was geloggt wird wenn ich einmal drauf drücke:
val ack from Timestamp Last change false true deconz.0 2020-09-18 13:34:01.813 false true deconz.0 2020-09-18 13:34:01.804 true true deconz.0 2020-09-18 13:34:01.657 true true deconz.0 2020-09-18 13:34:01.646Hat jemand eine Idee wie man so was lösen kann, bzw. wie ich einen Doppelclick abfangen kann?
Danke! -
Hi, ich versuche auch ein Doppelter Tastendruck zu fangen, dieses Mal von einem Ikea Tradfri Taster. Ich habe versucht es vie hier zu machen Doppelter Tastendruck innerhalb 3 Sekunden [gelöst] aber das funktioniert bei mir leider nicht. Ich kriege immer nur "Function 1" als Ausgabe. Hier mein Blockly:

Und das JavaScript:
var timeout; on({id: 'deconz.0.sensors.ec1bbdfffeaac1cb.buttons.1.release_press', val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (timeout) { (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); console.log('Function 1'); } else { timeout = setTimeout(function () { timeout = null; console.log('Function 2'); }, 1000); } });Das Problem ist dass anscheinend das Tastendrücken auf dem Ikea Tradfri Schalter automatisch 2 mal das Wert auf "true" setzt, direkt nacheinander innerhalb 10-20 ms. Das hier ist was geloggt wird wenn ich einmal drauf drücke:
val ack from Timestamp Last change false true deconz.0 2020-09-18 13:34:01.813 false true deconz.0 2020-09-18 13:34:01.804 true true deconz.0 2020-09-18 13:34:01.657 true true deconz.0 2020-09-18 13:34:01.646Hat jemand eine Idee wie man so was lösen kann, bzw. wie ich einen Doppelclick abfangen kann?
Danke!@mrFenyx ich kenne Deconz nicht.
Kannst du nicht die Zeitdifferenz von der jetzigen Statusänderun/aktualisierung mit der letzten Statusänderung/aktualisierung berechnen. und wenn diese kleiner x msec ist ist das ein Doppelklick? -
Hi @Homoran , zu Deconz, das ist eigentlich nur ein Adapter für meine Zigbee Geräte.
Zum eigentlichen Problem, ich bin mir nicht sicher dass ich verstehe was du meinst. Das Problem scheint zu sein dass wenn ich 1x auf mein Taster drücke, gleich 2x das Wert des Objektes auf "true" gesetzt wird und das Skript es automatisch als Doppelklick sieht. Wenn ich z.B. mein Timeout auf 1ms setze dann wird immer nur das "Function 2" getriggered weil das "automatische" Doppelklick etwa 10ms braucht. Ich müsste also irgendwie im Trigger von der "on" Funktion neben "val: true" auch irgendwas in der Richtung "ts > oldTs + 50ms" -
Hi, ich versuche auch ein Doppelter Tastendruck zu fangen, dieses Mal von einem Ikea Tradfri Taster. Ich habe versucht es vie hier zu machen Doppelter Tastendruck innerhalb 3 Sekunden [gelöst] aber das funktioniert bei mir leider nicht. Ich kriege immer nur "Function 1" als Ausgabe. Hier mein Blockly:

Und das JavaScript:
var timeout; on({id: 'deconz.0.sensors.ec1bbdfffeaac1cb.buttons.1.release_press', val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (timeout) { (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); console.log('Function 1'); } else { timeout = setTimeout(function () { timeout = null; console.log('Function 2'); }, 1000); } });Das Problem ist dass anscheinend das Tastendrücken auf dem Ikea Tradfri Schalter automatisch 2 mal das Wert auf "true" setzt, direkt nacheinander innerhalb 10-20 ms. Das hier ist was geloggt wird wenn ich einmal drauf drücke:
val ack from Timestamp Last change false true deconz.0 2020-09-18 13:34:01.813 false true deconz.0 2020-09-18 13:34:01.804 true true deconz.0 2020-09-18 13:34:01.657 true true deconz.0 2020-09-18 13:34:01.646Hat jemand eine Idee wie man so was lösen kann, bzw. wie ich einen Doppelclick abfangen kann?
Danke! -
