SUNRISE_EL

SUNRISE_EL definiert eine Reihe von Perl-Subroutinen (z.B. zur Nutzung mit at):

Breite, Länge und Höhenwinkel

Bevor du SUNRISE_EL verwendest, solltest du im global-Device die Werte für latitude (geographische Breite) und longitude (geographische Länge) entsprechend deines Standorts setzen.

Exkurs: latitude & longitude ermitteln

Deine geopgragischen Koordinaten kannst du z.B. mit Google Maps bestimmen. Dazu setzt du einen Punkt auf der Karte und findest dann im unteren Bereich der Karte die Angabe für beide Werte. Der erste Wert ist die geographische Breite (latitude); der zweite Wert die geographische Länge (longitude).

Der Default-Wert ist 50.112, 8.686 (Frankfurt am Main).

SUNRISE_EL geht von einem Höhenwinkel der Sonne bezogen zum Horizont, h, von -6° aus. Dieser Wert bedeutet, dass die Sonne 6° unter dem Horizont steht und Lesen im Freien ohne künstliche Beleuchtung nicht mehr möglich ist (civil twilight, bürgerliche Dämmerung). SUNRISE_EL speichert diesen Wert in $defaultaltit.

Siehe auch perldoc DateTime::Event::Sunrise für weitere Hinweise.

Befehlsreferenz

Parameter

Jede der folgenden Funktionen akzeptiert bis zu vier (bzw. fünf) Parameter in der angegebenen Reihenfolge:

unix timestamp

Ausschließlich sunrise_abs_dat() & sunset_abs_dat() erwarten als ersten Parameter einen Unix-Timestamp (Unix-Epoche) in Sekunden, der ein Datum spezifiziert. Andere Subroutinen erwarten diesen Parameter nicht!

altitude

Eine der folgenden Zeichenketten, die unterschiedliche Höhenwinkel h definieren und den Wert von $defaultaltit verändern.

Erlaubte Werte sind:

  • REAL, h = 0°,
  • CIVIL, h = -6°,
  • NAUTIC, h = -12°,
  • ASTRONOMIC, h = -18°,
  • oder HORIZON=, gefolgt von einer positiven oder negativen Zahl ohn Gradzeichen, die einen Höhenwinkel angibt.
offset

Offset in Sekunden, der zu dem Rückgabewert der Funktion addiert wird.

isday() ignoriert diesen Wert.

min

Einen Zeitstempel im Format hh:mm, vor dem keine Aktion ausgeführt werden soll.

isday() wird (int) 0 zurückliefern, wenn min gesetzt und der aktuelle Zeitstempel kleiner ist.

max

Einen Zeitstempel im Format hh:mm, nach dem keine Aktion ausgeführt werden soll.

isday() wird (int) 0 zurückliefern, wenn max gesetzt und der aktuelle Zeitstempel größer ist.

Subroutinen
sunrise(), sunset()
liefern den absoluten Wert des nächsten Sonnenauf- bzw. -untergangs zurück, wobei 24 Stunden zu diesem Wert addiert werden, wenn der Zeitpunkt am nächsten Tag sein wird, im Format hh:mm:ss.
sunrise_rel(), sunset_rel()
liefern die relative Zeit bis zum nächsten Sonnenauf- bzw. -untergang im Format hh:mm:ss.
sunrise_abs(), sunset_abs()
liefern den nächsten absoluten Zeitpunkt des nächsten Sonnenauf- bzw. -untergangs ohne 24 Stunden zu addieren im Format hh:mm:ss.
sunrise_abs_dat(), sunset_abs()_dat
liefern den nächsten absoluten Zeitpunkt des nächsten Sonnenauf- bzw. -untergangs ohne 24 Stunden zu addieren im Format hh:mm:ss zu einem als ersten Parameter angegebenen Datum.
isday()
liefert (int) 1 wenn Tag ist, (int) 0 wenn Nacht ist.
Beispiele
sunrise("CIVIL");

Zeitpunkt des Sonnenaufgangs bei einem Höhenwinkel der Sonne von -6° unter dem Horizont (identisch zu sunrise()).

sunset("HORIZON=-3");

Zeitpunkt des Sonnenuntergangs bei einem Höhenwinkel der Sonne von 3° unter dem Horizont (zwischen REAL und CIVIL).

sunset("HORIZON=1");

Zeitpunkt des Sonnenaufgangs bei einem Höhenwinkel der Sonne von 1° über dem Horizont.

defmod a15 at *{sunset("REAL",0,"18:00","21:00")} set lamp1 on

Schalte lamp1 an, sobald die Sonne unter den Horizont sinkt (h ≤ 0), jedoch nicht vor 18:00 und nicht nach 21:00.

my $date = time() + 7*86400;
sunrise_abs_dat($date);

Berechne den Sonnenaufgang von heute + sieben Tage.

my $date = time() + 7*86400;
sunrise_abs_dat($date, "CIVIL");

Berechne den Sonnenaufgang von heute + sieben Tage mit einem Höhenwinkel h = -6°.

Define

SUNRISE_EL kann nicht explizit als Device definiert werden, sondern bietet die oben genannten Subroutinen.

Set

SUNRISE_EL unterstützt set nicht.

Get

SUNRISE_EL unterstützt get nicht.

Attributes

Diese Attribute müssen im global-Device gesetzt werden!

latitude

Geographische Breite in Dezimalgrad in Form eines float, z.B 49.872471.
Default-Wert ist 50.112.

longitude

Geographische Länge in Dezimalgrad in Form eines float, z.B 8.650991.
Default-Wert ist 8.686.

altitude

Höhenwinkel h der Sonne bezogen auf den Horizont in Grad in Form einer Zahl ohne Gradzeichen.
Default-Wert ist -6.