2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-02-25 03:44:52 +00:00

59_Weather.pm: remove DarkSkyAPI and add fixes from stefanru

git-svn-id: https://svn.fhem.de/fhem/trunk@29619 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
LeonGaultier 2025-02-04 20:24:09 +00:00
parent 90033470c4
commit 952d013ced
6 changed files with 64 additions and 847 deletions

View File

@ -1,5 +1,6 @@
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
# Do not insert empty lines here, update check depends on it # Do not insert empty lines here, update check depends on it
- change: 59_Weather.pm: remove DarkSkyAPI and add fixes from stefanru
- bugfix: 76_SolarForecast: minor fixes of Version 1.45.0 - bugfix: 76_SolarForecast: minor fixes of Version 1.45.0
- feature: 76_SolarForecast: Version 1.45.0 rollout - feature: 76_SolarForecast: Version 1.45.0 rollout
- bugfix: 76_SolarForecast: fix https://forum.fhem.de/index.php?msg=1332421 - bugfix: 76_SolarForecast: fix https://forum.fhem.de/index.php?msg=1332421

View File

@ -2,7 +2,7 @@
############################################################################## ##############################################################################
# #
# 59_Weather.pm # 59_Weather.pm
# (c) 2009-2024 Copyright by Dr. Boris Neubert # (c) 2009-2025 Copyright by Dr. Boris Neubert
# e-mail: omega at online dot de # e-mail: omega at online dot de
# #
# Contributors: # Contributors:
@ -74,7 +74,7 @@ __END__
<h3>Weather</h3> <h3>Weather</h3>
<ul> <ul>
Note: you need the JSON perl module. Use <code>apt-get install Note: you need the JSON perl module. Use <code>apt-get install
libjson-perl</code> on Debian and derivatives.<p><p> libjson-perl</code> on Debian and derivatives.<p></p>
The Weather module works with various weather APIs: The Weather module works with various weather APIs:
<ul> <ul>
@ -105,12 +105,12 @@ __END__
<tr><td><code>lang</code></td><td>language of the forecast: <code>de</code>, <tr><td><code>lang</code></td><td>language of the forecast: <code>de</code>,
<code>en</code>, <code>pl</code>, <code>fr</code>, <code>it</code> or <code>nl</code></td></tr> <code>en</code>, <code>pl</code>, <code>fr</code>, <code>it</code> or <code>nl</code></td></tr>
</table> </table>
<p> <p></p>
A very simple definition is:<br><br> A very simple definition is:<br><br>
<code>define &lt;name&gt; Weather apikey=&lt;DarkSkyAPISecretKey&gt;</code><br><br> <code>define &lt;name&gt; Weather apikey=&lt;DarkSkyAPISecretKey&gt;</code><br><br>
This uses the Dark Sky API with an individual key that you need to This uses the Dark Sky API with an individual key that you need to
retrieve from the Dark Sky web site.<p><p> retrieve from the Dark Sky web site.<p></p>
Examples: Examples:
<pre> <pre>
@ -120,9 +120,9 @@ __END__
</pre> </pre>
API-specific documentation follows.<p> API-specific documentation follows.<p></p>
<h4>Dark Sky</h4><p> <h4>Dark Sky</h4><p></p>
<table> <table>
<tr><td>API</td><td><code>DarkSkyAPI</code></td></tr> <tr><td>API</td><td><code>DarkSkyAPI</code></td></tr>
@ -133,9 +133,9 @@ __END__
weather is forecast; if missing, the values of the attributes weather is forecast; if missing, the values of the attributes
of the <code>global</code> device are taken, if these exist.</td></tr> of the <code>global</code> device are taken, if these exist.</td></tr>
</table> </table>
<p><p> <p></p>
<h4>OpenWeatherMap</h4><p> <h4>OpenWeatherMap</h4><p></p>
<table> <table>
<tr><td>API</td><td><code>OpenWeatherMapAPI</code></td></tr> <tr><td>API</td><td><code>OpenWeatherMapAPI</code></td></tr>
@ -151,9 +151,9 @@ __END__
weather is forecast; if missing, the values of the attributes weather is forecast; if missing, the values of the attributes
of the <code>global</code> device are taken, if these exist.</td></tr> of the <code>global</code> device are taken, if these exist.</td></tr>
</table> </table>
<p><p> <p></p>
<h4>Wunderground</h4><p> <h4>Wunderground</h4><p></p>
<table> <table>
<tr><td>API</td><td><code>wundergroundAPI</code></td></tr> <tr><td>API</td><td><code>wundergroundAPI</code></td></tr>
@ -165,7 +165,7 @@ __END__
weather is forecast; if missing, the values of the attributes weather is forecast; if missing, the values of the attributes
of the <code>global</code> device are taken, if these exist.</td></tr> of the <code>global</code> device are taken, if these exist.</td></tr>
</table> </table>
<p><p> <p></p>
The module provides four additional functions <code>WeatherAsHtml</code>, The module provides four additional functions <code>WeatherAsHtml</code>,
<code>WeatherAsHtmlV</code>, <code>WeatherAsHtmlH</code> and <code>WeatherAsHtmlV</code>, <code>WeatherAsHtmlH</code> and
@ -303,7 +303,7 @@ __END__
<ul> <ul>
Hinweis: es wird das Perl-Modul JSON ben&ouml;tigt. Mit <code>apt-get install Hinweis: es wird das Perl-Modul JSON ben&ouml;tigt. Mit <code>apt-get install
libjson-perl</code> kann es unter Debian und Derivaten installiert libjson-perl</code> kann es unter Debian und Derivaten installiert
werden.<p><p> werden.<p></p>
Das Weather-Modul arbeitet mit verschiedenen Wetter-APIs zusammen: Das Weather-Modul arbeitet mit verschiedenen Wetter-APIs zusammen:
<ul> <ul>
@ -334,14 +334,15 @@ __END__
<tr><td><code>lang</code></td><td>Sprache der Wettervorhersage: <code>de</code>, <tr><td><code>lang</code></td><td>Sprache der Wettervorhersage: <code>de</code>,
<code>en</code>, <code>pl</code>, <code>fr</code>, <code>it</code> oder <code>nl</code></td></tr> <code>en</code>, <code>pl</code>, <code>fr</code>, <code>it</code> oder <code>nl</code></td></tr>
</table> </table>
<p> <p></p>
Eine ganz einfache Definition ist:<br><br> Eine ganz einfache Definition ist:<br><br>
<code>define &lt;name&gt; Weather apikey=&lt;DarkSkyAPISecretKey&gt;</code><br><br> <code>define &lt;name&gt; Weather apikey=&lt;DarkSkyAPISecretKey&gt;</code><br><br>
Bei dieser Definition wird die API von Dark Sky verwendet mit einem Bei dieser Definition wird die API von Dark Sky verwendet mit einem
individuellen Schl&uuml;ssel, den man sich auf der Webseite von Dark Sky individuellen Schl&uuml;ssel, den man sich auf der Webseite von Dark Sky
beschaffen muss.<p><p> beschaffen muss.<p></p>
Beispiele: Beispiele:
<pre> <pre>
@ -350,9 +351,9 @@ __END__
define <name> Weather API=wundergroundAPI,stationId:IHAUIDELB111 apikey=ed64ccc80f004556a4e3456567800b6324a define <name> Weather API=wundergroundAPI,stationId:IHAUIDELB111 apikey=ed64ccc80f004556a4e3456567800b6324a
</pre> </pre>
Es folgt die API-spezifische Dokumentation.<p> Es folgt die API-spezifische Dokumentation.<p></p>
<h4>Dark Sky</h4><p> <h4>Dark Sky</h4><p></p>
<table> <table>
<tr><td>API</td><td><code>DarkSkyAPI</code></td></tr> <tr><td>API</td><td><code>DarkSkyAPI</code></td></tr>
@ -364,9 +365,9 @@ __END__
Bei fehlender Angabe werden die Werte aus den gleichnamigen Attributen Bei fehlender Angabe werden die Werte aus den gleichnamigen Attributen
des <code>global</code>-Device genommen, sofern vorhanden.</td></tr> des <code>global</code>-Device genommen, sofern vorhanden.</td></tr>
</table> </table>
<p><p> <p></p>
<h4>OpenWeatherMap</h4><p> <h4>OpenWeatherMap</h4><p></p>
<table> <table>
<tr><td>API</td><td><code>OpenWeatherMapAPI</code></td></tr> <tr><td>API</td><td><code>OpenWeatherMapAPI</code></td></tr>
@ -385,9 +386,9 @@ __END__
Bei fehlender Angabe werden die Werte aus den gleichnamigen Attributen Bei fehlender Angabe werden die Werte aus den gleichnamigen Attributen
des <code>global</code>-Device genommen, sofern vorhanden.</td></tr> des <code>global</code>-Device genommen, sofern vorhanden.</td></tr>
</table> </table>
<p><p> <p></p>
<h4>Wunderground</h4><p> <h4>Wunderground</h4><p></p>
<table> <table>
<tr><td>API</td><td><code>wundergroundAPI</code></td></tr> <tr><td>API</td><td><code>wundergroundAPI</code></td></tr>
@ -400,7 +401,7 @@ __END__
Bei fehlender Angabe werden die Werte aus den gleichnamigen Attributen Bei fehlender Angabe werden die Werte aus den gleichnamigen Attributen
des <code>global</code>-Device genommen, sofern vorhanden.</td></tr> des <code>global</code>-Device genommen, sofern vorhanden.</td></tr>
</table> </table>
<p><p> <p></p>
Das Modul unterst&uuml;tzt zus&auml;tzlich vier verschiedene Funktionen Das Modul unterst&uuml;tzt zus&auml;tzlich vier verschiedene Funktionen
<code>WeatherAsHtml</code>, <code>WeatherAsHtmlV</code>, <code>WeatherAsHtml</code>, <code>WeatherAsHtmlV</code>,
@ -544,7 +545,7 @@ __END__
], ],
"release_status": "stable", "release_status": "stable",
"license": "GPL_2", "license": "GPL_2",
"version": "v2.2.30", "version": "v2.2.35",
"author": [ "author": [
"Marko Oldenburg <fhemdevelopment@cooltux.net>" "Marko Oldenburg <fhemdevelopment@cooltux.net>"
], ],
@ -573,3 +574,4 @@ __END__
=end :application/json;q=META.json =end :application/json;q=META.json
=cut =cut

File diff suppressed because one or more lines are too long

View File

@ -3,7 +3,7 @@
# #
# Developed with VSCodium and richterger perl plugin # Developed with VSCodium and richterger perl plugin
# #
# (c) 2019-2023 Copyright: Marko Oldenburg (fhemdevelopment at cooltux dot net) # (c) 2019-2025 Copyright: Marko Oldenburg (fhemdevelopment at cooltux dot net)
# All rights reserved # All rights reserved
# #
# Special thanks goes to: # Special thanks goes to:
@ -423,7 +423,7 @@ sub _ProcessingRetrieveData {
_ErrorHandling( $self, _ErrorHandling( $self,
'OpenWeatherMap Weather decode JSON err ' . $@ ); 'OpenWeatherMap Weather decode JSON err ' . $@ );
} }
elsif (defined( $data->{cod} ) elsif ( defined( $data->{cod} )
&& $data->{cod} && $data->{cod}
&& $data->{cod} != 200 && $data->{cod} != 200
&& defined( $data->{message} ) && defined( $data->{message} )

File diff suppressed because one or more lines are too long

View File

@ -2,7 +2,7 @@
############################################################################## ##############################################################################
# #
# 59_Weather.pm # 59_Weather.pm
# (c) 2009-2024 Copyright by Dr. Boris Neubert # (c) 2009-2025 Copyright by Dr. Boris Neubert
# e-mail: omega at online dot de # e-mail: omega at online dot de
# #
# Contributors: # Contributors:
@ -434,8 +434,13 @@ sub _Writereadings {
&& ref( $dataRef->{$r} ) ne 'ARRAY' ); && ref( $dataRef->{$r} ) ne 'ARRAY' );
} }
::readingsBulkUpdate( $hash, 'icon', if ( defined( $dataRef->{current}->{code} )
$iconlist[ $dataRef->{current}->{code} ] ); && $dataRef->{current}->{code} )
{
::readingsBulkUpdate( $hash, 'icon',
$iconlist[ $dataRef->{current}->{code} ] );
}
if ( defined( $dataRef->{current}->{wind_direction} ) if ( defined( $dataRef->{current}->{wind_direction} )
&& $dataRef->{current}->{wind_direction} && $dataRef->{current}->{wind_direction}
&& defined( $dataRef->{current}->{wind_speed} ) && defined( $dataRef->{current}->{wind_speed} )