Da die Variable $ontime den Unix Timestamp der Variable $VarTsSunset enthält, diese aber erst am Ende von Andys Script ermittelt wird, passiert 0 Uhr folgendes:
Die Variable $ontime enthält noch den Timestamp des alten Sonnenuntergangs des vorherigen Tages, $offtime aber schon den Timestamp des neuen Tages. Das ist falsch.
Wenn die Berechnungen von Sonnenauf- und Sonnenuntergang am Anfang des Scripts stehen, müßte es funktionieren.
Die Funktion mktime ergänzt alle fehlenden Angaben automatisch mit den aktuellen Werten, somit wird durch die Zeile ein Zeitstempel mit der gegebenen Zeit und dem aktuellen Datum erzeugt. Ein entsprechender Vergleich z.B. mit date_sunrise würde also korrekt ausgewertet werden.
@bolcebruce:
Thomas hat vollkommen recht, um Mitternacht wird folgender Vergleich ausgeführt:
if (GetValue(VarGBFlag) == false AND time() >= $ontime AND time() <= $offtime)
VarGBFlag ist ja zu diesem Zeitpunkt falsch, aber in $ontime steht dann noch vom Vortag 02.01.2009 18:30, somit ist der Vergleich mit der Funktion time(), die ja zu diesem Zeitpunkt 03.01.2009 00:00 zurück gibt, wahr. Ergo wird das Licht um Mitternacht eingeschaltet.
Wenn du die Zeilen wie von Thomas angeregt an den Anfang stellt sollte es korrekt funktionieren.