9 Commits

Author SHA1 Message Date
437d04b87c Fix Weather.pm to use READINGS instead of readings
This commit corrects the hash key used to access device readings in the
 Weather.pm module. All instances of the lowercase 'readings' hash key
 have been changed to the uppercase 'READINGS', which is the standard
 convention in FHEM. This fixes potential issues where weather data
 wasn't being properly accessed or displayed because the module was
 looking for readings in the wrong hash location. The change affects
 the Get function and HTML rendering methods for both vertical and
 horizontal layouts.
2025-10-17 12:20:04 +02:00
82d0e6b1b6 Update version to 2.3.1 and fix conditionals in Weather.pm
This commit increments the version number of the FHEM Weather
module from 2.3.0 to 2.3.1 and addresses several issues with
conditionals in the Weather.pm file. The syntax for checking
command attributes has been corrected, ensuring accurate
evaluation of conditions.

These improvements enhance code clarity and correctness,
facilitating ongoing maintenance. There are no breaking
changes introduced in this update; existing functionality
is preserved.
2025-10-16 19:01:08 +02:00
e84d810e39 Update version to 2.3.1 and fix conditionals in Weather.pm
This commit updates the version number in the FHEM weather module
from 2.3.0 to 2.3.1 to reflect the latest changes.

In addition to the version bump, several conditionals in
lib/FHEM/Core/Weather.pm have been corrected. Specifically, the
syntax for checking the command attributes has been fixed to ensure
proper evaluation of the conditions.

These changes improve code clarity and correctness, which helps
in maintaining the module. There are no breaking changes in this
commit, and existing functionality remains intact.
2025-10-16 19:01:00 +02:00
dbd7d760aa Remove DarkSky API support from Weather module
The DarkSky API support has been removed from the Weather module
documentation, affecting both English and German sections. The API
documentation now focuses solely on the OpenWeatherMap API.

Changes include the deletion of DarkSky references in `59_Weather.pm`
and updates to example command snippets to refer to the
OpenWeatherMap API. The version number was incremented from
v2.2.35 to v2.3.0, and the OpenWeatherMap API version was updated
from v3.2.7 to v3.2.8.

These updates were necessary as DarkSky has been discontinued,
streamlining the module's functionality. There are no breaking
changes for current OpenWeatherMap API users.

Additionally, the language handling in the Weather API was
refactored to replace the experimental `given/when` construct
with standard `if/elsif` statements for better readability
and maintainability. This change does not introduce any breaking
changes and enhances code clarity.
2025-10-14 07:35:31 +02:00
75f92aece3 Remove DarkSky API support from Weather module
The DarkSky API support has been removed from the Weather module documentation,
including its references in both English and German sections. The API
documentation has been updated to exclusively focus on the
OpenWeatherMap API.

The changes made to `59_Weather.pm` include:

- Deleted mentions of the DarkSky API in the documentation.
- Updated example command snippets to reference the
  OpenWeatherMap API.
- Version number has been incremented from v2.2.35 to v2.3.0.

In addition, the version number for the OpenWeatherMap API support
has been updated from v3.2.7 to v3.2.8 in the corresponding API file.

These updates were necessary to streamline the module's
functionality and align it with current API availability, as
DarkSky has been discontinued. There are no breaking changes
for existing users of the OpenWeatherMap API.
2025-10-14 07:35:18 +02:00
14644b8575 Refactor language handling in Weather API
Improved the language initialization logic by replacing the
experimental `given/when` construct with a more standard
`if/elsif` structure to enhance code readability and
maintainability. The attribute handling in the `Attr` subroutine
was simplified for clarity, removing unnecessary usage
of `given/when`, which helps reduce complexity throughout
the codebase.

Additionally, in the OpenWeatherMapAPI module, the logic for
handling weather response data was streamlined by removing
`given/when` statements in favor of `if` conditions. This change
avoids potential confusion and enhances the clarity of the
code logic. No breaking changes were introduced; the overall
functionality remains intact.
2025-10-14 07:04:00 +02:00
f37a24673c Refactor language handling in Weather API
Improved the language initialization logic by replacing the
experimental `given/when` construct with a more standard
`if/elsif` structure, enhancing code readability and
maintainability. The attribute handling in the `Attr` subroutine
was also refactored for clarity, removing unnecessary usage
of `given/when`, which helps reduce complexity throughout
the codebase.

In the OpenWeatherMapAPI module, the logic for handling
weather response data was streamlined by removing `given/when`
statements in favor of `if` conditions. This change avoids
potential confusion and enhances the clarity of the code logic.
No breaking changes were introduced; the overall functionality
remains intact.
2025-10-14 07:03:38 +02:00
d313cb8d4a Refactor language handling to improve readability
Improved the language initialization logic by replacing the
experimental `given/when` construct with a more standard
`if/elsif` structure, enhancing code readability and
maintainability. Additionally, the attribute handling in the
`Attr` subroutine was refactored for clarity, removing
unnecessary usage of `given/when`, which helps reduce
complexity across the codebase.

Furthermore, in the OpenWeatherMapAPI module, logic for
handling weather response data was streamlined by removing
the `given/when` statements in favor of `if` conditions.
This change eliminates potential confusion and enhances
the clarity of the code logic. No breaking changes were
introduced; the overall functionality remains intact.
2025-10-14 07:01:07 +02:00
2e3210c438 Refactor language initialization and attribute handling
Improved the language initialization logic by replacing
the experimental `given/when` construct with a more
standard `if/elsif` structure. This change enhances code
readability and maintainability, making it easier to follow
the flow of language assignments.

Additionally, refactored attribute handling in the `Attr`
subroutine by streamlining the conditions, removing
unnecessary `given/when` usage, and maintaining clarity
in the logic for setting and deleting forecasts and alerts.
These changes help reduce complexity and improve
consistency throughout the codebase.
2025-10-14 06:53:44 +02:00
6 changed files with 324 additions and 175 deletions

View File

@@ -1,4 +1,200 @@
### ``` Refactor pre-commit hook file list and output formatting (HEAD -> patch-removedarksky)
### Update version to 2.3.1 and fix conditionals in Weather.pm (HEAD -> patch-mod-weather)
>Thu, 16 Oct 2025 19:01:00 +0200
>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net)
This commit updates the version number in the FHEM weather module
from 2.3.0 to 2.3.1 to reflect the latest changes.
In addition to the version bump, several conditionals in
lib/FHEM/Core/Weather.pm have been corrected. Specifically, the
syntax for checking the command attributes has been fixed to ensure
proper evaluation of the conditions.
These changes improve code clarity and correctness, which helps
in maintaining the module. There are no breaking changes in this
commit, and existing functionality remains intact.
### Remove DarkSky API support from Weather module (tag: v2.3.0, origin/testing, origin/main, origin/dev, origin/HEAD, testing, main, dev)
>Tue, 14 Oct 2025 07:35:31 +0200
>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net)
The DarkSky API support has been removed from the Weather module
documentation, affecting both English and German sections. The API
documentation now focuses solely on the OpenWeatherMap API.
Changes include the deletion of DarkSky references in `59_Weather.pm`
and updates to example command snippets to refer to the
OpenWeatherMap API. The version number was incremented from
v2.2.35 to v2.3.0, and the OpenWeatherMap API version was updated
from v3.2.7 to v3.2.8.
These updates were necessary as DarkSky has been discontinued,
streamlining the module's functionality. There are no breaking
changes for current OpenWeatherMap API users.
Additionally, the language handling in the Weather API was
refactored to replace the experimental `given/when` construct
with standard `if/elsif` statements for better readability
and maintainability. This change does not introduce any breaking
changes and enhances code clarity.
### Remove DarkSky API support from Weather module
>Tue, 14 Oct 2025 07:35:18 +0200
>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net)
The DarkSky API support has been removed from the Weather module documentation,
including its references in both English and German sections. The API
documentation has been updated to exclusively focus on the
OpenWeatherMap API.
The changes made to `59_Weather.pm` include:
- Deleted mentions of the DarkSky API in the documentation.
- Updated example command snippets to reference the
OpenWeatherMap API.
- Version number has been incremented from v2.2.35 to v2.3.0.
In addition, the version number for the OpenWeatherMap API support
has been updated from v3.2.7 to v3.2.8 in the corresponding API file.
These updates were necessary to streamline the module's
functionality and align it with current API availability, as
DarkSky has been discontinued. There are no breaking changes
for existing users of the OpenWeatherMap API.
### Refactor language handling in Weather API
>Tue, 14 Oct 2025 07:04:00 +0200
>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net)
Improved the language initialization logic by replacing the
experimental `given/when` construct with a more standard
`if/elsif` structure to enhance code readability and
maintainability. The attribute handling in the `Attr` subroutine
was simplified for clarity, removing unnecessary usage
of `given/when`, which helps reduce complexity throughout
the codebase.
Additionally, in the OpenWeatherMapAPI module, the logic for
handling weather response data was streamlined by removing
`given/when` statements in favor of `if` conditions. This change
avoids potential confusion and enhances the clarity of the
code logic. No breaking changes were introduced; the overall
functionality remains intact.
### Refactor language handling in Weather API
>Tue, 14 Oct 2025 07:03:38 +0200
>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net)
Improved the language initialization logic by replacing the
experimental `given/when` construct with a more standard
`if/elsif` structure, enhancing code readability and
maintainability. The attribute handling in the `Attr` subroutine
was also refactored for clarity, removing unnecessary usage
of `given/when`, which helps reduce complexity throughout
the codebase.
In the OpenWeatherMapAPI module, the logic for handling
weather response data was streamlined by removing `given/when`
statements in favor of `if` conditions. This change avoids
potential confusion and enhances the clarity of the code logic.
No breaking changes were introduced; the overall functionality
remains intact.
### Refactor language handling to improve readability
>Tue, 14 Oct 2025 07:01:07 +0200
>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net)
Improved the language initialization logic by replacing the
experimental `given/when` construct with a more standard
`if/elsif` structure, enhancing code readability and
maintainability. Additionally, the attribute handling in the
`Attr` subroutine was refactored for clarity, removing
unnecessary usage of `given/when`, which helps reduce
complexity across the codebase.
Furthermore, in the OpenWeatherMapAPI module, logic for
handling weather response data was streamlined by removing
the `given/when` statements in favor of `if` conditions.
This change eliminates potential confusion and enhances
the clarity of the code logic. No breaking changes were
introduced; the overall functionality remains intact.
### Refactor language initialization and attribute handling
>Tue, 14 Oct 2025 06:53:44 +0200
>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net)
Improved the language initialization logic by replacing
the experimental `given/when` construct with a more
standard `if/elsif` structure. This change enhances code
readability and maintainability, making it easier to follow
the flow of language assignments.
Additionally, refactored attribute handling in the `Attr`
subroutine by streamlining the conditions, removing
unnecessary `given/when` usage, and maintaining clarity
in the logic for setting and deleting forecasts and alerts.
These changes help reduce complexity and improve
consistency throughout the codebase.
### ``` Refactor pre-commit hook by removing DarkSkyAPI references
>Wed, 5 Feb 2025 07:08:45 +0100
>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net)
Updated the pre-commit hook to eliminate references to
'lib/FHEM/APIs/Weather/DarkSkyAPI.pm'. This change was made to
simplify the codebase and make it more relevant by focusing on
the other weather API files.
Additionally, the output formatting of the pre-commit hook
has been improved for better readability, and the order of
the files in the @filenames array has been restructured for
clarity.
No breaking changes have been introduced; the pre-commit
hook continues to operate as intended.
```
### ``` Refactor pre-commit hook file list and output formatting
>Wed, 5 Feb 2025 07:07:52 +0100
>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
@@ -38,7 +234,7 @@ function as intended.
### docs: add changelog (origin/patch-changeVersion)
### docs: add changelog
>Tue, 4 Feb 2025 21:01:33 +0100
>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)

View File

@@ -78,7 +78,6 @@ __END__
The Weather module works with various weather APIs:
<ul>
<li>DarkSky (<a href="https://darksky.net">web site</a>, standard)</li>
<li>OpenWeatherMap (<a href="https://openweathermap.org/">web site)</a></li>
<li>Wunderground (<a href="https://www.wunderground.com/member/api-keys">web site)</a></li>
</ul>
@@ -96,7 +95,7 @@ __END__
The parameters have the following meanings:<br>
<table>
<tr><td><code>API</code></td><td>name of the weather API, e.g. <code>DarkSkyAPI</code></td></tr>
<tr><td><code>API</code></td><td>name of the weather API, e.g. <code>OpenWeatherMapAPI</code></td></tr>
<tr><td><code>apioptions</code></td><td>indivual options for the chosen API</td></tr>
<tr><td><code>apikey</code></td><td>key for the chosen API</td></tr>
<tr><td><code>location</code></td><td>location for the weather forecast;
@@ -108,7 +107,7 @@ __END__
<p></p>
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;OpenWeatherMapAPISecretKey&gt;</code><br><br>
This uses the Dark Sky API with an individual key that you need to
retrieve from the Dark Sky web site.<p></p>
@@ -122,19 +121,6 @@ __END__
API-specific documentation follows.<p></p>
<h4>Dark Sky</h4><p></p>
<table>
<tr><td>API</td><td><code>DarkSkyAPI</code></td></tr>
<tr><td>apioptions</td><td><code>cachemaxage:&lt;cachemaxage&gt;</code><br>duration
in seconds to retrieve the forecast from the cache instead from the API</td></tr>
<tr><td>location</td><td><code>&lt;latitude,longitude&gt;</code><br>
geographic coordinates in degrees of the location for which the
weather is forecast; if missing, the values of the attributes
of the <code>global</code> device are taken, if these exist.</td></tr>
</table>
<p></p>
<h4>OpenWeatherMap</h4><p></p>
<table>
@@ -324,7 +310,7 @@ __END__
Die Parameter haben die folgende Bedeutung:<br>
<table>
<tr><td><code>API</code></td><td>Name des Wetter-APIs, z.B. <code>DarkSkyAPI</code></td></tr>
<tr><td><code>API</code></td><td>Name des Wetter-APIs, z.B. <code>OpenWeatherMapAPI</code></td></tr>
<tr><td><code>apioptions</code></td><td>Individuelle Optionen f&uuml;r das gew&auml;hlte API</td></tr>
<tr><td><code>apikey</code></td><td>Schl&uuml;ssel f&uuml;r das gew&auml;hlte API</td></tr>
<tr><td><code>location</code></td><td>Ort, f&uuml;r den das Wetter vorhergesagt wird.
@@ -338,7 +324,7 @@ __END__
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;OpenWeatherMapAPISecretKey&gt;</code><br><br>
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
@@ -353,20 +339,6 @@ __END__
Es folgt die API-spezifische Dokumentation.<p></p>
<h4>Dark Sky</h4><p></p>
<table>
<tr><td>API</td><td><code>DarkSkyAPI</code></td></tr>
<tr><td>apioptions</td><td><code>cachemaxage:&lt;cachemaxage&gt;</code><br>Zeitdauer in
Sekunden, innerhalb derer die Wettervorhersage nicht neu abgerufen
sondern aus dem Cache zur&uuml;ck geliefert wird.</td></tr>
<tr><td>location</td><td><code>&lt;latitude,longitude&gt;</code><br> Geographische Breite
und L&auml;nge des Ortes in Grad, f&uuml;r den das Wetter vorhergesagt wird.
Bei fehlender Angabe werden die Werte aus den gleichnamigen Attributen
des <code>global</code>-Device genommen, sofern vorhanden.</td></tr>
</table>
<p></p>
<h4>OpenWeatherMap</h4><p></p>
<table>
@@ -539,13 +511,12 @@ __END__
"fhem-mod-device",
"fhem-core",
"Weather",
"DarkSky",
"OpenWeatherMap",
"Underground"
],
"release_status": "stable",
"license": "GPL_2",
"version": "v2.2.35",
"version": "v2.3.1",
"author": [
"Marko Oldenburg <fhemdevelopment@cooltux.net>"
],

View File

@@ -1,4 +1,4 @@
UPD 2025-02-05_05:56:41 25899 FHEM/59_Weather.pm
UPD 2025-02-04_21:08:26 34419 lib/FHEM/Core/Weather.pm
UPD 2025-02-05_06:38:34 33780 lib/FHEM/APIs/Weather/OpenWeatherMapAPI.pm
UPD 2025-02-04_21:08:26 38751 lib/FHEM/APIs/Weather/wundergroundAPI.pm
UPD 2025-10-16_18:59:55 24515 FHEM/59_Weather.pm
UPD 2025-10-16_18:59:41 34158 lib/FHEM/Core/Weather.pm
UPD 2025-10-14_07:39:57 33545 lib/FHEM/APIs/Weather/OpenWeatherMapAPI.pm
UPD 2025-10-14_07:20:30 38721 lib/FHEM/APIs/Weather/wundergroundAPI.pm

View File

@@ -41,7 +41,8 @@ use FHEM::Meta;
use POSIX;
use HttpUtils;
use experimental qw /switch/;
#use experimental qw /switch/;
my $META = {};
my $ret = FHEM::Meta::getMetadata( __FILE__, $META );
@@ -466,8 +467,7 @@ sub _FillSelfHashWithWeatherResponse {
$self->{cached}->{city} = encode_utf8( $data->{name} );
$self->{cached}->{license}{text} = 'none';
given ( $self->{endpoint} ) {
when ('onecall') {
if ( $self->{endpoint} eq 'onecall' ) {
## löschen des alten current Datensatzes
delete $self->{cached}->{current};
@@ -484,28 +484,24 @@ sub _FillSelfHashWithWeatherResponse {
&& scalar( @{ $data->{hourly} } ) > 0 )
{
$self =
_FillSelfHashWithWeatherResponseForOnecallHourly( $self,
$data );
_FillSelfHashWithWeatherResponseForOnecallHourly( $self, $data );
}
if ( ref( $data->{daily} ) eq "ARRAY"
&& scalar( @{ $data->{daily} } ) > 0 )
{
$self =
_FillSelfHashWithWeatherResponseForOnecallDaily( $self,
$data );
_FillSelfHashWithWeatherResponseForOnecallDaily( $self, $data );
}
if ( ref( $data->{alerts} ) eq "ARRAY"
&& scalar( @{ $data->{alerts} } ) > 0 )
{
$self =
_FillSelfHashWithWeatherResponseForOnecallAlerts( $self,
$data );
_FillSelfHashWithWeatherResponseForOnecallAlerts( $self, $data );
}
}
when ('weather') {
elsif ( $self->{endpoint} eq 'weather' ) {
## löschen des alten current Datensatzes
delete $self->{cached}->{current};
@@ -515,8 +511,7 @@ sub _FillSelfHashWithWeatherResponse {
$self =
_FillSelfHashWithWeatherResponseForWeatherCurrent( $self, $data );
}
when ('forecast') {
elsif ( $self->{endpoint} eq 'forecast' ) {
## löschen des alten forecast Datensatzes
delete $self->{cached}->{forecast};
@@ -524,9 +519,7 @@ sub _FillSelfHashWithWeatherResponse {
and scalar( @{ $data->{list} } ) > 0 )
{
$self =
_FillSelfHashWithWeatherResponseForForecastHourly( $self,
$data );
}
_FillSelfHashWithWeatherResponseForForecastHourly( $self, $data );
}
}
@@ -1036,7 +1029,7 @@ sub _strftimeWrapper {
],
"release_status": "stable",
"license": "GPL_2",
"version": "v3.2.7",
"version": "v3.2.8",
"author": [
"Marko Oldenburg <fhemdevelopment@cooltux.net>"
],

View File

@@ -6,7 +6,6 @@ use FHEM::Meta;
use POSIX;
use HttpUtils;
use experimental qw /switch/;
use Encode;
my $META = {};

View File

@@ -41,10 +41,7 @@ eval { use Time::HiRes qw /gettimeofday/; 1 }
eval { use Readonly; 1 }
or $missingModul .= "libreadonly-perl ";
#use Time::HiRes qw(gettimeofday);
use experimental qw /switch/;
#use Readonly;
#use experimental qw /switch/;
use FHEM::Meta;
@@ -224,48 +221,45 @@ sub _LanguageInitialize {
my $lang = shift;
given ($lang) {
when ('de') {
if ( $lang eq 'de' ) {
%wdays_txt_i18n = %wdays_txt_de;
@directions_txt_i18n = @directions_txt_de;
%pressure_trend_txt_i18n = %pressure_trend_txt_de;
%status_items_txt_i18n = %status_items_txt_de;
}
when ('nl') {
elsif ( $lang eq 'nl' ) {
%wdays_txt_i18n = %wdays_txt_nl;
@directions_txt_i18n = @directions_txt_nl;
%pressure_trend_txt_i18n = %pressure_trend_txt_nl;
%status_items_txt_i18n = %status_items_txt_nl;
}
when ('fr') {
elsif ( $lang eq 'fr' ) {
%wdays_txt_i18n = %wdays_txt_fr;
@directions_txt_i18n = @directions_txt_fr;
%pressure_trend_txt_i18n = %pressure_trend_txt_fr;
%status_items_txt_i18n = %status_items_txt_fr;
}
when ('pl') {
}
elsif ( $lang eq 'pl' ) {
%wdays_txt_i18n = %wdays_txt_pl;
@directions_txt_i18n = @directions_txt_pl;
%pressure_trend_txt_i18n = %pressure_trend_txt_pl;
%status_items_txt_i18n = %status_items_txt_pl;
}
when ('it') {
}
elsif ( $lang eq 'it' ) {
%wdays_txt_i18n = %wdays_txt_it;
@directions_txt_i18n = @directions_txt_it;
%pressure_trend_txt_i18n = %pressure_trend_txt_it;
%status_items_txt_i18n = %status_items_txt_it;
}
default {
}
else {
%wdays_txt_i18n = %wdays_txt_en;
@directions_txt_i18n = @directions_txt_en;
%pressure_trend_txt_i18n = %pressure_trend_txt_en;
%status_items_txt_i18n = %status_items_txt_en;
}
}
return;
@@ -650,13 +644,13 @@ sub Get {
my $reading = shift @$aRef // return;
my $value;
if ( defined( $hash->{readings}->{$reading} ) ) {
$value = $hash->{readings}->{$reading}->{VAL};
if ( defined( $hash->{READINGS}->{$reading} ) ) {
$value = $hash->{READINGS}->{$reading}->{VAL};
}
else {
my $rt = '';
if ( defined( $hash->{readings} ) ) {
$rt = join( ":noArg ", sort keys %{ $hash->{readings} } );
if ( defined( $hash->{READINGS} ) ) {
$rt = join( ":noArg ", sort keys %{ $hash->{READINGS} } );
}
return "Unknown reading $reading, choose one of " . $rt;
@@ -862,8 +856,7 @@ sub Attr {
my ( $cmd, $name, $attrName, $AttrVal ) = @_;
my $hash = $::defs{$name};
given ($attrName) {
when ('forecast') {
if ( $attrName eq 'forecast' ) {
if ( $cmd eq 'set' ) {
$hash->{fhem}->{api}->setForecast($AttrVal);
}
@@ -874,13 +867,11 @@ sub Attr {
::InternalTimer( gettimeofday() + 0.5,
\&FHEM::Core::Weather::DeleteForecastreadings, $hash );
}
when ('forecastLimit') {
elsif ( $cmd eq 'forecastLimit' ) {
::InternalTimer( gettimeofday() + 0.5,
\&FHEM::Core::Weather::DeleteForecastreadings, $hash );
}
when ('alerts') {
elsif ( $cmd eq 'alerts' ) {
if ( $cmd eq 'set' ) {
$hash->{fhem}->{api}->setAlerts($AttrVal);
}
@@ -891,7 +882,6 @@ sub Attr {
::InternalTimer( gettimeofday() + 0.5,
\&FHEM::Core::Weather::DeleteAlertsreadings, $hash );
}
}
return;
}
@@ -943,8 +933,8 @@ sub WeatherAsHtmlV {
else {
$fc = (
(
defined( $h->{readings}->{fc1_day_of_week} )
&& $h->{readings}->{fc1_day_of_week}
defined( $h->{READINGS}->{fc1_day_of_week} )
&& $h->{READINGS}->{fc1_day_of_week}
) ? 'fc' : 'hfc'
);
}
@@ -960,8 +950,8 @@ sub WeatherAsHtmlV {
);
for ( my $i = 1 ; $i < $items ; $i++ ) {
if ( defined( $h->{readings}->{"${fc}${i}_low_c"} )
&& $h->{readings}->{"${fc}${i}_low_c"} )
if ( defined( $h->{READINGS}->{"${fc}${i}_low_c"} )
&& $h->{READINGS}->{"${fc}${i}_low_c"} )
{
$ret .= sprintf(
'<tr><td class="weatherIcon" width=%d>%s</td><td class="weatherValue"><span class="weatherDay">%s: %s</span><br><span class="weatherMin">min %s°C</span> <span class="weatherMax">max %s°C</span><br>%s</td></tr>',
@@ -1031,8 +1021,8 @@ sub WeatherAsHtmlH {
else {
$fc = (
(
defined( $h->{readings}->{fc1_day_of_week} )
&& $h->{readings}->{fc1_day_of_week}
defined( $h->{READINGS}->{fc1_day_of_week} )
&& $h->{READINGS}->{fc1_day_of_week}
) ? 'fc' : 'hfc'
);
}
@@ -1066,8 +1056,8 @@ sub WeatherAsHtmlH {
::ReadingsVal( $d, "humidity", "" )
);
for ( my $i = 1 ; $i < $items ; $i++ ) {
if ( defined( $h->{readings}->{"${fc}${i}_low_c"} )
&& $h->{readings}->{"${fc}${i}_low_c"} )
if ( defined( $h->{READINGS}->{"${fc}${i}_low_c"} )
&& $h->{READINGS}->{"${fc}${i}_low_c"} )
{
$ret .= sprintf( '<td class="weatherMin">min %s°C</td>',
::ReadingsVal( $d, "${fc}${i}_low_c", " - " ) );
@@ -1084,8 +1074,8 @@ sub WeatherAsHtmlH {
$ret .= sprintf( '<tr><td class="weatherMax">%s</td>',
::ReadingsVal( $d, "wind_condition", "" ) );
for ( my $i = 1 ; $i < $items ; $i++ ) {
if ( defined( $h->{readings}->{"${fc}${i}_high_c"} )
&& $h->{readings}->{"${fc}${i}_high_c"} )
if ( defined( $h->{READINGS}->{"${fc}${i}_high_c"} )
&& $h->{READINGS}->{"${fc}${i}_high_c"} )
{
$ret .= sprintf( '<td class="weatherMax">max %s°C</td>',
::ReadingsVal( $d, "${fc}${i}_high_c", " - " ) );