Modul Astro: Unterschied zwischen den Versionen

Aus FHEMWiki
(Die Seite wurde neu angelegt: „{{ Infobox Modul |ModPurpose=Das Modul stellt astronomische Daten zur Verfügung (etwa Sonnenauf- und Untergänge) |ModType=h <!-- |ModCategory= (noch?) nicht…“)
 
(→‎Mondphasen: https://forum.fhem.de/index.php/topic,73951.msg1106308.html#msg1106308)
 
(12 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 12: Zeile 12:


=Allgemeines=
=Allgemeines=
Das Modul ''95_Astro.pm'' stellt astronomische Daten zur Verfügung (etwa Sonnenauf- und Untergänge).
Das Modul ''95_Astro.pm'' stellt astronomische Daten zur Verfügung (etwa Sonnenauf- und Untergänge). Die Berechungen sind für den Zeitraum 1900 - 2100 gültig.


Ein SVG-Bild der gegenwärtigen Mondphase gibt es unter dem Link
  &lt;ip addresse von fhem&gt;/fhem/Astro_moonwidget?name='&lt;device name&gt;'
Optionale Web-Parameter sind
[&amp;size='&lt;width&gt;x&lt;height&gt;']
[&amp;mooncolor=&lt;color&gt;]
[&amp;moonshadow=&lt;color&gt;]
        <li>Calculations are only valid between the years 1900 and 2100</li>
        <li>Attention: Timezone is taken from the local Perl settings, NOT automatically defined for a location</li>
        <li>This module uses the global attribute <code>language</code> to determine its output data<br/>
        (default: EN=english). For German output set <code>attr global language DE</code>.</li>
        <li>The time zone is determined automatically from the local settings of the <br/>
        operating system. If geocordinates from a different time zone are used, the results are<br/>
        not corrected automatically.
==Definition==
==Definition==
Das Astro-Device wird definiert durch  
Ein Astro-Device wird definiert durch  
  define Astro Astro
  define <name> Astro
Es verwendet verschiedene Attribute zur Bestimmung der Beobachterdefinition, die im ''global''-Device von FHEM abgelegt sein sollten:
Dieses Modul verwendet das globale Attribut language zur Bestimmung der Anzeigedaten (Standard: EN=english). Für deutsche Ausgabedaten muss in FHEM das Attribut
  attr global language DE
gesetzt werden.
==Position des Beobachters==
Das Modul verwendet verschiedene Attribute zur Bestimmung der Beobachterdefinition, die im ''global''-Device von FHEM abgelegt sein sollten:
   attr global longitude &lt;value&gt;  
   attr global longitude &lt;value&gt;  
   attr global latitude &lt;value&gt;  
   attr global latitude &lt;value&gt;  
   attr global altitude &lt;value&gt;
   attr global altitude &lt;value&gt;
Die beiden ersten Angaben erfolgen in Dezimalgrad, die dritte Angabe ist die Höhe in Metern über dem Meeresspiegel. Globale Definitionen dieser Werte werden nur verwendet, wenn keine lokalen Attributdefinitionen dieser Namen vorhanden sind
Die beiden ersten Angaben erfolgen in Dezimalgrad, die dritte Angabe ist die Höhe in Metern über dem Meeresspiegel. Globale Definitionen dieser Werte werden nur verwendet, wenn keine lokalen Attribute mit diesen Namen vorhanden sind (siehe unten).


Die Zeitzone wird nicht automatisch eingestellt, sondern aus der lokalen Perl-Installation bezogen.


        It is not necessary to define an Astro device to use the data provided by this module<br/>
==Ausgabedaten==
        To use its data in any other module, you just need to put <code>require "95_Astro.pm";</code> <br/>
Readings mit dem Präfix <i>Sun</i> beziehen sich auf die Sonne, solche mit dem Präfix <i>Moon</i> auf den Mond.
        at the start of your own code, and then may call, for example, the function<br/>
*<i>Age</i> = Winkel (in Dezimalgrad) des Körpers auf seiner Bahn
        <code>Astro_Get( SOME_HASH_REFERENCE,"dummy","text", "SunRise","2019-12-24");</code><br/>
*<i>Az,Alt</i> = Azimuth und Höhe (in Dezimalgrad) des Körpers über dem Horizont
        to acquire the sunrise on Christmas Eve 2019</li>
*<i>Dec,Ra</i> = Deklination und Rektaszension (in HH:MM) der Position des Körpers
        </ul>
*<i>Lat,Lon</i> = geografische Breite und Länge der Position des Körpers
        <a name="Astroget"></a>
*<i>Diameter</i> = Virtueller Durchmesser des Körpers in Bogenminuten
        <h4>Get</h4>
*<i>Distance,DistanceObserver</i> = Entfernung (in km) des Körpers zum Erdmittelpunkt oder zum Beobachter
        Attention: Get-calls are NOT written into the readings of the device ! Readings change only through periodic updates !<br/>
*<i>PhaseN,PhaseS</i> = Nummerischer Wert und Stringwert für die Phase des Körpers</li>
        <ul>
*<i>Sign</i> = Tierkreiszeichen des Körpers auf seiner Bahn
            <li><a name="astro_json"></a>
*<i>Rise,Transit,Set</i> = Zeiten (in HH:MM) für Aufgang, höchsten Punkt (Transit) und Untergang des Körpers
                <code>get &lt;name&gt; json [&lt;reading&gt;]</code><br/>
                <code>get &lt;name&gt; json [&lt;reading&gt;] YYYY-MM-DD</code><br/>
Readings mit dem Präfix <i>Obs</i> beziehen sich auf den Beobachter
                <code>get &lt;name&gt; json [&lt;reading&gt;] YYYY-MM-DD HH:MM:[SS]</code>
                <br />returns the complete set or an individual reading of astronomical data either for the current time, or for a day and time given in the argument.</li>
            <li><a name="astro_text"></a>
                <code>get &lt;name&gt; text [&lt;reading&gt;]</code><br/>
                <code>get &lt;name&gt; text [&lt;reading&gt;] YYYY-MM-DD</code><br/>
                <code>get &lt;name&gt; text [&lt;reading&gt;] YYYY-MM-DD HH:MM:[SS]</code>
                <br />returns the complete set or an individual reading of astronomical data either for the current time, or for a day and time given in the argument.</li>           
            <li><a name="astro_version"></a>
                <code>get &lt;name&gt; version</code>
                <br />Display the version of the module</li>           
        </ul>
        <a name="Astroattr"></a>
        <h4>Attributes</h4>
        <ul>
            <li><a name="astro_interval">
                <code>&lt;interval&gt;</code>
                <br />Update interval in seconds. The default is 3600 seconds, a value of 0 disables the automatic update. </li>
                  <li>Some definitions determining the observer position:<br/>
        <code>attr  &lt;name&gt;  longitude &lt;value&gt;</code><br/>
        <code>attr  &lt;name&gt;  latitude &lt;value&gt;</code><br/>
        <code>attr  &lt;name&gt;  altitude &lt;value&gt;</code> (in m above sea level)<br/>
        <code>attr  &lt;name&gt;  horizon &lt;value&gt;</code> custom horizon angle in degrees, default 0<br/>  
        These definitions take precedence over global attribute settings.
        </li>
            <li>Standard attributes <a href="#alias">alias</a>, <a href="#comment">comment</a>, <a
                    href="#event-on-update-reading">event-on-update-reading</a>, <a
                    href="#event-on-change-reading">event-on-change-reading</a>, <a href="#room"
                    >room</a>, <a href="#eventMap">eventMap</a>, <a href="#loglevel">loglevel</a>,
                    <a href="#webCmd">webCmd</a></li>
        </ul>
=Verwendung ohne Astro-Device=
Die Funktion [code]Astro_Get[/code] bekommt im ersten Argument eine hash-Referenz übergeben. Und holt sich die Attribute aus diesem hash - das muss also kein hash eines Astro-Devices sein.


Es müsste also folgendes gehen:
Weitere Readings umfassen
*<i>Date,Dayofyear</i> = Datum
*<i>JD</i> = Julianisches Datum
*<i>Season,SeasonN</i> = Stringwert und nummerischer Wert für die Jahreszeit
*<i>Time,Timezone</i> raten Sie mal...
*<i>IsDST</i> = 1 wenn Sommerzeit gilt, 0 sonst
*<i>GMST,LMST</i> = Greenwich und Local Mean Sidereal Time (in HH:MM)


1.) Ein beliebiges Device (sagen wir mit Namen "Bla") bekommt ein User Attribute mit Namen "horizon", dessen Wert der gewünschte Horizontwinkel ist.
=Bedienung=
==Get==
Achtung: Die Ergebnisse von Get-Aufrufen werden nicht in die Readings geschrieben, sondern nur die Ergebnisse zyklischer Updates. Das dient dazu, schnell und ohne Readings spezielle Datenwerte (etwa für andere Zeiten oder Orte) zu generieren. Möglichkeiten für Aufrufe:
get &lt;name&gt; json [&lt;reading&gt;]
get &lt;name&gt; json [&lt;reading&gt;] YYYY-MM-DD
get &lt;name&gt; json [&lt;reading&gt;] YYYY-MM-DD HH:MM:[SS]
liefert JSON-Code für den kompletten Datensatz oder nur einen Datenwert der astronomischen Daten entweder für die gegenwärtige Zeit, oder für ein Datum und eine Zeit im Argument.
get &lt;name&gt; text [&lt;reading&gt;]
get &lt;name&gt; text [&lt;reading&gt;] YYYY-MM-DD
get &lt;name&gt; text [&lt;reading&gt;] YYYY-MM-DD HH:MM:[SS]
liefert Text für den kompletten Datensatz oder nur einen Datenwert der astronomischen Daten entweder für die gegenwärtige Zeit, oder für ein Datum und eine Zeit im Argument.               
  get &lt;name&gt; version
zeigt die aktuelle Modulversion an.


2.) Der Funktionsaufruf müsste dann lauten
==Attribute==   
   
  attr &lt;name&gt; interval &lt;interval&gt;
Code: [Auswählen]
Update-Interval in Sekunden. Default sind 3600 Sekunden, ein Wert 0 verhindert das periodische Update.
Das Astro-Module verwendet verschiedene Attribute zur Bestimmung der Beobachterdefinition, die entweder im ''global''-Device von FHEM abgelegt sein sollten (siehe oben), oder als lokale Attribute gespeichert sind:
  attr &lt;name&gt; longitude &lt;value&gt;
  attr &lt;name&gt; latitude &lt;value&gt;
  attr &lt;name&gt; altitude &lt;value&gt;
Die beiden ersten Angaben erfolgen in Dezimalgrad, die dritte Angabe ist die Höhe in Metern über dem Meeresspiegel.
  attr &lt;name&gt;  horizon &lt;value&gt;
Nutzerdefinierter Horizontwinkel in Dezimalgrad, Defaulwert 0°


{Astro_Get($defs{"Bla"},"Bla","text", "CustomTwilightEvening")}
==Readings Mondphasen==   
Die Readings zu den Mondphasen
  MoonPhaseI 5 2020-12-01 17:56:32
  MoonPhaseN 0.96 2020-12-02 10:00:20
sind wie folgt zu lesen. PhaseN gibt das Mondalter in Radians an,  Vollmond entspricht Pi (3,14). PhaseI entspricht einer Ganzzahl von 0 bis 7 für das Mondalter.


=Verwendung ohne Astro-Device=
Es ist nicht notwendig, für die gelegentliche Verwendung der astronomischen Daten ein Device zu definieren. Es muss lediglich das Modul geladen werden, z.B. durch den Perl-Code
  LoadModule("Astro");
Die Verwendung von ''require'' wird nicht empfohlen, da je nach Konstellation dabei Warnmeldungen im Logfile ausgegeben werden können.
Dann kann man z.B. durch den Code
  my $somehash
  Astro_Get( $somehash,"somehash","text", "SunRise","2019-12-24");
den Sonnenuntergang an Heiligabend 2019 berechnen.


und den Sonnenuntergang für diesen Horizontwinkel liefern.
Die Funktion ''Astro_Get'' bekommt im ersten Argument eine hash-Referenz übergeben, die auch leer sein kann. Wenn sie aber nicht leer ist, versucht das Modul, sich die notwendigen Attribute aus diesem Hash zu holen (etwa geografische Länge und Beite). Es kann z.B. ein beliebiges Dummy-Device angelegt werden, sagen wir mit dem Namen "Blabla". Gibt man diesem als Attribut einen Horizontwinkel, oder andere Geodaten, kann man mit
  Astro_Get( $defs{"Blabla"},"Blabla","text", "CustomTwilightEvening","2019-12-24");
den Sonnenuntergang für diesen Horizontwinkel erhalten. Natürlich geht auch
  Astro_Get( $defs{"global"},"global","text", <reading>,<datum> );

Aktuelle Version vom 2. Dezember 2020, 17:58 Uhr

Astro
Zweck / Funktion
Das Modul stellt astronomische Daten zur Verfügung (etwa Sonnenauf- und Untergänge)
Allgemein
Typ Hilfsmodul
Details
Dokumentation EN / DE
Support (Forum) Unterstuetzende Dienste
Modulname 95_Astro.pm
Ersteller Prof. Dr. Peter A. Henning
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!

Diese Seite beschreibt die Konfiguration und Verwendung des Moduls 95_Astro.pm.

Allgemeines

Das Modul 95_Astro.pm stellt astronomische Daten zur Verfügung (etwa Sonnenauf- und Untergänge). Die Berechungen sind für den Zeitraum 1900 - 2100 gültig.

Ein SVG-Bild der gegenwärtigen Mondphase gibt es unter dem Link

 <ip addresse von fhem>/fhem/Astro_moonwidget?name='<device name>'

Optionale Web-Parameter sind

[&size='<width>x<height>']
[&mooncolor=<color>]
[&moonshadow=<color>]
  • Calculations are only valid between the years 1900 and 2100
  • Attention: Timezone is taken from the local Perl settings, NOT automatically defined for a location
  • This module uses the global attribute language to determine its output data
    (default: EN=english). For German output set attr global language DE.
  • The time zone is determined automatically from the local settings of the
    operating system. If geocordinates from a different time zone are used, the results are
    not corrected automatically.

    Definition

    Ein Astro-Device wird definiert durch

    define <name> Astro
    

    Dieses Modul verwendet das globale Attribut language zur Bestimmung der Anzeigedaten (Standard: EN=english). Für deutsche Ausgabedaten muss in FHEM das Attribut

     attr global language DE
    

    gesetzt werden.

    Position des Beobachters

    Das Modul verwendet verschiedene Attribute zur Bestimmung der Beobachterdefinition, die im global-Device von FHEM abgelegt sein sollten:

     attr global longitude <value> 
     attr global latitude <value> 
     attr global altitude <value>
    

    Die beiden ersten Angaben erfolgen in Dezimalgrad, die dritte Angabe ist die Höhe in Metern über dem Meeresspiegel. Globale Definitionen dieser Werte werden nur verwendet, wenn keine lokalen Attribute mit diesen Namen vorhanden sind (siehe unten).

    Die Zeitzone wird nicht automatisch eingestellt, sondern aus der lokalen Perl-Installation bezogen.

    Ausgabedaten

    Readings mit dem Präfix Sun beziehen sich auf die Sonne, solche mit dem Präfix Moon auf den Mond.

    • Age = Winkel (in Dezimalgrad) des Körpers auf seiner Bahn
    • Az,Alt = Azimuth und Höhe (in Dezimalgrad) des Körpers über dem Horizont
    • Dec,Ra = Deklination und Rektaszension (in HH:MM) der Position des Körpers
    • Lat,Lon = geografische Breite und Länge der Position des Körpers
    • Diameter = Virtueller Durchmesser des Körpers in Bogenminuten
    • Distance,DistanceObserver = Entfernung (in km) des Körpers zum Erdmittelpunkt oder zum Beobachter
    • PhaseN,PhaseS = Nummerischer Wert und Stringwert für die Phase des Körpers
    • Sign = Tierkreiszeichen des Körpers auf seiner Bahn
    • Rise,Transit,Set = Zeiten (in HH:MM) für Aufgang, höchsten Punkt (Transit) und Untergang des Körpers

    Readings mit dem Präfix Obs beziehen sich auf den Beobachter

    Weitere Readings umfassen

    • Date,Dayofyear = Datum
    • JD = Julianisches Datum
    • Season,SeasonN = Stringwert und nummerischer Wert für die Jahreszeit
    • Time,Timezone raten Sie mal...
    • IsDST = 1 wenn Sommerzeit gilt, 0 sonst
    • GMST,LMST = Greenwich und Local Mean Sidereal Time (in HH:MM)

    Bedienung

    Get

    Achtung: Die Ergebnisse von Get-Aufrufen werden nicht in die Readings geschrieben, sondern nur die Ergebnisse zyklischer Updates. Das dient dazu, schnell und ohne Readings spezielle Datenwerte (etwa für andere Zeiten oder Orte) zu generieren. Möglichkeiten für Aufrufe:

    get <name> json [<reading>]
    get <name> json [<reading>] YYYY-MM-DD
    get <name> json [<reading>] YYYY-MM-DD HH:MM:[SS]
    

    liefert JSON-Code für den kompletten Datensatz oder nur einen Datenwert der astronomischen Daten entweder für die gegenwärtige Zeit, oder für ein Datum und eine Zeit im Argument.

    get <name> text [<reading>]
    get <name> text [<reading>] YYYY-MM-DD
    get <name> text [<reading>] YYYY-MM-DD HH:MM:[SS]
    

    liefert Text für den kompletten Datensatz oder nur einen Datenwert der astronomischen Daten entweder für die gegenwärtige Zeit, oder für ein Datum und eine Zeit im Argument.

    get <name> version 
    

    zeigt die aktuelle Modulversion an.

    Attribute

     attr <name> interval <interval>
    

    Update-Interval in Sekunden. Default sind 3600 Sekunden, ein Wert 0 verhindert das periodische Update. Das Astro-Module verwendet verschiedene Attribute zur Bestimmung der Beobachterdefinition, die entweder im global-Device von FHEM abgelegt sein sollten (siehe oben), oder als lokale Attribute gespeichert sind:

     attr <name> longitude <value> 
     attr <name> latitude <value> 
     attr <name> altitude <value>
    

    Die beiden ersten Angaben erfolgen in Dezimalgrad, die dritte Angabe ist die Höhe in Metern über dem Meeresspiegel.

     attr  <name>  horizon <value>
    

    Nutzerdefinierter Horizontwinkel in Dezimalgrad, Defaulwert 0°

    Readings Mondphasen

    Die Readings zu den Mondphasen

     MoonPhaseI 5 2020-12-01 17:56:32
     MoonPhaseN 0.96 2020-12-02 10:00:20
    

    sind wie folgt zu lesen. PhaseN gibt das Mondalter in Radians an, Vollmond entspricht Pi (3,14). PhaseI entspricht einer Ganzzahl von 0 bis 7 für das Mondalter.

    Verwendung ohne Astro-Device

    Es ist nicht notwendig, für die gelegentliche Verwendung der astronomischen Daten ein Device zu definieren. Es muss lediglich das Modul geladen werden, z.B. durch den Perl-Code

     LoadModule("Astro");
    

    Die Verwendung von require wird nicht empfohlen, da je nach Konstellation dabei Warnmeldungen im Logfile ausgegeben werden können. Dann kann man z.B. durch den Code

     my $somehash
     Astro_Get( $somehash,"somehash","text", "SunRise","2019-12-24");
    

    den Sonnenuntergang an Heiligabend 2019 berechnen.

    Die Funktion Astro_Get bekommt im ersten Argument eine hash-Referenz übergeben, die auch leer sein kann. Wenn sie aber nicht leer ist, versucht das Modul, sich die notwendigen Attribute aus diesem Hash zu holen (etwa geografische Länge und Beite). Es kann z.B. ein beliebiges Dummy-Device angelegt werden, sagen wir mit dem Namen "Blabla". Gibt man diesem als Attribut einen Horizontwinkel, oder andere Geodaten, kann man mit

     Astro_Get( $defs{"Blabla"},"Blabla","text", "CustomTwilightEvening","2019-12-24");
    

    den Sonnenuntergang für diesen Horizontwinkel erhalten. Natürlich geht auch

     Astro_Get( $defs{"global"},"global","text", <reading>,<datum> );