ich habe mittlerweile den relevanten Programmteil weiter verändert. Wie bereits beschrieben: Start des Scriptes über die CCU täglich um 01:15 Uhr. Die astronomischen Zeiten werden an den Tagen ohne "echte" astronomische Dämmerung auf 01.00 und 01.30 (Untergang - Aufgang) gesetzt.
Das ganze läuft bei mir in der Programmversion 1.41.
Aber hg4141 schreibt, es läuft auch in der akuellen 1.5er Scriptversion.
Einfach mal ausprobieren und hier posten.
Code: Alles auswählen
proc calcTwilightTimes {latitude longitude timezone dayofyear horizon sunrisevar sunsetvar} {
upvar $sunrisevar sunrise
upvar $sunsetvar sunset
set timediff [expr {-0.171*sin(0.0337 * $dayofyear + 0.465) - 0.1299*sin(0.01787 * $dayofyear - 0.168)}]
set declination [expr {0.4095 * sin(0.016906 * ($dayofyear - 80.086) ) }]
set acosvar [expr ((sin($horizon/57.29578) - sin($latitude/57.29578)*sin($declination)) / (cos($latitude/57.29578)*cos($declination)))]
#Falls der acos-Wert kleiner als -1 ist werden künstliche Werte genommen
if {$horizon == -18
&& $acosvar < -1} then {
set acosvar [format "%.3f" $acosvar]
# jetzt werden den Variablen auf Basis von Mitternacht und der Startzeit von 01.15 Uhr
# die Werte für den nächsten Sonnenaufgang 1,5 Stunden nach Mitternacht und des nächsten Sonnenuntergangs 25 Stunden nach Mitternacht
# des aktuellen Tages zugeordnet
set sunset [expr {[clock scan "0 + 25 hours"]}]
set sunrise [expr {[clock scan "0 + 90 min"]}]
set Untergang [clock format $sunset -format "%d.%m.%Y %T"]
set Aufgang [clock format $sunrise -format "%d.%m.%Y %T"]
log "Die Variable acosvar beträgt momentan $acosvar und liegt somit außerhalb des Wertebereiches"
log "Der astronomische Aufgang wurde auf den $Aufgang gesetzt"
log "Der astronomische Untergang wurde auf den $Untergang gesetzt"
} else {
set suntime [expr {12*acos($acosvar)/3.141592}]
set sunrise [expr {[clock scan "0"] + round((12 - $timediff - $suntime - $longitude/15.0 + $timezone)*3600)}]
set sunset [expr {[clock scan "0"] + round((12 - $timediff + $suntime - $longitude/15.0 + $timezone)*3600)}]
}
}
Auch die zusätzlichen log-Zeilen sind von mir und helfen dabei, in der Log-Datei nachvollziehen zu können, was passiert und ob tatsächlich der neue Wert errechnet wird.
Diese Zeilen können somit auch gelöscht werden.
Gruß
rmeyerz