From 8596631ed074e602ed9e82f54315b554d6ca6c99 Mon Sep 17 00:00:00 2001 From: LeonGaultier <LeonGaultier@users.noreply.github.com> Date: Tue, 30 Oct 2018 11:20:16 +0000 Subject: [PATCH] 77_UWZ: add new language french and hollandisch git-svn-id: https://svn.fhem.de/fhem/trunk@17646 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 1 + fhem/FHEM/77_UWZ.pm | 422 ++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 390 insertions(+), 33 deletions(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index 3215e7d44..f01650568 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - feature: 77_UWZ: new language support, french and hollandisch - change: 93_DbRep: V8.6.0, devices and readings can be excluded by EXCLUDE-option in attributes "reading/device", reduceLog use attributes "device/reading" - see diff --git a/fhem/FHEM/77_UWZ.pm b/fhem/FHEM/77_UWZ.pm index 7b0703fbd..bce6236c8 100644 --- a/fhem/FHEM/77_UWZ.pm +++ b/fhem/FHEM/77_UWZ.pm @@ -57,14 +57,21 @@ eval "use Encode::Guess;1" or $missingModul .= "Encode::Guess "; require 'Blocking.pm'; require 'HttpUtils.pm'; + use vars qw($readingFnAttributes); - use vars qw(%defs); + +my @DEweekdays = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag); +my @DEmonths = ( "Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"); +my @NLweekdays = qw(zondag maandag dinsdag woensdag donderdag vrijdag zaterdag); +my @NLmonths = ("januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"); +my @FRweekdays = qw(dimanche lundi mardi mercredi jeudi vendredi samedi); +my @FRmonths = ("janvier","février","mars","avril","mai","juin","juillet","août","september","octobre","novembre","decembre"); +my @ENweekdays = qw(sunday monday thuesday wednesday thursday friday saturday); +my @ENmonths = ("January","February","March","April","Mäy","June","July","August","September","October","November","December"); + my $MODUL = "UWZ"; -my $version = "2.0.0"; - - - +my $version = "2.0.3"; # Declare functions sub UWZ_Log($$$); @@ -141,6 +148,14 @@ sub UWZ_Map2Movie($$) { $lmap->{'niederschlag-wolken-at'}=$uwz_movie_url.'UWZ_EUROPE_AUSTRIA_COMPLETE_niwofi.mp4'; $lmap->{'stroemung-at'}=$uwz_movie_url.'UWZ_EUROPE_AUSTRIA_COMPLETE_stfi.mp4'; + ## NL + $lmap->{'neerslag-wolken-nl'}=$uwz_movie_url.'UWZ_EUROPE_BENELUX_COMPLETE_niwofi.mp4'; + $lmap->{'stroming-nl'}=$uwz_movie_url.'UWZ_EUROPE_BENELUX_COMPLETE_stfi.mp4'; + + ## FR + $lmap->{'nuages-precipitations-fr'}=$uwz_movie_url.'UWZ_EUROPE_FRANCE_COMPLETE_niwofi.mp4'; + $lmap->{'courants-fr'}=$uwz_movie_url.'UWZ_EUROPE_FRANCE_COMPLETE_stfi.mp4'; + ## UK $lmap->{'clouds-precipitation-uk'}=$uwz_movie_url.'UWZ_EUROPE_GREATBRITAIN_COMPLETE_niwofi.mp4'; $lmap->{'currents-uk'}=$uwz_movie_url.'UWZ_EUROPE_GREATBRITAIN_COMPLETE_stfi.mp4'; @@ -271,12 +286,44 @@ sub UWZ_Map2Image($$) { ## FR $lmap->{'france'}=$uwz_fr_url.'france_index.png'; + $lmap->{'alsace'}=$uwz_fr_url.'alsace_index.png'; + $lmap->{'aquitaine'}=$uwz_fr_url.'aquitaine_index.png'; + $lmap->{'basse-normandie'}=$uwz_fr_url.'basse-normandie_index.png'; + $lmap->{'bretagne'}=$uwz_fr_url.'bretagne_index.png'; + $lmap->{'champagne-ardenne'}=$uwz_fr_url.'champagne-ardenne_index.png'; + $lmap->{'franche-comte'}=$uwz_fr_url.'franche-comte_index.png'; + $lmap->{'haute-normandie'}=$uwz_fr_url.'haute-normandie_index.png'; + $lmap->{'ile-de-france'}=$uwz_fr_url.'ile-de-france_index.png'; + $lmap->{'languedoc-roussillon'}=$uwz_fr_url.'languedoc-roussillon_index.png'; + $lmap->{'limousin'}=$uwz_fr_url.'limousin_index.png'; + $lmap->{'lorraine'}=$uwz_fr_url.'lorraine_index.png'; + $lmap->{'bourgogne'}=$uwz_fr_url.'bourgogne_index.png'; + $lmap->{'centre'}=$uwz_fr_url.'centre_index.png'; + $lmap->{'midi-pyrenees'}=$uwz_fr_url.'midi-pyrenees_index.png'; + $lmap->{'nord-pas-de-calais'}=$uwz_fr_url.'nord-pas-de-calais_index.png'; + $lmap->{'pays-de-la-loire'}=$uwz_fr_url.'pays-de-la-loire_index.png'; + $lmap->{'picardie'}=$uwz_fr_url.'picardie_index.png'; + $lmap->{'poitou-charentes'}=$uwz_fr_url.'poitou-charentes_index.png'; + $lmap->{'provence-alpes-cote-dazur'}=$uwz_fr_url.'provence-alpes-cote-dazur_index.png'; + $lmap->{'rhone-alpes'}=$uwz_fr_url.'rhone-alpes_index.png'; ## LU $lmap->{'letzebuerg'}=$uwz_lu_url.'letzebuerg_index.png'; ## NL $lmap->{'nederland'}=$uwz_nl_url.'nederland_index.png'; + $lmap->{'drenthe'}=$uwz_nl_url.'drenthe_index.png'; + $lmap->{'flevoland'}=$uwz_nl_url.'flevoland_index.png'; + $lmap->{'friesland'}=$uwz_nl_url.'friesland_index.png'; + $lmap->{'gelderland'}=$uwz_nl_url.'gelderland_index.png'; + $lmap->{'groningen'}=$uwz_nl_url.'groningen_index.png'; + $lmap->{'limburg'}=$uwz_nl_url.'limburg_index.png'; + $lmap->{'noordbrabant'}=$uwz_nl_url.'noordbrabant_index.png'; + $lmap->{'noordholland'}=$uwz_nl_url.'noordholland_index.png'; + $lmap->{'overijssel'}=$uwz_nl_url.'overijssel_index.png'; + $lmap->{'utrecht'}=$uwz_nl_url.'utrecht_index.png'; + $lmap->{'zeeland'}=$uwz_nl_url.'zeeland_index.png'; + $lmap->{'zuidholland'}=$uwz_nl_url.'zuidholland_index.png'; ## NO $lmap->{'norwegen'}=$uwz_no_url.'norwegen_index.png'; @@ -342,6 +389,7 @@ sub UWZ_Initialize($) { "sort_readings_by:severity,start,creation ". "localiconbase ". "intervalAtWarnLevel ". + "disable:1 ". $readingFnAttributes; foreach my $d(sort keys %{$modules{UWZ}{defptr}}) { @@ -373,6 +421,12 @@ sub UWZ_Define($$) { if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { $URL_language="de"; } + if ( $hash->{CountryCode} ~~ [ 'NL' ] ) { + $URL_language="nl"; + } + if ( $hash->{CountryCode} ~~ [ 'FR' ] ) { + $URL_language="fr"; + } $hash->{URL} = "http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=" . $URL_language . "&areaID=UWZ" . $a[2] . $a[3]; @@ -470,7 +524,45 @@ sub UWZ_Get($@) { elsif ($a[1] =~ /^Hagel/) { UWZ_GetCurrentHail($hash); } else { return $usage; } } - + + elsif ($hash->{CountryCode} ~~ [ 'NL' ] ) { + my $usage = "Unknown argument $a[1], 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 "; + + return $usage if ( @a < 2 ); + + if ($a[1] =~/^storm/) { UWZ_GetCurrent($hash,2); } + elsif ($a[1] =~/^sneeuw/) { UWZ_GetCurrent($hash,3); } + elsif ($a[1] =~/^regen/) { UWZ_GetCurrent($hash,4); } + elsif ($a[1] =~/^strenge-vorst/) { UWZ_GetCurrent($hash,5); } + elsif ($a[1] =~/^bosbrand/) { UWZ_GetCurrent($hash,6); } + elsif ($a[1] =~/^onweer/) { UWZ_GetCurrent($hash,7); } + elsif ($a[1] =~/^gladheid/) { UWZ_GetCurrent($hash,8); } + elsif ($a[1] =~/^hitte/) { UWZ_GetCurrent($hash,9); } + elsif ($a[1] =~/^ijzel/) { UWZ_GetCurrent($hash,10); } + elsif ($a[1] =~/^grondvorst/) { UWZ_GetCurrent($hash,11); } + elsif ($a[1] =~/^hagel/) { UWZ_GetCurrentHail($hash); } + else { return $usage; } + } + + elsif ($hash->{CountryCode} ~~ [ 'FR' ] ) { + my $usage = "Unknown argument $a[1], 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 "; + + return $usage if ( @a < 2 ); + + if ($a[1] =~/^tempete/) { UWZ_GetCurrent($hash,2); } + elsif ($a[1] =~/^neige/) { UWZ_GetCurrent($hash,3); } + elsif ($a[1] =~/^pluie/) { UWZ_GetCurrent($hash,4); } + elsif ($a[1] =~/^température/) { UWZ_GetCurrent($hash,5); } + elsif ($a[1] =~/^feu-de-forêt/) { UWZ_GetCurrent($hash,6); } + elsif ($a[1] =~/^orage/) { UWZ_GetCurrent($hash,7); } + elsif ($a[1] =~/^route-glissante/) { UWZ_GetCurrent($hash,8); } + elsif ($a[1] =~/^chaleur/) { UWZ_GetCurrent($hash,9); } + elsif ($a[1] =~/^pluie-de-verglas/) { UWZ_GetCurrent($hash,10); } + elsif ($a[1] =~/^gelée/) { UWZ_GetCurrent($hash,11); } + elsif ($a[1] =~/^grêle/) { UWZ_GetCurrentHail($hash); } + else { return $usage; } + } + elsif ( (lc $hash->{CountryCode}) eq 'search' ) { my $usage = "Unknown argument $a[1], choose one of SearchAreaID "; @@ -479,7 +571,7 @@ sub UWZ_Get($@) { if ($a[1] =~ /^SearchAreaID/) { UWZSearchLatLon($name, $a[2]); } elsif ($a[1] =~ /^AreaID/) { my @splitparam = split(/,/,$a[2]); UWZSearchAreaID($splitparam[0],$splitparam[1]); } else { return $usage; } - + } else { my $usage = "Unknown argument $a[1], choose one of storm:noArg snow:noArg rain:noArg extremfrost:noArg forest-fire:noArg thunderstorms:noArg glaze:noArg heat:noArg glazed-rain:noArg soil-frost:noArg hail:noArg "; @@ -585,8 +677,8 @@ sub UWZ_Start($) { if(!$hash->{fhem}{LOCAL} && $hash->{INTERVAL} > 0) { # set up timer if automatically call RemoveInternalTimer( $hash ); - InternalTimer(gettimeofday() + $hash->{INTERVAL}, "UWZ_Start", $hash, 1 ); - return undef if( AttrVal($name, "disable", 0 ) == 1 ); + InternalTimer(gettimeofday() + $hash->{INTERVAL}, "UWZ_Start", $hash, 1 ); + return undef if( IsDisabled($name) ); readingsSingleUpdate($hash,'currentIntervalMode','normal',0); } @@ -597,6 +689,10 @@ sub UWZ_Start($) { } else { if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { $URL_language="de"; + } elsif ( $hash->{CountryCode} ~~ [ 'NL' ] ) { + $URL_language="nl"; + } elsif ( $hash->{CountryCode} ~~ [ 'FR' ] ) { + $URL_language="fr"; } } $hash->{URL} = "http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=" . $URL_language . "&areaID=UWZ" . $hash->{CountryCode} . $hash->{PLZ}; @@ -668,6 +764,8 @@ sub UWZ_Done($) { $newState = "Warnings: " . $values{WarnCount}; $newState = "Warnungen: " . $values{WarnCount} if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ); + $newState = "Aantal waarschuwingen: " . $values{WarnCount} if ( $hash->{CountryCode} ~~ [ 'NL' ] ); + $newState = "Avertissements: " . $values{WarnCount} if ( $hash->{CountryCode} ~~ [ 'FR' ] ); # end Message by CountryCode } else { $newState = "Error: Could not capture all data. Please check CountryCode and PLZ."; @@ -819,7 +917,30 @@ sub UWZ_Run($) { "9" => "Hitze", # 9 = hitzewarnung "10" => "Glatteisregen", "11" => "Bodenfrost" ); # 11 = bodenfrost - + + my %typenames_nl_str= ( "1" => "unknown", # <===== FIX HERE + "2" => "storm", + "3" => "sneeuw", + "4" => "regen", + "5" => "temperatuur", + "6" => "bosbrand", + "7" => "onweer", + "8" => "gladde wegen", + "9" => "hitte", # 9 = hitzewarnung + "10" => "ijzel", + "11" => "grondvorst" ); # 11 = bodenfrost + + my %typenames_fr_str= ( "1" => "unknown", # <===== FIX HERE + "2" => "tempete", + "3" => "neige", + "4" => "pluie", + "5" => "températur", + "6" => "feu de forêt", + "7" => "orage", + "8" => "route glissante", + "9" => "chaleur", # 9 = hitzewarnung + "10" => "pluie de verglas", + "11" => "gelée" ); # 11 = bodenfrost my %typenames_en_str= ( "1" => "unknown", # <===== FIX HERE "2" => "storm", @@ -832,7 +953,6 @@ sub UWZ_Run($) { "9" => "heat", # 9 = hitzewarnung "10" => "black ice rain", "11" => "soil frost" ); # 11 = bodenfrost - my %severitycolor = ( "0" => "green", "1" => "unknown", # <===== FIX HERE @@ -915,6 +1035,29 @@ sub UWZ_Run($) { UWZ_Log $hash, 4, "Warn_".$i."_uwzLevel_Str: ".$uwzlevelname{ UWZ_GetUWZLevel($hash,$single_warning->{'payload'}{'levelName'}) }; $message .= "Warn_".$i."_uwzLevel_Str|".$uwzlevelname{ UWZ_GetUWZLevel($hash,$single_warning->{'payload'}{'levelName'}) }."|"; + } elsif ( $hash->{CountryCode} ~~ [ 'NL' ] ) { + UWZ_Log $hash, 4, "Warn_".$i."_Type_Str: ".$typenames_nl_str{ $single_warning->{'type'} }; + $message .= "Warn_".$i."_Type_Str|".$typenames_nl_str{ $single_warning->{'type'} }."|"; + my %uwzlevelname = ( "0" => "niveau groen (geen waarschuwingen)", + "1" => "niveau donkergroen (weermelding)", + "2" => "niveau geel (voorwaarschuwing)", + "3" => "waarschuwingsniveau oranje (waarschuwing voor matig noodweer)", + "4" => "waarschuwingsniveau rood (waarschuwing voor zwaar noodweer)", + "5" => "waarschuwingsniveau violet (waarschuwing voor zeer zwaar noodweer)"); + UWZ_Log $hash, 4, "Warn_".$i."_uwzLevel_Str: ".$uwzlevelname{ UWZ_GetUWZLevel($hash,$single_warning->{'payload'}{'levelName'}) }; + $message .= "Warn_".$i."_uwzLevel_Str|".$uwzlevelname{ UWZ_GetUWZLevel($hash,$single_warning->{'payload'}{'levelName'}) }."|"; + + } elsif ( $hash->{CountryCode} ~~ [ 'FR' ] ) { + UWZ_Log $hash, 4, "Warn_".$i."_Type_Str: ".$typenames_nl_str{ $single_warning->{'type'} }; + $message .= "Warn_".$i."_Type_Str|".$typenames_nl_str{ $single_warning->{'type'} }."|"; + my %uwzlevelname = ( "0" => "niveau vert (aucune alerte)", + "1" => "niveau vert foncé (indication météo)", + "2" => "niveau jaune (pré-alerte)", + "3" => "niveau d' alerte orange (alerte météo)", + "4" => "niveau d' alerte rouge (alerte météo)", + "5" => "niveau d' alerte violet (alerte météo)"); + UWZ_Log $hash, 4, "Warn_".$i."_uwzLevel_Str: ".$uwzlevelname{ UWZ_GetUWZLevel($hash,$single_warning->{'payload'}{'levelName'}) }; + $message .= "Warn_".$i."_uwzLevel_Str|".$uwzlevelname{ UWZ_GetUWZLevel($hash,$single_warning->{'payload'}{'levelName'}) }."|"; } else { UWZ_Log $hash, 4, "Warn_".$i."_Type_Str: ".$typenames_en_str{ $single_warning->{'type'} }; @@ -951,6 +1094,10 @@ sub UWZ_Run($) { # Begin Language by AttrVal if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { $uclang = "DE"; + } elsif ( $hash->{CountryCode} ~~ [ 'NL' ] ) { + $uclang = "NL" + } elsif ( $hash->{CountryCode} ~~ [ 'FR' ] ) { + $uclang = "FR" } else { $uclang = "EN"; } @@ -982,6 +1129,14 @@ sub UWZ_Run($) { if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { $hagelcount = my @hagelmatch = $single_warning->{'payload'}{'translationsLongText'}{'DE'} =~ /Hagel/g; + + } elsif ( $hash->{CountryCode} ~~ [ 'NL' ] ) { + + $hagelcount = my @hagelmatch = $single_warning->{'payload'}{'translationsLongText'}{'NL'} =~ /hagel/g; + + } elsif ( $hash->{CountryCode} ~~ [ 'FR' ] ) { + + $hagelcount = my @hagelmatch = $single_warning->{'payload'}{'translationsLongText'}{'FR'} =~ /grêle/g; } else { @@ -1025,6 +1180,27 @@ sub UWZ_Run($) { "5" => "Warnstufe Violett (Unwetterwarnung)"); UWZ_Log $hash, 4, "WarnUWZLevel_Str: ".$uwzlevelname{ $max }; $message .= "WarnUWZLevel_Str|".$uwzlevelname{ $max }."|"; + + } elsif ($hash->{CountryCode} ~~ [ 'NL' ] ) { + my %uwzlevelname = ( "0" => "niveau groen (geen waarschuwingen)", + "1" => "niveau donkergroen (voorwaarschuwing)", + "2" => "niveau geel (voorwaarschuwing)", + "3" => "waarschuwingsniveau oranje (waarschuwing voor matig noodweer)", + "4" => "waarschuwingsniveau rood (waarschuwing voor zwaar noodweer)", + "5" => "waarschuwingsniveau violet (waarschuwing voor zeer zwaar noodweer)"); + UWZ_Log $hash, 4, "WarnUWZLevel_Str: ".$uwzlevelname{ $max }; + $message .= "WarnUWZLevel_Str|".$uwzlevelname{ $max }."|"; + + } elsif ($hash->{CountryCode} ~~ [ 'FR' ] ) { + my %uwzlevelname = ( "0" => "niveau vert (aucune alerte)", + "1" => "niveau vert foncé (indication météo)", + "2" => "niveau jaune (pré-alerte)", + "3" => "niveau d' alerte orange (alerte météo)", + "4" => "niveau d' alerte rouge (alerte météo)", + "5" => "niveau d' alerte violet (alerte météo)"); + UWZ_Log $hash, 4, "WarnUWZLevel_Str: ".$uwzlevelname{ $max }; + $message .= "WarnUWZLevel_Str|".$uwzlevelname{ $max }."|"; + } else { my %uwzlevelname = ( "0" => "level green (no warnings)", "1" => "level dark green (weather notice)", @@ -1077,14 +1253,36 @@ sub UWZAsHtml($;$) { $ret .= '<tr><td class="uwzIcon" style="vertical-align:top;"><img src="'.ReadingsVal($name, "Warn_".$i."_IconURL", "").'"></td>'; $ret .= '<td class="uwzValue"><b>'.ReadingsVal($name, "Warn_".$i."_ShortText", "").'</b><br><br>'; $ret .= ReadingsVal($name, "Warn_".$i."_LongText", "").'<br><br>'; - - $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Start:</b></td><td>'.localtime(ReadingsVal($name, "Warn_".$i."_Start", "")).'</td>'; - + + my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(ReadingsVal($name, "Warn_".$i."_Start", "")); + if (length($hour) == 1) {$hour = "0$hour";} + if (length($min) == 1) {$min = "0$min";} + # language by AttrVal + if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { + $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Anfang:</b></td><td>'."$DEweekdays[$wday], $mday $DEmonths[$mon] ".(1900+$year)." $hour:$min ".'Uhr</td>'; + } elsif ( $hash->{CountryCode} ~~ [ 'NL' ] ) { + $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Begin:</b></td><td>'."$NLweekdays[$wday], $mday $NLmonths[$mon] ".(1900+$year)." $hour:$min ".'uur</td>'; + } elsif ( $hash->{CountryCode} ~~ [ 'FR' ] ) { + $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Valide à partir du:</b></td><td>'."$FRweekdays[$wday], $mday $FRmonths[$mon] ".(1900+$year)." $hour:$min ".'heure</td>'; + } else { + $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Start:</b></td><td>'."$ENweekdays[$wday], $mday $ENmonths[$mon] ".(1900+$year)." $hour:$min ".'hour</td>'; + } + # end language by AttrVal + + + ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = undef; + ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(ReadingsVal($name, "Warn_".$i."_End", "")); + if (length($hour) == 1) {$hour = "0$hour";} + if (length($min) == 1) {$min = "0$min";} # language by AttrVal if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { - $ret .= '<td><b>Ende:</b></td><td>'.localtime(ReadingsVal($name, "Warn_".$i."_End", "")).'</td>'; + $ret .= '<td><b>Ende:</b></td><td>'."$DEweekdays[$wday], $mday $DEmonths[$mon] ".(1900+$year)." $hour:$min ".'Uhr</td>'; + } elsif ( $hash->{CountryCode} ~~ [ 'NL' ] ) { + $ret .= '<td><b>Einde:</b></td><td>'."$NLweekdays[$wday], $mday $NLmonths[$mon] ".(1900+$year)." $hour:$min ".'uur</td>'; + } elsif ( $hash->{CountryCode} ~~ [ 'FR' ] ) { + $ret .= '<td><b>Jusqu\'au:</b></td><td>'."$FRweekdays[$wday], $mday $FRmonths[$mon] ".(1900+$year)." $hour:$min ".'heure</td>'; } else { - $ret .= '<td><b>End:</b></td><td>'.localtime(ReadingsVal($name, "Warn_".$i."_End", "")).'</td>'; + $ret .= '<td><b>End:</b></td><td>'."$ENweekdays[$wday], $mday $ENmonths[$mon] ".(1900+$year)." $hour:$min ".'hour</td>'; } # end language by AttrVal $ret .= '</tr></table>'; @@ -1097,14 +1295,36 @@ sub UWZAsHtml($;$) { $ret .= '<tr><td class="uwzIcon" style="vertical-align:top;"><img src="'.ReadingsVal($name, "Warn_".$i."_IconURL", "").'"></td>'; $ret .= '<td class="uwzValue"><b>'.ReadingsVal($name, "Warn_".$i."_ShortText", "").'</b><br><br>'; $ret .= ReadingsVal($name, "Warn_".$i."_LongText", "").'<br><br>'; - - $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Start:</b></td><td>'.localtime(ReadingsVal($name, "Warn_".$i."_Start", "")).'</td>'; - + + my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(ReadingsVal($name, "Warn_".$i."_Start", "")); + if (length($hour) == 1) {$hour = "0$hour";} + if (length($min) == 1) {$min = "0$min";} # language by AttrVal if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { - $ret .= '<td><b>Ende:</b></td><td>'.localtime(ReadingsVal($name, "Warn_".$i."_End", "")).'</td>'; + $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Anfang:</b></td><td>'."$DEweekdays[$wday], $mday $DEmonths[$mon] ".(1900+$year)." $hour:$min ".'Uhr</td>'; + } elsif ( $hash->{CountryCode} ~~ [ 'NL' ] ) { + $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Begin:</b></td><td>'."$NLweekdays[$wday], $mday $NLmonths[$mon] ".(1900+$year)." $hour:$min ".'uur</td>'; + } elsif ( $hash->{CountryCode} ~~ [ 'FR' ] ) { + $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Valide à partir du:</b></td><td>'."$FRweekdays[$wday], $mday $FRmonths[$mon] ".(1900+$year)." $hour:$min ".'heure</td>'; } else { - $ret .= '<td><b>End:</b></td><td>'.localtime(ReadingsVal($name, "Warn_".$i."_End", "")).'</td>'; + $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Start:</b></td><td>'."$ENweekdays[$wday], $mday $ENmonths[$mon] ".(1900+$year)." $hour:$min ".'hour</td>'; + } + # end language by AttrVal + + + ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = undef; + ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(ReadingsVal($name, "Warn_".$i."_End", "")); + if (length($hour) == 1) {$hour = "0$hour";} + if (length($min) == 1) {$min = "0$min";} + # language by AttrVal + if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { + $ret .= '<td><b>Ende:</b></td><td>'."$DEweekdays[$wday], $mday $DEmonths[$mon] ".(1900+$year)." $hour:$min ".'Uhr</td>'; + } elsif ( $hash->{CountryCode} ~~ [ 'NL' ] ) { + $ret .= '<td><b>Einde:</b></td><td>'."$NLweekdays[$wday], $mday $NLmonths[$mon] ".(1900+$year)." $hour:$min ".'uur</td>'; + } elsif ( $hash->{CountryCode} ~~ [ 'FR' ] ) { + $ret .= '<td><b>Juzqu\'au:</b></td><td>'."$FRweekdays[$wday], $mday $FRmonths[$mon] ".(1900+$year)." $hour:$min ".'heure</td>'; + } else { + $ret .= '<td><b>End:</b></td><td>'."$ENweekdays[$wday], $mday $ENmonths[$mon] ".(1900+$year)." $hour:$min ".'hour</td>'; } # end language by AttrVal $ret .= '</tr></table>'; @@ -1126,6 +1346,10 @@ sub UWZAsHtml($;$) { # language by AttrVal if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { $ret .='<b>Keine Warnungen</b>'; + } elsif ( $hash->{CountryCode} ~~ [ 'NL' ] ) { + $ret .='<b>Geen waarschuwingen</b>'; + } elsif ( $hash->{CountryCode} ~~ [ 'FR' ] ) { + $ret .='<b>Aucune alerte</b>'; } else { $ret .='<b>No Warnings</b>'; } @@ -1165,13 +1389,35 @@ sub UWZAsHtmlLite($;$) { for ( my $i=ReadingsVal($name, "WarnCount", "")-1; $i>=0; $i--){ $ret .= '<tr><td class="uwzIcon" style="vertical-align:top;"><img src="'.ReadingsVal($name, "Warn_".$i."_IconURL", "").'"></td>'; $ret .= '<td class="uwzValue"><b>'.ReadingsVal($name, "Warn_".$i."_ShortText", "").'</b><br><br>'; - $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Start:</b></td><td>'.localtime(ReadingsVal($name, "Warn_".$i."_Start", "")).'</td>'; + + my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(ReadingsVal($name, "Warn_".$i."_Start", "")); + if (length($hour) == 1) {$hour = "0$hour";} + if (length($min) == 1) {$min = "0$min";} # language by AttrVal - if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { - $ret .= '<td><b>Ende:</b></td><td>'.localtime(ReadingsVal($name, "Warn_".$i."_End", "")).'</td>'; + $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Anfang:</b></td><td>'."$DEweekdays[$wday], $mday $DEmonths[$mon] ".(1900+$year)." $hour:$min ".'Uhr</td>'; + } elsif ( $hash->{CountryCode} ~~ [ 'NL' ] ) { + $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Begin:</b></td><td>'."$NLweekdays[$wday], $mday $NLmonths[$mon] ".(1900+$year)." $hour:$min ".'uur</td>'; + } elsif ( $hash->{CountryCode} ~~ [ 'FR' ] ) { + $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Valide à partir du:</b></td><td>'."$FRweekdays[$wday], $mday $FRmonths[$mon] ".(1900+$year)." $hour:$min ".'heure</td>'; } else { - $ret .= '<td><b>End:</b></td><td>'.localtime(ReadingsVal($name, "Warn_".$i."_End", "")).'</td>'; + $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Start:</b></td><td>'."$ENweekdays[$wday], $mday $ENmonths[$mon] ".(1900+$year)." $hour:$min ".'hour</td>'; + } +# end language by AttrVal + + ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = undef; + ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(ReadingsVal($name, "Warn_".$i."_End", "")); + if (length($hour) == 1) {$hour = "0$hour";} + if (length($min) == 1) {$min = "0$min";} + # language by AttrVal + if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { + $ret .= '<td><b>Ende:</b></td><td>'."$DEweekdays[$wday], $mday $DEmonths[$mon] ".(1900+$year)." $hour:$min ".'Uhr</td>'; + } elsif ( $hash->{CountryCode} ~~ [ 'NL' ] ) { + $ret .= '<td><b>Einde:</b></td><td>'."$NLweekdays[$wday], $mday $NLmonths[$mon] ".(1900+$year)." $hour:$min ".'uur</td>'; + } elsif ( $hash->{CountryCode} ~~ [ 'FR' ] ) { + $ret .= '<td><b>Jusqu\'au:</b></td><td>'."$FRweekdays[$wday], $mday $FRmonths[$mon] ".(1900+$year)." $hour:$min ".'heure</td>'; + } else { + $ret .= '<td><b>End:</b></td><td>'."$ENweekdays[$wday], $mday $ENmonths[$mon] ".(1900+$year)." $hour:$min ".'hour</td>'; } # end language by AttrVal $ret .= '</tr></table>'; @@ -1181,13 +1427,35 @@ sub UWZAsHtmlLite($;$) { for ( my $i=0; $i<ReadingsVal($name, "WarnCount", ""); $i++){ $ret .= '<tr><td class="uwzIcon" style="vertical-align:top;"><img src="'.ReadingsVal($name, "Warn_".$i."_IconURL", "").'"></td>'; $ret .= '<td class="uwzValue"><b>'.ReadingsVal($name, "Warn_".$i."_ShortText", "").'</b><br><br>'; - $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Start:</b></td><td>'.localtime(ReadingsVal($name, "Warn_".$i."_Start", "")).'</td>'; + + my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(ReadingsVal($name, "Warn_".$i."_Start", "")); + if (length($hour) == 1) {$hour = "0$hour";} + if (length($min) == 1) {$min = "0$min";} # language by AttrVal - if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { - $ret .= '<td><b>Ende:</b></td><td>'.localtime(ReadingsVal($name, "Warn_".$i."_End", "")).'</td>'; + $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Anfang:</b></td><td>'."$DEweekdays[$wday], $mday $DEmonths[$mon] ".(1900+$year)." $hour:$min ".'Uhr</td>'; + } elsif ( $hash->{CountryCode} ~~ [ 'NL' ] ) { + $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Begin:</b></td><td>'."$NLweekdays[$wday], $mday $NLmonths[$mon] ".(1900+$year)." $hour:$min ".'uur</td>'; + } elsif ( $hash->{CountryCode} ~~ [ 'FR' ] ) { + $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Valide à partir du:</b></td><td>'."$FRweekdays[$wday], $mday $FRmonths[$mon] ".(1900+$year)." $hour:$min ".'heure</td>'; } else { - $ret .= '<td><b>End:</b></td><td>'.localtime(ReadingsVal($name, "Warn_".$i."_End", "")).'</td>'; + $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Start:</b></td><td>'."$ENweekdays[$wday], $mday $ENmonths[$mon] ".(1900+$year)." $hour:$min ".'hour</td>'; + } + # end language by AttrVal + + ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = undef; + ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(ReadingsVal($name, "Warn_".$i."_End", "")); + if (length($hour) == 1) {$hour = "0$hour";} + if (length($min) == 1) {$min = "0$min";} + # language by AttrVal + if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { + $ret .= '<td><b>Ende:</b></td><td>'."$DEweekdays[$wday], $mday $DEmonths[$mon] ".(1900+$year)." $hour:$min ".'Uhr</td>'; + } elsif ( $hash->{CountryCode} ~~ [ 'NL' ] ) { + $ret .= '<td><b>Einde:</b></td><td>'."$NLweekdays[$wday], $mday $NLmonths[$mon] ".(1900+$year)." $hour:$min ".'uur</td>'; + } elsif ( $hash->{CountryCode} ~~ [ 'FR' ] ) { + $ret .= '<td><b>Jusqu\'au:</b></td><td>'."$FRweekdays[$wday], $mday $FRmonths[$mon] ".(1900+$year)." $hour:$min ".'heure</td>'; + } else { + $ret .= '<td><b>End:</b></td><td>'."$ENweekdays[$wday], $mday $ENmonths[$mon] ".(1900+$year)." $hour:$min ".'hour</td>'; } # end language by AttrVal $ret .= '</tr></table>'; @@ -1207,6 +1475,10 @@ sub UWZAsHtmlLite($;$) { # language by AttrVal if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { $ret .='<b>Keine Warnungen</b>'; + } elsif ( $hash->{CountryCode} ~~ [ 'NL' ] ) { + $ret .='<b>Geen waarschuwingen</b>'; + } elsif ( $hash->{CountryCode} ~~ [ 'FR' ] ) { + $ret .='<b>Aucune alerte</b>'; } else { $ret .='<b>No Warnings</b>'; } @@ -1268,8 +1540,12 @@ sub UWZAsHtmlMovie($$) { } else { # language by AttrVal - if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { + if ( $hash->{CountryCode} ~~ [ 'DE' , 'AT' , 'CH' ] ) { $ret .= 'unbekannte Landbezeichnung'; + } elsif ( $hash->{CountryCode} ~~ [ 'NL' ] ) { + $ret .= 'Onbekende landcode'; + } elsif ( $hash->{CountryCode} ~~ [ 'FR' ] ) { + $ret .= 'code de pays inconnu'; } else { $ret .='unknown movie setting'; } @@ -1299,8 +1575,12 @@ sub UWZAsHtmlKarteLand($$) { } else { # language by AttrVal - if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) { + if ( $hash->{CountryCode} ~~ [ 'DE' , 'AT' , 'CH' ] ) { $ret .= 'unbekannte Landbezeichnung'; + } elsif ( $hash->{CountryCode} ~~ [ 'NL' ] ) { + $ret .= 'onbekende landcode'; + } elsif ( $hash->{CountryCode} ~~ [ 'FR' ] ) { + $ret .= 'code de pays inconnu'; } else { $ret .='unknown map setting'; } @@ -1873,10 +2153,42 @@ sub UWZSearchAreaID($$) { <li>finnland</li> <br/> <li>france</li> + <li>alsace</li> + <li>aquitaine</li> + <li>basse-normandie</li> + <li>bretagne</li> + <li>champagne-ardenne</li> + <li>franche-comte</li> + <li>haute-normandie</li> + <li>ile-de-france</li> + <li>languedoc-roussillon</li> + <li>limousin</li> + <li>lorraine</li> + <li>bourgogne</li> + <li>centre</li> + <li>midi-pyrenees</li> + <li>nord-pas-de-calais</li> + <li>pays-de-la-loire</li> + <li>picardie</li> + <li>poitou-charentes</li> + <li>provence-alpes-cote-dazur</li> + <li>rhone-alpes</li> <br/> <li>letzebuerg</li> <br/> <li>nederland</li> + <li>drenthe</li> + <li>flevoland</li> + <li>friesland</li> + <li>gelderland</li> + <li>groningen</li> + <li>limburg</li> + <li>noordbrabant</li> + <li>noordholland</li> + <li>overijssel</li> + <li>utrecht</li> + <li>zeeland</li> + <li>zuidholland</li> <br/> <li>norwegen</li> <br/> @@ -1923,8 +2235,14 @@ sub UWZSearchAreaID($$) { <li>niederschlag-wolken-at</li> <li>stroemung-at</li> <br/> - <li>niederschlag-wolken-uk</li> - <li>stroemung-uk</li> + <li>neerslag-wolken-nl</li> + <li>stroming-nl</li> + <br/> + <li>nuages-precipitations-fr</li> + <li>courants-fr</li> + <br/> + <li>clouds-precipitation-uk</li> + <li>currents-uk</li> <br/> </ul> </li> @@ -2264,10 +2582,42 @@ sub UWZSearchAreaID($$) { <li>finnland</li> <br/> <li>france</li> + <li>alsace</li> + <li>aquitaine</li> + <li>basse-normandie</li> + <li>bretagne</li> + <li>champagne-ardenne</li> + <li>franche-comte</li> + <li>haute-normandie</li> + <li>ile-de-france</li> + <li>languedoc-roussillon</li> + <li>limousin</li> + <li>lorraine</li> + <li>bourgogne</li> + <li>centre</li> + <li>midi-pyrenees</li> + <li>nord-pas-de-calais</li> + <li>pays-de-la-loire</li> + <li>picardie</li> + <li>poitou-charentes</li> + <li>provence-alpes-cote-dazur</li> + <li>rhone-alpes</li> <br/> <li>letzebuerg</li> <br/> <li>nederland</li> + <li>drenthe</li> + <li>flevoland</li> + <li>friesland</li> + <li>gelderland</li> + <li>groningen</li> + <li>limburg</li> + <li>noordbrabant</li> + <li>noordholland</li> + <li>overijssel</li> + <li>utrecht</li> + <li>zeeland</li> + <li>zuidholland</li> <br/> <li>norwegen</li> <br/> @@ -2314,6 +2664,12 @@ sub UWZSearchAreaID($$) { <li>niederschlag-wolken-at</li> <li>stroemung-at</li> <br/> + <li>neerslag-wolken-nl</li> + <li>stroming-nl</li> + <br/> + <li>nuages-precipitations-fr</li> + <li>courants-fr</li> + <br/> <li>clouds-precipitation-uk</li> <li>currents-uk</li> <br/>