2
0
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:
LeonGaultier 2017-07-09 15:15:13 +00:00
parent 2d778cfb6f
commit 01d8c218b6
2 changed files with 101 additions and 22 deletions

View File

@ -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'

View File

@ -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>