DOIF wird nicht ausgeführt - wegen waitdel?

Begonnen von heikoh81, 10 Januar 2017, 18:10:42

Vorheriges Thema - Nächstes Thema

heikoh81

Hallo zusammen,

ich verwende folgendes DOIF, das gerade eben nicht ausgeführt wurde.


([Fernbedienung03Heiko_Btn04:"Short"] or [Fernbedienung03Heiko_Btn04:"Long.1_.*"])
(set PollinKamera01WohnzimmerDauerbetriebChkBox off,set PollinKamera02KuecheDauerbetriebChkBox off,set PollinKamera03StudioDauerbetriebChkBox off,set PollinKamera07EsseckeDauerbetriebChkBox off,set PollinKamera09SchlafDauerbetriebChkBox off)
(set NAME=PollinKamera09Schlaf:FILTER=state=on off)
(set NAME=PollinKamera01Wohnzimmer:FILTER=state=on off)
(set NAME=PollinKamera07Essecke:FILTER=state=on off)
(set NAME=PollinKamera02Kueche:FILTER=state=on off)
(set NAME=PollinKamera03Studio:FILTER=state=on off)
DOELSE ()


Das Event müsste eigentlich passen:

Device
Fernbedienung03Heiko_Btn04
2017-01-10 17:24:19

e_Fernbedienung03Heiko_Btn04_events
Short (to vccu),trigger: Short_13,trigger_cnt: 13
2017-01-10 17:24:19



list:


Internals:
   DEF        ([Fernbedienung03Heiko_Btn04:"Short"] or [Fernbedienung03Heiko_Btn04:"Long.1_.*"])
(set PollinKamera01WohnzimmerDauerbetriebChkBox off,set PollinKamera02KuecheDauerbetriebChkBox off,set PollinKamera03StudioDauerbetriebChkBox off,set PollinKamera07EsseckeDauerbetriebChkBox off,set PollinKamera09SchlafDauerbetriebChkBox off)
(set NAME=PollinKamera09Schlaf:FILTER=state=on off)
(set NAME=PollinKamera01Wohnzimmer:FILTER=state=on off)
(set NAME=PollinKamera07Essecke:FILTER=state=on off)
(set NAME=PollinKamera02Kueche:FILTER=state=on off)
(set NAME=PollinKamera03Studio:FILTER=state=on off)
DOELSE ()
   NAME       di_Fernbedienung03Heiko_Btn04_Einfachklick
   NR         3124
   NTFY_ORDER 50-di_Fernbedienung03Heiko_Btn04_Einfachklick
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2017-01-10 17:24:19   Device          Fernbedienung03Heiko_Btn04
     2017-01-04 20:43:52   cmd             1.6
     2017-01-04 20:43:52   cmd_event       Fernbedienung03Heiko_Btn04
     2017-01-04 20:43:52   cmd_nr          1
     2017-01-04 20:43:52   cmd_seqnr       6
     2017-01-10 17:24:19   e_Fernbedienung03Heiko_Btn04_events Short (to vccu),trigger: Short_13,trigger_cnt: 13
     2017-01-04 20:43:52   state           cmd_1
     2017-01-10 17:24:19   wait_timer      no timer
   Condition:
     0          EventDoIf('Fernbedienung03Heiko_Btn04',$hash,'Short',1) or EventDoIf('Fernbedienung03Heiko_Btn04',$hash,'Long.1_.*',1)
   Devices:
     0           Fernbedienung03Heiko_Btn04
     all         Fernbedienung03Heiko_Btn04
   Do:
     0:
       0          set PollinKamera01WohnzimmerDauerbetriebChkBox off,set PollinKamera02KuecheDauerbetriebChkBox off,set PollinKamera03StudioDauerbetriebChkBox off,set PollinKamera07EsseckeDauerbetriebChkBox off,set PollinKamera09SchlafDauerbetriebChkBox off
       1          set NAME=PollinKamera09Schlaf:FILTER=state=on off
       2          set NAME=PollinKamera01Wohnzimmer:FILTER=state=on off
       3          set NAME=PollinKamera07Essecke:FILTER=state=on off
       4          set NAME=PollinKamera02Kueche:FILTER=state=on off
       5          set NAME=PollinKamera03Studio:FILTER=state=on off
     1:
       0
   Helper:
     event      Short (to vccu)
     globalinit 1
     last_timer 0
     sleepdevice Fernbedienung03Heiko_Btn04
     sleepsubtimer 0
     sleeptimer -1
     timerdev   Fernbedienung03Heiko_Btn04
     timerevent Short (to vccu)
     triggerDev Fernbedienung03Heiko_Btn04
     timerevents:
       Short (to vccu)
       trigger: Short_13
       trigger_cnt: 13
     timereventsState:
       state: Short (to vccu)
       trigger: Short_13
       trigger_cnt: 13
     triggerEvents:
       Short (to vccu)
       trigger: Short_13
       trigger_cnt: 13
     triggerEventsState:
       state: Short (to vccu)
       trigger: Short_13
       trigger_cnt: 13
   Internals:
   Itimer:
   Readings:
   Regexp:
     0:
     All:
   State:
   Trigger:
     all         Fernbedienung03Heiko_Btn04
Attributes:
   disable    0
   do         always
   group      13_Fernbedienung03_Heiko
   room       Fernbedienung
   sortby     23
   wait       0,2,2,2,2,2
   waitdel    3


Liegt es an dem waitdel-attribut?
Die Homematic-Devices zählen bei etwas zu langem Tastendruck ja hoch, eventuell kam das Event 2x an?

Viele Grüße,
Heiko

Damian

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

heikoh81

Ich habe das Problem, dass DOIFs manchmal mehrfach getriggert werden bei Homematic-Fernbedienungen, wenn man "zu lang" auf der Taste bleibt oder diese warum auch immer 2 Befehle hintereinander senden. Insbesondere die "Funk-Handsender für Alarmfunktionen" (https://wiki.fhem.de/wiki/HM-RC-4-2_Funkfernbedienung_4_Tasten) lassen sich recht schwer drücken, so dass dies manchmal passiert.

Vermutlich ist waitdel hier falsch, ich habe auch schon "cmdpause 3" probiert, hat aber auch nicht zuverlässig funktioniert.

Für die anderen Tasten verwende ich, was recht zuverlässig eine mehrfache Auslösung verhindert.

([Fernbedienung03Heiko_Btn01:"Short"] or [Fernbedienung03Heiko_Btn01:"Long.1_.*"] or [Fernbedienung03Heiko_Dummy:state] eq "on" and [?Fernbedienung03Heiko_Dummy:Btn01] ne "on")
(setreading Fernbedienung03Heiko_Dummy Btn01 on)
({FernbedienungLogikNEU_mit_DOIF("Fernbedienung03Heiko", "on", $we)})
(setreading Fernbedienung03Heiko_Dummy Btn01 off)


attr wait 0,0,5:0
attr cmdpause 2
attr do always

Viele Grüße,
Heiko

Per

Kannst du auf Fernbedienungsseite event-on-change einstellen? Oder meldet die, wie manche Bewegungsmelder, nur den on-Fall?

heikoh81

Die Homematic-Fernbedienungen zählen bei längerem Tastendruck hoch,
somit wäre das jeweils ein neues event und diese Einschränkung hätte hier vermutlich nicht die gewünschte Wirkung.

Heiko

Damian

Zitat von: heikoh81 am 14 Januar 2017, 19:11:51
Die Homematic-Fernbedienungen zählen bei längerem Tastendruck hoch,
somit wäre das jeweils ein neues event und diese Einschränkung hätte hier vermutlich nicht die gewünschte Wirkung.

Heiko

Poste mal Events eines Tastendrucks.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF