location | location for the weather forecast;
@@ -108,7 +107,7 @@ __END__
A very simple definition is:
- define <name> Weather apikey=<DarkSkyAPISecretKey>
+ define <name> Weather apikey=<OpenWeatherMapAPISecretKey>
This uses the Dark Sky API with an individual key that you need to
retrieve from the Dark Sky web site.
@@ -122,19 +121,6 @@ __END__
API-specific documentation follows.
- Dark Sky
-
-
- | API | DarkSkyAPI |
- | apioptions | cachemaxage:<cachemaxage> duration
- in seconds to retrieve the forecast from the cache instead from the API |
- | location | <latitude,longitude>
- geographic coordinates in degrees of the location for which the
- weather is forecast; if missing, the values of the attributes
- of the global device are taken, if these exist. |
-
-
-
OpenWeatherMap
@@ -324,7 +310,7 @@ __END__
Die Parameter haben die folgende Bedeutung:
- API | Name des Wetter-APIs, z.B. DarkSkyAPI |
+ API | Name des Wetter-APIs, z.B. OpenWeatherMapAPI |
apioptions | Individuelle Optionen für das gewählte API |
apikey | Schlüssel für das gewählte API |
location | Ort, für den das Wetter vorhergesagt wird.
@@ -338,7 +324,7 @@ __END__
Eine ganz einfache Definition ist:
- define <name> Weather apikey=<DarkSkyAPISecretKey>
+ define <name> Weather apikey=<OpenWeatherMapAPISecretKey>
Bei dieser Definition wird die API von Dark Sky verwendet mit einem
individuellen Schlüssel, den man sich auf der Webseite von Dark Sky
@@ -353,20 +339,6 @@ __END__
Es folgt die API-spezifische Dokumentation.
- Dark Sky
-
-
- | API | DarkSkyAPI |
- | apioptions | cachemaxage:<cachemaxage> Zeitdauer in
- Sekunden, innerhalb derer die Wettervorhersage nicht neu abgerufen
- sondern aus dem Cache zurück geliefert wird. |
- | location | <latitude,longitude> Geographische Breite
- und Länge des Ortes in Grad, für den das Wetter vorhergesagt wird.
- Bei fehlender Angabe werden die Werte aus den gleichnamigen Attributen
- des global-Device genommen, sofern vorhanden. |
-
-
-
OpenWeatherMap
@@ -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.0",
"author": [
"Marko Oldenburg "
],
@@ -574,4 +545,3 @@ __END__
=end :application/json;q=META.json
=cut
-
diff --git a/fhem/lib/FHEM/APIs/Weather/OpenWeatherMapAPI.pm b/fhem/lib/FHEM/APIs/Weather/OpenWeatherMapAPI.pm
index 0bef32753..33eaf6022 100644
--- a/fhem/lib/FHEM/APIs/Weather/OpenWeatherMapAPI.pm
+++ b/fhem/lib/FHEM/APIs/Weather/OpenWeatherMapAPI.pm
@@ -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,67 +467,59 @@ sub _FillSelfHashWithWeatherResponse {
$self->{cached}->{city} = encode_utf8( $data->{name} );
$self->{cached}->{license}{text} = 'none';
- given ( $self->{endpoint} ) {
- when ('onecall') {
- ## löschen des alten current Datensatzes
- delete $self->{cached}->{current};
+ if ( $self->{endpoint} eq 'onecall' ) {
+ ## löschen des alten current Datensatzes
+ delete $self->{cached}->{current};
- ## löschen des alten forecast Datensatzes
- delete $self->{cached}->{forecast};
+ ## löschen des alten forecast Datensatzes
+ delete $self->{cached}->{forecast};
- ## löschen des alten Alerts Datensatzes
- delete $self->{cached}->{alerts};
+ ## löschen des alten Alerts Datensatzes
+ delete $self->{cached}->{alerts};
+ $self =
+ _FillSelfHashWithWeatherResponseForOnecallCurrent( $self, $data );
+
+ if ( ref( $data->{hourly} ) eq "ARRAY"
+ && scalar( @{ $data->{hourly} } ) > 0 )
+ {
$self =
- _FillSelfHashWithWeatherResponseForOnecallCurrent( $self, $data );
-
- if ( ref( $data->{hourly} ) eq "ARRAY"
- && scalar( @{ $data->{hourly} } ) > 0 )
- {
- $self =
- _FillSelfHashWithWeatherResponseForOnecallHourly( $self,
- $data );
- }
-
- if ( ref( $data->{daily} ) eq "ARRAY"
- && scalar( @{ $data->{daily} } ) > 0 )
- {
- $self =
- _FillSelfHashWithWeatherResponseForOnecallDaily( $self,
- $data );
- }
-
- if ( ref( $data->{alerts} ) eq "ARRAY"
- && scalar( @{ $data->{alerts} } ) > 0 )
- {
- $self =
- _FillSelfHashWithWeatherResponseForOnecallAlerts( $self,
- $data );
- }
+ _FillSelfHashWithWeatherResponseForOnecallHourly( $self, $data );
}
- when ('weather') {
- ## löschen des alten current Datensatzes
- delete $self->{cached}->{current};
-
- ## löschen des alten Alerts Datensatzes
- delete $self->{cached}->{alerts};
-
+ if ( ref( $data->{daily} ) eq "ARRAY"
+ && scalar( @{ $data->{daily} } ) > 0 )
+ {
$self =
- _FillSelfHashWithWeatherResponseForWeatherCurrent( $self, $data );
+ _FillSelfHashWithWeatherResponseForOnecallDaily( $self, $data );
}
- when ('forecast') {
- ## löschen des alten forecast Datensatzes
- delete $self->{cached}->{forecast};
+ if ( ref( $data->{alerts} ) eq "ARRAY"
+ && scalar( @{ $data->{alerts} } ) > 0 )
+ {
+ $self =
+ _FillSelfHashWithWeatherResponseForOnecallAlerts( $self, $data );
+ }
+ }
+ elsif ( $self->{endpoint} eq 'weather' ) {
+ ## löschen des alten current Datensatzes
+ delete $self->{cached}->{current};
- if ( ref( $data->{list} ) eq "ARRAY"
- and scalar( @{ $data->{list} } ) > 0 )
- {
- $self =
- _FillSelfHashWithWeatherResponseForForecastHourly( $self,
- $data );
- }
+ ## löschen des alten Alerts Datensatzes
+ delete $self->{cached}->{alerts};
+
+ $self =
+ _FillSelfHashWithWeatherResponseForWeatherCurrent( $self, $data );
+ }
+ elsif ( $self->{endpoint} eq 'forecast' ) {
+ ## löschen des alten forecast Datensatzes
+ delete $self->{cached}->{forecast};
+
+ if ( ref( $data->{list} ) eq "ARRAY"
+ and scalar( @{ $data->{list} } ) > 0 )
+ {
+ $self =
+ _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 "
],
diff --git a/fhem/lib/FHEM/APIs/Weather/wundergroundAPI.pm b/fhem/lib/FHEM/APIs/Weather/wundergroundAPI.pm
index f358ed25b..1a12bfbc7 100644
--- a/fhem/lib/FHEM/APIs/Weather/wundergroundAPI.pm
+++ b/fhem/lib/FHEM/APIs/Weather/wundergroundAPI.pm
@@ -6,7 +6,6 @@ use FHEM::Meta;
use POSIX;
use HttpUtils;
-use experimental qw /switch/;
use Encode;
my $META = {};
diff --git a/fhem/lib/FHEM/Core/Weather.pm b/fhem/lib/FHEM/Core/Weather.pm
index 4b786c909..8c09d2b5d 100644
--- a/fhem/lib/FHEM/Core/Weather.pm
+++ b/fhem/lib/FHEM/Core/Weather.pm
@@ -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,48 @@ sub _LanguageInitialize {
my $lang = shift;
- given ($lang) {
- when ('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;
- }
+ 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;
+ }
+ 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;
+ }
+ elsif ( $lang eq 'fr' ) {
- when ('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;
- }
+ }
+ 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 ('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;
- }
+ }
+ 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 ('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;
- }
+ }
+ 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;
- when ('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;
- }
+ }
+ 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;
- default {
- %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;
@@ -862,35 +859,31 @@ sub Attr {
my ( $cmd, $name, $attrName, $AttrVal ) = @_;
my $hash = $::defs{$name};
- given ($attrName) {
- when ('forecast') {
- if ( $cmd eq 'set' ) {
- $hash->{fhem}->{api}->setForecast($AttrVal);
- }
- elsif ( $cmd eq 'del' ) {
- $hash->{fhem}->{api}->setForecast();
- }
-
- ::InternalTimer( gettimeofday() + 0.5,
- \&FHEM::Core::Weather::DeleteForecastreadings, $hash );
+ if ( $attrName eq 'forecast' ) {
+ if ( $cmd eq 'set' ) {
+ $hash->{fhem}->{api}->setForecast($AttrVal);
+ }
+ elsif ( $cmd eq 'del' ) {
+ $hash->{fhem}->{api}->setForecast();
}
- when ('forecastLimit') {
- ::InternalTimer( gettimeofday() + 0.5,
- \&FHEM::Core::Weather::DeleteForecastreadings, $hash );
+ ::InternalTimer( gettimeofday() + 0.5,
+ \&FHEM::Core::Weather::DeleteForecastreadings, $hash );
+ }
+ elsif ('forecastLimit') {
+ ::InternalTimer( gettimeofday() + 0.5,
+ \&FHEM::Core::Weather::DeleteForecastreadings, $hash );
+ }
+ elsif ('alerts') {
+ if ( $cmd eq 'set' ) {
+ $hash->{fhem}->{api}->setAlerts($AttrVal);
+ }
+ elsif ( $cmd eq 'del' ) {
+ $hash->{fhem}->{api}->setAlerts();
}
- when ('alerts') {
- if ( $cmd eq 'set' ) {
- $hash->{fhem}->{api}->setAlerts($AttrVal);
- }
- elsif ( $cmd eq 'del' ) {
- $hash->{fhem}->{api}->setAlerts();
- }
-
- ::InternalTimer( gettimeofday() + 0.5,
- \&FHEM::Core::Weather::DeleteAlertsreadings, $hash );
- }
+ ::InternalTimer( gettimeofday() + 0.5,
+ \&FHEM::Core::Weather::DeleteAlertsreadings, $hash );
}
return;
| |