OPENWEATHER: docu

git-svn-id: https://svn.fhem.de/fhem/trunk@7022 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
tpoitzsch 2014-11-19 21:34:51 +00:00
parent 669ca7b400
commit 8e8d46ff10

View File

@ -63,9 +63,9 @@ get_wday($)
{ {
my ($date) = @_; my ($date) = @_;
my @wday_txt = qw(So Mo Di Mi Do Fr Sa); my @wday_txt = qw(So Mo Di Mi Do Fr Sa);
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime $date; my @th=localtime $date;
return $wday_txt [$wday]; return $wday_txt [$th[6]];
} }
sub text sub text
@ -181,6 +181,7 @@ OPENWEATHER_Initialize($)
$hash->{GetFn} = "OPENWEATHER_Get"; $hash->{GetFn} = "OPENWEATHER_Get";
$hash->{AttrFn} = "OPENWEATHER_Attr"; $hash->{AttrFn} = "OPENWEATHER_Attr";
$hash->{AttrList} = "disable:0,1 " $hash->{AttrList} = "disable:0,1 "
."INTERVAL "
.$readingFnAttributes; .$readingFnAttributes;
} # end OPENWEATHER_Initialize } # end OPENWEATHER_Initialize
@ -195,13 +196,11 @@ OPENWEATHER_Define($$)
return "Usage: define <name> OPENWEATHER <project> <cityCode> <apiKey> [language]" if(@args <5 || @args >6); return "Usage: define <name> OPENWEATHER <project> <cityCode> <apiKey> [language]" if(@args <5 || @args >6);
my $name = $args[0]; my $name = $args[0];
my $interval = 3600;
$hash->{NAME} = $name; $hash->{NAME} = $name;
$hash->{STATE} = "Initializing" if $interval > 0; $hash->{STATE} = "Initializing";
$hash->{STATE} = "Manual mode" if $interval == 0; $hash->{INTERVAL} = 3600;
$hash->{INTERVAL} = $interval;
$hash->{PROJECT} = $args[2]; $hash->{PROJECT} = $args[2];
$hash->{CITYCODE} = $args[3]; $hash->{CITYCODE} = $args[3];
$hash->{APIKEY} = $args[4]; $hash->{APIKEY} = $args[4];
@ -218,11 +217,12 @@ OPENWEATHER_Define($$)
$hash->{URL} = $URL; $hash->{URL} = $URL;
$hash->{fhem}{LOCAL} = 0;
$hash->{fhem}{modulVersion} = '$Date$';
RemoveInternalTimer($hash); RemoveInternalTimer($hash);
# Get first data after 7 seconds # Get first data after 7 seconds
InternalTimer(gettimeofday() + 7, "OPENWEATHER_Start", $hash, 0) if $interval > 0; InternalTimer(gettimeofday() + 7, "OPENWEATHER_Start", $hash, 0);
$hash->{fhem}{modulVersion} = '$Date$';
return undef; return undef;
} #end OPENWEATHER_Define } #end OPENWEATHER_Define
@ -248,16 +248,35 @@ OPENWEATHER_Attr($@)
# $cmd can be "del" or "set" # $cmd can be "del" or "set"
# $name is device name # $name is device name
# aName and aVal are Attribute name and value # aName and aVal are Attribute name and value
my $hash = $defs{$name};
if ($cmd eq "set") if ($cmd eq "set")
{ {
if ($aName eq "1allowSetParameter") if ($aName eq "INTERVAL")
{ {
eval { qr/$aVal/ }; if ($aVal < 3600 && $aVal != 0)
if ($@)
{ {
OPENWEATHER_Log $name, 3, "Invalid allowSetParameter in attr $name $aName $aVal: $@"; OPENWEATHER_Log $name, 3, "Error: Minimum of attribute INTERVAL is 3600 or 0";
return "Invalid allowSetParameter $aVal"; return "Minimum of attribute INTERVAL is 3600 or 0";
} }
else
{
# Internal Timer neu starten
RemoveInternalTimer($hash);
if ($aVal >0)
{
InternalTimer(gettimeofday()+7, "OPENWEATHER_Start", $hash, 0);
}
}
}
}
elsif ($cmd eq "del")
{
if ($aName eq "INTERVAL")
{
# Internal Timer neu starten
RemoveInternalTimer($hash);
InternalTimer(gettimeofday()+1, "OPENWEATHER_Start", $hash, 0);
} }
} }
@ -273,9 +292,9 @@ OPENWEATHER_Set($$@)
if(lc $cmd eq 'update') if(lc $cmd eq 'update')
{ {
$hash->{LOCAL} = 1; $hash->{fhem}{LOCAL} = 1;
OPENWEATHER_Start($hash); OPENWEATHER_Start($hash);
$hash->{LOCAL} = 0; $hash->{fhem}{LOCAL} = 0;
return undef; return undef;
} }
my $list = "update:noArg"; my $list = "update:noArg";
@ -327,8 +346,10 @@ OPENWEATHER_Start($)
my ($hash) = @_; my ($hash) = @_;
my $name = $hash->{NAME}; my $name = $hash->{NAME};
$hash->{INTERVAL} = AttrVal( $name, "INTERVAL", 3600 );
if(!$hash->{LOCAL} && $hash->{INTERVAL} > 0) { if( $hash->{fhem}{LOCAL} != 1 && $hash->{INTERVAL} > 0 )
{
RemoveInternalTimer($hash); RemoveInternalTimer($hash);
InternalTimer(gettimeofday()+$hash->{INTERVAL}, "OPENWEATHER_Start", $hash, 1); InternalTimer(gettimeofday()+$hash->{INTERVAL}, "OPENWEATHER_Start", $hash, 1);
return undef if( AttrVal($name, "disable", 0 ) == 1 ); return undef if( AttrVal($name, "disable", 0 ) == 1 );
@ -467,7 +488,7 @@ OPENWEATHER_Html($)
for(my $i=0; $i<=2; $i++) for(my $i=0; $i<=2; $i++)
{ {
$ret .= sprintf('<tr><td valign=top><b>%s</b></td><td>%s<br>min. %s &deg;C max. %s &deg;C<br>Niederschlagsrisiko: %s %<br>Wind: %s km/h aus %s</td></tr>', $ret .= sprintf('<tr><td valign=top><b>%s</b></td><td>%s<br>min. %s &deg;C max. %s &deg;C<br>Nieders.risiko: %s %<br>Wind: %s km/h aus %s</td></tr>',
$i==0 ? "heute" : ReadingsVal($d, "fc".$i."_wday", "") $i==0 ? "heute" : ReadingsVal($d, "fc".$i."_wday", "")
, ReadingsVal($d, "fc".$i."_weather", "") , ReadingsVal($d, "fc".$i."_weather", "")
, ReadingsVal($d, "fc".$i."_tempMin", ""), ReadingsVal($d, "fc".$i."_tempMax", "") , ReadingsVal($d, "fc".$i."_tempMin", ""), ReadingsVal($d, "fc".$i."_tempMax", "")
@ -476,7 +497,7 @@ OPENWEATHER_Html($)
); );
} }
$ret .= "<tr><td colspan=2>powered by wetter.com</td></tr>"; $ret .= sprintf ('<tr><td colspan=2>powered by <a href="http://www.wetter.com/%s">wetter.com</a></td></tr>', ReadingsVal($d, "url", "") );
$ret .= "</table>"; $ret .= "</table>";
return $ret; return $ret;
@ -530,9 +551,11 @@ OPENWEATHER_Html($)
<br> <br>
Optional. Default language of weather description is German. Change with <i>en</i> to English or <i>es</i> to Spanish. Optional. Default language of weather description is German. Change with <i>en</i> to English or <i>es</i> to Spanish.
</li><br> </li><br>
The function OPENWEATHER_Html creates a HTML code for a vertically arranged weather forecast. The function <code>OPENWEATHER_Html</code> creates a HTML code for a vertically arranged weather forecast.
<br> <br>
Example: <code>define MyWeatherWeblink weblink htmlCode { OPENWEATHER_Html("MyWeather") }</code> Example:
<br>
<code>define MyForecast weblink htmlCode { OPENWEATHER_Html("MyWeather") }</code>
<br/><br/> <br/><br/>
</ul> </ul>
@ -560,6 +583,14 @@ OPENWEATHER_Html($)
<b>Attributes</b> <b>Attributes</b>
<ul> <ul>
<br> <br>
<li><code>disable &lt;0 | 1&gt;</code>
<br>
Automatic update is stopped if set to 1.
</li><br>
<li><code>INTERVAL &lt;seconds&gt;</code>
<br>
Polling interval for weather data in seconds (default and smallest value is 3600 = 1 hour). 0 will stop automatic updates.
</li><br>
<li><a href="#readingFnAttributes">readingFnAttributes</a></li> <li><a href="#readingFnAttributes">readingFnAttributes</a></li>
</ul> </ul>
<br> <br>
@ -568,8 +599,8 @@ OPENWEATHER_Html($)
<b>Forecast readings</b> <b>Forecast readings</b>
<ul> <ul>
Note! The forecast values (in brackets) have first to be selected on the project setup page on wetter.com. Note! The forecast values (in brackets) have first to be selected on the project setup page on wetter.com.
<br> <br/>&nbsp;<br/>
<li><br><b>fc</b><i>0|1|2</i><b>_...</b> - forecast values for <i>today|tommorrow|in 2 days</i></li> <li><b>fc</b><i>0|1|2</i><b>_...</b> - forecast values for <i>today|tommorrow|in 2 days</i></li>
<li><b>fc</b><i>0</i><b>_...<i>06|11|17|23</i></b> - forecast values for <i>today</i> at <i>06|11|17|23</i> o'clock</li> <li><b>fc</b><i>0</i><b>_...<i>06|11|17|23</i></b> - forecast values for <i>today</i> at <i>06|11|17|23</i> o'clock</li>
<li><b>fc</b><i>1</i><b>_temp</b><i>Min|Max</i> - <i>minimal|maximal</i> temperature for <i>tommorrow</i> in &deg;C (tn,tx)</li> <li><b>fc</b><i>1</i><b>_temp</b><i>Min|Max</i> - <i>minimal|maximal</i> temperature for <i>tommorrow</i> in &deg;C (tn,tx)</li>
<li><b>fc</b><i>0</i><b>_temp</b><i>Min06</i> - <i>minimal</i> temperatur <i>today</i> at <i>06:00</i> o'clock in &deg;C</li> <li><b>fc</b><i>0</i><b>_temp</b><i>Min06</i> - <i>minimal</i> temperatur <i>today</i> at <i>06:00</i> o'clock in &deg;C</li>
@ -631,9 +662,11 @@ OPENWEATHER_Html($)
<br> <br>
Optional. Standardsprache f&uuml;r die Wettersituation ist Deutsch. Mit <i>en</i> kann man zu Englisch und mit <i>es</i> zu Spanisch wechseln. Optional. Standardsprache f&uuml;r die Wettersituation ist Deutsch. Mit <i>en</i> kann man zu Englisch und mit <i>es</i> zu Spanisch wechseln.
</li><br> </li><br>
&Uuml;ber die Funktion OPENWEATHER_Html wird ein HTML-Code f&uuml;r ein vertikal arrangierte Wettervorhersage erzeugt. &Uuml;ber die Funktion <code>OPENWEATHER_Html</code> wird ein HTML-Code f&uuml;r ein vertikal arrangierte Wettervorhersage erzeugt.
<br> <br>
Beispiel: <code>define MyWeatherWeblink weblink htmlCode { OPENWEATHER_Html("MyWeather") }</code> Beispiel:
<br>
<code>define MyForecast weblink htmlCode { OPENWEATHER_Html("MyWeather") }</code>
<br/><br/> <br/><br/>
</ul> </ul>
@ -661,6 +694,14 @@ OPENWEATHER_Html($)
<b>Attribute</b> <b>Attribute</b>
<ul> <ul>
<br> <br>
<li><code>disable &lt;0 | 1&gt;</code>
<br>
Automatische Aktuallisierung ist angehalten, wenn der Wert auf 1 gesetzt wird.
</li><br>
<li><code>INTERVAL &lt;Abfrageinterval&gt;</code>
<br>
Abfrageinterval in Sekunden (Standard und kleinster Wert ist 3600 = 1 Stunde). 0 stoppt die automatische Aktualisierung
</li><br>
<li><a href="#readingFnAttributes">readingFnAttributes</a></li> <li><a href="#readingFnAttributes">readingFnAttributes</a></li>
</ul> </ul>
<br/> <br/>
@ -668,11 +709,11 @@ OPENWEATHER_Html($)
<a name="OPENWEATHERreading"></a> <a name="OPENWEATHERreading"></a>
<b>Vorhersagewerte</b> <b>Vorhersagewerte</b>
<ul> <ul>
Wichtig! Die Vorhersagewerte m&uuml;ssen zuerst in den Vorhersageeinstellungen (in Klammern) des Projektes auf wetter.com ausgew&auml;hlt werden. Wichtig! Die Vorhersagewerte (in Klammern) m&uuml;ssen zuerst in den Vorhersageeinstellungen des Projektes auf wetter.com ausgew&auml;hlt werden.
<br\> <br/>&nbsp;<br/>
<li><br><b>fc</b><i>0|1|2</i><b>_...</b> - Vorhersagewerte f&uuml;r <i>heute|morgen|&uuml;bermorgen</i></li> <li><b>fc</b><i>0|1|2</i><b>_...</b> - Vorhersagewerte f&uuml;r <i>heute|morgen|&uuml;bermorgen</i></li>
<li><b>fc</b><i>0</i><b>_...<i>06|11|17|23</i></b> - Vorhersagewerte f&uuml;r <i>heute</i> um <i>06|11|17|23</i> Uhr</li> <li><b>fc</b><i>0</i><b>_...<i>06|11|17|23</i></b> - Vorhersagewerte f&uuml;r <i>heute</i> um <i>06|11|17|23</i> Uhr</li>
<li><b>fc</b><i>0</i><b>_chOfRain</b> - <i>heutige</i> Niederschlagswahrscheinlichkeit in % (PC)</li> <li><b>fc</b><i>0</i><b>_chOfRain</b> - <i>heutige</i> Niederschlagswahrscheinlichkeit in % (pc)</li>
<li><b>fc</b><i>0</i><b>_temp</b><i>Min|Max</i> - <i>Mindest|Maximal</i>temperatur <i>heute</i> in &deg;C (tn, tx)</li> <li><b>fc</b><i>0</i><b>_temp</b><i>Min|Max</i> - <i>Mindest|Maximal</i>temperatur <i>heute</i> in &deg;C (tn, tx)</li>
<li><b>fc</b><i>0</i><b>_temp</b><i>Min06</i> - <i>Mindest</i>temperatur <i>heute</i> um <i>06:00</i> Uhr in &deg;C</li> <li><b>fc</b><i>0</i><b>_temp</b><i>Min06</i> - <i>Mindest</i>temperatur <i>heute</i> um <i>06:00</i> Uhr in &deg;C</li>
<li><b>fc</b><i>0</i><b>_valHours</b><i>06</i> - G&uuml;ltigkeitszeitraum der Prognose von <i>heute</i> ab <i>6:00 Uhr</i> in Stunden (p)</li> <li><b>fc</b><i>0</i><b>_valHours</b><i>06</i> - G&uuml;ltigkeitszeitraum der Prognose von <i>heute</i> ab <i>6:00 Uhr</i> in Stunden (p)</li>