Ich habe folgendes DOIF:
Internals:
DEF ([tr_wassermanuell] ne "nein" or [tr_wassersonnenaufgang] ne "nein") ## bei Bedarf oder vor Sonnenaufgang
(set tr_Wasserpumpe on-for-timer 60, {MP3laden("005")}) ## soll die Bewässerung 12x 1 Minute laufen
MODEL FHEM
NAME tr_giessen
NR 1188
NTFY_ORDER 50-tr_giessen
STATE initialized
TYPE DOIF
READINGS:
2019-06-29 11:56:33 cmd 0
2019-06-29 11:56:33 mode enabled
2019-06-29 11:56:33 state initialized
Regex:
attr:
cmdState:
repeatcmd:
300
repeatsame:
12
wait:
waitdel:
condition:
0 ::InternalDoIf($hash,'tr_wassermanuell','STATE') ne "nein" or ::InternalDoIf($hash,'tr_wassersonnenaufgang','STATE') ne "nein"
devices:
0 tr_wassermanuell tr_wassersonnenaufgang
all tr_wassermanuell tr_wassersonnenaufgang
do:
0:
0 set tr_Wasserpumpe on-for-timer 60, {MP3laden("005")}
1:
helper:
globalinit 1
last_timer 0
sleeptimer -1
internals:
0 tr_wassermanuell:STATE tr_wassersonnenaufgang:STATE
all tr_wassermanuell:STATE tr_wassersonnenaufgang:STATE
itimer:
uiState:
uiTable:
Attributes:
repeatcmd 300
repeatsame 12
room Terrasse
Meine Erwartungshaltung:
* wenn die Bedingung > 1Stunde (12 x 300 Sekunden wie mit repeatcmd und repeatsame definiert) erfüllt ist, wird trotzdem nur 12x das Kommando ausgeführt - das funktioniert.
* wenn die Bedingung nicht mehr erfüllt ist, wird auch kein Kommando mehr ausgefüllt - das funktioniert so nicht, es wird dennoch 12x das Kommando ausgeführt.
Ich habe die comandref zu DOIF jetzt schon 2x gelesen, aber wahrscheinlich wieder an der entscheidenden Stelle nichts verstanden. Vielleicht hat jemand einen Hinweis? Danke.
Mit einem leeren DOELSE am Ende wird der Status sich ändern, wenn die Bedingung nicht mehr wahr ist, und somit sollte die Wiederholung abgebrochen werden.
Danke, jetzt funktioniert es!