2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-12 16:46:35 +00:00

fhem.pl: Make the event-on-change threshold work with even-min-interval (Forum #30810)

git-svn-id: https://svn.fhem.de/fhem/trunk@7301 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2014-12-22 07:12:41 +00:00
parent 41db4790fd
commit f941838426
2 changed files with 10 additions and 8 deletions

View File

@ -476,9 +476,7 @@ Gerät dokumentiert.
Wenn nicht gesetzt, erzeugt jede Veränderung eines "readings" ein
Ereignis, welches z.B. von <a href="#notify">notify</a> oder<a
href="FileLog"> FileLog</a> ber&uuml;cksichtigt wird. Wenn gesetzt erzeugen
nur Aktualisierungen der eingetragenen "readings" ein Ereignis. Wenn hinter dem
Namen eines "readings" ein optionaler Schwellwert &uuml;ber [:threshold] angegeben ist
wird das event nur getriggert wenn die &Auml;nderungen >= threshold ist.
nur Aktualisierungen der eingetragenen "readings" ein Ereignis.
</li>
<a name="event-on-change-reading"></a>
@ -486,7 +484,13 @@ Ger&auml;t dokumentiert.
Dieses Attribut enth&auml;lt eine durch Kommata getrennte Liste von
"readings". Wenn gesetzt, erzeugen nur Ver&auml;nderungen der gelisteten
"readings" ein Ereignis. Wenn die aktualiserten Werte der gelisteten
"readings" identisch sind, wird kein Ereignis generiert.</li>
"readings" identisch sind, wird kein Ereignis generiert.<br>
Wenn hinter dem Namen eines "readings" eine :Schwelle angegeben ist, wird
das Event nur getriggert wenn die &Auml;nderung gr&ouml;sser als diese
Schwelle ist.
</li>
Die unterschiedlichen Bedeutungen von event-on-update-reading und
event-on-change-reading sind folgende:

View File

@ -3671,7 +3671,6 @@ readingsBulkUpdate($$$@)
my $eour = $attreour && grep($reading =~ m/^$_$/, @{$attreour});
# check if threshold is given
my $threshold_reached = 1;
if( $eocr
&& $eocrv[0] =~ m/.*:(.*)/ ) {
my $threshold = $1;
@ -3681,11 +3680,10 @@ readingsBulkUpdate($$$@)
if( !defined($last_value) ) {
$hash->{".attreocr-threshold$reading"} = $value;
} elsif( abs($value-$last_value) < $threshold ) {
$threshold_reached = 0;
$eocr = 0;
} else {
$hash->{".attreocr-threshold$reading"} = $value;
}
#Log 1, "EOCR:$eocr value: $value last:$last_value threshold: $1 reached: $threshold_reached";
}
# determine if an event should be created:
@ -3696,7 +3694,7 @@ readingsBulkUpdate($$$@)
# ...and the change greater then the threshold
$changed= !($attreocr || $attreour)
|| $eour
|| ($eocr && ($value ne $readings->{VAL}) && $threshold_reached);
|| ($eocr && ($value ne $readings->{VAL}));
#Log 1, "EOCR:$eocr EOUR:$eour CHANGED:$changed";
my @v = grep { my $l = $_;