FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: elektro_rainer am 17 März 2020, 10:15:57

Titel: Anfängerfrage DOIF
Beitrag von: elektro_rainer am 17 März 2020, 10:15:57
Servus zusammen,

ich habe ein DOIF um während der Woche die Beleuchtung aus zu schalten.
Wenn ich "checkall" mache springt das auf cmd_2, führt das dann wie gewollt EINMAL aus und bleibt auf status cmd_1 stehen.
Wo ist mein Denkfehler???

defmod Gartenlicht_Aus_WD DOIF ([([22:30]+int(rand(1800)))|Arbeitstag]) (set Garten_Beleuchtung off)
attr Gartenlicht_Aus_WD group Automatik
attr Gartenlicht_Aus_WD room Simulation
attr Gartenlicht_Aus_WD weekdays Son,Mon,Die,Mit,Don,Fre,Sam,Wochenende,Arbeitstag,WochenendeMorgen

setstate Gartenlicht_Aus_WD cmd_1
setstate Gartenlicht_Aus_WD 2020-03-16 22:35:21 cmd 1
setstate Gartenlicht_Aus_WD 2020-03-16 22:35:21 cmd_event timer_1
setstate Gartenlicht_Aus_WD 2020-03-16 22:35:21 cmd_nr 1
setstate Gartenlicht_Aus_WD 2020-03-12 10:16:15 mode enabled
setstate Gartenlicht_Aus_WD 2020-03-16 22:35:21 state cmd_1
setstate Gartenlicht_Aus_WD 2020-03-16 22:35:21 timer_01_c01 17.03.2020 22:48:56|Arbeitstag


Danke
Titel: Antw:Anfängerfrage DOIF
Beitrag von: rabehd am 17 März 2020, 10:20:55
Zitatcmd_2, führt das dann wie gewollt EINMAL aus
Ich sehe nichts was als cmd_2 ausgeführt werden könnte.
Titel: Antw:Anfängerfrage DOIF
Beitrag von: elektro_rainer am 17 März 2020, 10:57:56
... und warum springt das DOIF nach einem "checkall" auf cmd_2 und führt das dann genau einmal aus??
Titel: Antw:Anfängerfrage DOIF
Beitrag von: rabehd am 17 März 2020, 12:04:49
Du schreibst:
ZitatWenn ich "checkall" mache springt das auf cmd_2, führt das dann wie gewollt EINMAL aus und bleibt auf status cmd_1 stehen.
Es gibt also etwas gewolltest unter dem 2. Zweig. Da steht aber nichts. Was wird denn ausgeführt?
Es kann eigentlich nur der 1. Zweig ausgeführt werrde, da es keinen 2. gibt.
Wo soll es hinspringen, wenn Du nur einen einzigen Zweig hast? Ich würde sagen "do always" führt zur erneuten Durchführung.
Titel: Antw:Anfängerfrage DOIF
Beitrag von: Damian am 17 März 2020, 17:26:19
Wenn du checkall ausführen lässt, dann wird deine Bedingung geprüft, die ist zu diesem Zeitpunkt nicht wahr also geht er in den Zustand cmd_2. Zum errechneten Zeitpunkt führt er deine Anweisung aus in cmd_1.

Du musst das Attribut do always setzen, damit cmd_1 nicht nur einmal ausgeführt werden kann.
Titel: Antw:Anfängerfrage DOIF
Beitrag von: elektro_rainer am 17 März 2020, 18:09:32
Danke für Eure Hilfe und Erklärungen, ich werd's heut direkt testen!
Titel: Antw:Anfängerfrage DOIF
Beitrag von: elektro_rainer am 18 März 2020, 10:29:46
das war's,... funzzt, .. danke!