Astronomie (Sonne und Mond)
sh.sun
Dieses Objekt bietet Zugriff auf Parameter der Sonne. Um dieses Objekt zu verwenden, ist es erforderlich,
den Breitengrad (latitude, z.B. lat: 53.5989481) und den Längengrad (longitude z.B. lon: 10.0459898),
sowie die Höhe über dem Meeresspiegel (elevation z.B.: elev: 20) in der Datei etc/smarthome.yaml anzugeben.
Bemerkung
Die Berechnungen für sh.sun und sh.moon werden intern von einer austauschbaren
Ephemeriden-Bibliothek durchgeführt. Standardmäßig wird ephem verwendet. Optional kann in
etc/smarthome.yaml mit orb_backend: skyfield auf die Bibliothek skyfield umgeschaltet
werden. Vor der ersten Verwendung von skyfield muss einmalig tools/fetch_skyfield_data.py
ausgeführt werden, um die benötigten Ephemeriden-Daten (~17MB, gültig bis 2053) herunterzuladen -
danach ist kein Netzwerkzugriff mehr erforderlich.
sh.sun.pos()
Die Methode sh.sun.pos() liefert die Position der Sonne und hat zwei optionale Parameter:
Der erste Parameter
offsetist der zeitliche Offset zu jetzt in MinutenDer zweite Parameter
degreegibt an, ob das Ergebnis im Bogenmaß oder in Grad erfolgen soll.
# sh.sun.pos(offset) hierbei gibt offset die Differenz in Zeit-Minuten zur aktuellen Zeit an
azimut, altitude = sh.sun.pos() # liefert die aktuelle Position der Sonne, Ergbnis im Bogenmaß
azimut, altitude = sh.sun.pos(30) # liefert die Position, welche die Sonne in 30 Minuten haben wird im Bogenmaß
azimut, altitude = sh.sun.pos(degree=True) # liefert die aktuelle Position der Sonne in Grad
azimut, altitude = sh.sun.pos(-45, True) # liefert die Position, welche die Sonne vor 45 Minuten hatte in Grad
sh.sun.set()
Die Methode sh.sun.set() hat liefert den Zeitpunkt des nächsten Sonnenuntergangs und hat einen optionale Parameter:
Der Parameter
offsetist der Offset zum Sonnenuntergang in Grad (eine negative Zahl gibt an, wieviel Grad die Sonne unter dem Horizont stehen soll)
Das Ergebnis ist ein auf UTC basierendes datetime Objekt
# sh.sun.set(offset) hierbei gibt offset die Differenz in Grad zum nächsten Sonnenuntergang an
sunset = sh.sun.set() # liefert den utc-basierten Zeitpunkt des nächsten Sonnenuntergangs
sunset_tw = sh.sun.set(-6) # liefert den utc-basierten Zeitpunkt zu dem die Sonne 6° unter dem Horizont
# steht. (Ende der bürgerlichen Abenddämmerung)
Bemerkung
An Orten mit Mitternachtssonne bzw. Polarnacht kann es vorkommen, dass die Sonne an einem bestimmten
Tag den angegebenen Horizont gar nicht erreicht (z.B. geht sie im Sommer gar nicht unter). In diesem
Fall liefert sh.sun.set() (und analog sh.sun.rise()) den Wert None zurück, statt einer
Datums/Zeitangabe.
sh.sun.rise()
Die Methode sh.sun.rise() hat liefert den Zeitpunkt des nächsten Sonnenuntergangs und hat einen optionale Parameter:
Der Parameter
offsetist der Offset zum Sonnenuntergang in Grad (eine negative Zahl gibt an, wieviel Grad die Sonne unter dem Horizont stehen soll)
Das Ergebnis ist ein auf UTC basierendes datetime Objekt
# sh.sun.rise(offset) hierbei gibt offset die Differenz in Grad zum nächsten Sonnenaufganges an
sunrise = sh.sun.rise() # liefert den utc-basierten Zeitpunkt des nächsten Sonnenaufganges
sunrise_tw = sh.sun.rise(-6) # liefert den utc-basierten Zeitpunkt zu dem die Sonne wieder 6° unter
# dem Horizont steht. (Beginn der nächsten bürgerlichen Morgendämmerung)
sh.moon
Neben den drei Funktionen pos, set und rise (wie beim Objekt sh.sun) gibt es noch
zwei weitere Funktionen:
Neben den drei Funktionen sh.moon.pos(), sh.moon.set() und sh.moon.rise() (analog zum sh.sun Objekt)
stehen zwei weitere Funktionen (sh.moon.light() und sh.moon.phase()) zur Verfügung.
sh.moon.pos()
Die Methode sh.moon.pos() liefert die Position des Mondes und hat zwei optionale Parameter:
Der erste Parameter
offsetist der zeitliche Offset zu jetzt in MinutenDer zweite Parameter
degreegibt an, ob das Ergebnis im Bogenmaß oder in Grad erfolgen soll.
# sh.moon.pos(offset) hierbei gibt offset die Differenz in Zeit-Minuten zur aktuellen Zeit an
azimut, altitude = sh.moon.pos() # liefert die aktuelle Position des Mondes, Ergbnis im Bogenmaß
azimut, altitude = sh.moon.pos(30) # liefert die Position, welche der Mond in 30 Minuten haben wird im Bogenmaß
azimut, altitude = sh.moon.pos(degree=True) # liefert die aktuelle Position des Mondes in Grad
azimut, altitude = sh.moon.pos(-45, True) # liefert die Position, welche der Mond vor 45 Minuten hatte in Grad
sh.moon.set()
Die Methode sh.moon.set() hat liefert den Zeitpunkt des nächsten Monduntergangs und hat einen optionale Parameter:
Der Parameter
offsetist der Offset zum Monduntergang in Grad (eine negative Zahl gibt an, wieviel Grad der Mond unter dem Horizont stehen soll)
Das Ergebnis ist ein auf UTC basierendes datetime Objekt
# sh.moon.set(offset) hierbei gibt offset die Differenz in Grad zum nächsten Monduntergang an
moonset = sh.moon.set() # liefert den utc-basierten Zeitpunkt des nächsten Monduntergangs
moonset_tw = sh.moon.set(-6) # liefert den utc-basierten Zeitpunkt zu dem der Mond 6° unter dem Horizont steht
Bemerkung
Analog zu sh.sun.set()/sh.sun.rise() kann sh.moon.set()/sh.moon.rise() an Orten mit
entsprechenden Bedingungen None zurückliefern, wenn der Mond den angegebenen Horizont an dem
betreffenden Tag nicht erreicht.
sh.moon.rise()
Die Methode sh.moon.rise() hat liefert den Zeitpunkt des nächsten Monduntergangs und hat einen optionale Parameter:
Der Parameter
offsetist der Offset zum Monduntergang in Grad (eine negative Zahl gibt an, wieviel Grad der Mond unter dem Horizont stehen soll)
Das Ergebnis ist ein auf UTC basierendes datetime Objekt
# sh.moon.rise(offset) hierbei gibt offset die Differenz in Grad zum nächsten Mondaufganges an
moonrise = sh.moon.rise() # liefert den utc-basierten Zeitpunkt des nächsten Mondaufganges
moonrise_tw = sh.moon.rise(-6) # liefert den utc-basierten Zeitpunkt zu dem der Mond wieder 6° unter
# dem Horizont steht.
sh.moon.light()
sh.moon.light(offset) liefert einen Wert von 0 bis 100 der beleuchteten Fläche zur aktuellen Zeit + Offset.
sh.moon.phase()
sh.moon.phase(offset) gibt die Mondphase als ganze Zahl (0 bis 7) zurück,
wobei: 0 = Neumond, 4 = Vollmond, 6 = abnehmender Halbmond