diff --git a/59_Weather.pm b/59_Weather.pm index e9ce097..8827f20 100755 --- a/59_Weather.pm +++ b/59_Weather.pm @@ -709,10 +709,13 @@ sub WeatherIconIMGTag($) { ##################################### sub WeatherAsHtmlV($;$$) { - my ( $d, $items, $f ) = @_; + my ( $d, $f, $items ) = @_; - $d = "" if ( !$d ); - $items = 6 if ( !$items ); + $f =~ tr/dh/./cd; + $f = "h" if ( !$f || length($f) > 1); + $items =~ tr/0-9/./cd; + $items = 6 if ( !$items ); + return "$d is not a Weather instance
" if ( !$defs{$d} || $defs{$d}->{TYPE} ne "Weather" ); @@ -749,15 +752,28 @@ sub WeatherAsHtmlV($;$$) { ); for ( my $i = 1 ; $i < $items ; $i++ ) { - $ret .= sprintf( -'%s%s: %s
min %s°C max %s°C', - $width, - WeatherIconIMGTag( ReadingsVal( $d, "${fc}${i}_icon", "" ) ), - ReadingsVal( $d, "${fc}${i}_day_of_week", "" ), - ReadingsVal( $d, "${fc}${i}_condition", "" ), - ReadingsVal( $d, "${fc}${i}_low_c", " - " ), - ReadingsVal( $d, "${fc}${i}_high_c", " - " ) - ); + if(defined($h->{READINGS}->{"${fc}${i}_low_c"}) and $h->{READINGS}->{"${fc}${i}_low_c"}){ + $ret .= sprintf( + '%s%s: %s
min %s°C max %s°C
%s', + $width, + WeatherIconIMGTag( ReadingsVal( $d, "${fc}${i}_icon", "" ) ), + ReadingsVal( $d, "${fc}${i}_day_of_week", "" ),
%s + ReadingsVal( $d, "${fc}${i}_condition", "" ), + ReadingsVal( $d, "${fc}${i}_low_c", " - " ), + ReadingsVal( $d, "${fc}${i}_high_c", " - " ) + ReadingsVal( $d, "${fc}${i}_wind_condition", " - " ) + ); + }else{ + $ret .= sprintf( + '%s%s: %s
%s°C
%s', + $width, + WeatherIconIMGTag( ReadingsVal( $d, "${fc}${i}_icon", "" ) ), + ReadingsVal( $d, "${fc}${i}_day_of_week", "" ), + ReadingsVal( $d, "${fc}${i}_condition", "" ), + ReadingsVal( $d, "${fc}${i}_temperature", " - " ) + ReadingsVal( $d, "${fc}${i}_wind_condition", " - " ) + ); + } } $ret .= ""; @@ -765,16 +781,24 @@ sub WeatherAsHtmlV($;$$) { } sub WeatherAsHtml($;$$) { - my ( $d, $items, $i ) = @_; + my ( $d, $f, $items ) = @_; - WeatherAsHtmlV( $d, $items, $i ); + $f =~ tr/dh/./cd; + $f = "h" if ( !$f || length($f) > 1); + $items =~ tr/0-9/./cd; + $items = 6 if ( !$items ); + + WeatherAsHtmlV( $d, $f, $items ); } sub WeatherAsHtmlH($;$$) { - my ( $d, $items, $f ) = @_; + my ( $d, $f, $items ) = @_; - $d = "" if ( !$d ); - $items = 6 if ( !$items ); + $f =~ tr/dh/./cd; + $f = "h" if ( !$f || length($f) > 1); + $items =~ tr/0-9/./cd; + $items = 6 if ( !$items ); + return "$d is not a Weather instance
" if ( !$defs{$d} || $defs{$d}->{TYPE} ne "Weather" ); @@ -860,13 +884,18 @@ sub WeatherAsHtmlH($;$$) { } sub WeatherAsHtmlD($;$$) { - my ( $d, $items, $i ) = @_; + my ( $d, $f, $items ) = @_; + + $f =~ tr/dh/./cd; + $f = "h" if ( !$f || length($f) > 1); + $items =~ tr/0-9/./cd; + $items = 6 if ( !$items ); if ($FW_ss) { - WeatherAsHtmlV( $d, $items, $i ); + WeatherAsHtmlV( $d, $f , $items); } else { - WeatherAsHtmlH( $d, $items, $i ); + WeatherAsHtmlH( $d, $f , $items); } } @@ -967,7 +996,7 @@ sub WeatherAsHtmlD($;$$) { to limit the numer of icons to display.

Example:
-      define MyWeatherWeblink weblink htmlCode { WeatherAsHtmlH("MyWeather",10,"h") }
+      define MyWeatherWeblink weblink htmlCode { WeatherAsHtmlH("MyWeather","h",10) }
     
@@ -1140,7 +1169,7 @@ sub WeatherAsHtmlD($;$$) { Wird der dritte Parameter verwendet muss auch der zweite Parameter für die Anzahl der darzustellenden Icons gesetzt werden.

Beispiel:
-      define MyWeatherWeblink weblink htmlCode { WeatherAsHtmlH("MyWeather",10,"h") }
+      define MyWeatherWeblink weblink htmlCode { WeatherAsHtmlH("MyWeather","h",10) }