mehrfacher Tastendruck, dann toggle

Begonnen von einfach, 20 Oktober 2019, 11:19:08

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Ach, manche Leute glauben wirklich, aufregend zu sein...  ;D

LG

pah

Damian

Um wieder zum Thema zu kommen  :)

Bei meiner ersten Version musste man bis zum Ablauf des Timers mit der Ausführung warten.

Folgende Version dürfte praktikabler sein.

Hierbei hat man mehr Zeit (hier 5 Sekunden), sobald drei mal gedrückt wurde, wird Toggeln ausgeführt. Auf der einen Seite hat man mehr Zeit für die Wiederholung des Tastendrucks, auf der anderen Seite muss man nicht auf den Ablauf des Timers mit der Ausführung des Toggle-Befehls warten.

define di_count DOIF {
  if ([MQTT2_Bridge2:"RfReceived_Data: 9D28E2"] and !get_Exec("counter")) { # wenn Ereignis eintritt und kein Timer läuft
    $_count=1;                                                              # setze count-Variable auf 1
    set_Exec("counter",5);                                                  # starte Timer für 5 Sekunden
  } else {
    if (++$_count >= 3) {                         # wenn Timer bereits läuft zähle Ereignis und prüfe, ob drei mal Ereignis eingetreten ist
      del_Exec("counter");                        # lösche Timer
      fhem_set("PC_Schalter1 toggle");            # Toggle-Befehl ausführen
    }
  }
}

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

einfach

#17
Hi Damian,
ich habe dein Script ausprobiert, leider funktioniert es nicht richtig, da es bei fast jedem Tastendruck auslöst.
Wo könnte da der Fehler sein?

Wenn ich das Zeitfenster kleiner mache ändert sich der Fehler auch nicht. Mal geht es nach dreimal, mal direkt, trotz Abwartens.


Aber an genau so ein Script habe ich gedacht.