Guten morgen zusammen,
vielleicht kann mir jemand helfen.
Bin gerade mein FHEM am ersteinrichten und stoße nun an meine grenze :-(
Folgendes Problem
habe ein Flurlicht welches ich täglich von 05:55 bis 06:05 einschalten würde.
Das ganze funktioniert auch schon, jedoch bekomme ich es nicht hin das es am zweitem Tag auch passiert.
der Status bleibt dann beim zweiten Ausführungsteil hängen, selbst wenn ich ihn im zweitem Ausführungsteil wieder auf initialized setze.
Hier kurz der Code :
([05:55-06:05]) (set Flur_unten_L on) DOELSE (set Licht_gehen_06 initialized)
Habe ich hier einen Denkfehler ?
Do always gesetzt?
ja das attr habe ich gesetzt,
aber er bleibt immer beim cmd_2 hängen.
müsste das doif nicht dann wieder auf initialized springen?
defmod Licht_gehen_06 DOIF ([05:55-06:05]) (set Flur_unten_L on) DOELSE (set Licht_gehen_06 initialized)
attr Licht_gehen_06 do always
attr Licht_gehen_06 group Steuerung
attr Licht_gehen_06 room Tradfri
attr Licht_gehen_06 selftrigger all
setstate Licht_gehen_06 initialized
setstate Licht_gehen_06 2021-06-13 10:51:48 cmd 0
setstate Licht_gehen_06 2021-06-13 10:51:48 mode enabled
setstate Licht_gehen_06 2021-06-13 10:51:48 state initialized
setstate Licht_gehen_06 2021-06-13 10:51:48 timer_01_c01 14.06.2021 05:55:00
setstate Licht_gehen_06 2021-06-13 10:51:48 timer_02_c01 14.06.2021 06:05:00
Nutze bitte Code Tags.
Ansonsten einfach mal DOELSE ()
Hi,
bitte poste ein komplettes list des DOIF in Codetags.
https://forum.fhem.de/index.php/topic,71806.0.html
Du willst das das Licht wieder ausgeht?
defmod Licht_gehen_06 DOIF ([05:55-06:05]) (set Flur_unten_L on) DOELSE (set Flur_unten_L off)
Gruß Otto
das Licht geht wieder automatisch aus, jedoch habe ich festgestellt das es am nächstem morgen nicht wieder angeht, das doif also nicht erneut gestartet initialisiert wird.
Internals:
DEF ([05:55-06:05]) (set Flur_unten_L on) DOELSE (set Licht_gehen_06 initialized)
FUUID 60c2eafb-f33f-d904-ce37-ad6ff1655ea5c5b6
MODEL FHEM
NAME Licht_gehen_06
NOTIFYDEV global
NR 59
NTFY_ORDER 50-Licht_gehen_06
STATE initialized
TYPE DOIF
VERSION 24519 2021-05-27 17:06:34
READINGS:
2021-06-13 10:51:48 cmd 0
2021-06-13 10:51:48 mode enabled
2021-06-13 10:51:48 state initialized
2021-06-13 10:51:48 timer_01_c01 14.06.2021 05:55:00
2021-06-13 10:51:48 timer_02_c01 14.06.2021 06:05:00
Regex:
accu:
collect:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::DOIF_time($hash,0,1,$wday,$hms)
days:
devices:
do:
0:
0 set Flur_unten_L on
1:
0 set Licht_gehen_06 initialized
helper:
DEVFILTER ^global$
NOTIFYDEV global
globalinit 1
last_timer 2
sleeptimer -1
interval:
0 -1
1 0
intervalfunc:
localtime:
0 1623642900
1 1623643500
realtime:
0 05:55:00
1 06:05:00
time:
0 05:55:00
1 06:05:00
timeCond:
0 0
1 0
timer:
0 0
1 0
timers:
0 0 1
triggertime:
1623642900:
localtime 1623642900
hash:
1623643500:
localtime 1623643500
hash:
uiState:
uiTable:
Attributes:
do always
group Steuerung
room Tradfri
selftrigger all
Den DOELSE Zweig halte ich für nicht notwendig, lass den einfach weg.
Auch das attribute selftrigger all ist nicht notwendig.
Allerdings musst Du wissen warum das Licht wieder ausgeht, dieses DOIF ist nicht dafür zuständig :)
mit dem doif schalte ich doch den status des Devices Flur_unten_L zwischen 05:55 und 06:05 auf on und sonst auf off.
wie kann ich das denn anders lösen ?
Internals:
DEF Licht_gehen_06 DOIF ([05:55-06:05]) (set Flur_unten_L on) DOELSE (set Flur_unten_L off)
FUUID 60c2eafb-f33f-d904-ce37-ad6ff1655ea5c5b6
MODEL Perl
NAME Licht_gehen_06
NOTIFYDEV global
NR 59
NTFY_ORDER 50-Licht_gehen_06
STATE initialized
TYPE DOIF
VERSION 24519 2021-05-27 17:06:34
READINGS:
2021-06-13 11:25:36 mode enabled
2021-06-13 11:25:36 state initialized
Regex:
accu:
collect:
attr:
cmdState:
wait:
waitdel:
condition:
devices:
helper:
DEVFILTER ^global$
NOTIFYDEV global
globalinit 1
last_timer 0
sleeptimer -1
perlblock:
uiState:
uiTable:
Attributes:
do always
group Steuerung
room Tradfri
wie gesagt bin am Anfang das ganze erst zu verstehen
Von der DEF her würde ich sagen: Jetzt ja, das Ding sollte 05:55 an gehen und 6:05 wieder aus. Allerdings ist da was faul.
Ich sehe keine Timer!?
MODEL steht auf Perl!?
So sieht ein schneller nachbau bei mir aus:
Internals:
CFGFN
DEF ([17:59-18:00])(set SD3 on) DOELSE (set SD3 off)
FUUID 60c62b00-f33f-520c-5edf-ff1e667d402b6eed
MODEL FHEM
NAME d_sd3
NOTIFYDEV global
NR 273878
NTFY_ORDER 50-d_sd3
STATE cmd_1
TYPE DOIF
VERSION 24195 2021-04-08 21:50:20
READINGS:
2021-06-13 17:59:00 cmd 1
2021-06-13 17:59:00 cmd_event timer_1
2021-06-13 17:59:00 cmd_nr 1
2021-06-13 17:57:52 mode enabled
2021-06-13 17:59:00 state cmd_1
2021-06-13 17:57:52 timer_01_c01 13.06.2021 17:59:00
2021-06-13 17:57:52 timer_02_c01 13.06.2021 18:00:00
Regex:
accu:
collect:
attr:
cmdState:
waitdel:
condition:
0 ::DOIF_time($hash,0,1,$wday,$hms)
days:
do:
0:
0 set SD3 on
1:
0 set SD3 off
helper:
DEVFILTER ^global$
NOTIFYDEV global
event timer_1
globalinit 1
last_timer 2
sleeptimer -1
timerdev
timerevent timer_1
triggerDev
timerevents:
timer_1
timereventsState:
timer_1
triggerEvents:
timer_1
triggerEventsState:
timer_1
interval:
0 -1
1 0
intervalfunc:
intervaltimer:
localtime:
0 1623599940
1 1623600000
realtime:
0 17:59:00
1 18:00:00
time:
0 17:59:00
1 18:00:00
timeCond:
0 0
1 0
timer:
0 0
1 0
timers:
0 0 1
triggertime:
1623600000:
localtime 1623600000
hash:
uiState:
uiTable:
Attributes:
do always
Das DOIF schaltet das Licht nur ein, und zwar am Anfang der Zeitspanne.
Probier es mal so, dann geht es jeden Tag um 5:55 an und um 6:05 aus.
([05:55]) (set Flur_unten_L on) DOELSEIF ([06:05]) (set Flur_unten_L off)
da braucht man auch kein always oder andere attr
Gruß
Werner