SUNRISE EL: Unterschied zwischen den Versionen

Aus FHEMWiki
KKeine Bearbeitungszusammenfassung
(→‎Links: berechnungsgrundlage eingefügt)
Markierungen: mobile edit mobile web edit
 
Zeile 126: Zeile 126:
* Workaround um die Zeiten für Sonnenaufgang und -untergang anpassen zu können: [[Trick der Woche#isday]]
* Workaround um die Zeiten für Sonnenaufgang und -untergang anpassen zu können: [[Trick der Woche#isday]]
* Diskussion über das Modul im {{Link2Forum|Topic=8527|LinkText=Fhem Forum}}
* Diskussion über das Modul im {{Link2Forum|Topic=8527|LinkText=Fhem Forum}}
* Berechnungsgrundlage bei StackExchange https://stackoverflow.com/questions/7064531/sunrise-sunset-times-in-c


== Hinweise ==
== 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).
* 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).

Aktuelle Version vom 15. November 2020, 10:29 Uhr


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

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).