Compare commits
	
		
			5 Commits
		
	
	
		
			af36bed895
			...
			14644b8575
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 14644b8575 | |||
| f37a24673c | |||
| d313cb8d4a | |||
| 2e3210c438 | |||
| 2db8db3b89 | 
							
								
								
									
										97
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										97
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -1,4 +1,97 @@
 | 
				
			|||||||
### ``` Refactor pre-commit hook file list and output formatting (HEAD -> patch-removedarksky)
 | 
					### Refactor language handling in Weather API (HEAD -> patch-remove-perlexperimental)
 | 
				
			||||||
 | 
					>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
 | 
					>Wed, 5 Feb 2025 07:07:52 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
 | 
					>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
 | 
				
			||||||
@@ -38,7 +131,7 @@ function as intended.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### docs: add changelog (origin/patch-changeVersion)
 | 
					### docs: add changelog
 | 
				
			||||||
>Tue, 4 Feb 2025 21:01:33 +0100
 | 
					>Tue, 4 Feb 2025 21:01:33 +0100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
 | 
					>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
UPD 2025-02-05_05:56:41 25899 FHEM/59_Weather.pm
 | 
					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-10-14_06:51:10 34175 lib/FHEM/Core/Weather.pm
 | 
				
			||||||
UPD 2025-02-05_06:38:34 33780 lib/FHEM/APIs/Weather/OpenWeatherMapAPI.pm
 | 
					UPD 2025-10-14_07:00:04 33545 lib/FHEM/APIs/Weather/OpenWeatherMapAPI.pm
 | 
				
			||||||
UPD 2025-02-04_21:08:26 38751 lib/FHEM/APIs/Weather/wundergroundAPI.pm
 | 
					UPD 2025-10-14_07:03:17 38721 lib/FHEM/APIs/Weather/wundergroundAPI.pm
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,7 +41,8 @@ use FHEM::Meta;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use POSIX;
 | 
					use POSIX;
 | 
				
			||||||
use HttpUtils;
 | 
					use HttpUtils;
 | 
				
			||||||
use experimental qw /switch/;
 | 
					
 | 
				
			||||||
 | 
					#use experimental qw /switch/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $META = {};
 | 
					my $META = {};
 | 
				
			||||||
my $ret  = FHEM::Meta::getMetadata( __FILE__, $META );
 | 
					my $ret  = FHEM::Meta::getMetadata( __FILE__, $META );
 | 
				
			||||||
@@ -466,67 +467,59 @@ sub _FillSelfHashWithWeatherResponse {
 | 
				
			|||||||
    $self->{cached}->{city}          = encode_utf8( $data->{name} );
 | 
					    $self->{cached}->{city}          = encode_utf8( $data->{name} );
 | 
				
			||||||
    $self->{cached}->{license}{text} = 'none';
 | 
					    $self->{cached}->{license}{text} = 'none';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    given ( $self->{endpoint} ) {
 | 
					    if ( $self->{endpoint} eq 'onecall' ) {
 | 
				
			||||||
        when ('onecall') {
 | 
					        ## löschen des alten current Datensatzes
 | 
				
			||||||
            ## löschen des alten current Datensatzes
 | 
					        delete $self->{cached}->{current};
 | 
				
			||||||
            delete $self->{cached}->{current};
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ## löschen des alten forecast Datensatzes
 | 
					        ## löschen des alten forecast Datensatzes
 | 
				
			||||||
            delete $self->{cached}->{forecast};
 | 
					        delete $self->{cached}->{forecast};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ## löschen des alten Alerts Datensatzes
 | 
					        ## löschen des alten Alerts Datensatzes
 | 
				
			||||||
            delete $self->{cached}->{alerts};
 | 
					        delete $self->{cached}->{alerts};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $self =
 | 
				
			||||||
 | 
					          _FillSelfHashWithWeatherResponseForOnecallCurrent( $self, $data );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ( ref( $data->{hourly} ) eq "ARRAY"
 | 
				
			||||||
 | 
					            && scalar( @{ $data->{hourly} } ) > 0 )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
            $self =
 | 
					            $self =
 | 
				
			||||||
              _FillSelfHashWithWeatherResponseForOnecallCurrent( $self, $data );
 | 
					              _FillSelfHashWithWeatherResponseForOnecallHourly( $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 );
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        when ('weather') {
 | 
					        if ( ref( $data->{daily} ) eq "ARRAY"
 | 
				
			||||||
            ## löschen des alten current Datensatzes
 | 
					            && scalar( @{ $data->{daily} } ) > 0 )
 | 
				
			||||||
            delete $self->{cached}->{current};
 | 
					        {
 | 
				
			||||||
 | 
					 | 
				
			||||||
            ## löschen des alten Alerts Datensatzes
 | 
					 | 
				
			||||||
            delete $self->{cached}->{alerts};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            $self =
 | 
					            $self =
 | 
				
			||||||
              _FillSelfHashWithWeatherResponseForWeatherCurrent( $self, $data );
 | 
					              _FillSelfHashWithWeatherResponseForOnecallDaily( $self, $data );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        when ('forecast') {
 | 
					        if ( ref( $data->{alerts} ) eq "ARRAY"
 | 
				
			||||||
            ## löschen des alten forecast Datensatzes
 | 
					            && scalar( @{ $data->{alerts} } ) > 0 )
 | 
				
			||||||
            delete $self->{cached}->{forecast};
 | 
					        {
 | 
				
			||||||
 | 
					            $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"
 | 
					        ## löschen des alten Alerts Datensatzes
 | 
				
			||||||
                and scalar( @{ $data->{list} } ) > 0 )
 | 
					        delete $self->{cached}->{alerts};
 | 
				
			||||||
            {
 | 
					
 | 
				
			||||||
                $self =
 | 
					        $self =
 | 
				
			||||||
                  _FillSelfHashWithWeatherResponseForForecastHourly( $self,
 | 
					          _FillSelfHashWithWeatherResponseForWeatherCurrent( $self, $data );
 | 
				
			||||||
                    $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 );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,6 @@ use FHEM::Meta;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use POSIX;
 | 
					use POSIX;
 | 
				
			||||||
use HttpUtils;
 | 
					use HttpUtils;
 | 
				
			||||||
use experimental qw /switch/;
 | 
					 | 
				
			||||||
use Encode;
 | 
					use Encode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $META = {};
 | 
					my $META = {};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,10 +41,7 @@ eval { use Time::HiRes qw /gettimeofday/; 1 }
 | 
				
			|||||||
eval { use Readonly; 1 }
 | 
					eval { use Readonly; 1 }
 | 
				
			||||||
  or $missingModul .= "libreadonly-perl ";
 | 
					  or $missingModul .= "libreadonly-perl ";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#use Time::HiRes  qw(gettimeofday);
 | 
					#use experimental qw /switch/;
 | 
				
			||||||
use experimental qw /switch/;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#use Readonly;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
use FHEM::Meta;
 | 
					use FHEM::Meta;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -224,48 +221,48 @@ sub _LanguageInitialize {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    my $lang = shift;
 | 
					    my $lang = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    given ($lang) {
 | 
					    if ( $lang eq 'de' ) {
 | 
				
			||||||
        when ('de') {
 | 
					        %wdays_txt_i18n          = %wdays_txt_de;
 | 
				
			||||||
            %wdays_txt_i18n          = %wdays_txt_de;
 | 
					        @directions_txt_i18n     = @directions_txt_de;
 | 
				
			||||||
            @directions_txt_i18n     = @directions_txt_de;
 | 
					        %pressure_trend_txt_i18n = %pressure_trend_txt_de;
 | 
				
			||||||
            %pressure_trend_txt_i18n = %pressure_trend_txt_de;
 | 
					        %status_items_txt_i18n   = %status_items_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;
 | 
					    elsif ( $lang eq 'fr' ) {
 | 
				
			||||||
            @directions_txt_i18n     = @directions_txt_nl;
 | 
					        %wdays_txt_i18n          = %wdays_txt_fr;
 | 
				
			||||||
            %pressure_trend_txt_i18n = %pressure_trend_txt_nl;
 | 
					        @directions_txt_i18n     = @directions_txt_fr;
 | 
				
			||||||
            %status_items_txt_i18n   = %status_items_txt_nl;
 | 
					        %pressure_trend_txt_i18n = %pressure_trend_txt_fr;
 | 
				
			||||||
        }
 | 
					        %status_items_txt_i18n   = %status_items_txt_fr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        when ('fr') {
 | 
					    }
 | 
				
			||||||
            %wdays_txt_i18n          = %wdays_txt_fr;
 | 
					    elsif ( $lang eq 'pl' ) {
 | 
				
			||||||
            @directions_txt_i18n     = @directions_txt_fr;
 | 
					        %wdays_txt_i18n          = %wdays_txt_pl;
 | 
				
			||||||
            %pressure_trend_txt_i18n = %pressure_trend_txt_fr;
 | 
					        @directions_txt_i18n     = @directions_txt_pl;
 | 
				
			||||||
            %status_items_txt_i18n   = %status_items_txt_fr;
 | 
					        %pressure_trend_txt_i18n = %pressure_trend_txt_pl;
 | 
				
			||||||
        }
 | 
					        %status_items_txt_i18n   = %status_items_txt_pl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        when ('pl') {
 | 
					    }
 | 
				
			||||||
            %wdays_txt_i18n          = %wdays_txt_pl;
 | 
					    elsif ( $lang eq 'it' ) {
 | 
				
			||||||
            @directions_txt_i18n     = @directions_txt_pl;
 | 
					        %wdays_txt_i18n          = %wdays_txt_it;
 | 
				
			||||||
            %pressure_trend_txt_i18n = %pressure_trend_txt_pl;
 | 
					        @directions_txt_i18n     = @directions_txt_it;
 | 
				
			||||||
            %status_items_txt_i18n   = %status_items_txt_pl;
 | 
					        %pressure_trend_txt_i18n = %pressure_trend_txt_it;
 | 
				
			||||||
        }
 | 
					        %status_items_txt_i18n   = %status_items_txt_it;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        when ('it') {
 | 
					    }
 | 
				
			||||||
            %wdays_txt_i18n          = %wdays_txt_it;
 | 
					    else {
 | 
				
			||||||
            @directions_txt_i18n     = @directions_txt_it;
 | 
					        %wdays_txt_i18n          = %wdays_txt_en;
 | 
				
			||||||
            %pressure_trend_txt_i18n = %pressure_trend_txt_it;
 | 
					        @directions_txt_i18n     = @directions_txt_en;
 | 
				
			||||||
            %status_items_txt_i18n   = %status_items_txt_it;
 | 
					        %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;
 | 
					    return;
 | 
				
			||||||
@@ -862,35 +859,31 @@ sub Attr {
 | 
				
			|||||||
    my ( $cmd, $name, $attrName, $AttrVal ) = @_;
 | 
					    my ( $cmd, $name, $attrName, $AttrVal ) = @_;
 | 
				
			||||||
    my $hash = $::defs{$name};
 | 
					    my $hash = $::defs{$name};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    given ($attrName) {
 | 
					    if ( $attrName eq 'forecast' ) {
 | 
				
			||||||
        when ('forecast') {
 | 
					        if ( $cmd eq 'set' ) {
 | 
				
			||||||
            if ( $cmd eq 'set' ) {
 | 
					            $hash->{fhem}->{api}->setForecast($AttrVal);
 | 
				
			||||||
                $hash->{fhem}->{api}->setForecast($AttrVal);
 | 
					        }
 | 
				
			||||||
            }
 | 
					        elsif ( $cmd eq 'del' ) {
 | 
				
			||||||
            elsif ( $cmd eq 'del' ) {
 | 
					            $hash->{fhem}->{api}->setForecast();
 | 
				
			||||||
                $hash->{fhem}->{api}->setForecast();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            ::InternalTimer( gettimeofday() + 0.5,
 | 
					 | 
				
			||||||
                \&FHEM::Core::Weather::DeleteForecastreadings, $hash );
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        when ('forecastLimit') {
 | 
					        ::InternalTimer( gettimeofday() + 0.5,
 | 
				
			||||||
            ::InternalTimer( gettimeofday() + 0.5,
 | 
					            \&FHEM::Core::Weather::DeleteForecastreadings, $hash );
 | 
				
			||||||
                \&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') {
 | 
					        ::InternalTimer( gettimeofday() + 0.5,
 | 
				
			||||||
            if ( $cmd eq 'set' ) {
 | 
					            \&FHEM::Core::Weather::DeleteAlertsreadings, $hash );
 | 
				
			||||||
                $hash->{fhem}->{api}->setAlerts($AttrVal);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            elsif ( $cmd eq 'del' ) {
 | 
					 | 
				
			||||||
                $hash->{fhem}->{api}->setAlerts();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            ::InternalTimer( gettimeofday() + 0.5,
 | 
					 | 
				
			||||||
                \&FHEM::Core::Weather::DeleteAlertsreadings, $hash );
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user