Compare commits

...

3 Commits

Author SHA1 Message Date
fa9817885c Merge pull request 'patch-remove-experimental' (#3) from patch-remove-experimental into dev
Reviewed-on: #3
2025-10-14 03:33:33 +00:00
7dae759870 Update copyright information and contributors list
Improved the copyright year for the maintainer Marko Oldenburg in
the 77_UWZ.pm file to reflect the current year (2025). This ensures
the file remains up-to-date with regards to authorship.

Additionally, a new contributor, betateilchen, has been added to
the special thanks section for their contribution related to
removing experimental Perl code. Updating the contributors list
acknowledges their efforts in improving the codebase.

No other functional changes were made to the code, and there are
no breaking changes associated with this update.
2025-10-14 04:54:53 +02:00
a469315070 Refactor language handling and cleanup in 77_UWZ.pm
This commit includes several improvements and refactoring to the
77_UWZ.pm file. The primary changes involve unifying language
handling by replacing direct comparisons of the country code with
a call to a new utility function, `contains_string`, which checks
if the `CountryCode` exists within an array. This change enhances
the readability and maintainability of the code.

Additionally, certain code cleanup has been performed, including
minor formatting adjustments for better alignment and spacing,
removing deprecated warning pragmas, and correcting the 'Mäy'
month name spelling in the English months array.

These changes do not introduce any breaking changes, but they
improve the overall structure and consistency of the code, making
future modifications and updates easier.
2025-10-14 04:50:00 +02:00

167
77_UWZ.pm
View File

@@ -3,13 +3,14 @@
# 77_UWZ.pm # 77_UWZ.pm
# #
# (c) 2015-2016 Tobias D. Oestreicher # (c) 2015-2016 Tobias D. Oestreicher
# (c) 2017-2021 Marko Oldenburg # (c) 2017-2025 Marko Oldenburg
# #
# Special thanks goes to comitters: # Special thanks goes to comitters:
# - Marko Oldenburg (fhemdevelopment at cooltux dot net) # - Marko Oldenburg (fhemdevelopment at cooltux dot net)
# - Hanjo (Forum) patch for sort by creation # - Hanjo (Forum) patch for sort by creation
# - cb1 <kontakt@it-buchinger.de> patch Replace Iconv with native perl encode() # - cb1 <kontakt@it-buchinger.de> patch Replace Iconv with native perl encode()
# - KölnSolar (Markus) new write UWZAsHtml with smaler Code # - KölnSolar (Markus) new write UWZAsHtml with smaler Code
# - betateilchen (Forum) patch remove experimental perl code
# #
# Storm warnings from unwetterzentrale.de # Storm warnings from unwetterzentrale.de
# inspired by 59_PROPLANTA.pm # inspired by 59_PROPLANTA.pm
@@ -55,8 +56,7 @@ use Encode qw(encode_utf8);
no no
if $] >= 5.017011, if $] >= 5.017011,
warnings => 'experimental::lexical_subs', warnings => 'experimental::lexical_subs';
'experimental::smartmatch';
my $missingModul; my $missingModul;
eval 'use LWP::UserAgent;1' or $missingModul .= 'LWP::UserAgent '; eval 'use LWP::UserAgent;1' or $missingModul .= 'LWP::UserAgent ';
@@ -170,7 +170,8 @@ BEGIN {
init_done init_done
FW_httpheader FW_httpheader
HttpUtils_BlockingGet HttpUtils_BlockingGet
deviceEvents) deviceEvents
contains_string)
); );
} }
@@ -558,13 +559,13 @@ sub Define {
## URL by CountryCode ## URL by CountryCode
my $URL_language = 'en'; my $URL_language = 'en';
if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { if ( contains_string( $hash->{CountryCode}, ( 'DE', 'AT', 'CH' ) ) ) {
$URL_language = 'de'; $URL_language = 'de';
} }
if ( $hash->{CountryCode} ~~ ['NL'] ) { if ( $hash->{CountryCode} eq 'NL' ) {
$URL_language = 'nl'; $URL_language = 'nl';
} }
if ( $hash->{CountryCode} ~~ ['FR'] ) { if ( $hash->{CountryCode} eq 'FR' ) {
$URL_language = 'fr'; $URL_language = 'fr';
} }
@@ -626,29 +627,23 @@ sub Set {
my $aArg = shift // return; my $aArg = shift // return;
my $name = shift @$aArg // return; my $name = shift @$aArg // return;
my $cmd = shift @$aArg // return qq{"set $name" needs at least one argument}; my $cmd = shift @$aArg
// return qq{"set $name" needs at least one argument};
my $usage = "Unknown argument $cmd, choose one of update:noArg " my $usage = "Unknown argument $cmd, choose one of update:noArg "
if ( ( lc $hash->{CountryCode} ) ne 'search' ); if ( ( lc $hash->{CountryCode} ) ne 'search' );
return $usage if ( scalar( @{$aArg} ) != 0 ); return $usage if ( scalar( @{$aArg} ) != 0 );
given ($cmd) { if ( $cmd eq 'update' ) {
when ("?") {
return $usage;
}
when ('update') {
Log $hash, 4, 'set command: ' . $cmd; Log $hash, 4, 'set command: ' . $cmd;
$hash->{fhem}{LOCAL} = 1; $hash->{fhem}{LOCAL} = 1;
Start($hash); Start($hash);
$hash->{fhem}{LOCAL} = 0; $hash->{fhem}{LOCAL} = 0;
} }
else { # including $cmd eq '?'
default {
return $usage; return $usage;
} }
}
return; return;
} }
@@ -702,9 +697,10 @@ sub Get {
my $aArg = shift // return; my $aArg = shift // return;
my $name = shift @$aArg // return; my $name = shift @$aArg // return;
my $cmd = shift @$aArg // return qq{"get $name" needs at least one argument}; my $cmd = shift @$aArg
// return qq{"get $name" needs at least one argument};
if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { if ( contains_string( $hash->{CountryCode}, ( 'DE', 'AT', 'CH' ) ) ) {
my $usage = my $usage =
"Unknown argument $cmd, choose one of Sturm:noArg Schneefall:noArg Regen:noArg Extremfrost:noArg Waldbrand:noArg Gewitter:noArg Glaette:noArg Hitze:noArg Glatteisregen:noArg Bodenfrost:noArg Hagel:noArg "; "Unknown argument $cmd, choose one of Sturm:noArg Schneefall:noArg Regen:noArg Extremfrost:noArg Waldbrand:noArg Gewitter:noArg Glaette:noArg Hitze:noArg Glatteisregen:noArg Bodenfrost:noArg Hagel:noArg ";
@@ -725,7 +721,7 @@ sub Get {
: $usage; : $usage;
} }
elsif ( $hash->{CountryCode} ~~ ['NL'] ) { elsif ( $hash->{CountryCode} eq 'NL' ) {
my $usage = my $usage =
"Unknown argument $cmd, choose one of storm:noArg sneeuw:noArg regen:noArg strenge-vorst:noArg bosbrand:noArg onweer:noArg gladheid:noArg hitte:noArg ijzel:noArg grondvorst:noArg hagel:noArg "; "Unknown argument $cmd, choose one of storm:noArg sneeuw:noArg regen:noArg strenge-vorst:noArg bosbrand:noArg onweer:noArg gladheid:noArg hitte:noArg ijzel:noArg grondvorst:noArg hagel:noArg ";
@@ -746,7 +742,7 @@ sub Get {
: $usage; : $usage;
} }
elsif ( $hash->{CountryCode} ~~ ['FR'] ) { elsif ( $hash->{CountryCode} eq 'FR' ) {
my $usage = my $usage =
"Unknown argument $cmd, choose one of tempete:noArg neige:noArg pluie:noArg strenge-vorst:noArg incendie-de-foret:noArg orage:noArg glissange:noArg canicule:noArg verglas:noArg grondvorst:noArg grele:noArg "; "Unknown argument $cmd, choose one of tempete:noArg neige:noArg pluie:noArg strenge-vorst:noArg incendie-de-foret:noArg orage:noArg glissange:noArg canicule:noArg verglas:noArg grondvorst:noArg grele:noArg ";
@@ -772,7 +768,9 @@ sub Get {
return $usage if ( scalar( @{$aArg} ) != 1 ); return $usage if ( scalar( @{$aArg} ) != 1 );
if ( $cmd =~ m{\ASearchAreaID}xms ) { UWZSearchLatLon( $name, $aArg->[0] ); } if ( $cmd =~ m{\ASearchAreaID}xms ) {
UWZSearchLatLon( $name, $aArg->[0] );
}
elsif ( $cmd =~ m{\AAreaID}xms ) { elsif ( $cmd =~ m{\AAreaID}xms ) {
my @splitparam = split( /,/, $aArg->[0] ); my @splitparam = split( /,/, $aArg->[0] );
UWZSearchAreaID( $splitparam[0], $splitparam[1] ); UWZSearchAreaID( $splitparam[0], $splitparam[1] );
@@ -932,13 +930,13 @@ sub Start {
$URL_language = AttrVal( $hash->{NAME}, 'lang', '' ); $URL_language = AttrVal( $hash->{NAME}, 'lang', '' );
} }
else { else {
if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { if ( contains_string( $hash->{CountryCode}, ( 'DE', 'AT', 'CH' ) ) ) {
$URL_language = 'de'; $URL_language = 'de';
} }
elsif ( $hash->{CountryCode} ~~ ['NL'] ) { elsif ( $hash->{CountryCode} eq 'NL' ) {
$URL_language = 'nl'; $URL_language = 'nl';
} }
elsif ( $hash->{CountryCode} ~~ ['FR'] ) { elsif ( $hash->{CountryCode} eq 'FR' ) {
$URL_language = 'fr'; $URL_language = 'fr';
} }
} }
@@ -1022,12 +1020,17 @@ sub Done {
# Message by CountryCode # Message by CountryCode
$newState = 'Warnings: ' . $values{WarnCount}; $newState = 'Warnings: ' . $values{WarnCount};
$newState = 'Warnungen: ' . $values{WarnCount} $newState = 'Warnungen: '
if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ); . $values{WarnCount}
if (
contains_string(
$hash->{CountryCode}, ( 'DE', 'AT', 'CH' )
)
);
$newState = 'Aantal waarschuwingen: ' . $values{WarnCount} $newState = 'Aantal waarschuwingen: ' . $values{WarnCount}
if ( $hash->{CountryCode} ~~ ['NL'] ); if ( $hash->{CountryCode} eq 'NL' );
$newState = 'Avertissements: ' . $values{WarnCount} $newState = 'Avertissements: ' . $values{WarnCount}
if ( $hash->{CountryCode} ~~ ['FR'] ); if ( $hash->{CountryCode} eq 'FR' );
# end Message by CountryCode # end Message by CountryCode
} }
@@ -1335,8 +1338,7 @@ sub Run {
. $i . $i
. '_Start_Date|' . '_Start_Date|'
. strftime( "%d.%m.%Y", . strftime( "%d.%m.%Y",
localtime( $single_warning->{'dtgStart'} ) ) localtime( $single_warning->{'dtgStart'} ) ) . '|';
. '|';
Log $hash, 4, Log $hash, 4,
'Warn_' 'Warn_'
@@ -1348,8 +1350,7 @@ sub Run {
. $i . $i
. '_Start_Time|' . '_Start_Time|'
. strftime( "%H:%M", . strftime( "%H:%M",
localtime( $single_warning->{'dtgStart'} ) ) localtime( $single_warning->{'dtgStart'} ) ) . '|';
. '|';
Log $hash, 4, Log $hash, 4,
'Warn_' 'Warn_'
@@ -1361,8 +1362,7 @@ sub Run {
. $i . $i
. '_End_Date|' . '_End_Date|'
. strftime( "%d.%m.%Y", . strftime( "%d.%m.%Y",
localtime( $single_warning->{'dtgEnd'} ) ) localtime( $single_warning->{'dtgEnd'} ) ) . '|';
. '|';
Log $hash, 4, Log $hash, 4,
'Warn_' 'Warn_'
@@ -1374,8 +1374,7 @@ sub Run {
. $i . $i
. '_End_Time|' . '_End_Time|'
. strftime( "%H:%M", . strftime( "%H:%M",
localtime( $single_warning->{'dtgEnd'} ) ) localtime( $single_warning->{'dtgEnd'} ) ) . '|';
. '|';
Log $hash, 4, Log $hash, 4,
'Warn_' 'Warn_'
@@ -1398,7 +1397,12 @@ sub Run {
. strftime( "%H:%M", localtime($chopcreation) ) . '|'; . strftime( "%H:%M", localtime($chopcreation) ) . '|';
# Begin Language by AttrVal # Begin Language by AttrVal
if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { if (
contains_string(
$hash->{CountryCode}, ( 'DE', 'AT', 'CH' )
)
)
{
Log $hash, 4, Log $hash, 4,
'Warn_' 'Warn_'
. $i . $i
@@ -1430,11 +1434,10 @@ sub Run {
. $uwzlevelname{ . $uwzlevelname{
GetUWZLevel( $hash, GetUWZLevel( $hash,
$single_warning->{'payload'}{'levelName'} ) $single_warning->{'payload'}{'levelName'} )
} } . '|';
. '|';
} }
elsif ( $hash->{CountryCode} ~~ ['NL'] ) { elsif ( $hash->{CountryCode} eq 'NL' ) {
Log $hash, 4, Log $hash, 4,
'Warn_' 'Warn_'
. $i . $i
@@ -1469,11 +1472,10 @@ sub Run {
. $uwzlevelname{ . $uwzlevelname{
GetUWZLevel( $hash, GetUWZLevel( $hash,
$single_warning->{'payload'}{'levelName'} ) $single_warning->{'payload'}{'levelName'} )
} } . '|';
. '|';
} }
elsif ( $hash->{CountryCode} ~~ ['FR'] ) { elsif ( $hash->{CountryCode} eq 'FR' ) {
Log $hash, 4, Log $hash, 4,
'Warn_' 'Warn_'
. $i . $i
@@ -1505,8 +1507,7 @@ sub Run {
. $uwzlevelname{ . $uwzlevelname{
GetUWZLevel( $hash, GetUWZLevel( $hash,
$single_warning->{'payload'}{'levelName'} ) $single_warning->{'payload'}{'levelName'} )
} } . '|';
. '|';
} }
else { else {
@@ -1541,8 +1542,7 @@ sub Run {
. $uwzlevelname{ . $uwzlevelname{
GetUWZLevel( $hash, GetUWZLevel( $hash,
$single_warning->{'payload'}{'levelName'} ) $single_warning->{'payload'}{'levelName'} )
} } . '|';
. '|';
} }
@@ -1591,13 +1591,18 @@ sub Run {
} }
else { else {
# Begin Language by AttrVal # Begin Language by AttrVal
if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { if (
contains_string(
$hash->{CountryCode}, ( 'DE', 'AT', 'CH' )
)
)
{
$uclang = 'DE'; $uclang = 'DE';
} }
elsif ( $hash->{CountryCode} ~~ ['NL'] ) { elsif ( $hash->{CountryCode} eq 'NL' ) {
$uclang = 'NL'; $uclang = 'NL';
} }
elsif ( $hash->{CountryCode} ~~ ['FR'] ) { elsif ( $hash->{CountryCode} eq 'FR' ) {
$uclang = 'FR'; $uclang = 'FR';
} }
else { else {
@@ -1690,21 +1695,22 @@ sub Run {
# Begin Language by AttrVal # Begin Language by AttrVal
if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { if ( contains_string( $hash->{CountryCode}, ( 'DE', 'AT', 'CH' ) ) )
{
$hagelcount = my @hagelmatch = $hagelcount = my @hagelmatch =
$single_warning->{'payload'}{'translationsLongText'}{'DE'} =~ $single_warning->{'payload'}{'translationsLongText'}{'DE'} =~
/Hagel/g; /Hagel/g;
} }
elsif ( $hash->{CountryCode} ~~ ['NL'] ) { elsif ( $hash->{CountryCode} eq 'NL' ) {
$hagelcount = my @hagelmatch = $hagelcount = my @hagelmatch =
$single_warning->{'payload'}{'translationsLongText'}{'NL'} =~ $single_warning->{'payload'}{'translationsLongText'}{'NL'} =~
/hagel/g; /hagel/g;
} }
elsif ( $hash->{CountryCode} ~~ ['FR'] ) { elsif ( $hash->{CountryCode} eq 'FR' ) {
$hagelcount = my @hagelmatch = $hagelcount = my @hagelmatch =
$single_warning->{'payload'}{'translationsLongText'}{'FR'} =~ $single_warning->{'payload'}{'translationsLongText'}{'FR'} =~
@@ -1749,7 +1755,8 @@ sub Run {
## Begin of redundant Reading ## Begin of redundant Reading
if ( $UWZ_humanreadable eq 1 ) { if ( $UWZ_humanreadable eq 1 ) {
if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { if ( contains_string( $hash->{CountryCode}, ( 'DE', 'AT', 'CH' ) ) )
{
my %uwzlevelname = ( my %uwzlevelname = (
'0' => 'Stufe Grün (keine Warnung)', '0' => 'Stufe Grün (keine Warnung)',
'1' => 'Stufe Dunkelgrün (Wetterhinweise)', '1' => 'Stufe Dunkelgrün (Wetterhinweise)',
@@ -1762,7 +1769,7 @@ sub Run {
$message .= 'WarnUWZLevel_Str|' . $uwzlevelname{$max} . '|'; $message .= 'WarnUWZLevel_Str|' . $uwzlevelname{$max} . '|';
} }
elsif ( $hash->{CountryCode} ~~ ['NL'] ) { elsif ( $hash->{CountryCode} eq 'NL' ) {
my %uwzlevelname = ( my %uwzlevelname = (
'0' => 'niveau groen (geen waarschuwingen)', '0' => 'niveau groen (geen waarschuwingen)',
'1' => 'niveau donkergroen (voorwaarschuwing)', '1' => 'niveau donkergroen (voorwaarschuwing)',
@@ -1778,7 +1785,7 @@ sub Run {
$message .= 'WarnUWZLevel_Str|' . $uwzlevelname{$max} . '|'; $message .= 'WarnUWZLevel_Str|' . $uwzlevelname{$max} . '|';
} }
elsif ( $hash->{CountryCode} ~~ ['FR'] ) { elsif ( $hash->{CountryCode} eq 'FR' ) {
my %uwzlevelname = ( my %uwzlevelname = (
'0' => 'niveau vert (aucune alerte)', '0' => 'niveau vert (aucune alerte)',
'1' => 'niveau vert foncé (indication météo)', '1' => 'niveau vert foncé (indication météo)',
@@ -1863,7 +1870,11 @@ sub UWZAsHtml {
} }
} }
else { else {
for ( my $i = 0 ; $i < ReadingsVal( $name, 'WarnCount', 0 ) ; $i++ ) for (
my $i = 0 ;
$i < ReadingsVal( $name, 'WarnCount', 0 ) ;
$i++
)
{ {
$ret .= UWZHtmlFrame( $hash, 'Warn_' . $i, $attr, 1 ); $ret .= UWZHtmlFrame( $hash, 'Warn_' . $i, $attr, 1 );
@@ -1887,13 +1898,13 @@ sub UWZAsHtml {
$ret .= '<tr><td class="uwzIcon" style="vertical-align:top;">'; $ret .= '<tr><td class="uwzIcon" style="vertical-align:top;">';
# language by AttrVal # language by AttrVal
if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { if ( contains_string( $hash->{CountryCode}, ( 'DE', 'AT', 'CH' ) ) ) {
$ret .= '<b>Keine Warnungen</b>'; $ret .= '<b>Keine Warnungen</b>';
} }
elsif ( $hash->{CountryCode} ~~ ['NL'] ) { elsif ( $hash->{CountryCode} eq 'NL' ) {
$ret .= '<b>Geen waarschuwingen</b>'; $ret .= '<b>Geen waarschuwingen</b>';
} }
elsif ( $hash->{CountryCode} ~~ ['FR'] ) { elsif ( $hash->{CountryCode} eq 'FR' ) {
$ret .= '<b>Aucune alerte</b>'; $ret .= '<b>Aucune alerte</b>';
} }
else { else {
@@ -1951,8 +1962,11 @@ sub UWZAsHtmlLite {
} }
} }
else { else {
for ( my $i = 0 ; for (
$i < ReadingsVal( $name, 'WarnCount', '' ) ; $i++ ) my $i = 0 ;
$i < ReadingsVal( $name, 'WarnCount', '' ) ;
$i++
)
{ {
$ret .= UWZHtmlFrame( $hash, 'Warn_' . $i, $attr, 0 ); $ret .= UWZHtmlFrame( $hash, 'Warn_' . $i, $attr, 0 );
} }
@@ -1974,13 +1988,13 @@ sub UWZAsHtmlLite {
$ret .= '<tr><td class="uwzIcon" style="vertical-align:top;">'; $ret .= '<tr><td class="uwzIcon" style="vertical-align:top;">';
# language by AttrVal # language by AttrVal
if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { if ( contains_string( $hash->{CountryCode}, ( 'DE', 'AT', 'CH' ) ) ) {
$ret .= '<b>Keine Warnungen</b>'; $ret .= '<b>Keine Warnungen</b>';
} }
elsif ( $hash->{CountryCode} ~~ ['NL'] ) { elsif ( $hash->{CountryCode} eq 'NL' ) {
$ret .= '<b>Geen waarschuwingen</b>'; $ret .= '<b>Geen waarschuwingen</b>';
} }
elsif ( $hash->{CountryCode} ~~ ['FR'] ) { elsif ( $hash->{CountryCode} eq 'FR' ) {
$ret .= '<b>Aucune alerte</b>'; $ret .= '<b>Aucune alerte</b>';
} }
else { else {
@@ -2066,13 +2080,13 @@ sub UWZAsHtmlMovie {
} }
else { else {
# language by AttrVal # language by AttrVal
if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { if ( contains_string( $hash->{CountryCode}, ( 'DE', 'AT', 'CH' ) ) ) {
$ret .= 'unbekannte Landbezeichnung'; $ret .= 'unbekannte Landbezeichnung';
} }
elsif ( $hash->{CountryCode} ~~ ['NL'] ) { elsif ( $hash->{CountryCode} eq 'NL' ) {
$ret .= 'Onbekende landcode'; $ret .= 'Onbekende landcode';
} }
elsif ( $hash->{CountryCode} ~~ ['FR'] ) { elsif ( $hash->{CountryCode} eq 'FR' ) {
$ret .= 'code de pays inconnu'; $ret .= 'code de pays inconnu';
} }
else { else {
@@ -2107,13 +2121,13 @@ sub UWZAsHtmlKarteLand {
} }
else { else {
# language by AttrVal # language by AttrVal
if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { if ( contains_string( $hash->{CountryCode}, ( 'DE', 'AT', 'CH' ) ) ) {
$ret .= 'unbekannte Landbezeichnung'; $ret .= 'unbekannte Landbezeichnung';
} }
elsif ( $hash->{CountryCode} ~~ ['NL'] ) { elsif ( $hash->{CountryCode} eq 'NL' ) {
$ret .= 'onbekende landcode'; $ret .= 'onbekende landcode';
} }
elsif ( $hash->{CountryCode} ~~ ['FR'] ) { elsif ( $hash->{CountryCode} eq 'FR' ) {
$ret .= 'code de pays inconnu'; $ret .= 'code de pays inconnu';
} }
else { else {
@@ -2183,7 +2197,7 @@ sub UWZHtmlTimestamp {
if ( length($min) == 1 ) { $min = "0$min"; } if ( length($min) == 1 ) { $min = "0$min"; }
# language by AttrVal # language by AttrVal
if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { if ( contains_string( $hash->{CountryCode}, ( 'DE', 'AT', 'CH' ) ) ) {
$ret .= $ret .=
"<td><b>$DEText[$StartEnd]</b></td><td>" "<td><b>$DEText[$StartEnd]</b></td><td>"
. "$DEweekdays[$wday], $mday $DEmonths[$mon] " . "$DEweekdays[$wday], $mday $DEmonths[$mon] "
@@ -2191,7 +2205,7 @@ sub UWZHtmlTimestamp {
. " $hour:$min " . " $hour:$min "
. "$DEText[2]</td>"; . "$DEText[2]</td>";
} }
elsif ( $hash->{CountryCode} ~~ ['NL'] ) { elsif ( $hash->{CountryCode} eq 'NL' ) {
$ret .= $ret .=
"<td><b>$NLText[$StartEnd]</b></td><td>" "<td><b>$NLText[$StartEnd]</b></td><td>"
. "$NLweekdays[$wday], $mday $NLmonths[$mon] " . "$NLweekdays[$wday], $mday $NLmonths[$mon] "
@@ -2199,7 +2213,7 @@ sub UWZHtmlTimestamp {
. " $hour:$min " . " $hour:$min "
. "$NLText[2]</td>"; . "$NLText[2]</td>";
} }
elsif ( $hash->{CountryCode} ~~ ['FR'] ) { elsif ( $hash->{CountryCode} eq 'FR' ) {
$ret .= $ret .=
"<td><b>$FRText[$StartEnd]</b></td><td>" "<td><b>$FRText[$StartEnd]</b></td><td>"
. "$FRweekdays[$wday], $mday $FRmonths[$mon] " . "$FRweekdays[$wday], $mday $FRmonths[$mon] "
@@ -2378,8 +2392,7 @@ sub UWZSearchLatLon {
'<a href="/fhem?cmd=get%20' '<a href="/fhem?cmd=get%20'
. $name . $name
. '%20AreaID%20' . '%20AreaID%20'
. $value->{'latitude'} . $value->{'latitude'} . ','
. ','
. $value->{'longitude'} . $value->{'longitude'}
. $::FW_CSRF . $::FW_CSRF
. '">Get AreaID</a>'; . '">Get AreaID</a>';