Hallo,
Ich hatte bisher einen ganz einfachen Code für meine Weihnachtskerze beim Hauseingang.
Diesen Code habe ich nun überarbeitet.
Nach der Art, dass im Monat 12 die Tageszahl *100 zu den Sekunden dazugerechnet wird.
Im Monat 1 die Tageszahl *100 von den Sekunden abgezogen wird.
Zusätzlich dass am 24. 12. und am 31. 12. die Kerze länger brennt
Da der Code aber ohne langes Testen funktionieren soll, ersuche ich um eine Überprüfung.
Bitte und Danke!
Internals:
DEF ([Weihnachtskerze] eq "on" and [{sunset("REAL")}]) (set Kerze_Hauseingang on)
DOELSEIF ([Weihnachtskerze] eq "on" and ($month=12 and $mday=24) and [{sunset("REAL",+35000)}] ) (set Kerze_Hauseingang off)
DOELSEIF ([Weihnachtskerze] eq "on" and ($month=12 and $mday=31) and [{sunset("REAL",+31400)}] ) (set Kerze_Hauseingang off)
DOELSEIF ([Weihnachtskerze] eq "on" and ($month=12) and (!$mday=24) and (!$mday=31) and [{sunset("REAL",+(21500+$mday*100),"22:00","24:00")}]) (set Kerze_Hauseingang off)
DOELSEIF ([Weihnachtskerze] eq "on" and ($month=1) and [{sunset("REAL",+(21500-$mday*100),"21:00","23:00")}]) (set Kerze_Hauseingang off)
NAME di_Kerze_hauseingang
NR 1161
NTFY_ORDER 50-di_Kerze_hauseingang
STATE initialized
TYPE DOIF
READINGS:
2017-12-21 19:49:49 cmd 0
2017-12-21 19:49:49 state initialized
2017-12-21 19:49:49 timer_01_c01 22.12.2017 16:05:19
2017-12-21 19:49:49 timer_02_c02 22.12.2017 01:48:09
2017-12-21 19:49:49 timer_03_c03 22.12.2017 00:48:09
2017-12-21 19:49:49 timer_04_c04 21.12.2017 22:38:09
2017-12-21 19:49:49 timer_05_c05 21.12.2017 21:28:09
condition:
0 InternalDoIf($hash,'Weihnachtskerze','STATE') eq "on" and DOIF_time_once($hash,0,$wday)
1 InternalDoIf($hash,'Weihnachtskerze','STATE') eq "on" and ($month=12 and $mday=24) and DOIF_time_once($hash,1,$wday)
2 InternalDoIf($hash,'Weihnachtskerze','STATE') eq "on" and ($month=12 and $mday=31) and DOIF_time_once($hash,2,$wday)
3 InternalDoIf($hash,'Weihnachtskerze','STATE') eq "on" and ($month=12) and (!$mday=24) and (!$mday=31) and DOIF_time_once($hash,3,$wday)
4 InternalDoIf($hash,'Weihnachtskerze','STATE') eq "on" and ($month=1) and DOIF_time_once($hash,4,$wday)
days:
devices:
0 Weihnachtskerze
1 Weihnachtskerze
2 Weihnachtskerze
3 Weihnachtskerze
4 Weihnachtskerze
all Weihnachtskerze
do:
0:
0 set Kerze_Hauseingang on
1:
0 set Kerze_Hauseingang off
2:
0 set Kerze_Hauseingang off
3:
0 set Kerze_Hauseingang off
4:
0 set Kerze_Hauseingang off
5:
helper:
globalinit 1
last_timer 5
sleeptimer -1
internals:
0 Weihnachtskerze:STATE
1 Weihnachtskerze:STATE
2 Weihnachtskerze:STATE
3 Weihnachtskerze:STATE
4 Weihnachtskerze:STATE
all Weihnachtskerze:STATE
itimer:
localtime:
0 1513955119
1 1513903689
2 1513900089
3 1513892289
4 1513888089
realtime:
0 16:05:19
1 01:48:09
2 00:48:09
3 22:38:09
4 21:28:09
regexp:
all:
state:
STATE:
time:
0 {sunset("REAL")}
1 {sunset("REAL",+35000)}
2 {sunset("REAL",+31400)}
3 {sunset("REAL",+(21500+$mday*100),"22:00","24:00")}
4 {sunset("REAL",+(21500-$mday*100),"21:00","23:00")}
timeCond:
0 0
1 1
2 2
3 3
4 4
timer:
0 0
1 0
2 0
3 0
4 0
timers:
0 0
1 1
2 2
3 3
4 4
triggertime:
1513888089:
localtime 1513888089
hash:
1513892289:
localtime 1513892289
hash:
1513900089:
localtime 1513900089
hash:
1513903689:
localtime 1513903689
hash:
1513955119:
localtime 1513955119
hash:
Attributes:
do always
room 4.04_Hauseingang
Verstehe ich das richtig, Du möchtest dass jemand Deinen Code für Dich testet, weil Du keine Lust dazu hast?
Zitat von: Ellert am 21 Dezember 2017, 20:26:52
Verstehe ich das richtig, Du möchtest dass jemand Deinen Code für Dich testet, weil Du keine Lust dazu hast?
Das ist es ganz sicher nicht.
Da ich nicht ganz so fit bin im Code schreiben, wollte ich den überprüft haben.
Er soll einfach gleich laufen.
Aber ist ja egal, dann warte ich einfach ein Jahr und lasse den parallel mitlaufen.
Mein Kerze hat ab sofort wieder den alten Code, der andere schaltet jetzt einen Dummy.
In 12 Monaten weiß ich ob es funktioniert hat.
Ist auch eine Möglichkeit.
Du könntest zum Testen andere Parameter nehmen, die näher zum aktuellen Zeitpunkt liegen, dann musst Du nicht ein Jahr warten, sondern z.B. nur 5 Minuten.
Und selbst testen macht fit.