59_Twilight: fix some unititialized warnings + perlcritic results

git-svn-id: https://svn.fhem.de/fhem/trunk@23201 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
Beta-User
2020-11-21 05:35:14 +00:00
parent 84581d675c
commit eb58c58a7c

View File

@@ -114,7 +114,8 @@ sub Initialize {
sub Twilight_Define { sub Twilight_Define {
my $hash = shift; my $hash = shift;
my $aref = shift; my $aref = shift;
my $href = shift // return if !defined $aref; my $href = shift;
return if !defined $aref && !defined $href;
return $@ unless ( FHEM::Meta::SetInternals($hash) ); return $@ unless ( FHEM::Meta::SetInternals($hash) );
@@ -202,7 +203,8 @@ sub Twilight_Change_DEF {
$weather = "" if $weather eq "none"; $weather = "" if $weather eq "none";
if (looks_like_number($weather)) { if (looks_like_number($weather)) {
my @wd = devspec2array("TYPE=Weather|PROPLANTA"); my @wd = devspec2array("TYPE=Weather|PROPLANTA");
my ($err, $wreading) = Twilight_disp_ExtWeather($hash, $wd[0]) if $wd[0]; my ($err, $wreading);
($err, $wreading) = Twilight_disp_ExtWeather($hash, $wd[0]) if $wd[0];
$weather = $err ? "" : $wd[0] ; $weather = $err ? "" : $wd[0] ;
} }
$newdef = "$hash->{helper}{'.LATITUDE'} $hash->{helper}{'.LONGITUDE'}" if $hash->{helper}{'.LATITUDE'} != AttrVal( 'global', 'latitude', 50.112 ) || $hash->{helper}{'.LONGITUDE'} != AttrVal( 'global', 'longitude', 8.686 ); $newdef = "$hash->{helper}{'.LATITUDE'} $hash->{helper}{'.LONGITUDE'}" if $hash->{helper}{'.LATITUDE'} != AttrVal( 'global', 'latitude', 50.112 ) || $hash->{helper}{'.LONGITUDE'} != AttrVal( 'global', 'longitude', 8.686 );
@@ -277,14 +279,14 @@ sub Twilight_HandleWeatherData {
$ss_extWeather = 50 if !looks_like_number($ss_extWeather); $ss_extWeather = 50 if !looks_like_number($ss_extWeather);
} }
my $last = ReadingsNum($name, "cloudCover", -1); my $lastcc = ReadingsNum($name, "cloudCover", -1);
#here we have to split up for extended forecast handling... #here we have to split up for extended forecast handling...
$inNotify ? Log3( $hash, 5, "[$name] NotifyFn called, reading is $extWeather, last is $last" ) $inNotify ? Log3( $hash, 5, "[$name] NotifyFn called, reading is $extWeather, last is $lastcc" )
: Log3( $hash, 5, "[$name] timer based weather update called, reading is $extWeather, last is $last" ); : Log3( $hash, 5, "[$name] timer based weather update called, reading is $extWeather, last is $lastcc" );
return if $inNotify && (abs($last - $extWeather) <6 && !defined $hash->{helper}{extWeather}{dispatch} || ReadingsAge($name, "cloudCover", 4000) < 3575 && defined $hash->{helper}{extWeather}{dispatch}); return if $inNotify && (abs($lastcc - $extWeather) <6 && !defined $hash->{helper}{extWeather}{dispatch} || ReadingsAge($name, "cloudCover", 4000) < 3575 && defined $hash->{helper}{extWeather}{dispatch});
my $weather_horizon = Twilight_getWeatherHorizon( $hash, $extWeather, 1); my $weather_horizon = Twilight_getWeatherHorizon( $hash, $extWeather, 1);
@@ -389,7 +391,8 @@ sub Twilight_Firstrun {
if ($attrVal && $attrVal ne "none") { if ($attrVal && $attrVal ne "none") {
Twilight_init_ExtWeather_usage( $hash, $attrVal ); Twilight_init_ExtWeather_usage( $hash, $attrVal );
$extWeatherVal = ReadingsNum( $name, "cloudCover", ReadingsNum( $hash->{helper}{extWeather}{Device}, $hash->{helper}{extWeather}{Reading}, 0 ) ); my $ewr = $hash->{helper}{extWeather}{Reading} // $hash->{helper}{extWeather}{dispatch}{trigger} // $hash->{helper}{extWeather}{trigger};
$extWeatherVal = ReadingsNum( $name, "cloudCover", ReadingsNum( $hash->{helper}{extWeather}{Device}, $ewr, 0 ) );
readingsSingleUpdate ( $hash, "cloudCover", $extWeatherVal, 0 ) if $extWeatherVal; readingsSingleUpdate ( $hash, "cloudCover", $extWeatherVal, 0 ) if $extWeatherVal;
} }
Twilight_getWeatherHorizon( $hash, $extWeatherVal ); Twilight_getWeatherHorizon( $hash, $extWeatherVal );
@@ -411,7 +414,7 @@ sub Twilight_Attr {
if ( $attrName eq 'useExtWeather' ) { if ( $attrName eq 'useExtWeather' ) {
if ($cmd eq "set") { if ($cmd eq "set") {
return "External weather device already in use, most likely assigned by define" if $hash->{helper}{extWeather}{regexp} =~ m,$attrVal,; return "External weather device already in use, most likely assigned by define" if $hash->{helper}{extWeather}{regexp} =~ m{$attrVal}xms;
return Twilight_init_ExtWeather_usage($hash, $attrVal); return Twilight_init_ExtWeather_usage($hash, $attrVal);
} elsif ($cmd eq "del") { } elsif ($cmd eq "del") {
notifyRegexpChanged( $hash, "" ); notifyRegexpChanged( $hash, "" );
@@ -440,13 +443,13 @@ sub Twilight_init_ExtWeather_usage {
'$W_DEV' => $extWeather, '$W_DEV' => $extWeather,
'$W_READING' => $extWReading '$W_READING' => $extWReading
); );
my $err = perlSyntaxCheck( $parts[1] ); $err = perlSyntaxCheck( $parts[1] );
return $err if ( $err ); return $err if ( $err );
} }
} else { } else {
#conversion code, try to guess the ext. weather device to replace yahoo #conversion code, try to guess the ext. weather device to replace yahoo
my @devices=devspec2array("TYPE=Weather"); my @devices=devspec2array("TYPE=Weather");
return "No Weather-Type device found if !$devices[0]"; return "No Weather-Type device found" if !$devices[0];
$extWeather = $devices[0]; $extWeather = $devices[0];
} }
@@ -459,7 +462,7 @@ sub Twilight_init_ExtWeather_usage {
$hash->{helper}{extWeather}{Reading} = $extWReading if !$parts[1] && !exists $hash->{helper}{extWeather}{dispatch}; $hash->{helper}{extWeather}{Reading} = $extWReading if !$parts[1] && !exists $hash->{helper}{extWeather}{dispatch};
if ($parts[1]) { if ($parts[1]) {
$hash->{helper}{extWeather}{trigger} = $extWReading ; $hash->{helper}{extWeather}{trigger} = $extWReading ;
$parts[1] = qq ({ $parts[1] }) if $parts[1] !~ m/^{.*}$/s; $parts[1] = qq ({ $parts[1] }) if $parts[1] !~ m/^[{].*}$/xms;
$hash->{helper}{extWeather}{dispatch}{userfunction} = $parts[1]; $hash->{helper}{extWeather}{dispatch}{userfunction} = $parts[1];
} }
return InternalTimer( time(), \&Twilight_Firstrun,$hash,0) if $init_done && $useTimer; return InternalTimer( time(), \&Twilight_Firstrun,$hash,0) if $init_done && $useTimer;
@@ -637,9 +640,9 @@ sub Twilight_TwilightTimes {
$idx++; $idx++;
next if ( $whitchTimes eq "weather" && !( $horizon =~ m/weather/ ) ); next if ( $whitchTimes eq "weather" && !( $horizon =~ m/weather/ ) );
my ( $name, $deg ) = split( ":", $horizon ); my ( $sxname, $deg ) = split( ":", $horizon );
my $sr = "sr$name"; my $sr = "sr$sxname";
my $ss = "ss$name"; my $ss = "ss$sxname";
$hash->{TW}{$sr}{NAME} = $sr; $hash->{TW}{$sr}{NAME} = $sr;
$hash->{TW}{$ss}{NAME} = $ss; $hash->{TW}{$ss}{NAME} = $ss;
$hash->{TW}{$sr}{DEG} = $deg; $hash->{TW}{$sr}{DEG} = $deg;
@@ -1018,8 +1021,8 @@ sub twilight {
sub getTwilightHours { sub getTwilightHours {
my $hash = shift // return; my $hash = shift // return;
my $hour = ( localtime )[2]; my $hour = ( localtime )[2];
my $sr_hour = ( localtime( $hash->{TW}{sr_weather}{TIME}))[2]; my $sr_hour = defined $hash->{TW}{sr_weather}{TIME} ? ( localtime( $hash->{TW}{sr_weather}{TIME} ))[2] : 7;
my $ss_hour = ( localtime( $hash->{TW}{ss_weather}{TIME}))[2]; my $ss_hour = defined $hash->{TW}{ss_weather}{TIME} ? ( localtime( $hash->{TW}{ss_weather}{TIME} ))[2] : 18;
return $hour,$sr_hour,$ss_hour; return $hour,$sr_hour,$ss_hour;
} }