Hallo,
ich habe folgendes DOIF
([08:00-20:00] and ([JemandZuhause] eq "true")) (set IT_Steckdose_1 on) ((set WifiLightGang HSV 300,0,100)) ((set LEDLeiste HSV 300,100,100))
DOELSEIF
([20:01-00:30] and ([JemandZuhause] eq "true") and ([SchlafensZeit] eq "false")) (set IT_Steckdose_1 on) ((set WifiLightGang HSV 300,100,100)) ((set LEDLeiste HSV 300,100,50))
DOELSE
(set IT_Steckdose_1 off) (set WifiLightGang HSV 0,0,300) (set LEDLeiste off)
Aussderdem ist do always und checkall all gesetzt.
Es geht um die Condition 2 und den ELSE Pfad. Ich hätte erwartet dass zwischen 20:01 und 00:30, wenn JemandZuhause true ist aber Schlafenszeit von false auf true wechselt der DOELSE Zweig ausgeführt wird. Wird er aber nicht.
Was mache ich falsch?
Hi,
1. Fehler: Du postest DEF und kein list :( Man sieht so nicht was das DOIF wirklich tut / getan hat
2. Fehler (set WifiLightGang HSV 0,0,300) -> ((set WifiLightGang HSV 0,0,300)) - ich bin aber nicht ganz sicher ob das wirklich das Problem ist. (Doku (https://commandref.fhem.de/commandref_DE.html#DOIF_Angaben_im_Ausfuehrungsteil))
Überflüssige Klammern:
([08:00-20:00] and ([JemandZuhause] eq "true")) -> ([08:00-20:00] and [JemandZuhause] eq "true")
([20:01-00:30] and ([JemandZuhause] eq "true") and ([SchlafensZeit] eq "false")) -> ([20:01-00:30] and [JemandZuhause] eq "true" and [SchlafensZeit] eq "false")
Gruß Otto
Zitat von: Otto123 am 10 Oktober 2019, 12:04:51
1. Fehler: Du postest DEF und kein list :( Man sieht so nicht was das DOIF wirklich tut / getan hat
Klar. Und so sieht man die Attribute auch nicht. Die sind insb. beim DOIF entscheidend!
Also, "list" bitte! ;) Und am besten, "list" wenn es laut Benutzer nicht richtig funktioniert hat.
Sorry hat etwas länger gedauert,
Internals:
DEF ([08:00-20:00] and ([JemandZuhause] eq "true")) (set IT_Steckdose_1 on) ((set WifiLightGang HSV 300,0,100)) ((set LEDLeiste HSV 300,100,100))
DOELSEIF
([20:01-00:30] and ([JemandZuhause] eq "true") and ([SchlafensZeit] eq "false")) (set IT_Steckdose_1 on) ((set WifiLightGang HSV 300,100,100)) ((set LEDLeiste HSV 300,100,50))
DOELSE
(set IT_Steckdose_1 off) (set WifiLightGang HSV 0,0,300) (set LEDLeiste off)
FUUID 5c4c5851-f33f-a685-3594-4daa54e24a9968cf
MODEL FHEM
NAME GangLEDAutomatik2
NOTIFYDEV global,JemandZuhause,SchlafensZeit
NR 274
NTFY_ORDER 50-GangLEDAutomatik2
STATE cmd_1
TYPE DOIF
VERSION 20268 2019-09-28 21:00:39
READINGS:
2019-10-14 10:00:00 Device SchlafensZeit
2019-10-14 10:00:00 cmd 1.3
2019-10-14 10:00:00 cmd_event SchlafensZeit
2019-10-14 10:00:00 cmd_nr 1
2019-10-14 10:00:00 cmd_seqnr 3
2019-10-13 17:21:49 e_JemandZuhause_STATE true
2019-10-14 10:00:00 e_SchlafensZeit_STATE false
2019-10-10 10:59:41 mode enabled
2019-10-14 10:00:00 state cmd_1
2019-10-13 20:00:00 timer_01_c01 14.10.2019 08:00:00
2019-10-13 20:00:00 timer_02_c01 14.10.2019 20:00:00
2019-10-14 00:30:00 timer_03_c02 14.10.2019 20:01:00
2019-10-14 00:30:00 timer_04_c02 15.10.2019 00:30:00
Regex:
accu:
cond:
JemandZuhause:
0:
&STATE ^JemandZuhause$
1:
&STATE ^JemandZuhause$
SchlafensZeit:
0:
1:
&STATE ^SchlafensZeit$
attr:
cmdState:
wait:
waitdel:
condition:
0 ::DOIF_time($hash,0,1,$wday,$hms) and (::InternalDoIf($hash,'JemandZuhause','STATE') eq "true")
1 ::DOIF_time($hash,2,3,$wday,$hms) and (::InternalDoIf($hash,'JemandZuhause','STATE') eq "true") and (::InternalDoIf($hash,'SchlafensZeit','STATE') eq "false")
days:
do:
0:
0 set IT_Steckdose_1 on
1 (set WifiLightGang HSV 300,0,100)
2 (set LEDLeiste HSV 300,100,100)
1:
0 set IT_Steckdose_1 on
1 (set WifiLightGang HSV 300,100,100)
2 (set LEDLeiste HSV 300,100,50)
2:
0 set IT_Steckdose_1 off
1 set WifiLightGang HSV 0,0,300
2 set LEDLeiste off
helper:
DEVFILTER ^global$|^JemandZuhause$|^SchlafensZeit$
NOTIFYDEV global|JemandZuhause|SchlafensZeit
event false
globalinit 1
last_timer 4
sleeptimer -1
timerdev SchlafensZeit
timerevent false
triggerDev SchlafensZeit
timerevents:
false
timereventsState:
state: false
triggerEvents:
false
triggerEventsState:
state: false
internals:
all JemandZuhause:STATE SchlafensZeit:STATE
interval:
0 -1
1 0
2 -1
3 2
intervalfunc:
intervaltimer:
localtime:
0 1571032800
1 1571076000
2 1571076060
3 1571092200
readings:
realtime:
0 08:00:00
1 20:00:00
2 20:01:00
3 00:30:00
time:
0 08:00:00
1 20:00:00
2 20:01:00
3 00:30:00
timeCond:
0 0
1 0
2 1
3 1
timer:
0 0
1 0
2 0
3 0
timers:
0 0 1
1 2 3
trigger:
triggertime:
1571076000:
localtime 1571076000
hash:
1571076060:
localtime 1571076060
hash:
1571092200:
localtime 1571092200
hash:
uiState:
uiTable:
Attributes:
checkall all
do always
Also bei dem "list" ist es zwischen 8 Uhr und 20 Uhr, jemand ist zu Hause, dann führt das DOIF cmd1 aus.
Bisher alles gut. DOIF macht was er soll.
Zitat von: amenomade am 14 Oktober 2019, 19:46:32
Also bei dem "list" ist es zwischen 8 Uhr und 20 Uhr, jemand ist zu Hause, dann führt das DOIF cmd1 aus.
Bisher alles gut. DOIF macht was er soll.
Was auch funktioniert, das Command 3 macht Probleme (die vorgeschlagene Änderung oben hat übrigens keine Wirkung gezeigt - das Licht bleibt an...).
Um eine Ahnung vom Problem zu erlangen, wäre ein list in dem Zustand hilfreich der Probleme macht ;)