Sonnenposition

  • Nein, egal, ob hell oder dunkel, es wird immer angezeigt:

    Code
    Sonne sollte ueberm Horizon sein.
    azimut sieht gut aus, gute Nacht...zzzZZZzzz...
    Sonne sollte ueberm Horizon sein.
    azimut sieht gut aus, gute Nacht...zzzZZZzzz...

    Ich bin gerade dabei, die Richtung für die Schrittmotoren festzulegen und den Startschalter zu basteln.

  • Hallo fred0815,

    Die Datei sonnenposition.py liegt auf der SD-Karte?

    Oder auf eine gemounteten Festplatte? (Wo du von mehreren Rechnern auf die gleiche Datei zugreifen könntest?)

    ich bin per ssh auf dem Pi, aber normalerweise klappt das mit den Zeilenumbrüchen, wenn ich den Text kopiere und mit putty per rechtsklick einfüge.

    Auf dem Raspi müssen die Dateien unix-Zeilenende (<LF>) haben. Wenn du Python auf dem Windows-PC hast und die Datei auf den PC soll, braucht sie Window-Zeilenende (<CR><LF>). Genauso wie du schilderst, mache ich es auch. Als Editor verwende ich nano oder vi.

    Woran kann es liegen?

    Wenn du von der Webseite mit 'raw' in den Notepad++ hereinkopierst (rechte Maustaste + Einfügen), was zeigt notepad++ an (mit Ansicht => Nicht druckbare Zeichen => Alle Zeichen anzeigen"). Es sollten unix-Zeilenenden zu sehen sein.

    Sogar in Notepad++ zerreisst es mir plötzlich die Zeilenumbrüche, obwohl ich auf Unix gestellt habe.

    Was bedeutet : "zerreisst es mir plötzlich die Zeilenumbrüche"?

    Was genau machst du, wenn das passiert?

    Ich habe die Python-Dateien mit unix-Zeilenende auf meinem Win7-Notebook gespeichert, bearbeite sie evtl. mit Notepad++ und kopiere sie per WinSCP auf den Raspi.

    Gruß kle

  • Nein, egal, ob hell oder dunkel, es wird immer angezeigt:

    Merkwürdig. Zumal die Zeile so gar nicht im Skript vorkommt. ;)

    Setz doch mal ein "print azimut,sonnenhoehe" ins Skript (zwischen Zeile 13 und 14) und schau, ob die gleichen Werte rauskommen wir beim Aufruf von Hand. Die Koordinaten hast Du korrigiert, ja?

  • so sieht es aus.

    (Azimut: Nord = 0 deg, Ost = 90 deg, Süd = 180 deg, west = 270 deg)

    (Zenith: senkrecht nach oben in den Himmel= 0 deg, Sonnenaufgang bzw Sonnenuntergang = 90 deg, Sonnenhöchststand heute in München = 65,22 deg)

    Sonnenhöchststand seltsamerweise um 11:57:25 Uhr. Kommt das durch den Algorithmus zustande oder ist das 'normal'?

  • In diesem Script von dir schon.

    Sonnenposition

    Nö, "azimut sieht gut aus" wirst Du darin nicht finden.

    Das Print gibt auch Aufschluss darüber, vom Zenit werden keine 90 subtrahiert, deshalb nie im Bereich des Sonnenwinkels und beim Azimut ist es einfach nur verdreht.

    Ich schrieb ja, ich sei nicht ganz sicher, ob ich die richtigen Elemente der Rückgabe der Funktion ausgewählt habe. Aber 90 subtrahieren und irgendwas umdrehen sollte nicht so kompliziert sein, oder?

  • kle

    Zitat

    Sonnenhöchststand heute in München = 65,22 deg

    Wohl kaum, nicht mal 30 Grad überm Horizont.

    Zitat

    Sonnenhöchststand seltsamerweise um 11:57:25 Uhr. Kommt das durch den Algorithmus zustande oder ist das 'normal'?

    Das liegt an der Winterzeit.

    Manu

    Zitat

    Nö, "azimut sieht gut aus" wirst Du darin nicht finden.

    Aber:

    Code
    print("azimut sieht dunkel aus, gute Nacht...zzzZZZzzz...")
    Zitat

    Aber 90 subtrahieren und irgendwas umdrehen sollte nicht so kompliziert sein, oder?

    Nö, aber jetzt zock ich erst mal was zur entspannung ;)

  • Wohl kaum, nicht mal 30 Grad überm Horizont

    ~30 Grad ist doch plausibel, südlicher Wendekreis ~ -23Grad. 2/3 davon ist -16Grad (da steht die Sonne im Moment mittags senkrecht) und 48Grad (München) also -16Grad + 48 Grad = 64 Grad.

    Diese Sonne kannst Du mit der Maus über den Himmel schieben. Am Meridian ist sie heute unter 30Grad über dem Horizont.

    Das liegt an der Winterzeit

    In den Sonne-Link steht auch 11:57 für Meridian, Weist Du einen Link wie das mit der Winterzeit zusammenhängt?

    Gruß kle

  • Kolläschn,

    Weist Du einen Link wie das mit der Winterzeit zusammenhängt?

    Die Sommerzeit ist MESZ, die Winterzeit ist MEZ (Mitteleuropäische Zeit), also Normalzeit.

    Die beiden unterscheiden sich um eine Stunde, um die vor- oder zurückgestellt wird.

    Jetzt (MEZ) steht die Sonne um ca. 12:00 im Zenit. Also passt die Rechnung. Die paar Minuten Abweichung liegen in der Abweichung vom 0. Längengrad begründet. Also passt alles...

    Ach, was war das früher noch schön. Da lief die Zeit einfach so von dannen. Die Uhren musste man nicht alle naselang umstellen. Es gab nur MEZ.


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (10. November 2017 um 18:02)

  • Jetzt stehe ich natürlich vor dem nächsten Problem.

    In diesem Script dreht sich der Schrittmotor ja unendlich nach links.

    Wo und wie im Script muss ich jetzt ansetzen, dass sich der Motor nur soweit dreht, bis er den Kontaktschalter erreicht hat, oder in einen Timeout läuft und dann mein Bashscript zum zurücksetzen der GPIOs auf 0 ausführt ? :conf:

    Wobei letzteres bestimmt auch mit Python geht, aber mit der shell kenne ich mich besser aus und bekomme ohne Hilfe mehr gebacken. :blush:

    Das ist nochmal der Code, welcher den Schrittmotor nach links drehen lässt:

    P.S.: Mit der alten Forensoftware konnte ich per copy&paste den Code direkt zw. manuell geschriebenem [ code ] und [ / code ] packen,ohne dass es mir die Einrückungen zerrissen hat, das geht mit der neuen Forensoftware nicht mehr, da muss ich immer auf das Code-Zeichen klicken und dort den Code einfügen. Nun ja.

    Im übrigen habe ich hier noch eine interessante Seite zur Sonnenberechnung mit dem Arduino gefunden, die ich niemandem vorenthalten möchte:

    Doofe Umlaute in Links, wenn der Link nicht geht, dann nehmt den englischen, oder geht einfach auf wiki.happylab.at und sucht nach Sonnenstandsberechner.

    http://wiki.happylab.at/w/Sonnenstandsberechner_(für_sun_tracker_devices)

    http://wiki.happylab.at/w/Solar_Arduino_tracker

  • Hm, ich bin schon die ganze Zeit am rumprobieren und jetzt bewegt sich der Schrittmotor gar nicht mehr, obwohl in der Konsole steht, dass der Motor gedreht wird. Das Testscript läuft, aber mein vermurkster Code nicht: :conf:

    EDIT: War natürlich mein Fehler, falsche Einrückung...:daumendreh2:

  • So, hier mal die vorläufig letzte Version des Python-Scripts für den Azimut-Schrittmotor.

    Es fehlt noch sehr viel, der Code ist bestimmt total wirr etc. Wer möchte, kann ihn ja verändern und verbessern, wie er möchte.

    Insbesondere fehlt die Funktion die 4 GPIOs für den Azimut-Schrittmotor wieder auf 0 zu setzen, wenn das Programm beendet wird, in dem Fall erwärmt sich der Schrittmotor, aber ich bekomme es einfach nicht hin. :no_sad:

    Aber als Workaround lässt sich überprüfen, ob das Python-Script läuft. Wenn das Python-Script nicht läuft, wird ein Bashscript ausgeführt, welches die 4 GPIOs auf 0 setzt. Per crontab wird das Python-Script morgens wieder gestartet.

    Im Einsatz ist so ein Schrittmotor mit ULN2003, ohne Zahnräder, lässt sich auch mit 12 Volt betreiben.

    Für eine Umdrehung sind ca. 4096 Schritte nötig.

    Schrittmotor

    sunstepper_azimut.py

    Aber das Python-Script macht immerhin folgendes:

    Es wartet auf den Sonnenaufgang, prüft, ob der Azimut-Schrittmotor links am Schalter ist, wenn nicht fährt er nach links bis zum Schalter und von dort aus langsam nach rechts, bis zum rechten Schalter, dann wieder zurück.

  • Bevor das Thema noch Moos ansetzt, hier mal ein zwischenzeitliches Update, nicht, dass jemand auf die Idee kommt, der Thread sei erledigt. :cool:

    Wie Frage ich nach Hilfe?

    Der despotische Bierbaron sagt: Kein Support per PN ! :angel::wink:

    10 Mal editiert, zuletzt von fred0815 (4. Januar 2021 um 10:54) aus folgendem Grund: Letztes Update ist vom 04.01.2021

  • Hier mal die vorläufig finale Version, falls noch jemand Fehler findet, oder Verbesserungsvorschläge hat, nur her damit.

    Und die erforderliche sunposition.py als Anhang:

    • Offizieller Beitrag

    Du willst RPi.GPIO ja nicht in GPIO umbenennen, denn dafür wäre das as da, z.B.

    Python
    import RPi.GPIO as Ronnyfamilie

    um dann mit z.B.

    Python
    Ronnyfamilie.input(pin)

    weiterzumachen.

    Du willst die Klasse oder Funktion (habs mir nich genauer angesehen) GPIO vom Modul RPi importieren.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!