Hallo zusammen,
ich möchte mittels Homematic-6-fach-Wandtaster mehrere Markisen steuern (mit Homematic-Rolladenaktor).
Hierbei lege bspw. auf Button1 den Befehl "einfahren".
Nun möchte ich aber zusätzlich durch wiederholten Druck auf diesselbe Taste innerhalb von 30 Sekunden den Befehl "stop" senden.
Kann man sowas mit DOIF realisieren, z.b. mit do resetwait oder ähnlichem?
Aus der commandref konnte ich kein passendes Beispiel für mich ableiten.
Folgendes habe ich schon und funktioniert:
([Wandtaster_Wohnzimmer_Btn01:state] =~/Short/)
(set NAME=Markise_Pergola_Links:FILTER=STATE!=off off)
off = einfahren
Nun muss ich noch irgendwie den Stop-Befehl bei wiederholtem Druck senden können.
Ich hatte zunächst in Richtung eines 2. eigenständigen DOIFs überlegt, die nur gültig ist, wenn die Markise nicht in Position on/off ist, aber das geht nicht
- weil ich nicht weiß, wie schnell der Homematic-Aktor seine Zustandsänderung ans System meldet
- dann bei jedem aus- oder einfahr-Befehl von einer Zwischenposition sofort wieder der Stop-Befehl gesendet würde
Langer Tastendruck geht auch nicht, da habe ich schon einen anderen Befehl drauf.
Es muss also irgendwie festgelegt werden, dass der stop-Befehl nur max. 30 Sekunden nach einem davor erfolgten Tastendruck erfolgen darf.
Danach muss wieder der erste Befehl einfahren gesendet werden.
Wer könnte mir helfen?
Vielen Dank,
viele Grüße,
Heiko
Zitat von: heikoh81 am 04 Dezember 2015, 18:27:53
Halo zusammen,
ich möchte mittels Homematic-6-fach-Wandtaster mehrere Markisen steuern (mit Homematic-Rolladenaktor).
Hierbei lege bspw. auf Button1 den Befehl "einfahren".
Nun möchte ich aber zusätzlich durch wiederholten Druck auf diesselbe Taste innerhalb von 30 Sekunden den Befehl "stop" senden.
Kann man sowas mit DOIF realisieren, z.b. mit do resetwait oder ähnlichem?
Aus der commandref konnte ich kein passendes Beispiel für mich ableiten.
Folgendes habe ich schon und funktioniert:
([Wandtaster_Wohnzimmer_Btn01:state] =~/Short/)
(set NAME=Markise_Pergola_Links:FILTER=STATE!=off off)
off = einfahren
Nun muss ich noch irgendwie den Stop-Befehl bei wiederholtem Druck senden können.
Ich hatte zunächst in Richtung eines 2. eigenständigen DOIFs überlegt, die nur gültig ist, wenn die Markise nicht in Position on/off ist, aber das geht nicht
- weil ich nicht weiß, wie schnell der Homematic-Aktor seine Zustandsänderung ans System meldet
- dann bei jedem aus- oder einfahr-Befehl von einer Zwischenposition sofort wieder der Stop-Befehl gesendet würde
Langer Tastendruck geht auch nicht, da habe ich schon einen anderen Befehl drauf.
Es muss also irgendwie festgelegt werden, dass der stop-Befehl nur max. 30 Sekunden nach einem davor erfolgten Tastendruck erfolgen darf.
Danach muss wieder der erste Befehl einfahren gesendet werden.
Wer könnte mir helfen?
Vielen Dank,
viele Grüße,
Heiko
Das kannst du sogar in einem DOIF unterbringen :)
define di_Wandtaster ([Wandtaster_Wohnzimmer_Btn01:state] =~/Short/ and [?di_Wandtaster] ne "cmd_1")
(set NAME=Markise_Pergola_Links:FILTER=STATE!=off off)
DOELSEIF ([Wandtaster_Wohnzimmer_Btn01:state] =~/Short/)
(set Markise_Pergola_Links stop)
attr di_Wandtaster waitsame 0:30
Gruß
Damian
Klasse, danke für die schnelle Antwort.
Genau so hatte ich mir das vorgestellt.
Ich hatte mir zwischenzeitlich mit einem Hilfskonstrukt mit einem Dummy je Taster und wait beholfen, aber da hätte ich wieder unzählige Dummies benötigt.
define di_Wandtaster_Wohnzimmer_Btn02_Betaetigt_kurz_Markise_links_ausfahren DOIF ([Wandtaster_Wohnzimmer_Btn02:state] =~/Short/ and [?Wandtaster_Wohnzimmer_Btn02_BetaetigtDummy] eq "off")\
(set NAME=Markise_Pergola_Links:FILTER=STATE!=on on)\
(set Wandtaster_Wohnzimmer_Btn02_BetaetigtDummy on)\
(set Wandtaster_Wohnzimmer_Btn02_BetaetigtDummy off)\
DOELSEIF ([Wandtaster_Wohnzimmer_Btn02:state] =~/Short/ and [?Wandtaster_Wohnzimmer_Btn02_BetaetigtDummy] eq "on")\
(set Markise_Pergola_Links stop)\
(set Wandtaster_Wohnzimmer_Btn02_BetaetigtDummy off)
attr di_Wandtaster_Wohnzimmer_Btn02_Betaetigt_kurz_Markise_links_ausfahren room Fernbedienung
attr di_Wandtaster_Wohnzimmer_Btn02_Betaetigt_kurz_Markise_links_ausfahren wait 0,0,35
Deine Lösung ist natürlich viel besser!
Zitat von: heikoh81 am 04 Dezember 2015, 19:03:17
Klasse, danke für die schnelle Antwort.
Genau so hatte ich mir das vorgestellt.
Ich hatte mir zwischenzeitlich mit einem Hilfskonstrukt mit einem Dummy je Taster und wait beholfen, aber da hätte ich wieder unzählige Dummies benötigt.
define di_Wandtaster_Wohnzimmer_Btn02_Betaetigt_kurz_Markise_links_ausfahren DOIF ([Wandtaster_Wohnzimmer_Btn02:state] =~/Short/ and [?Wandtaster_Wohnzimmer_Btn02_BetaetigtDummy] eq "off")\
(set NAME=Markise_Pergola_Links:FILTER=STATE!=on on)\
(set Wandtaster_Wohnzimmer_Btn02_BetaetigtDummy on)\
(set Wandtaster_Wohnzimmer_Btn02_BetaetigtDummy off)\
DOELSEIF ([Wandtaster_Wohnzimmer_Btn02:state] =~/Short/ and [?Wandtaster_Wohnzimmer_Btn02_BetaetigtDummy] eq "on")\
(set Markise_Pergola_Links stop)\
(set Wandtaster_Wohnzimmer_Btn02_BetaetigtDummy off)
attr di_Wandtaster_Wohnzimmer_Btn02_Betaetigt_kurz_Markise_links_ausfahren room Fernbedienung
attr di_Wandtaster_Wohnzimmer_Btn02_Betaetigt_kurz_Markise_links_ausfahren wait 0,0,35
Deine Lösung ist natürlich viel besser!
ja, ich finde die kurze Version selbst sogar so gut, dass ich sie in die Commandref aufnehme. :)
Gruß
Damian
Hallo Damian,
so ganz funktioniert es mit dem von dir genannten Beispiel noch nicht.
- Erster kurzer Druck: Markise fährt aus
- Zweiter kurzer Druck nach ca. 5 Sekunden: nichts passiert
- Dritter kurzer Druck: Markise stoppt
Warum wird der zweite Druck ignoriert?
attr do always habe ich auch schon probiert - der zweite Druck wird ebenfalls ignoriert.
define di_Wandtaster DOIF ([Wandtaster_Wohnzimmer_Btn03:state] =~/Short/ and [?di_Wandtaster] ne "cmd_1")\
(set NAME=Markise_Pergola_Rechts:FILTER=STATE!=off off)\
DOELSEIF ([Wandtaster_Wohnzimmer_Btn03:state] =~/Short/)\
(set Markise_Pergola_Rechts stop)
attr di_Wandtaster waitsame 0:30
Internals:
CFGFN
DEF ([Wandtaster_Wohnzimmer_Btn03:state] =~/Short/ and [?di_Wandtaster_Wohnzimmer_Btn03_Betaetigt_kurz_Markise_rechts_ausfahren] ne "cmd_1")
(set NAME=Markise_Pergola_Rechts:FILTER=STATE!=off off)
DOELSEIF ([Wandtaster_Wohnzimmer_Btn03:state] =~/Short/)
(set Markise_Pergola_Rechts stop)
NAME di_Wandtaster_Wohnzimmer_Btn03_Betaetigt_kurz_Markise_rechts_ausfahren
NR 9464
NTFY_ORDER 50-di_Wandtaster_Wohnzimmer_Btn03_Betaetigt_kurz_Markise_rechts_ausfahren
STATE cmd_1
TYPE DOIF
Readings:
2015-12-04 21:16:53 Device Wandtaster_Wohnzimmer_Btn03
2015-12-04 21:16:48 cmd_event Wandtaster_Wohnzimmer_Btn03
2015-12-04 21:16:48 cmd_nr 1
2015-12-04 21:16:53 e_Wandtaster_Wohnzimmer_Btn03_state Short (to vccu)
2015-12-04 21:16:48 state cmd_1
2015-12-04 21:16:53 waitsame cmd_2
Condition:
0 ReadingValDoIf('Wandtaster_Wohnzimmer_Btn03','state','') =~/Short/ and InternalDoIf('di_Wandtaster_Wohnzimmer_Btn03_Betaetigt_kurz_Markise_rechts_ausfahren','STATE','') ne "cmd_1"
1 ReadingValDoIf('Wandtaster_Wohnzimmer_Btn03','state','') =~/Short/
Devices:
0 Wandtaster_Wohnzimmer_Btn03
1 Wandtaster_Wohnzimmer_Btn03
all Wandtaster_Wohnzimmer_Btn03
Do:
0:
0 set NAME=Markise_Pergola_Rechts:FILTER=STATE!=off off
1:
0 set Markise_Pergola_Rechts stop
Helper:
globalinit 1
last_timer 0
sleeptimer -1
Internals:
Itimer:
Readings:
0 Wandtaster_Wohnzimmer_Btn03:state
1 Wandtaster_Wohnzimmer_Btn03:state
all Wandtaster_Wohnzimmer_Btn03:state
State:
Timerfunc:
Trigger:
Attributes:
waitsame 0:30
Viele Grüße,
Heiko
Zitat von: heikoh81 am 04 Dezember 2015, 21:23:09
Hallo Damian,
so ganz funktioniert es mit dem von dir genannten Beispiel noch nicht.
- Erster kurzer Druck: Markise fährt aus
- Zweiter kurzer Druck nach ca. 5 Sekunden: nichts passiert
- Dritter kurzer Druck: Markise stoppt
Warum wird der zweite Druck ignoriert?
attr do always habe ich auch schon probiert - der zweite Druck wird ebenfalls ignoriert.
define di_Wandtaster DOIF ([Wandtaster_Wohnzimmer_Btn03:state] =~/Short/ and [?di_Wandtaster] ne "cmd_1")\
(set NAME=Markise_Pergola_Rechts:FILTER=STATE!=off off)\
DOELSEIF ([Wandtaster_Wohnzimmer_Btn03:state] =~/Short/)\
(set Markise_Pergola_Rechts stop)
attr di_Wandtaster waitsame 0:30
Internals:
CFGFN
DEF ([Wandtaster_Wohnzimmer_Btn03:state] =~/Short/ and [?di_Wandtaster_Wohnzimmer_Btn03_Betaetigt_kurz_Markise_rechts_ausfahren] ne "cmd_1")
(set NAME=Markise_Pergola_Rechts:FILTER=STATE!=off off)
DOELSEIF ([Wandtaster_Wohnzimmer_Btn03:state] =~/Short/)
(set Markise_Pergola_Rechts stop)
NAME di_Wandtaster_Wohnzimmer_Btn03_Betaetigt_kurz_Markise_rechts_ausfahren
NR 9464
NTFY_ORDER 50-di_Wandtaster_Wohnzimmer_Btn03_Betaetigt_kurz_Markise_rechts_ausfahren
STATE cmd_1
TYPE DOIF
Readings:
2015-12-04 21:16:53 Device Wandtaster_Wohnzimmer_Btn03
2015-12-04 21:16:48 cmd_event Wandtaster_Wohnzimmer_Btn03
2015-12-04 21:16:48 cmd_nr 1
2015-12-04 21:16:53 e_Wandtaster_Wohnzimmer_Btn03_state Short (to vccu)
2015-12-04 21:16:48 state cmd_1
2015-12-04 21:16:53 waitsame cmd_2
Condition:
0 ReadingValDoIf('Wandtaster_Wohnzimmer_Btn03','state','') =~/Short/ and InternalDoIf('di_Wandtaster_Wohnzimmer_Btn03_Betaetigt_kurz_Markise_rechts_ausfahren','STATE','') ne "cmd_1"
1 ReadingValDoIf('Wandtaster_Wohnzimmer_Btn03','state','') =~/Short/
Devices:
0 Wandtaster_Wohnzimmer_Btn03
1 Wandtaster_Wohnzimmer_Btn03
all Wandtaster_Wohnzimmer_Btn03
Do:
0:
0 set NAME=Markise_Pergola_Rechts:FILTER=STATE!=off off
1:
0 set Markise_Pergola_Rechts stop
Helper:
globalinit 1
last_timer 0
sleeptimer -1
Internals:
Itimer:
Readings:
0 Wandtaster_Wohnzimmer_Btn03:state
1 Wandtaster_Wohnzimmer_Btn03:state
all Wandtaster_Wohnzimmer_Btn03:state
State:
Timerfunc:
Trigger:
Attributes:
waitsame 0:30
Viele Grüße,
Heiko
Bei mir funktioniert es korrekt. Ich vermute, dass bei dir mehrere Trigger mit short kommen - typisch HM, dann müsstest du deine short-Abfrage genauer spezifizieren, um es auf einen Trigger pro Tastendruck zu beschränken.
trigger = Short_29
trigger_cnt = 29
Wie soll ich das weiter einschränken?
Wieso funktioniert es dann reproduzierbar immer beim 3. Tastendruck?
Zitat von: heikoh81 am 04 Dezember 2015, 21:49:53
trigger = Short_29
trigger_cnt = 29
Wie soll ich das weiter einschränken?
Wieso funktioniert es dann reproduzierbar immer beim 3. Tastendruck?
Poste mal die Events von einem Short-Tastendruck.
Events (Filter:Wandtaster_Wohnzimmer_Btn04) [Reset]:
2015-12-04 21:55:38 CUL_HM Wandtaster_Wohnzimmer Wandtaster_Wohnzimmer_Btn04 Short
2015-12-04 21:55:38 DOIF di_Wandtaster_Wohnzimmer_Btn04_Betaetigt_kurz_Markise_rechts_ausfahren cmd_nr: 1
2015-12-04 21:55:38 DOIF di_Wandtaster_Wohnzimmer_Btn04_Betaetigt_kurz_Markise_rechts_ausfahren cmd_event: Wandtaster_Wohnzimmer_Btn04
2015-12-04 21:55:38 DOIF di_Wandtaster_Wohnzimmer_Btn04_Betaetigt_kurz_Markise_rechts_ausfahren cmd_1
2015-12-04 21:55:38 CUL_HM Wandtaster_Wohnzimmer_Btn04 Short (to vccu)
2015-12-04 21:55:38 CUL_HM Wandtaster_Wohnzimmer_Btn04 trigDst_vccu: noConfig
2015-12-04 21:55:38 CUL_HM Wandtaster_Wohnzimmer_Btn04 trigger: Short_30
2015-12-04 21:55:38 CUL_HM Wandtaster_Wohnzimmer_Btn04 trigger_cnt: 30
2015-12-04 21:55:43 CUL_HM Wandtaster_Wohnzimmer Wandtaster_Wohnzimmer_Btn04 Short
2015-12-04 21:55:43 DOIF di_Wandtaster_Wohnzimmer_Btn04_Betaetigt_kurz_Markise_rechts_ausfahren waitsame: cmd_2
2015-12-04 21:55:43 CUL_HM Wandtaster_Wohnzimmer_Btn04 Short (to vccu)
2015-12-04 21:55:43 CUL_HM Wandtaster_Wohnzimmer_Btn04 trigDst_vccu: noConfig
2015-12-04 21:55:43 CUL_HM Wandtaster_Wohnzimmer_Btn04 trigger: Short_31
2015-12-04 21:55:43 CUL_HM Wandtaster_Wohnzimmer_Btn04 trigger_cnt: 31
2015-12-04 21:55:47 CUL_HM Wandtaster_Wohnzimmer Wandtaster_Wohnzimmer_Btn04 Short
2015-12-04 21:55:47 DOIF di_Wandtaster_Wohnzimmer_Btn04_Betaetigt_kurz_Markise_rechts_ausfahren cmd_nr: 2
2015-12-04 21:55:47 DOIF di_Wandtaster_Wohnzimmer_Btn04_Betaetigt_kurz_Markise_rechts_ausfahren cmd_event: Wandtaster_Wohnzimmer_Btn04
2015-12-04 21:55:47 DOIF di_Wandtaster_Wohnzimmer_Btn04_Betaetigt_kurz_Markise_rechts_ausfahren cmd_2
2015-12-04 21:55:47 CUL_HM Wandtaster_Wohnzimmer_Btn04 Short (to vccu)
2015-12-04 21:55:47 CUL_HM Wandtaster_Wohnzimmer_Btn04 trigDst_vccu: noConfig
2015-12-04 21:55:47 CUL_HM Wandtaster_Wohnzimmer_Btn04 trigger: Short_32
2015-12-04 21:55:47 CUL_HM Wandtaster_Wohnzimmer_Btn04 trigger_cnt: 32
2015-12-04 21:56:35 CUL_HM Wandtaster_Wohnzimmer Wandtaster_Wohnzimmer_Btn04 Short
2015-12-04 21:56:36 DOIF di_Wandtaster_Wohnzimmer_Btn04_Betaetigt_kurz_Markise_rechts_ausfahren cmd_nr: 1
2015-12-04 21:56:36 DOIF di_Wandtaster_Wohnzimmer_Btn04_Betaetigt_kurz_Markise_rechts_ausfahren cmd_event: Wandtaster_Wohnzimmer_Btn04
2015-12-04 21:56:36 DOIF di_Wandtaster_Wohnzimmer_Btn04_Betaetigt_kurz_Markise_rechts_ausfahren cmd_1
2015-12-04 21:56:36 CUL_HM Wandtaster_Wohnzimmer_Btn04 Short (to vccu)
2015-12-04 21:56:36 CUL_HM Wandtaster_Wohnzimmer_Btn04 trigDst_vccu: noConfig
2015-12-04 21:56:36 CUL_HM Wandtaster_Wohnzimmer_Btn04 trigger: Short_33
2015-12-04 21:56:36 CUL_HM Wandtaster_Wohnzimmer_Btn04 trigger_cnt: 33
2015-12-04 21:56:39 CUL_HM Wandtaster_Wohnzimmer Wandtaster_Wohnzimmer_Btn04 Short
2015-12-04 21:56:39 DOIF di_Wandtaster_Wohnzimmer_Btn04_Betaetigt_kurz_Markise_rechts_ausfahren waitsame: cmd_2
2015-12-04 21:56:39 CUL_HM Wandtaster_Wohnzimmer_Btn04 Short (to vccu)
2015-12-04 21:56:39 CUL_HM Wandtaster_Wohnzimmer_Btn04 trigDst_vccu: noConfig
2015-12-04 21:56:39 CUL_HM Wandtaster_Wohnzimmer_Btn04 trigger: Short_34
2015-12-04 21:56:39 CUL_HM Wandtaster_Wohnzimmer_Btn04 trigger_cnt: 34
2015-12-04 21:56:41 CUL_HM Wandtaster_Wohnzimmer Wandtaster_Wohnzimmer_Btn04 Short
2015-12-04 21:56:41 DOIF di_Wandtaster_Wohnzimmer_Btn04_Betaetigt_kurz_Markise_rechts_ausfahren cmd_nr: 2
2015-12-04 21:56:41 DOIF di_Wandtaster_Wohnzimmer_Btn04_Betaetigt_kurz_Markise_rechts_ausfahren cmd_event: Wandtaster_Wohnzimmer_Btn04
2015-12-04 21:56:41 DOIF di_Wandtaster_Wohnzimmer_Btn04_Betaetigt_kurz_Markise_rechts_ausfahren cmd_2
2015-12-04 21:56:41 CUL_HM Wandtaster_Wohnzimmer_Btn04 Short (to vccu)
2015-12-04 21:56:41 CUL_HM Wandtaster_Wohnzimmer_Btn04 trigDst_vccu: noConfig
2015-12-04 21:56:41 CUL_HM Wandtaster_Wohnzimmer_Btn04 trigger: Short_35
2015-12-04 21:56:41 CUL_HM Wandtaster_Wohnzimmer_Btn04 trigger_cnt: 35
Erstaunlicherweise verhält sich nun Btn03 zum Einfahren "komisch".
Erst beim dritten Tastendruck fährt die Markise ein.
OK. Mein Fehler. Ich hatte stop als Doppelklick realisiert - wäre auch eine Alternative, aber das wolltest du ja nicht.
Es wäre doch gelacht, wenn es mit einem DOIF nicht ginge ;)
also:
define di_Wandtaster DOIF ([Wandtaster_Wohnzimmer_Btn03:state] =~/Short/ and [?di_Wandtaster] ne "cmd_1_1")
(set NAME=Markise_Pergola_Rechts:FILTER=STATE!=off off) ()
DOELSEIF ([Wandtaster_Wohnzimmer_Btn03:state] =~/Short/ and [?di_Wandtaster] eq "cmd_1_1")
(set Markise_Pergola_Rechts stop)
attr di_Wandtaster wait 0,30
Gruß
Damian
Coole Sache, dass man auch einen Doppelklick realisieren kann.
Das wusste ich einfach nicht.
Somit habe ich jetzt beide Beispiele - vielleicht sollten auch beide in die Commandref?
Testen werde ich es morgen.
Nochmal vielen Dank,
viele Grüße,
Heiko
Hallo Damian,
ich melde mich nochmals zu diesem Thema, da ich nach 1 Monat Langzeit-Beobachtung feststellen musste, dass das Senden von "Stop" innerhalb eines bestimmten Zeitraums mit deinem Beispiel leider nicht immer zuverlässig funktioniert. Ich kann es nicht richtig reproduzieren, aber manchmal wird einige Sekunden nach dem ersten Tastendruck bei erneutem Tastendruck kein Stop gesendet. Die Taste zeigt dann erstmal eine Weile gar keine Reaktion mehr.
Meine umständlichere Lösung mit Schaltung eines Dummies "Wandtaster_Schlafzimmer_Fernbedienung04_Btn01_kurz_AKTIVDummy" als Erkennung, ob man sich in der Fahrt-Phase befindet, scheint zuverlässiger zu funktionieren:
(([Wandtaster_Schlafzimmer_Btn01] =~/Short/ or [Fernbedienung04_Btn01] =~/Short/) and [?Wandtaster_Schlafzimmer_Fernbedienung04_Btn01_kurz_AKTIVDummy] ne "on")
(set Wandtaster_Schlafzimmer_Fernbedienung04_Btn01_kurz_AKTIVDummy on)
(set NAME=1_RSchlafBodentief:FILTER=STATE!=offen offen)
(set Wandtaster_Schlafzimmer_Fernbedienung04_Btn01_kurz_AKTIVDummy off)
DOELSEIF (([Wandtaster_Schlafzimmer_Btn01] =~/Short/ or [Fernbedienung04_Btn01] =~/Short/) and [?Wandtaster_Schlafzimmer_Fernbedienung04_Btn01_kurz_AKTIVDummy] eq "on")
(set 1_RSchlafBodentief stop)
(set Wandtaster_Schlafzimmer_Fernbedienung04_Btn01_kurz_AKTIVDummy off)
attr do always
attr wait 0,0,30:0,0
Dein Vorschlag, der nicht immer funktioniert:
((([Wandtaster_Schlafzimmer_Btn04] =~/Short/) or ([Fernbedienung04_Btn04] =~/Short/)) and [?di_Wandtaster_Schlafzimmer_Fernbedienung04_Btn04_Betaetigt_kurz_Bodentief_schliessen] ne "cmd_1_1")
(set NAME=1_RSchlafSchraeg:FILTER=STATE!=geschlossen geschlossen) ()
DOELSEIF ((([Wandtaster_Schlafzimmer_Btn04]) =~/Short/ or ([Fernbedienung04_Btn04] =~/Short/)) and [?di_Wandtaster_Schlafzimmer_Fernbedienung04_Btn04_Betaetigt_kurz_Bodentief_schliessen] eq "cmd_1_1")
(set 1_RSchlafSchraeg stop)
attr do always
attr wait 0,30
Viele Grüße,
Heiko
Hallo Damian,
ich möchte hiermit dieses Thema nochmal nach oben schieben, weil das beschriebene Problem noch immer besteht.
Ich verwende momentan nur noch die Lösung mit einem Hilfs-Dummy, weil ich bei der Auswertung von
((([Wandtaster_Schlafzimmer_Btn04] =~/Short/) or ([Fernbedienung04_Btn04] =~/Short/)) and [?di_Wandtaster_Schlafzimmer_Fernbedienung04_Btn04_Betaetigt_kurz_Bodentief_schliessen] ne "cmd_1_1")
noch öfters das Problem hatte, dass der Befehl erst beim zweiten Tastendruck ausgeführt wurde.
Allerdings kommt es auch bei der Lösung mit Dummy immer wieder, aber nicht regelmäßig, vor, dass beim ersten Tastendruck der DOELSEIF-Fall ausgeführt wird.
Das sehe ich im Log, weil der Stop-Befehl an den Aktor gesendet wird:
Um :43 war mein erster Tastendruck - keine Reaktion des Aktors.
Um :54 dann nochmal gedrückt - Befehl zum Runterfahren des Rolladens wird korrekt ausgeführt.
2016.05.01 21:52:43 3: CUL_HM set 1_RSchlafSchraeg stop
2016.05.01 21:52:54 3: CUL_HM set 1_RSchlafSchraeg 0
Ich meine, dass es immer nur bei Btn04 passiert - dasselbe DOIF verwende ich für einen anderen Rolladen auf Btn02, da habe ich das Problem noch nicht beobachtet.
Eventuell hängt es damit zusammen, dass es eine Homematic-Verbindung ist, die an einer vccu angemeldet ist.
Vielleicht werden da mehrere Events hintereinander generiert, die zwar das DOIF triggern, aber einen Bruchteil danach gleich den DOELSEIF-Fall mit dem "stop"?
Deshalb habe ich attr cmdpause 2:2 hinzugefügt, um eine solche Doppel-Ausführung eigentlich zu verhindert.
Mein Doif:
(([Wandtaster_Schlafzimmer_Btn04:"Short"] or [8fachFernbedienung01_Btn04:"Short"]) and [?Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_kurz_AKTIVDummy] ne "on")
(set Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_kurz_AKTIVDummy on)
(set NAME=1_RSchlafSchraeg:FILTER=STATE!=geschlossen geschlossen)
(set Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_kurz_AKTIVDummy off)
DOELSEIF (([Wandtaster_Schlafzimmer_Btn04:"Short"] or [8fachFernbedienung01_Btn04:"Short"]) and [?Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_kurz_AKTIVDummy] eq "on")
(set 1_RSchlafSchraeg stop)
(set Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_kurz_AKTIVDummy off)
list:
Internals:
DEF (([Wandtaster_Schlafzimmer_Btn04:"Short"] or [8fachFernbedienung01_Btn04:"Short"]) and [?Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_kurz_AKTIVDummy] ne "on")
(set Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_kurz_AKTIVDummy on)
(set NAME=1_RSchlafSchraeg:FILTER=STATE!=geschlossen geschlossen)
(set Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_kurz_AKTIVDummy off)
DOELSEIF (([Wandtaster_Schlafzimmer_Btn04:"Short"] or [8fachFernbedienung01_Btn04:"Short"]) and [?Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_kurz_AKTIVDummy] eq "on")
(set 1_RSchlafSchraeg stop)
(set Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_kurz_AKTIVDummy off)
NAME di_Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_Betaetigt_kurz_Schraeg_schliessen_mit_Dummy
NR 2752
NTFY_ORDER 50-di_Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_Betaetigt_kurz_Schraeg_schliessen_mit_Dummy
STATE cmd_1
TYPE DOIF
Readings:
2016-05-01 21:52:54 Device 8fachFernbedienung01_Btn04
2016-05-01 21:53:24 cmd_event 8fachFernbedienung01_Btn04
2016-05-01 21:53:24 cmd_nr 1
2016-05-01 21:53:24 cmd_seqnr 3
2016-05-01 21:52:54 e_8fachFernbedienung01_Btn04_events Short (to vccu),trigDst_vccu: noConfig,trigger: Short_204,trigger_cnt: 204
2016-04-22 22:57:56 e_Wandtaster_Schlafzimmer_Btn04_events Short (to broadcast),trigger: Short_26,trigger_cnt: 26
2016-05-01 21:53:24 state cmd_1
2016-05-01 21:53:24 wait_timer no timer
Condition:
0 (EventDoIf('Wandtaster_Schlafzimmer_Btn04',$hash,'Short',1) or EventDoIf('8fachFernbedienung01_Btn04',$hash,'Short',1)) and InternalDoIf($hash,'Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_kurz_AKTIVDummy','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) ne "on"
1 (EventDoIf('Wandtaster_Schlafzimmer_Btn04',$hash,'Short',1) or EventDoIf('8fachFernbedienung01_Btn04',$hash,'Short',1)) and InternalDoIf($hash,'Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_kurz_AKTIVDummy','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "on"
Devices:
0 Wandtaster_Schlafzimmer_Btn04 8fachFernbedienung01_Btn04
1 Wandtaster_Schlafzimmer_Btn04 8fachFernbedienung01_Btn04
all Wandtaster_Schlafzimmer_Btn04 8fachFernbedienung01_Btn04
Do:
0:
0 set Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_kurz_AKTIVDummy on
1 set NAME=1_RSchlafSchraeg:FILTER=STATE!=geschlossen geschlossen
2 set Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_kurz_AKTIVDummy off
1:
0 set 1_RSchlafSchraeg stop
1 set Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_kurz_AKTIVDummy off
Helper:
event Short (to vccu)
globalinit 1
last_timer 0
sleepdevice 8fachFernbedienung01_Btn04
sleepsubtimer -1
sleeptimer -1
timerdev 8fachFernbedienung01_Btn04
timerevent Short (to vccu)
triggerDev 8fachFernbedienung01_Btn04
timerevents:
Short (to vccu)
trigDst_vccu: noConfig
trigger: Short_204
trigger_cnt: 204
triggerEvents:
Short (to vccu)
trigDst_vccu: noConfig
trigger: Short_204
trigger_cnt: 204
Internals:
0 Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_kurz_AKTIVDummy:STATE
1 Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_kurz_AKTIVDummy:STATE
all Wandtaster_Schlafzimmer_8fachFernbedienung01_Btn04_kurz_AKTIVDummy:STATE
Itimer:
Readings:
Regexp:
0:
1:
All:
State:
Trigger:
all Wandtaster_Schlafzimmer_Btn04 8fachFernbedienung01_Btn04
Attributes:
cmdpause 2:2
disable 0
do always
group 51_Wandtaster_Schlafzimmer
room Fernbedienung
sortby 37
wait 0,0,30:0,0
Viele Grüße,
Heiko