GUten Morgen!
Heut eNacht hat sich meine piVCCU3 schlafen gelegt sodass sie nicht mehr ansprechbar war... Also musste ich die Raspberry neustarten....
Problem:
Ich habe ein DOIF:
Internals:
DEF ([{sunset("HORIZON=-2.5")}-{sunrise("HORIZON=-1.0")}])
DOELSE
FUUID 61d61a67-f33f-e7ed-6082-b93301342ae4ad90
FVERSION 98_DOIF.pm:0.277400/2023-07-10
MODEL FHEM
NAME TageslichtOutdoor
NOTIFYDEV global
NR 171
NTFY_ORDER 50-TageslichtOutdoor
STATE Nacht
TYPE DOIF
VERSION 27740 2023-07-10 09:31:11
eventCount 1
READINGS:
2023-10-19 04:23:26 cmd 1
2023-10-19 04:23:26 cmd_event set_Nacht_cmd_1
2023-10-19 04:23:26 cmd_nr 1
2022-01-22 10:08:42 mode enabled
2023-10-19 04:23:26 state Nacht
2023-10-19 04:16:36 timer_01_c01 19.10.2023 18:32:52
2023-10-19 04:16:36 timer_02_c01 19.10.2023 07:52:36
Regex:
accu:
bar:
barAvg:
collect:
attr:
cmdState:
0:
Nacht
1:
Tag
condition:
0 ::DOIF_time($hash,0,1,$wday,$hms)
days:
do:
0:
0
1:
0
helper:
NOTIFYDEV global
globalinit 1
last_timer 2
sleeptimer -1
hmccu:
interval:
0 -1
1 0
intervalfunc:
localtime:
0 1697733172
1 1697694756
perlblock:
realtime:
0 18:32:52
1 07:52:36
time:
0 {sunset("HORIZON=-2.5")}
1 {sunrise("HORIZON=-1.0")}
timeCond:
0 0
1 0
timer:
0 0
1 0
timers:
0 0 1
triggertime:
1697694756:
localtime 1697694756
hash:
1697733172:
localtime 1697733172
hash:
uiState:
uiTable:
Attributes:
checkall all
cmdState Nacht|Tag
do always
event-on-change-reading state
group DOIF Status
room Astro & Wetter,DOIF
webCmd Tag:Nacht
Wenn ich fhem neustarte wird leider nicht der aktuelle Wert übernommen. Also war heute um 04Uhr morgens nach dem Start "Tag" Das hat meine Lichtsteuerung etwas durcheinander gebracht...
Lässt sich dieses DOIF so anpassen sodass nach einem Neustart der aktuelle Wert (Tag:Nacht) gesetzt wird?
Vielen Dank!
Das Problem ist, dass sunset() nach dem Neustart den Sonnenuntergang von heute berechnet und nicht mehr den von gestern.
Warum brauchst Du das DOIF eigentlich, um festzustellen, ob Tag oder Nacht ist?
Dafür hat FHEM doch die Funktion isday(), die genau das gleiche tut und deren Ergebnis man einfach als Bedingung verwenden kann.
Hmm...
Auf die Auswertung Tag oder Nacht greifen mehrere andere DOIFs um dinge zu tun...
Das von mir erstellte DOIF st ja an meine Gegebenheiten angepasst mit HORIZON... isday ist doch festgelegt auf HORIZON-6 wenn ich das richtig intepretiert habe... Oder bin ich da auf dem falschen Weg?
Lässt sich denn die isday Ausgabe an die eigenen Gegebenheiten anpassen?
Oder ist es vielleicht einfacher das DOIF irgendwie zu optimieren....?
Zitat von: misux am 19 Oktober 2023, 10:45:18Lässt sich denn die isday Ausgabe an die eigenen Gegebenheiten anpassen?
Ja - Auszug aus der commandref
ZitatAll functions take up to four arguments:
altitude (optional) altitude defines a horizon value which then is used instead of the $defaultaltit in SUNRISE_EL.pm.
Possible values are: "REAL", "CIVIL", "NAUTIC", "ASTRONOMIC" or a positive or negative number prefixed with "HORIZON="
REAL is 0, CIVIL is -6, NAUTIC is -12, ASTRONOMIC is -18 degrees above horizon.
time-offset in seconds, which will be added to the event.
min and max values (format: "HH:MM"). If min < max, than the day starts not before min, and ends not after max. If min > max, than the day starts not after max, and ends not before min.
isday() can be used in some notify or at commands to check if the sun is up or down. isday() ignores the time-offset parameter, but respects min and max.