SUNRISE_EL
SUNRISE_EL | |
---|---|
Zweck / Funktion | |
Funktionen für Sonnenstandsabhängige Aktionen | |
Allgemein | |
Typ | Hilfsmodul |
Details | |
Dokumentation | EN / DE |
Support (Forum) | Automatisierung |
Modulname | 99_SUNRISE_EL.pm |
Ersteller | rudolfkoenig (Forum ] / Wiki) |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Das Hilfsmodul SUNRISE_EL bietet Funktionen, um Aktionen abhängig von Sonnenauf- und -untergangszeiten durchzuführen. SUNRISE_EL ist kein Device im klassischen Sinne, sondern ein Modul, das nicht definiert werden muss, sondern immer zur Verfügung steht (da es automatisch geladen wird, wenn die korrespondierende Datei im FHEM/
-Verzeichnis liegt. D.h. SUNRISE_EL muss nicht definiert werden um die angebotenen Funktionen verwenden zu können.
Voraussetzungen
In der Konfiguration (fhem.cfg) muss der gewünschte Standort definiert werden, da der Sonnenauf- und -untergang nicht nur vom Datum, sondern auch vom Längen- und Breitengrad des Standortes abhängig sind. Dazu sind die folgenden Definitionen erforderlich:
attr global latitude 52.51626
attr global longitude 13.37778
und zwar in genau dieser Schreibweise. Die Koordinaten können entweder mit Hilfe eines GPS-Systems oder über einen entsprechenden Internet-Dienst ermittelt werden.
Als Internet-Dienst eignet sich beipielsweise Google Maps-Hilfe (Breiten- und Längengrad finden oder eingeben) oder OpenStreetMap. Die Werte latitude und longitude können aus der URL abgelesen werden. In diesem Beispiel latitude 52.51626 und longitude 13.37778 (Brandenburger Tor in Berlin).
Funktionen
Das Modul SUNRISE_EL stellt die folgenden Funktionen zur Verfügung:
- sunrise / sunset geben die absolute Zeit des nächsten Sonnenauf- bzw. -untergangs zurück, wobei 24 Stunden addiert werden, sofern das entsprechende Ereignis am nächsten Tag stattfindet
- sunrise_rel / sunset_rel geben die relative Zeit bis zum nächsten Sonnenauf- bzw. -untergang zurück
- sunrise_abs / sunset_abs geben die absolute Zeit für den aktuellen Tag zurück
Diese Funktionen können jeweils mit einem speziellen und drei weiteren (optionalen) Parametern aufgerufen werden:
...(offset,min,max)
- mit der Bedeutung
- Horizont; nur einer der Werte REAL, CIVIL, NAUTIC, ASTRONOMIC (in genau dieser Schreibweise) bzw. HORIZON= ist erlaubt
- offset = Sekunden (Ganzzahl), die auf die Zeit addiert werden
- min = frühester Zeitpunkt (in Stunden:Minuten - hh:mm), der zurückgegeben werden soll
- max = spätester Zeitpunkt (in Stunden:Minuten - hh:mm), der zurückgegeben werden soll
- isday() kann benutzt werden um festzustellen, ob der aktuelle Zeitpunkt nach Sonnenauf- aber vor Sonnenuntergang des aktuellen Tages liegt
Steuerung
Mittels folgender Anweisungen in der Konfiguration:
Außenlampe - Steuerung An-/Ausschaltzeit define AussenlampeAn1 at *{sunset(0,"17:00","22:00")} set EG.Diele.Aussenlampe on define AussenlampeAus1 at *{sunrise(0,"05:00","07:30")} set EG.Diele.Aussenlampe off
wird der Funk-Lichtschalter für die Außenbeleuchtung (hier das FHEM-Gerät mit dem Namen EG.Diele.Aussenlampe)
- morgens zum Sonnenaufgang, aber nicht vor 05:00 und nicht nach 07:30 Uhr ausgeschaltet
und
- abends zum Sonnenuntergang eingeschaltet, aber nicht vor 17:00 Uhr und nicht nach 22:00 Uhr.
Im FHEM-Standard wird der sogenannte bürgerliche Sonnenuntergang/-aufgang genutzt, der als Sonnenstand 6 Grad unter der Horizontalen definiert ist (entspricht HORIZON=-6.0
). Bis bzw. ab dieser Zeit ist das Lesen ohne zusätzliche Beleuchtung möglich.
Da dies nicht immer gewünscht ist, ist es möglich bei den sunrise/sunset-Funktionen *optional* als ersten Parameter vorne REAL, CIVIL, NAUTIC, ASTRONOMIC oder z.B. HORIZON=-6.0 oder "HORIZON -6.0" anzustellen.
Parameter | Bedeutung | entspricht |
---|---|---|
"REAL" |
Sonne in der Horizontalen | "HORIZON=0.0"
|
"CIVIL" |
Bürgerliche Dämmerung | "HORIZON=-6.0"
|
"NAUTIC" |
Nautische Dämmerung | "HORIZON=-12.0"
|
"ASTRONOMIC" |
Astronomische Dämmerung | "HORIZON=-16.0"
|
# Normales Verhalten wie im obigen Beispiel: {sunset(0,"17:00","22:00")} Ergebnis (als Beispiel): 19:59:22
# Gleiches Beispiel mit CIVIL als 1. Parameter: {sunset("CIVIL",0,"17:00","22:00")} Ergebnis (als Beispiel): 19:59:22
# Gleiches Beispiel mit Eingabe der Höhe über Horizont als 1. Parameter: {sunset("HORIZON=-6.0",0,"17:00","22:00")} Ergebnis (als Beispiel): 19:59:22
# Gleiches Beispiel mit dem realen Sonnenuntergang auf 0 Grad als 1. Parameter: {sunset("REAL",0,"17:00","22:00");;} Ergebnis (als Beispiel): 19:22:07
Kontrolle
Um die Zeiten zu kontrollieren können Sie in der FHEM-Befehlszeile den Befehl
list AussenlampeAn1
eingeben und mit der <Enter>-Taste (nicht "save-Button") bestätigen. Sie sehen dann (hier eine Ausgabe vom 17.01.2013) z.B. folgendes:
Internals: DEF *{sunset(0,"17:00","22:00")} set EG.Diele.Aussenlampe on NAME AussenlampeAn1 NR 225 NTM 17:37:09 REP -1 STATE Next: 17:37:09 TRIGGERTIME 1358527029 TYPE at Attributes: room Diele
Der Sonnenuntergang liegt am genannten Tag innerhalb des Start-/Ende-Zeitraums, so dass die Lampe um 17:37 Uhr eingeschaltet wird.
Die Ausgabe (gleiches Datum) von
list AussenlampeAus1
lautet:
Internals: DEF *{sunrise(0,"05:00","07:30")} set EG.Diele.Aussenlampe off NAME AussenlampeAus1 NR 228 NTM 07:30:00 REP -1 STATE Next: 07:30:00 TRIGGERTIME 1358490600 TYPE at Attributes: room Diele
Hier liegt der Sonnenaufgang noch außerhalb des Start-/Ende-Zeitraums, so dass die Lampe um 07:30 Uhr ausgeschaltet wird.
Links
- Workaround um die Zeiten für Sonnenaufgang und -untergang anpassen zu können: Trick der Woche#isday
- Diskussion über das Modul im Fhem Forum
- Berechnungsgrundlage bei StackExchange https://stackoverflow.com/questions/7064531/sunrise-sunset-times-in-c
Hinweise
- Die sunset / sunrise Einstellungen arbeiten meist erst am nächsten Tag richtig. Das hängt zusammen mit einer Falschberechnung beim setzen dieses defines. An einer Korrektur wird gearbeitet (Stand Januar 2013).