hiho,
ich hab ein eigentlich recht simples doif, dass mit 3 lampen und 1 pumpe per zeit schalten soll.
die zeiten kommen aus einem reading. ein paar rechnungen mach ich gleich im doif selber. da ist nichts dabei, was ich so nicht schon x mal gemacht hätte.
nun schalten mir aber die lampen nicht einach zu ihren zeiten ein oder aus, sondern immer ein, sobald die an-zeit erreicht ist.
was überseh ich bei diesem eigentlich idioten einfachen doif?
Internals:
DEF ( ## lichtautomatik L an - 01
[?$SELF:lichtL_auto] eq "an" and [$SELF:lichtL_an]
)
( set HUEDevice13 on )
DOELSEIF
( ## lichtautomatik L aus - 02
[?$SELF:lichtL_auto] eq "an" and [$SELF:lichtL_aus]
)
( set HUEDevice13 off )
DOELSEIF
( ## lichtautomatik M an - 03
[?$SELF:lichtM_auto] eq "an" and [$SELF:lichtM_an]
)
( set HUEDevice11 on )
DOELSEIF
( ## lichtautomatik M aus - 04
[?$SELF:lichtM_auto] eq "an" and [$SELF:lichtM_aus]
)
( set HUEDevice11 off )
DOELSEIF
( ## lichtautomatik R an - 05
[?$SELF:lichtR_auto] eq "an" and [$SELF:lichtR_an]
)
( set HUEDevice10 on )
DOELSEIF
( ## lichtautomatik R aus - 06
[?$SELF:lichtR_auto] eq "an" and [$SELF:lichtR_aus]
)
( set HUEDevice10 off )
## WASSERZUFLUSS
DOELSEIF
( ## wasserautomatik an - 07
[?$SELF:wasser_auto] eq "an" and [[$SELF:wasser_an]-[$SELF:wasser_aus],+[$SELF:wasser_takt]]
)
( set HUEDevice12 on-for-timer [$SELF:wasser_sek] )
## SEKUNDEN RECHNEN
DOELSEIF ( [$SELF:wasser_dauer] ) ( setreading $SELF wasser_sek {([$SELF:wasser_dauer]*60)} ) ## - 08
DOELSEIF ( [$SELF:wasser_stunden] ) ( setreading $SELF wasser_takt {(([$SELF:wasser_stunden]*60)*60)} ) ## - 09
FUUID 5d9349b2-f33f-0f9e-18ed-b22408af72e0517d
MODEL FHEM
NAME doif_hydro01_logik
NOTIFYDEV doif_hydro01_logik,global
NR 312
NTFY_ORDER 50-doif_hydro01_logik
STATE cmd_3
TYPE DOIF
VERSION 20672 2019-12-06 21:05:57
Helper:
DBLOG:
hydro01_lichtL:
logdb:
TIME 1575789779.83671
VALUE -10
hydro01_lichtM:
logdb:
TIME 1575789779.55715
VALUE -10
hydro01_lichtR:
logdb:
TIME 1575789779.57763
VALUE -10
hydro01_wasser:
logdb:
TIME 1575789779.82853
VALUE -10
OLDREADINGS:
READINGS:
2019-12-08 08:45:06 cmd 3
2019-12-08 08:45:06 cmd_event doif_hydro01_logik
2019-12-08 08:45:06 cmd_nr 3
2019-12-08 08:33:47 e_doif_hydro01_logik_lichtL_an 08:00
2019-12-08 08:44:23 e_doif_hydro01_logik_lichtL_aus 18:00
2019-12-08 08:33:48 e_doif_hydro01_logik_lichtM_an 08:00
2019-12-08 08:44:21 e_doif_hydro01_logik_lichtM_aus 18:00
2019-12-08 08:33:52 e_doif_hydro01_logik_lichtR_an 08:00
2019-12-08 08:44:20 e_doif_hydro01_logik_lichtR_aus 18:00
2019-12-08 08:44:49 e_doif_hydro01_logik_wasser_dauer 30
2019-12-08 08:44:45 e_doif_hydro01_logik_wasser_stunden 2
2019-12-08 08:33:47 lichtL_an 08:00
2019-12-08 08:44:23 lichtL_aus 18:00
2019-12-08 08:44:27 lichtL_auto aus
2019-12-08 08:33:48 lichtM_an 08:00
2019-12-08 08:44:21 lichtM_aus 18:00
2019-12-08 08:44:29 lichtM_auto an
2019-12-08 08:33:52 lichtR_an 08:00
2019-12-08 08:44:20 lichtR_aus 18:00
2019-12-08 08:44:32 lichtR_auto aus
2019-12-08 08:30:25 mode enabled
2019-12-08 08:45:06 state cmd_3
2019-12-08 08:44:36 timer_01_c07 09.12.2019 08:00:00
2019-12-08 08:44:41 timer_02_c07 08.12.2019 18:00:00
2019-12-08 08:44:41 timer_03_c07 08.12.2019 10:44:41
2019-12-08 08:44:36 wasser_an 08:00
2019-12-08 08:44:41 wasser_aus 18:00
2019-12-08 08:44:52 wasser_auto aus
2019-12-08 08:44:49 wasser_dauer 30
2019-12-08 08:44:49 wasser_sek 1800
2019-12-08 08:44:45 wasser_stunden 2
2019-12-08 08:44:45 wasser_takt 7200
Regex:
accu:
cond:
doif_hydro01_logik:
0:
lichtL_an ^doif_hydro01_logik$:^lichtL_an:
1:
lichtL_aus ^doif_hydro01_logik$:^lichtL_aus:
2:
lichtM_an ^doif_hydro01_logik$:^lichtM_an:
3:
lichtM_aus ^doif_hydro01_logik$:^lichtM_aus:
4:
lichtR_an ^doif_hydro01_logik$:^lichtR_an:
5:
lichtR_aus ^doif_hydro01_logik$:^lichtR_aus:
6:
7:
wasser_dauer ^doif_hydro01_logik$:^wasser_dauer:
8:
wasser_stunden ^doif_hydro01_logik$:^wasser_stunden:
itimer:
doif_hydro01_logik:
itimer:
wasser_an ^doif_hydro01_logik$:^wasser_an:
wasser_aus ^doif_hydro01_logik$:^wasser_aus:
wasser_takt ^doif_hydro01_logik$:^wasser_takt:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::ReadingValDoIf($hash,'doif_hydro01_logik','lichtL_auto') eq "an" and ::ReadingValDoIf($hash,'doif_hydro01_logik','lichtL_an')
1 ::ReadingValDoIf($hash,'doif_hydro01_logik','lichtL_auto') eq "an" and ::ReadingValDoIf($hash,'doif_hydro01_logik','lichtL_aus')
2 ::ReadingValDoIf($hash,'doif_hydro01_logik','lichtM_auto') eq "an" and ::ReadingValDoIf($hash,'doif_hydro01_logik','lichtM_an')
3 ::ReadingValDoIf($hash,'doif_hydro01_logik','lichtM_auto') eq "an" and ::ReadingValDoIf($hash,'doif_hydro01_logik','lichtM_aus')
4 ::ReadingValDoIf($hash,'doif_hydro01_logik','lichtR_auto') eq "an" and ::ReadingValDoIf($hash,'doif_hydro01_logik','lichtR_an')
5 ::ReadingValDoIf($hash,'doif_hydro01_logik','lichtR_auto') eq "an" and ::ReadingValDoIf($hash,'doif_hydro01_logik','lichtR_aus')
6 ::ReadingValDoIf($hash,'doif_hydro01_logik','wasser_auto') eq "an" and ::DOIF_time($hash,0,1,$wday,$hms)
7 ::ReadingValDoIf($hash,'doif_hydro01_logik','wasser_dauer')
8 ::ReadingValDoIf($hash,'doif_hydro01_logik','wasser_stunden')
days:
do:
0:
0 set HUEDevice13 on
1:
0 set HUEDevice13 off
2:
0 set HUEDevice11 on
3:
0 set HUEDevice11 off
4:
0 set HUEDevice10 on
5:
0 set HUEDevice10 off
6:
0 set HUEDevice12 on-for-timer [doif_hydro01_logik:wasser_sek]
7:
0 setreading doif_hydro01_logik wasser_sek {([doif_hydro01_logik:wasser_dauer]*60)}
8:
0 setreading doif_hydro01_logik wasser_takt {(([doif_hydro01_logik:wasser_stunden]*60)*60)}
9:
helper:
DEVFILTER ^global$|^doif_hydro01_logik$
NOTIFYDEV global|doif_hydro01_logik
event wasser_dauer: 30
globalinit 1
last_timer 3
sleeptimer -1
timerdev
timerevent wasser_dauer: 30
timerevents
timereventsState
triggerDev
internals:
interval:
0 -1
1 0
intervalfunc:
2 ::DOIF_time($hash,0,1,$wday,$hms)
intervaltimer:
0 2
1 2
localtime:
0 1575874800
1 1575824400
2 1575798281
readings:
all doif_hydro01_logik:lichtL_an doif_hydro01_logik:lichtL_aus doif_hydro01_logik:lichtM_an doif_hydro01_logik:lichtM_aus doif_hydro01_logik:lichtR_an doif_hydro01_logik:lichtR_aus doif_hydro01_logik:wasser_dauer doif_hydro01_logik:wasser_stunden
realtime:
0 08:00:00
1 18:00:00
2 10:44:41
time:
0 [doif_hydro01_logik:wasser_an]
1 [doif_hydro01_logik:wasser_aus]
2 +[doif_hydro01_logik:wasser_takt]
timeCond:
0 6
1 6
2 6
timer:
0 0
1 0
2 0
timers:
6 0 1 2
trigger:
triggertime:
1575798281:
localtime 1575798281
hash:
1575824400:
localtime 1575824400
hash:
1575874800:
localtime 1575874800
hash:
uiState:
uiTable:
Attributes:
alias hydrokultor 1 automatik
do always
group helferchen
icon helper_doif
readingList lichtL_an
lichtL_aus
lichtL_auto
lichtM_an
lichtM_aus
lichtM_auto
lichtR_an
lichtR_aus
lichtR_auto
wasser_an
wasser_aus
wasser_stunden
wasser_dauer
wasser_auto
room hydroponik
setList lichtL_an
lichtL_aus
lichtL_auto
lichtM_an
lichtM_aus
lichtM_auto
lichtR_an
lichtR_aus
lichtR_auto
wasser_an
wasser_aus
wasser_auto
wasser_an
wasser_aus
wasser_stunden
wasser_dauer
wasser_auto
bin schon neugierig, würüber wir gleich herzlich lachen werden *g*
[$SELF:lichtL_an]
Wenn das eine Eventsteuerung sein soll, dann
[$SELF:"lichtL_an"]
oder
["$SELF:lichtL_an"]
oder... abhängig vom tatsächlichen Event
eigentlich gehts noch dem bspl.:define di_light DOIF ([08:00]) (set switch on) DOELSEIF ([10:00]) (set switch off)
nur, dass die zeit halt von dem reading $SELF:lichtM_an kommt
[$SELF:"lichtM_an"] schaut schon mal besser aus - zumindest schaltet er nicht bei jedem doif checkall wieder ein.
hast du da zufällig den richtigen link zur ref noch rum liegen - diese anführungsstriche geschichte ist mir bei zeiten echt neu - muß ich wo überlesen haben.
Sorry... übersehen.
Ich dachte $SELF:lichtM_an wäre so ein Knopf zum Schalten.
Wenn es eine Zeit ist, musst Du so schreiben:
[[$SELF:lichtL_an]]
Siehe https://fhem.de/commandref_DE.html#DOIF_Indirekten_Zeitangaben
fux, du warst schneller - hab eben den compi aufgedreht um genau das zu testen *g*
danke aber trotzdem!
tatsache ist wieder mal: ich war blöd - immerhin steuer ich genau auf die art auch z.b. meinen saugbot. hätts nur abschreiben müssen.