-
Notifications
You must be signed in to change notification settings - Fork 103
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Uszu gets unreliable #993
Comments
I have limited the number of iterations to 1000 as a test and everything seems to be working again. However, I have no idea how much this affects the calculation of the time points. |
I thought that Skyfield could be a nice replacement for pyephem. But when I examined this some years ago it just was not ready and it needed external files to be downloaded from internet source so I decided to wait. In the meantime: Would you mind share your changes? We could implement a fix at best |
Gow did you linit iterations? Would a parameter for the plugin be a solution? |
I have changed code directly in ephem, if then we would have to fork ephem, maybe we also get a pull request with a new parameter for the function through... But I think the best thing would be to replace the lib... ephem/init.py
|
Hey guys, I have some time right now. So I've started replacing ephem with skyfield. At least in ephem they seem to return the times for the current day. However, the corresponding skyfield methods return the next time after the given time. Which of these is the intended behavior? The code is currently located at: |
Ich glaube es ist einfacher in Deutsch zu schreiben als das ganze in DEnglish zu machen :-) Skyfield bietet die Möglichkeit eine einem Rutsch eine bestimmte Zeitspanne nach risings und settings zu durchsuchen, und ebenfalls nach noon und midnight. Mein Ansatz war es ein ganzes Jahr beim Start zu berechnen für
Es gibt zwei Sachen die mich damals davon abgehalten haben skyfield einzusetzen:
Ein Vorteil ist das schöne API von Skyfield. Es ist sauber vorbereitet und man kann recht sicher sein das es nicht so von deprecations wimmelt wie andere Module. |
Welchen Vorteil versprichst du dir von diesem Ansatz? Was ich festgestellt habe, ist, dass man immer innerhalb eines Zeitfensters suchen muss, das entsprechend groß gewählt werden muss. (evtl. problematisch in Polnähe) In ephem konnte direkt nach dem nächsten Event gesucht werden..
|
Skyfield gibt auf Anfrage die risings und settings für ein ganzes Jahr zurück. Und da die Werte immer wieder angefordert werden sollten die Ergebnisse halt gecached werden. Es ist nicht notwendig sunrise 10 mal am Tag zu ermitteln nur weil es irgendwo in der Logik steht. |
Kann ich machen.
Das Problem ist, dass es Regionen auf der Erde gibt, in denen es nicht jeden Tag einen Sonnenaufgang/-untergang gibt, sodass die Abfrage nach dem nächsten Sonnenaufgang zum Zeitpunkt T wohl die geeignetere Variante ist.
Ich habe NumPy vor ewigen Zeiten auf dem RPI1 benutzt, da gab es tatsächlich einige Herausforderungen. Nachdem ich jetzt Skyfield gegen Ephem getestet habe, komme ich immer mehr zu dem Schluss, dass es eine gute Idee ist Ephem zu ersetzen. Ephem, macht sehr merkwürdige Dinge, wenn ich den nächsten Sonnenaufgang für 5 Uhr anfrage und der Sonnenaufgang war schon um 4:49, bekomme ich trotzdem 4:49. Erst ab 8 Uhr bekomme ich den für den nächsten Tag, das ergibt keinen Sinn. Leider ist Skyfield deutlich langsamer, das cachen macht daher auch sin. Ich habe heute noch Zeit ein oder zwei Dinge umzusetzen, danach geht mein Zeitbudget für private Projekte leider wieder gegen 0. |
So wie es aussieht, liegt das Problem mit Azimut und Altitude nicht in Ephem, sondern durch die inkorrekte Umwandlung der Zeitzonen (dt.replace(tzinfo=tzutc())) mit astimezone(datetime.UTC) ist alles korrekt. |
So wie es aussieht, funktioniert die _avoid_neverup funktion nicht aussreichend. Wenn ich doff in rise auf 90 setze, bekomme ich genau den Fehler, für den ich das Issue geöffnet habe. |
Deine Beobachtung mit _avoid_never_up kann ich nachvollziehen. Wobei man die Funktion dann eigentlich nicht mehr benötigen würde, sie ist ja nur reingekommen um es abzufangen das die Sonne z.B. in Hammerfest im Juli niemals untergeht. Wenn auf Skyfield umgestellt ist, wird man die Funktion nicht mehr benötigen. Der Winkel der minimalen/maximalen Sonnenwinkel ist ja auch nicht unbedingt zu Mitternacht/High Noon erreicht sonder je nach Wohnort etwas anders als die Berechnung. Schau einfach wie weit Du für Dich kommst und teste ob es für Dich klappt. Ich schaue mir Deinen Code gerne an wenn ich wieder etwas Luft habe, dann können wir Ephem im Code durch Skyfield ersetzen. Ich würde das aber vor dem nächsten Release nicht unbedingt mehr angehen wollen. |
Moin, Ich hatte in/für Hamburg Probleme, wenn ich mich nicht nur für die bürgerliche Dämmerung interessierte, sondern für die astronomische Dämmerung (wenn also die Sonne 18° unter dem Horizont steht). Dann bekam ich früher im Sommer den Fehler, dass die Sonne nie unter dem Horizont stand. |
Dann müsste man ggf. einige weitere neue Events einbauen. Denn über die Liste mit den Sonnenuntergängen bekommt man halt nur die konkrete Zeitpunkte. In USZU kann man jedoch beliebige Offsets (inkl. Grad und Minuten) für den Sonnenstand einbauen. Ich z.b. nutze die Funktion für mein HCL-Lighting. |
@msinn genau sowas meine ich... |
Ja, das ist korrekt. Nicht nur die Sonnenauf und Untergänge sondern die Anfragen die reinkommen sollten gecached werden. Aber das kann man ggf. auch später machen. |
Weitere Frage: Aktuell ist es nämlich letzteres, ersteres wäre aber intuitiver (off =-12 wäre dann z.B. Nautische Dämmerung) |
Ist jetzt soweit umgesetzt, BTW:
zu
ggf. schafft es der Fix ja in nächste release |
Hi folks,
I have noticed several times that uszu unfortunately often works unreliably. sometimes it just seems to miss things.
What is worse, however, is that there are some scripts that control the brightness depending on the position of the sun and uszu only makes nonsense.
I then tried to debug this and noticed that a Python thread was running amok.
Permanently 100% CPU.
I have now been able to narrow down the problem to the ephem library. The problem is that the calculation of the position of the sun and the moon converges badly under some constellations (_find_rise_or_set). Unfortunately, this also explains why uszu sometimes runs completely without problems. I have installed a counter as a test, and the function currently does not converge even over 100 million iterations, and blocks the complete uszu .
There are also some issue entries in ephem
brandon-rhodes/pyephem#266
brandon-rhodes/pyephem#232
Unfortunately, nothing has happened for years
The text was updated successfully, but these errors were encountered: