ephem aktualisiert sunset und sunrise nicht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Speedy77
User
Beiträge: 18
Registriert: Samstag 13. März 2021, 13:14

Hallo an alle Spezialisten,

ich habe folgendes Problem, was ich jetzt schon seit Monaten versuche zu lösen...
Ich habe mir vor Ewigkeiten eine Uhr gebastelt...
hierbei wird in der letzten Zeile der Sonnenaufgang oder der Sonnenuntergang angezeigt.

In folgender def ermittle ich die zwei Events:


Code: Alles auswählen

home = ephem.Observer()
home.lat = "50.35"
home.lon = "12.43"

Code: Alles auswählen

def NextSunEvent():
    global home
    next_sunrise_utc = home.next_rising(ephem.Sun()).datetime()
    next_sunset_utc = home.next_setting(ephem.Sun()).datetime()
    next_sunrise = datetime_from_utc_to_local(next_sunrise_utc)
    next_sunset = datetime_from_utc_to_local(next_sunset_utc)
    AktUTC = datetime.utcnow()
    next_sunrise_in = next_sunrise_utc - AktUTC
    next_sunset_in = next_sunset - AktUTC
    WriteDaten(["Aktuelle Zeit:", AktUTC, datetime.now()])
    WriteDaten(["Nächeter Sonnenaufgang:", next_sunrise_utc,
                next_sunrise,
                next_sunrise_in])
    WriteDaten(["Nächeter Sonnenuntergang:", next_sunset_utc,
                next_sunset,
                next_sunset_in])
    if next_sunrise_in > next_sunset_in:
        return next_sunset, next_sunset_in
    else:
        return next_sunrise, next_sunrise_in
und bekomme folgende Daten in WriteDaten zurückgeschrieben und entsprechend dann in meine Variable im Hauptprogramm über return:

Aktuelle Zeit:;2021-11-30 06:36:01.770034;2021-11-30 07:36:01.770653
Nächeter Sonnenaufgang:;2021-11-30 06:46:48.887955;2021-11-30 07:46:48.887955;0:10:47.117921
Nächeter Sonnenuntergang:;2021-11-30 15:10:47.163964;2021-11-30 16:10:47.163964;9:34:45.393930

Das funktioniert so lange bis das nächste Event erreicht ist, dann wird folgendes berechnet:

Aktuelle Zeit:;2021-11-30 06:47:01.562456;2021-11-30 07:47:01.563155
Nächeter Sonnenaufgang:;2021-11-30 06:46:48.887955;2021-11-30 07:46:48.887955;-1 day, 23:59:47.325499
Nächeter Sonnenuntergang:;2021-11-30 15:10:47.163964;2021-11-30 16:10:47.163964;9:23:45.601508

Nun meine Frage: Warum wird der nächste Sonnenaufgang bzw. -untergang nicht neu berechnet und mir immer der 30.11. zurückgegeben?
Das Gleiche passiert übrigens auch bei jedem weiteren Eintreten... Also keine Neubrechnung...
Sorry falls es eine blöde Frage seine sollte... und ich nur zu beschränkt bin...

Danke für eure Hilfe
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

`WriteDaten` ist nirgends definiert. Die Funktionsnamen halten sich nicht an die Namenskonvention. Ebenso wie Variablennamen werden die komplett klein geschrieben.
Du hast ein Observer-Objekt, dessen Datum Du nie aktualisierst, wie soll dann jemals ein anderes Ergebnis rauskommen?
Vergiss gleich wieder, dass es `global` überhaupt gibt, Alles was eine Funktion braucht, muß sie über ihre Argumente bekommen.
Speedy77
User
Beiträge: 18
Registriert: Samstag 13. März 2021, 13:14

Hallo Sirius3,

erst einmal danke für die Antwort

WriteDaten ist eine def die alles in eine Datei schreibt.
global werde ich bearbeiten...

Sorry noch einmal für mein Gekritzel
Antworten