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! -
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden
