Hallo,
ich bin gerade dabei eine Schaltung für die Garage umzusetzen.
Mein Garagentorantrieb kennt kein rauf oder runter. Daher habe ich noch einen Sensor für den tatsächlichen Stand des Garagentor mit eingebaut.
Dazu kommt ein DOIF welche nur einen Pulse ausgibt wenn die Garage offen ist und man den Knopf (Garage Zu) für runter drückt (bzw. umgekehrt).
Nun habe ich folgendes Problem, wenn ich den Befehl "Garage zu" dirket bei dem eingerichteten Dummy gebe passt alles.
Wenn ich nun von einem Notify aus den Dummy auf "Garage zu" stelle reagiert das DOIF nicht darauf (der dummy ändert aber seinen Status wie gewünscht).
Hat jemand einen Tipp für mich ?
ich probiere mal repeatsame repeatcmd um mein Problem zu umgehen.
Niemand kann dir helfen, wenn du uns keine list deiner Devices zeigst.
ja, die Befürchtung habe ich auch.
OK hier meine List
1. Mein Dummy, hier möchte ich den Befehl Garage auf / zu auslösen
Um die Farbe der Icon zu ändern gibt "AUF" was aktiv sein soll und "auf" wäre die inaktive Form
Internals:
FUUID 5edfbc1f-f33f-a4d3-8067-8e67efbd69d3434c
NAME Garage
NR 318
STATE 1:auf
2:zu
STILLDONETIME 0
TYPE dummy
READINGS:
2020-06-11 17:31:51 on1 auf
2020-06-11 17:31:37 on2 zu
2020-06-11 17:31:43 state OFF
Attributes:
cmdIcon Auf:control_arrow_up Zu:control_arrow_down
devStateIcon 1.AUF:control_arrow_up@red 1.auf:control_arrow_up@gray:AUF 2.ZU:control_arrow_down@red 2.zu:control_arrow_down@grey:ZU
group Garage
readingList on1 on2
room test
setList on1:auf,AUF on2:zu,ZU
stateFormat 1:on1
2:on2
durch Set Garage "AUF" wird nun ein notify und eine DOIF gestartet
(das funktioniert auch wie gewünscht)
So hier nun das List für die "ZU" Funktion.
Das Notify ist eigentlich nur für die "schöne Darstellung des Icons mit Farbe.
Internals:
DEF Garage:ZU|aktion {fhem("
define tmp_time1 at +00:00:00 set Garage on2 ZU ;
define tmp_time2 at +00:00:30 set Garage on2 zu ;
define tmp_time3 at +00:00:31 set Garage zu ;
")}
FUUID 5edfecea-f33f-a4d3-f005-a1525eb2f79f8cb4
NAME garageZU
NR 319
NTFY_ORDER 50-garageZU
REGEXP Garage:ZU|aktion
STATE active
TYPE notify
READINGS:
2020-06-11 18:50:30 state active
Attributes:
group Garage
room System,test
Hier das DOIF mit welchem ich rum kämpfe:
Hierzu noch der Hintergrund:
Die Garage steht halb offen und soll geschlossen werden
Bei einmal drücken könnte die Garage ganz hoch gefahren werden, daher soll nach einer Zeitverzögerung nochmals geprüft werden ob die Garage noch auf ist und ggf nochmals ein Impuls an den Garagenmotor gesendet werden.
Internals:
DEF (([MQTT2_DVES_330D6C:POWER3] eq "on") and
([Garage:on2] eq "ZU"))
(set MQTT2_DVES_330D6C ON)
(set MQTT2_DVES_330D6C OFF)
FUUID 5edff0e8-f33f-a4d3-10fc-56ad83345aec4828
MODEL FHEM
NAME garageDOIFzu
NOTIFYDEV MQTT2_DVES_330D6C,global,Garage
NR 321
NTFY_ORDER 50-garageDOIFzu
STATE cmd_1
TYPE DOIF
VERSION 20672 2019-12-06 21:05:57
READINGS:
2020-06-11 19:06:02 Device Garage
2020-06-11 19:05:40 cmd 1.2
2020-06-11 19:05:38 cmd_count 2
2020-06-11 19:05:40 cmd_event Garage
2020-06-11 19:05:40 cmd_nr 1
2020-06-11 19:05:40 cmd_seqnr 2
2020-06-11 19:06:02 e_Garage_on2 zu
2020-06-11 19:04:45 mode enabled
2020-06-11 19:05:40 state cmd_1
2020-06-11 19:05:45 wait_timer no timer
Regex:
accu:
cond:
Garage:
0:
on2 ^Garage$:^on2:
MQTT2_DVES_330D6C:
0:
POWER3 ^MQTT2_DVES_330D6C$:^POWER3:
attr:
cmdState:
repeatcmd:
5
repeatsame:
2
wait:
0:
0
1
waitdel:
condition:
0 (::ReadingValDoIf($hash,'MQTT2_DVES_330D6C','POWER3') eq "on") and (::ReadingValDoIf($hash,'Garage','on2') eq "ZU")
do:
0:
0 set MQTT2_DVES_330D6C ON
1 set MQTT2_DVES_330D6C OFF
1:
helper:
DEVFILTER ^global$|^MQTT2_DVES_330D6C$|^Garage$
NOTIFYDEV global|MQTT2_DVES_330D6C|Garage
event on2: zu
globalinit 1
last_timer 0
sleepdevice Garage
sleepsubtimer -1
sleeptimer -1
timerdev Garage
timerevent on2: ZU
triggerDev Garage
timerevents:
on2: ZU
timereventsState:
on2: ZU
triggerEvents:
on2: zu
triggerEventsState:
on2: zu
internals:
readings:
all MQTT2_DVES_330D6C:POWER3 Garage:on2
trigger:
uiState:
uiTable:
Attributes:
group Garage
repeatcmd 5
repeatsame 2
room test
wait 0,1
irgendwie funktioniert das zweite Signal noch nicht. Ohne die Attribute funktioniert das DOIF
Zitat:
"Das Modul merkt sich den zuletzt ausgeführten Ausführungszweig und wiederholt diesen standardmäßig nicht. Ein Ausführungszweig wird erst dann wieder ausgeführt, wenn zwischenzeitlich ein anderer Ausführungszweig ausgeführt wurde, also ein Statuswechsel des DOIF-Moduls stattgefunden hat."
Dies möchte ich umgehen. Wenn keine Änderung eintrat, soll das cmd nochmals ausgeführt werden.
Ich habe mein Problem gelöst.
Ich lasse über das notify den Befehl "Garage Zu" zweimal zeitversetzt ausführen und um eine Endlosschleife zu vermeiden tut sich das notify am Anfang selbst inaktivieren und aktiviert sich erst wieder am Ende
DOIF
Internals:
DEF (([MQTT2_DVES_330D6C:POWER3] eq "on") and
([Garage:on2] eq "ZU"))
(set MQTT2_DVES_330D6C ON)
(set MQTT2_DVES_330D6C OFF)
FUUID 5edff0e8-f33f-a4d3-10fc-56ad83345aec4828
MODEL FHEM
NAME garageDOIFzu
NOTIFYDEV MQTT2_DVES_330D6C,global,Garage
NR 321
NTFY_ORDER 50-garageDOIFzu
STATE cmd_2
TYPE DOIF
VERSION 20672 2019-12-06 21:05:57
READINGS:
2020-06-11 20:42:42 Device Garage
2020-06-11 20:42:42 cmd 2
2020-06-11 20:42:42 cmd_event Garage
2020-06-11 20:42:42 cmd_nr 2
2020-06-11 20:42:42 e_Garage_on2 zu
2020-06-11 20:38:44 e_MQTT2_DVES_330D6C_POWER3 on
2020-06-11 19:04:45 mode enabled
2020-06-11 20:42:42 state cmd_2
2020-06-11 20:42:33 wait_timer no timer
Regex:
accu:
cond:
Garage:
0:
on2 ^Garage$:^on2:
MQTT2_DVES_330D6C:
0:
POWER3 ^MQTT2_DVES_330D6C$:^POWER3:
attr:
cmdState:
cmdpause:
repeatcmd:
repeatsame:
wait:
0:
0
1
waitdel:
condition:
0 (::ReadingValDoIf($hash,'MQTT2_DVES_330D6C','POWER3') eq "on") and (::ReadingValDoIf($hash,'Garage','on2') eq "ZU")
do:
0:
0 set MQTT2_DVES_330D6C ON
1 set MQTT2_DVES_330D6C OFF
1:
helper:
DEVFILTER ^global$|^MQTT2_DVES_330D6C$|^Garage$
NOTIFYDEV global|MQTT2_DVES_330D6C|Garage
event on2: zu
globalinit 1
last_timer 0
sleepdevice Garage
sleepsubtimer -1
sleeptimer -1
timerdev Garage
timerevent on2: zu
triggerDev Garage
DOIF_eventa:
cmd_nr: 2
cmd: 2
cmd_event: Garage
cmd_2
DOIF_eventas:
cmd_nr: 2
cmd: 2
cmd_event: Garage
state: cmd_2
timerevents:
on2: zu
timereventsState:
on2: zu
triggerEvents:
on2: zu
triggerEventsState:
on2: zu
internals:
readings:
all MQTT2_DVES_330D6C:POWER3 Garage:on2
trigger:
uiState:
uiTable:
Attributes:
group Garage
room test
wait 0,1
Und das notify dazu
Internals:
DEF Garage:ZU|aktion {fhem("
define tmp_time1 at +00:00:00 set Garage on2 ZU ;
define tmp_time2 at +00:00:00 set garageZU inactive ;
define tmp_time3 at +00:00:05 set Garage OFF ;
define tmp_time4 at +00:00:10 set Garage on2 zu ;
define tmp_time5 at +00:00:20 set Garage on2 ZU ;
define tmp_time6 at +00:00:25 set Garage OFF ;
define tmp_time7 at +00:00:30 set Garage on2 zu ;
define tmp_time8 at +00:00:31 set garageZU active ;
")}
FUUID 5edfecea-f33f-a4d3-f005-a1525eb2f79f8cb4
NAME garageZU
NR 319
NTFY_ORDER 50-garageZU
REGEXP Garage:ZU|aktion
STATE active
TRIGGERTIME 1591900932.39929
TYPE notify
READINGS:
2020-06-11 20:42:43 state active
Attributes:
group Garage
room System,test
Hallo Müller,
ich habe Thread zugegebenermaßen nur grob überflogen, aber mir ist nicht klar, welche Ziele du verfolgst. Ich gehe davon aus, dass dein Rollladentor eine Einknopfbedienung kennt, d.h. bei jedem Bedienen wechselt der Zustand von z.B. Hoch auf Stop auf Runter auf Stop usw.
Ich habe auch ein solches Rollladentor. Durch Sensoren weiß ich, wann das Tor komplett geschlossen und wann es komplett offen ist, dazwischen ist es entweder in Fahrt oder es wurde angehalten. Das funktioniert alles sehr schön, und ich kenne die jeweiligen Zuständes des Tors und kann darauf triggern, z.B. wenn es abends/nachts noch aufsteht - dann bekomme ich Meldungen.
Ich möchte aber ganz dringend davor warnen, das Garagentor automatisch von irgendwelchen Bedingungen in Fahrt zu setzen. Es gibt zuviele Gefahren- oder Fehlerquellen, z.B. Auto steht halb in und halb vor der Garage, weil z.B. daran gearbeitet wird. Oder das Garagentor ist auf, aber die Heckklappe des Kombis ist auch auf, aber beim Runterfahren des Tors kollidiert der Schlepphaken mit der Heckklappe, usw.
Während ich geschrieben habe, kommt dein letzter Beitrag mit deiner Lösung rein.
Mein Rat: das Garagentor ohne Aufsicht nicht in Fahrt setzen.
Viele Grüße Gisbert
Danke für deinen Hinweis. Ich werde dies beherzigen.