mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-19 12:46:03 +00:00
77_UWZ: 1.6.0 add new attribut intervalAtWarnLevel for flexible warn timer
git-svn-id: https://svn.fhem.de/fhem/trunk@14680 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
2d778cfb6f
commit
01d8c218b6
@ -1,5 +1,7 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# 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.
|
# 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: 10_FS20: add useSetExtensions attribute, default is 1
|
||||||
- feature: 82_LGTV_WebOS: Version 0.8.0, fix screenMsg Charset problem
|
- 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'
|
- bugfix: 93_DbLog: V2.18.3, cannot load V2.18.2, new internal 'model'
|
||||||
|
@ -60,7 +60,40 @@ use vars qw($readingFnAttributes);
|
|||||||
|
|
||||||
use vars qw(%defs);
|
use vars qw(%defs);
|
||||||
my $MODUL = "UWZ";
|
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 $countrycode = "DE";
|
||||||
my $plz = "77777";
|
my $plz = "77777";
|
||||||
@ -279,6 +312,7 @@ sub UWZ_Initialize($) {
|
|||||||
"lang ".
|
"lang ".
|
||||||
"sort_readings_by:severity,start ".
|
"sort_readings_by:severity,start ".
|
||||||
"localiconbase ".
|
"localiconbase ".
|
||||||
|
"intervalAtWarnLevel ".
|
||||||
$readingFnAttributes;
|
$readingFnAttributes;
|
||||||
|
|
||||||
foreach my $d(sort keys %{$modules{UWZ}{defptr}}) {
|
foreach my $d(sort keys %{$modules{UWZ}{defptr}}) {
|
||||||
@ -316,6 +350,7 @@ sub UWZ_Define($$) {
|
|||||||
|
|
||||||
$hash->{fhem}{LOCAL} = 0;
|
$hash->{fhem}{LOCAL} = 0;
|
||||||
$hash->{INTERVAL} = $a[4];
|
$hash->{INTERVAL} = $a[4];
|
||||||
|
$hash->{INTERVALWARN} = 0;
|
||||||
$hash->{VERSION} = $version;
|
$hash->{VERSION} = $version;
|
||||||
|
|
||||||
RemoveInternalTimer($hash);
|
RemoveInternalTimer($hash);
|
||||||
@ -378,7 +413,6 @@ sub UWZ_Set($@) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
sub UWZ_Get($@) {
|
sub UWZ_Get($@) {
|
||||||
|
|
||||||
my ( $hash, @a ) = @_;
|
my ( $hash, @a ) = @_;
|
||||||
@ -506,7 +540,6 @@ sub UWZ_JSONAcquire($$) {
|
|||||||
return $response->content;
|
return $response->content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
sub UWZ_Start($) {
|
sub UWZ_Start($) {
|
||||||
|
|
||||||
@ -520,6 +553,7 @@ sub UWZ_Start($) {
|
|||||||
RemoveInternalTimer( $hash );
|
RemoveInternalTimer( $hash );
|
||||||
InternalTimer(gettimeofday() + $hash->{INTERVAL}, "UWZ_Start", $hash, 1 );
|
InternalTimer(gettimeofday() + $hash->{INTERVAL}, "UWZ_Start", $hash, 1 );
|
||||||
return undef if( AttrVal($name, "disable", 0 ) == 1 );
|
return undef if( AttrVal($name, "disable", 0 ) == 1 );
|
||||||
|
readingsSingleUpdate($hash,'currentIntervalMode','normal',0);
|
||||||
}
|
}
|
||||||
|
|
||||||
## URL by CountryCode
|
## URL by CountryCode
|
||||||
@ -572,9 +606,6 @@ sub UWZ_Done($) {
|
|||||||
# delete the marker for RUNNING_PID process
|
# delete the marker for RUNNING_PID process
|
||||||
delete( $hash->{helper}{RUNNING_PID} );
|
delete( $hash->{helper}{RUNNING_PID} );
|
||||||
|
|
||||||
UWZ_Log $hash, 4, "Delete old Readings";
|
|
||||||
#CommandDeleteReading(undef, "$hash->{NAME} Warn_?_.*");
|
|
||||||
|
|
||||||
|
|
||||||
# UnWetterdaten speichern
|
# UnWetterdaten speichern
|
||||||
readingsBeginUpdate($hash);
|
readingsBeginUpdate($hash);
|
||||||
@ -592,6 +623,7 @@ sub UWZ_Done($) {
|
|||||||
|
|
||||||
if (keys %values > 0) {
|
if (keys %values > 0) {
|
||||||
my $newState;
|
my $newState;
|
||||||
|
UWZ_Log $hash, 4, "Delete old Readings";
|
||||||
for my $Counter ($values{WarnCount} .. 9) {
|
for my $Counter ($values{WarnCount} .. 9) {
|
||||||
CommandDeleteReading(undef, "$hash->{NAME} Warn_${Counter}_.*");
|
CommandDeleteReading(undef, "$hash->{NAME} Warn_${Counter}_.*");
|
||||||
}
|
}
|
||||||
@ -620,8 +652,13 @@ sub UWZ_Done($) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
readingsEndUpdate( $hash, 1 );
|
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($) {
|
sub UWZ_Run($) {
|
||||||
@ -773,7 +810,6 @@ sub UWZ_Run($) {
|
|||||||
"12" => "violett" );
|
"12" => "violett" );
|
||||||
|
|
||||||
my @uwzmaxlevel;
|
my @uwzmaxlevel;
|
||||||
#foreach my $single_warning (@{ $uwz_warnings->{'results'} }) {
|
|
||||||
foreach my $single_warning (@sorted) {
|
foreach my $single_warning (@sorted) {
|
||||||
|
|
||||||
push @uwzmaxlevel, UWZ_GetUWZLevel($hash,$single_warning->{'payload'}{'levelName'});
|
push @uwzmaxlevel, UWZ_GetUWZLevel($hash,$single_warning->{'payload'}{'levelName'});
|
||||||
@ -967,7 +1003,6 @@ sub UWZ_Run($) {
|
|||||||
return "$name|$message|WarnCount|$uwz_warncount" ;
|
return "$name|$message|WarnCount|$uwz_warncount" ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
sub UWZAsHtml($;$) {
|
sub UWZAsHtml($;$) {
|
||||||
|
|
||||||
@ -1171,7 +1206,6 @@ sub UWZAsHtmlFP($;$) {
|
|||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
sub UWZAsHtmlMovie($$) {
|
sub UWZAsHtmlMovie($$) {
|
||||||
|
|
||||||
@ -1205,9 +1239,6 @@ sub UWZAsHtmlMovie($$) {
|
|||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
sub UWZAsHtmlKarteLand($$) {
|
sub UWZAsHtmlKarteLand($$) {
|
||||||
|
|
||||||
@ -1239,7 +1270,6 @@ sub UWZAsHtmlKarteLand($$) {
|
|||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
sub UWZ_GetSeverityColor($$) {
|
sub UWZ_GetSeverityColor($$) {
|
||||||
my ($name,$uwzlevel) = @_;
|
my ($name,$uwzlevel) = @_;
|
||||||
@ -1255,7 +1285,6 @@ sub UWZ_GetSeverityColor($$) {
|
|||||||
return $UWZSeverity{$uwzlevel};
|
return $UWZSeverity{$uwzlevel};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
sub UWZ_GetUWZLevel($$) {
|
sub UWZ_GetUWZLevel($$) {
|
||||||
my ($name,$warnname) = @_;
|
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($$) {
|
sub UWZSearchAreaID($$) {
|
||||||
my ($lat,$lon) = @_;
|
my ($lat,$lon) = @_;
|
||||||
@ -1409,9 +1473,10 @@ sub UWZSearchAreaID($$) {
|
|||||||
|
|
||||||
|
|
||||||
=pod
|
=pod
|
||||||
|
|
||||||
=item device
|
=item device
|
||||||
=item summary Modul extracts thunderstorm warnings from unwetterzentrale.de
|
=item summary extracts thunderstorm warnings from unwetterzentrale.de
|
||||||
=item summary_DE Modul extrahiert Unwetterwarnungen von unwetterzentrale.de.
|
=item summary_DE extrahiert Unwetterwarnungen von unwetterzentrale.de
|
||||||
|
|
||||||
=begin html
|
=begin html
|
||||||
|
|
||||||
@ -1616,6 +1681,11 @@ sub UWZSearchAreaID($$) {
|
|||||||
define baseurl to host your own thunderstorm warn pics (filetype is png).
|
define baseurl to host your own thunderstorm warn pics (filetype is png).
|
||||||
<br>
|
<br>
|
||||||
</li>
|
</li>
|
||||||
|
<li><code>intervalAtWarnLevel</code>
|
||||||
|
<br>
|
||||||
|
define the interval per warnLevel. Example: 2=1800,3=900,4=300
|
||||||
|
<br>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1639,6 +1709,7 @@ sub UWZSearchAreaID($$) {
|
|||||||
<li><b>Warn_</b><i>0</i><b>_Creation</b> - warning creation </li>
|
<li><b>Warn_</b><i>0</i><b>_Creation</b> - warning creation </li>
|
||||||
<li><b>Warn_</b><i>0</i><b>_Creation_Date</b> - warning creation datum </li>
|
<li><b>Warn_</b><i>0</i><b>_Creation_Date</b> - warning creation datum </li>
|
||||||
<li><b>Warn_</b><i>0</i><b>_Creation_Time</b> - warning creation time </li>
|
<li><b>Warn_</b><i>0</i><b>_Creation_Time</b> - warning creation time </li>
|
||||||
|
<li><b>currentIntervalMode</b> - default/warn, Interval is read from INTERVAL or INTERVALWARN Internal</li>
|
||||||
<li><b>Warn_</b><i>0</i><b>_Start</b> - begin of warnperiod</li>
|
<li><b>Warn_</b><i>0</i><b>_Start</b> - begin of warnperiod</li>
|
||||||
<li><b>Warn_</b><i>0</i><b>_Start_Date</b> - start date of warnperiod</li>
|
<li><b>Warn_</b><i>0</i><b>_Start_Date</b> - start date of warnperiod</li>
|
||||||
<li><b>Warn_</b><i>0</i><b>_Start_Time</b> - start time of warnperiod</li>
|
<li><b>Warn_</b><i>0</i><b>_Start_Time</b> - start time of warnperiod</li>
|
||||||
@ -2003,6 +2074,11 @@ sub UWZSearchAreaID($$) {
|
|||||||
BaseURL angeben um Warn Icons lokal zu hosten. (Dateityp ist png).
|
BaseURL angeben um Warn Icons lokal zu hosten. (Dateityp ist png).
|
||||||
<br>
|
<br>
|
||||||
</li>
|
</li>
|
||||||
|
<li><code>intervalAtWarnLevel</code>
|
||||||
|
<br>
|
||||||
|
konfiguriert den Interval je nach WarnLevel. Beispiel: 2=1800,3=900,4=300
|
||||||
|
<br>
|
||||||
|
</li>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
</ul>
|
</ul>
|
||||||
@ -2024,6 +2100,7 @@ sub UWZSearchAreaID($$) {
|
|||||||
<li><b>Warn_</b><i>0</i><b>_Creation</b> - Warnungs Erzeugung </li>
|
<li><b>Warn_</b><i>0</i><b>_Creation</b> - Warnungs Erzeugung </li>
|
||||||
<li><b>Warn_</b><i>0</i><b>_Creation_Date</b> - Warnungs Erzeugungs Datum </li>
|
<li><b>Warn_</b><i>0</i><b>_Creation_Date</b> - Warnungs Erzeugungs Datum </li>
|
||||||
<li><b>Warn_</b><i>0</i><b>_Creation_Time</b> - Warnungs Erzeugungs Zeit </li>
|
<li><b>Warn_</b><i>0</i><b>_Creation_Time</b> - Warnungs Erzeugungs Zeit </li>
|
||||||
|
<li><b>currentIntervalMode</b> - default/warn, aktuell Verwendeter Interval. Internal INTERVAL oder INTERVALWARN</li>
|
||||||
<li><b>Warn_</b><i>0</i><b>_Start</b> - Begin der Warnung</li>
|
<li><b>Warn_</b><i>0</i><b>_Start</b> - Begin der Warnung</li>
|
||||||
<li><b>Warn_</b><i>0</i><b>_Start_Date</b> - Startdatum der Warnung</li>
|
<li><b>Warn_</b><i>0</i><b>_Start_Date</b> - Startdatum der Warnung</li>
|
||||||
<li><b>Warn_</b><i>0</i><b>_Start_Time</b> - Startzeit der Warnung</li>
|
<li><b>Warn_</b><i>0</i><b>_Start_Time</b> - Startzeit der Warnung</li>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user