[gelöst] Alle events eines Tasters für kurze Zeit blockieren

Begonnen von loriot, 29 Juni 2019, 11:44:00

Vorheriges Thema - Nächstes Thema

loriot

Hallo FHEM Gemeinde,

bisher habe ich immer viel über die Suche gefunden und konnte meine Problemchen fhem einzurichten selber lösen. Aber hier verzweifle ich schon etwas:

Ich habe einen 6-fach Schalter von Homematic (HM-PB-6-WM55) und möchte für einige Tasten bei Short Press eine Aktion und bei Long Press eine andere ausführen. Die Aktionen werden auch sauber erkannt und umgesetzt, aber nach einem Long Press bleibt der Finger oft etwas zu lange auf den Tasten und es werden oft weitere Kommandos getriggert und das nervt enorm.
Beispiel: Taste 5 schaltet über ein notify bei Short Press den Kanal 1 eines Shelly 2.5 (Licht 1) und Long Press den Kanal 2 des Shelly (Licht 2)

Ich habe folgende Konstellation:

  • Homematic 6-fach Schalter HM-PB-6-WM55 (über CUL-868 am RasPi)
  • notify reagiert auf Short oder Long und schaltet Licht via toggle
  • Der Shelly ist über MQTT verbunden, also geht das Ganze an ein MQTT IO device. Das sollte aber hier nichts zur Scahe tun

Ich habe jetzt mit event-min-interval probiert, erkenne aber nicht, was ich hier falsch mache. Es ändert sich nichts, zumal es auch schwierig ist: Ich will ja unterschiedliche Events blockieren: Long Press und Short Press, egal was kommt.
Mein Wunsch ist, dass nach dem generieren eines Events, für 2 Sekunden alle weiteren Events dieser Taste ignoriert werden, egal ob Short oder Long.

Das erste Problem ist für mich aber schon, wo sollte ich hier ansetzen:
Am Schalter, setze ich hier einen "Filter"? Am notify? oder an der Config für den Shelly (wohl eher nicht) ...

Hier die Attribute des Schalters:

DEF 575A8205
NAME WZ_Taster6_05
NOTIFYDEV global
NR 119
NTFY_ORDER 50-WZ_Taster6_05
STATE Short 1_214 (to CUL868)
TYPE CUL_HM
chanNo 05
device HM_575A82


Hier die notifies:

DEF HM_575A82:WZ_Taster6_05.Short set Flur_Shelly toggle
NAME HM_575A82_notify_1
NOTIFYDEV HM_575A82
NR 177
NTFY_ORDER 50-HM_575A82_notify_1
REGEXP HM_575A82:WZ_Taster6_05.Short
STATE 2019-06-29 10:24:54
TRIGGERTIME 1561796694.58755
TYPE notify


DEF HM_575A82:WZ_Taster6_05.Long set FL_NachtLicht_Shelly toggle
NAME HM_575A82_notify_2
NOTIFYDEV HM_575A82
NR 179
NTFY_ORDER 50-HM_575A82_notify_2
REGEXP HM_575A82:WZ_Taster6_05.Long
STATE 2019-06-29 10:24:51
TRIGGERTIME 1561796691.98303
TYPE notify


Und hier die Ansteuerung des Shelly:

IODev Mosquitto
devStateIcon on:rc_GREEN:off off:rc_RED:on
event-min-interval .*:2
event-on-change-reading .*
genericDeviceType light
icon light_ceiling
publishSet on off shellies/shellyswitch25-E61955/relay/0/command
room 80_Flur,Homekit,Licht,MQTT,Shelly
subscribeReading_state shellies/shellyswitch25-E61955/relay/0
userattr subscribeReading_state
webCmd on:off

Otto123

#1
Hi,

kann sein Du suchst das als attr beim notify?
ZitatdisabledAfterTrigger someSeconds
disable the execution for someSeconds after it triggered.

Oder Du triggerst nicht auf long sondern auf longrelease.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

loriot

#2
Danke @Otto123

Für einen Fall funktioniert das "disabledAfterTrigger" schon einmal!
Für den eigentlichen Notify aber nicht und das verstehe ich im Moment gar nicht. Sehr merkwürdig. Grübel  :(
Ich werde mal etwas suchen, woran es liegen könnte...   

<Update>So jetzt geht es mit disabledAfterTrigger für alle Notifies</Update>