Tag oder Nacht?? SunCalc kann helfen

  • --- Es ist soweit, SunCalc V02 ist verfügbar ---


    --- Version 2.3: Sommerzeit-BUG gefixt ---


    Hallo Forum,


    inspiriert durch die ganzen Scripts zur automatischen Tag/Nacht-Umschaltung oder Abdunklung des Displays habe ich ein kleines Tool programmiert, welches vielleicht für den einen oder anderen ganz hilfreich sein kann.


    Das Tool heißt SunCalc und berechnet anhand der aktuellen Position und der aktuellen Uhrzeit ob es Tag ist (also nach Sonnenaufgang und vor Sonnenuntergang) oder Nacht (also nach Sonnenuntergang und vor Sonnenaufgang). Das Ergebnis wird in Form einer txt-Datei gesichert. Diese kann dann z.B. mit MortScript ausgewertet werden.


    Das Tool liest aus der Datei GPSTMCInfo.txt die aktuelle Position und berechnet für diese den Zeitpunkt des Sonnenaufganges und Sonnenunterganges anhand relativ einfachen Formeln (will sagen, dass die ermitteleten Zeiten evtl. nicht auf die Minute genau stimmen). Die Ergebnis-Datei lautet DayOrNight.txt. Zusätzlich wird noch eine SunCalc.ini Datei benötigt. Diese Ini muss zwingend in dem Verzeichnis liegen, in dem auch SunCalc liegt. Innerhalb der Ini können folgende Optionen eingestellt werden:
    1. Pfad zu dem Verzeichnis in dem die GPSTMCInfo.txt liegt
    2. Pfad zu dem Verzeichnis in dem die DayOrNight.txt geschrieben werden soll
    3. Horizonzhöhe der Sonne, für die der Auf- und Untergang berechnet werden soll.
    4. Einfache oder erweiterte Ausgabe


    Im Dateianhang ist neben der SunCalc.exe auch eine SunCalc.ini zu finden, so wie sie bei mir funktioniert. Diese soll gleichzeitig als Vorlage dienen, da die SunCalc.ini nicht sehr fehlertolerant ist (wäre mir zu viel Programmierarbeit gewesen :gap). Also es werden exakt vier Zeilen in exakt der Reihenfolge erwartet wie vorgegeben. SunCalc liest die benötigten Informationen ab einer bestimmten Position in der Zeile, also bitte auch nicht die Leerzeichen entfernen oder irgendwelche Einrückungen vornehmen!!!
    Die ersten zwei Parameter sind m.E. selbsterklärend, der dritte Parameter ist auf -0.833333 Grad voreingestellt. Hierdurch wird die Refraktion innerhalb der Atmosphäre berücksichtigt. Wer mag kann hier gerne ein wenig experimentieren.
    Der vierte Parameter beeinflusst die DayOrNight.txt. Steht ExtendedOutput auf 0 so ist die Ausgabe ein "Einzeiler". Folgender Inhalt ist möglich:
    ERROR - SunCalc.ini not found
    ERROR - SunCalc.ini not correct / complete
    ERROR - GPSTMCInfo.txt not found
    NOSIG -> Es liegt zur Zeit kein auswertbares GPS-Signal vor
    DAY -> Es ist Tag
    NIGHT -> Es ist Nacht


    Steht ExtendedOutput auf 1 so werden neben der ersten Zeile im Falle einer erfolgreichen Berechnung zusätzlich folgende Ausgaben erzeugt:
    Sonnenaufgang in UTC
    Sonnenuntergang in UTC
    Sonnenaufgang in lokaler Zeit
    Sonnenuntergang in lokaler Zeit
    Verwendete Horizonthöhe
    Verwendete Breite
    Verwendete Länge


    Die Ausgaben werden ohne erklärenden Text erzeugt, da dieser dann auch nicht wieder bei der Auswertung "rausgeschnippelt" werden muss.


    Das Tool ist bewusst einfach gehalten, es gibt keine Eingabemöglichkeiten über die SunCalc.ini hinaus, eine Bildschirmausgabe wird nicht erzeugt, so dass es während der laufenden Navigation scriptgesteuert gestartet werden kann (z.B. über Mortscript). Nach dem Start des Tools wird das Ergebnis wie beschrieben erzeugt, danach beendet sich das Tool selber, für eine erneute Berechnung ist also ein erneuter Start des Tools nötig.


    Wer Interesse hat, kann SunCalc ja einfach mal ausprobieren, einfach die exe und die ini gemeinsam in ein beliebiges Verzeichnis kopieren, die SunCalc.ini den eigenen Bedürfnissen anpassen, fettich.


    Das Tool ist in C programmiert und läuft auf meinem PDA problemlos. Ich konnte es bis jetzt noch nicht bis ins letzte Detail testen, ebenfalls kann ich nicht garantieren, dass es auf anderen PDAs läuft.....also am besten Testen und bescheid geben.


    Die erste Version steht an dieser Stelle nicht mehr zum Download bereit, da die Berechnung bugbehaftet war. Für korrekte Ergebnisse bitte nur noch die Version 2 benutzen.


    ACHTUNG Version 2.1 ist verfügbar. In dieser Version ist der Bug, den zappa gefunden hat (hoffentlich) gefixt (falsche Berechnung der lokalen Sonnenauf- und Sonnenuntergangszeiten zwischen 0 und 1 Uhr morgens). Ansonsten gibt es keine Änderungen. User, die die lokalen Zeiten nicht auswerten, benötigen die neue Version nicht.


    ---------ACHTUNG-----VERSION 2.2-------ACHTUNG-----------
    Unser Forum-Mitglied zappa hat eine weiteren Bug in SunClac entdeckt. Bei einer rechnerisch ermittelten Sonnenauf- oder -untergangszeit, die kurz vor einer vollen Stunde liegt (also z.B. 16:59:37) sollte eigentlich auf die volle Stunde aufgrundet werden (also 17:00). Dies hat leider nicht funktioniert, stattdessen wurde die vorherige volle Stunde ausgegeben (also 16:00). Dieser BUG ist in der Version 2.2 behoben.
    Ansonsten bleibt alles unverändert. Da dieser Bug sowohl die lokalen, als auch die UTC-Zeiten, als auch die textuelle Ausgabe betrifft, stehen die Versionen 2.0 und 2.1 ab sofort nicht mehr zum Download bereit.
    Vielen Dank für Euer Verständnis



    ---------ACHTUNG-----VERSION 2.3-------ACHTUNG-----------
    SunCalc ist so konzipiert, dass die Umstellung von Winter- auf Sommerzeit und umgekehrt automatisch bei der Ermittlung der lokalen Sonnenauf- und -untergangszeiten mit berücksichtigt wird. Diese Funktionalität war fehlerhaft und hat trotz der jüngsten Umstellung auf Sommerzeit "unbeirrt" Winterzeit ausgegeben (wie pingo bemerkt hat). Mir der Version 2.3 ist dieser Bug behoben. Die lokale Zeit wird korrekt ausgegeben. Ansonsten keine Änderungen zu der Vorversion. User, die die lokalen Zeiten nicht auswerten benötigen Version 2.3 nicht zwingend.



    Pettersson

  • Hey Petterson,


    Du programmierst also für PocketPCs? Das ist prima, melde Dich doch mal per PM bei mir :)


    MfG,


    Seretix

  • @Pettersson
    Tolle Idee!
    Bei mir funktioniert das auch, aber vielleicht solltest du deine Berechnungen nochmal überprüfen.
    Als Vorgabe hab ich mal eine fiktive GPSTMCInfo genommen:
    "
    x = 7.000000
    y = 50.000000
    nsat = 8
    course = 342
    speed = 22
    ntmcm = 0
    station = ---
    "
    Nach meinen Brechnungen geht die Sonne am 24.12 um 08:25:19 auf.
    Bis 08:59 erzeugt dein Prog aber "NIGHT". Erst genau ab 9:00 "DAY".
    Eine gute Berechnung findet sich hier.

  • Zitat

    Original von Pettersson
    Hallo Forum,


    Damit das Tool funktioniert muss es im selben Verzeichnis gespeichert sein, wie die GPSTMCInfo.txt vom MN, da es die Position durch auslesen dieser Datei bezieht.
    Pettersson


    Hi Petterson,


    finde ich einer SUPER-Idee :D
    Evt. könnte ich dein Prog ja mit meinem MortScript kombinieren - falls du nichts dagegen hast - dann könnte ich mir die ganze Berechnerei sparen.


    Allerdings fände ich es besser, wenn ich das Programm auch auf Speicherkarte legen könnte (Speicherplatz ist kostbar..).
    Vielleicht kannst du da noch was machen?

  • @sososo


    Danke für den Hinweis, wie gesagt hatte ich noch nicht ausführlich Zeit zum Testen. Die Algorithmen, die ich verwendet habe stammen übrigens von hier. Ich werde das auf jeden Fall überprüfen (allerdings ist jetzt Weihnachten, Familie und so, also gib mir ein wenig Zeit).



    @zappa


    Klar kannst Du SunCalc mit MortScript kombinieren, dafür ist es ja gedacht (mache ich ja auch). Bezüglich Deines Wunsches nach der Speicherkarte kann ich schon was machen aber siehe "sososo" (Weihnachten und so...)



    In diesem Sinne
    frohe Weihnachten
    Pettersson

  • @Pettersson
    Klar so gehts... kleiner Finger - ganze Hand und so weiter...
    Jetz feier man schön Weihnachten - die Gemeinde hat viel Zeit. :D


    (Für nach Weihnachten: Ich komme bei der von dir angegebenen Seite auf 8:29:44.)


    Frohe Weihnachten !!!

  • Zitat

    Original von sososo
    @Pettersson
    Klar so gehts... kleiner Finger - ganze Hand und so weiter...


    Ja nee - is klar.. :D


    das kenne ich ja auch - wer A sagt muß auch B sagen..


    IDEAL wäre ja (für mich) wenn die errechnete Zeit ausgegeben würde
    - dann könnte man noch etwas mit Dämmerung (und so) arbeiten ;D ;D


    Ist aber nicht eilig...
    Weihnachten mit Frau und Kindern geht erst mal vor.


    In diesem Sinne..


    "FROHES FEST"

  • Mhh schade, ich habe einen Schreibschutz auf der Datei da ich NAvigon auf der SDKarte habe, muss ich wohl dann manuell umschalten

  • @HansiHusten


    Wenn du MN5.2 verwendest kannst Du ja über die GPSTMCInfo.ini den Speicherort der GPSTMCInfo.txt beeinflussen.



    @all


    Ich denke mal spätestens morgen / übermorgen müsste ich die zweite Version von SunCalc fertig haben. Da kann mann dann auch über eine SunCalc.ini festlegen, wo die GPSTMCInfo.txt liegt (SunCalc muss also nicht im gleichen Verzeichnis liegen) und in welches Verzeichnis die DayOrNight.txt ausgegeben werden soll. Desweiteren lässt sich über die SunCalc.ini der Höhenwinkel der Sonne festlegen, für den der Aufgang/Untergang berechnet werden soll. Zudem läßt sich festlegen, ob lediglich die Ausgabe DAY oder NIGHT erzeugt werden soll oder ob auch noch die berechneten Zeiten mit ausgegeben werden sollen.


    Ach ja, der Bug den sososo gefunden hat ist dann auch behoben... :gap



    Pettersson

  • @petterson


    hört sich verdammt gut an!! :respekt
    Vielen Dank schon mal im Voraus

  • Hey genial.


    Soetwas habe ich schon immer gesucht ein "Programm" welches die Tag/Nacht Umstellung eigenständig Regelt. Ohne den MortRunner oder wie auch immer dieses Programm funktioniert.


    Jetzt überkommt mich noch eine ganz Utopische Idee wie wäre es denn wenn Pettersson mit Markus zusammenarbeiten würde und dieses Programm somit in den POI-Warner zu integrieren. Muss nicht sein wäre aber nicht schlecht da so neben MN|5 nur ein Programm läuft.


    Ich werde mir dann die Version 2.0 von SunCalc zu gemüte führen gg und freu mich schon drauf gg.


    An dieser stelle schon mal herzlichen Dank an Pettersson!!!

  • @mephisto2k


    Ich glaube, du hast da was mißverstanden.
    So wie ich das sehe gibt, das Programm die Zeiten des Sonnenaufgangs und Sonnenunterganges anhand der GPS-Koordinaten aus (was schon super ist!!)
    Da wird nichts (ohne zusätzliches Script) umgeschaltet.

    Einmal editiert, zuletzt von zappa ()

  • Moment.


    Also ich habe das so verstanden das das Programm an der Position und Zeit erkennt ob es nun Tag oder Nacht ist und dies ohne den MortRunner automatisch umschaltet.

  • @mephisto2k


    Nöö..


    macht aber nix - so kann es jeder der's braucht in sein Script einbauen.
    Das Script wird dadurch echt klein :gap

    Einmal editiert, zuletzt von zappa ()