diff --git a/fhem/CHANGED b/fhem/CHANGED
index 81801e2d6..d4339ee76 100644
--- a/fhem/CHANGED
+++ b/fhem/CHANGED
@@ -1,5 +1,7 @@
# 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: 1.6.0 add new attribut intervalAtWarnLevel for flexible
+ warn timer
- feature: 10_FS20: add useSetExtensions attribute, default is 1
- feature: 82_LGTV_WebOS: Version 0.8.0, fix screenMsg Charset problem
- bugfix: 93_DbLog: V2.18.3, cannot load V2.18.2, new internal 'model'
diff --git a/fhem/FHEM/77_UWZ.pm b/fhem/FHEM/77_UWZ.pm
index 70aea022d..c6d78fa8e 100644
--- a/fhem/FHEM/77_UWZ.pm
+++ b/fhem/FHEM/77_UWZ.pm
@@ -60,7 +60,40 @@ use vars qw($readingFnAttributes);
use vars qw(%defs);
my $MODUL = "UWZ";
-my $version = "1.4.7";
+my $version = "1.6.0";
+
+
+
+
+# Declare functions
+sub UWZ_Log($$$);
+sub UWZ_Map2Movie($$);
+sub UWZ_Map2Image($$);
+sub UWZ_Initialize($);
+sub UWZ_Define($$);
+sub UWZ_Undef($$);
+sub UWZ_Set($@);
+sub UWZ_Get($@);
+sub UWZ_GetCurrent($@);
+sub UWZ_GetCurrentHail($);
+sub UWZ_JSONAcquire($$);
+sub UWZ_Start($);
+sub UWZ_Aborted($);
+sub UWZ_Done($);
+sub UWZ_Run($);
+sub UWZAsHtml($;$);
+sub UWZAsHtmlLite($;$);
+sub UWZAsHtmlFP($;$);
+sub UWZAsHtmlMovie($$);
+sub UWZAsHtmlKarteLand($$);
+sub UWZ_GetSeverityColor($$);
+sub UWZ_GetUWZLevel($$);
+sub UWZSearchLatLon($$);
+sub UWZSearchAreaID($$);
+sub UWZ_IntervalAtWarnLevel($);
+
+
+
my $countrycode = "DE";
my $plz = "77777";
@@ -279,6 +312,7 @@ sub UWZ_Initialize($) {
"lang ".
"sort_readings_by:severity,start ".
"localiconbase ".
+ "intervalAtWarnLevel ".
$readingFnAttributes;
foreach my $d(sort keys %{$modules{UWZ}{defptr}}) {
@@ -314,9 +348,10 @@ sub UWZ_Define($$) {
$hash->{URL} = "http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=" . $URL_language . "&areaID=UWZ" . $a[2] . $a[3];
- $hash->{fhem}{LOCAL} = 0;
- $hash->{INTERVAL} = $a[4];
- $hash->{VERSION} = $version;
+ $hash->{fhem}{LOCAL} = 0;
+ $hash->{INTERVAL} = $a[4];
+ $hash->{INTERVALWARN} = 0;
+ $hash->{VERSION} = $version;
RemoveInternalTimer($hash);
@@ -378,7 +413,6 @@ sub UWZ_Set($@) {
return;
}
-
sub UWZ_Get($@) {
my ( $hash, @a ) = @_;
@@ -506,7 +540,6 @@ sub UWZ_JSONAcquire($$) {
return $response->content;
}
-
#####################################
sub UWZ_Start($) {
@@ -520,6 +553,7 @@ sub UWZ_Start($) {
RemoveInternalTimer( $hash );
InternalTimer(gettimeofday() + $hash->{INTERVAL}, "UWZ_Start", $hash, 1 );
return undef if( AttrVal($name, "disable", 0 ) == 1 );
+ readingsSingleUpdate($hash,'currentIntervalMode','normal',0);
}
## URL by CountryCode
@@ -572,10 +606,7 @@ sub UWZ_Done($) {
# delete the marker for RUNNING_PID process
delete( $hash->{helper}{RUNNING_PID} );
- UWZ_Log $hash, 4, "Delete old Readings";
- #CommandDeleteReading(undef, "$hash->{NAME} Warn_?_.*");
-
-
+
# UnWetterdaten speichern
readingsBeginUpdate($hash);
@@ -592,6 +623,7 @@ sub UWZ_Done($) {
if (keys %values > 0) {
my $newState;
+ UWZ_Log $hash, 4, "Delete old Readings";
for my $Counter ($values{WarnCount} .. 9) {
CommandDeleteReading(undef, "$hash->{NAME} Warn_${Counter}_.*");
}
@@ -620,9 +652,14 @@ sub UWZ_Done($) {
}
readingsEndUpdate( $hash, 1 );
+
+ if( AttrVal($name,'intervalAtWarnLevel','') ne '' and ReadingsVal($name,'WarnUWZLevel',0) > 1 ) {
+
+ UWZ_IntervalAtWarnLevel($hash);
+ UWZ_Log $hash, 5, "run Sub IntervalAtWarnLevel";
+ }
}
-
#####################################
sub UWZ_Run($) {
@@ -773,7 +810,6 @@ sub UWZ_Run($) {
"12" => "violett" );
my @uwzmaxlevel;
- #foreach my $single_warning (@{ $uwz_warnings->{'results'} }) {
foreach my $single_warning (@sorted) {
push @uwzmaxlevel, UWZ_GetUWZLevel($hash,$single_warning->{'payload'}{'levelName'});
@@ -967,7 +1003,6 @@ sub UWZ_Run($) {
return "$name|$message|WarnCount|$uwz_warncount" ;
}
-
#####################################
sub UWZAsHtml($;$) {
@@ -1171,7 +1206,6 @@ sub UWZAsHtmlFP($;$) {
return $ret;
}
-
#####################################
sub UWZAsHtmlMovie($$) {
@@ -1205,9 +1239,6 @@ sub UWZAsHtmlMovie($$) {
return $ret;
}
-
-
-
#####################################
sub UWZAsHtmlKarteLand($$) {
@@ -1239,7 +1270,6 @@ sub UWZAsHtmlKarteLand($$) {
return $ret;
}
-
#####################################
sub UWZ_GetSeverityColor($$) {
my ($name,$uwzlevel) = @_;
@@ -1255,7 +1285,6 @@ sub UWZ_GetSeverityColor($$) {
return $UWZSeverity{$uwzlevel};
}
-
#####################################
sub UWZ_GetUWZLevel($$) {
my ($name,$warnname) = @_;
@@ -1277,6 +1306,42 @@ sub UWZ_GetUWZLevel($$) {
}
}
+#####################################
+sub UWZ_IntervalAtWarnLevel($) {
+
+ my $hash = shift;
+
+ my $name = $hash->{NAME};
+ my $warnLevel = ReadingsVal($name,'WarnUWZLevel',0);
+ my @valuestring = split( ',', AttrVal($name,'intervalAtWarnLevel','') );
+ my %warnLevelInterval;
+
+
+ readingsSingleUpdate($hash,'currentIntervalMode','warn',0);
+
+ foreach( @valuestring ) {
+
+ my @values = split( '=' , $_ );
+ $warnLevelInterval{$values[0]} = $values[1];
+ }
+
+ if( defined($warnLevelInterval{$warnLevel}) and $hash->{INTERVALWARN} != $warnLevelInterval{$warnLevel} ) {
+
+ $hash->{INTERVALWARN} = $warnLevelInterval{$warnLevel};
+
+ RemoveInternalTimer( $hash );
+ InternalTimer(gettimeofday() + $hash->{INTERVALWARN}, "UWZ_Start", $hash, 1 );
+
+ UWZ_Log $hash, 4, "restart internal timer with interval $hash->{INTERVALWARN}";
+
+ } else {
+
+ RemoveInternalTimer( $hash );
+ InternalTimer(gettimeofday() + $hash->{INTERVALWARN}, "UWZ_Start", $hash, 1 );
+
+ UWZ_Log $hash, 4, "restart internal timer with interval $hash->{INTERVALWARN}";
+ }
+}
#####################################
##
@@ -1348,7 +1413,6 @@ sub UWZSearchLatLon($$) {
}
-
#####################################
sub UWZSearchAreaID($$) {
my ($lat,$lon) = @_;
@@ -1409,9 +1473,10 @@ sub UWZSearchAreaID($$) {
=pod
+
=item device
-=item summary Modul extracts thunderstorm warnings from unwetterzentrale.de
-=item summary_DE Modul extrahiert Unwetterwarnungen von unwetterzentrale.de.
+=item summary extracts thunderstorm warnings from unwetterzentrale.de
+=item summary_DE extrahiert Unwetterwarnungen von unwetterzentrale.de
=begin html
@@ -1616,6 +1681,11 @@ sub UWZSearchAreaID($$) {
define baseurl to host your own thunderstorm warn pics (filetype is png).
+
intervalAtWarnLevel
+ intervalAtWarnLevel
+