SUNRISE EL: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Ph1959de verschob Seite Sunset Sunrise nach SUNRISE EL, ohne dabei eine Weiterleitung anzulegen: Umstellung auf einheitliches Namensschema)
(→‎Links: berechnungsgrundlage eingefügt)
Markierungen: mobile edit mobile web edit
 
(11 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''Lichtsteuerung per sunset / sunrise'''
{{SEITENTITEL:SUNRISE_EL}}
{{Infobox Modul
|ModPurpose=Funktionen für Sonnenstandsabhängige Aktionen
|ModType=h
<!-- |ModCategory=?? -->
|ModCmdRef=SUNRISE_EL
|ModForumArea=Automatisierung
|ModTechName=99_SUNRISE_EL.pm
|ModOwner=rudolfkoenig ({{Link2FU|8|Forum}}] / [[Benutzer Diskussion:Rudolfkoenig|Wiki]])
}}
 
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 <code>FHEM/</code>-Verzeichnis liegt. D.h. ''SUNRISE_EL'' muss nicht definiert werden um die angebotenen Funktionen verwenden zu können.


Siehe auch: [http://fhem.de/commandref.html#SUNRISE_EL commandref.html]
== Voraussetzungen ==
== Voraussetzungen ==
In der ''fhem.cfg'' müssen Sie vorher Ihren Wohnsitz definieren, da der Sonnenauf- und -untergang ja nicht nur vom Datum, sondern auch vom Längen- und Breitengrad Ihres Standortes abhängig ist. Hierzu tragen Sie folgende Zeilen in die ''fhem.cfg'' ein:
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:
:<code>attr global latitude 52.51626 </code>
:<code>attr global longitude 13.37778 </code>
und zwar in genau dieser Schreibweise. Die Koordinaten können entweder mit Hilfe eines GPS-Systems oder über einen entsprechenden Internet-Dienst ermittelt werden.


<nowiki>attr global latitude 5X.XYZ
Als Internet-Dienst eignet sich beipielsweise [https://support.google.com/maps/answer/18539?source=gsearch&hl=de Google Maps-Hilfe (Breiten- und Längengrad finden oder eingeben)] oder [http://www.openstreetmap.org/#map=12/52.51626/13.37778 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).
attr global longitude 6.XYZ</nowiki>
und zwar in genau dieser Schreibweise. Entweder benutzen Sie zur Bestimmung ein GPS-System oder sie befragen einen entsprechenden Internet-Dienst.


Als Internet-Dienst eignet sich beipielsweise [http://www.openstreetmap.org/#map=12/52.4994/13.4960 OpenStreetMap]. Die Werte latitude und longitude können aus der URL abgelesen werden. In diesem Beispiel latitude 52.4994 und longitude 13.4960.
== 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:
: <code>...(offset,min,max)</code>
: 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 ==
== Steuerung ==
Mittels folgender Skriptzeilen in der ''fhem.cfg''
Mittels folgender Anweisungen in der Konfiguration:
  <nowiki># Außenlampe - Steuerung An-/Ausschaltzeit
  Außenlampe - Steuerung An-/Ausschaltzeit
define AussenlampeAn1 at *{sunset(0,"17:00","22:00")} set EG.Diele.Aussenlampe on
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</nowiki>
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'')
wird der Funk-Lichtschalter für die Außenbeleuchtung (hier das FHEM-Gerät mit dem Namen ''EG.Diele.Aussenlampe'')


Zeile 24: Zeile 48:
* abends zum Sonnenuntergang eingeschaltet, aber nicht vor 17:00 Uhr und nicht nach 22:00 Uhr.
* 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.  
Im FHEM-Standard wird der sogenannte bürgerliche Sonnenuntergang/-aufgang genutzt, der als Sonnenstand 6 Grad unter der Horizontalen definiert ist (entspricht <code>HORIZON=-6.0</code>). Bis bzw. ab dieser Zeit ist das Lesen ohne zusätzliche Beleuchtung möglich.


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.
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:
{| class="wikitable"
! Parameter !! Bedeutung !! entspricht
|-
| <code>"REAL"</code> || Sonne in der Horizontalen || <code>"HORIZON=0.0"</code>
|-
| <code>"CIVIL"</code> || Bürgerliche Dämmerung || <code>"HORIZON=-6.0"</code>
|-
| <code>"NAUTIC"</code> || Nautische Dämmerung || <code>"HORIZON=-12.0"</code>
|-
| <code>"ASTRONOMIC"</code> || Astronomische Dämmerung || <code>"HORIZON=-16.0"</code>
|-
|}


   # Normales Verhalten wie im obigen Beispiel:  
   # Normales Verhalten wie im obigen Beispiel:  
Zeile 87: Zeile 122:
   room    Diele</nowiki>
   room    Diele</nowiki>
Hier liegt der Sonnenaufgang noch '''außerhalb''' des Start-/Ende-Zeitraums, so dass die Lampe um 07:30 Uhr ausgeschaltet wird.
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 {{Link2Forum|Topic=8527|LinkText=Fhem Forum}}
* Berechnungsgrundlage bei StackExchange https://stackoverflow.com/questions/7064531/sunrise-sunset-times-in-c


== Hinweise ==
== Hinweise ==
* Da es [https://groups.google.com/forum/?fromgroups=#!topic/fhem-users/y2CbOQmTVsg Eintrag in der ehemaligen FHEM-Google-Group] entnehmen.
* 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).
[[Kategorie:HOWTOS]]

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