From b0ae288976eae0d752f69904a879ad82cbf25f56 Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Mon, 22 Dec 2014 07:12:41 +0000 Subject: [PATCH] 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 --- fhem/docs/commandref_frame_DE.html | 12 ++++++++---- fhem/fhem.pl | 6 ++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/fhem/docs/commandref_frame_DE.html b/fhem/docs/commandref_frame_DE.html index d74bddd7d..1b4449b60 100644 --- a/fhem/docs/commandref_frame_DE.html +++ b/fhem/docs/commandref_frame_DE.html @@ -476,9 +476,7 @@ Gerät dokumentiert. Wenn nicht gesetzt, erzeugt jede Veränderung eines "readings" ein Ereignis, welches z.B. von notify oder FileLog berücksichtigt wird. Wenn gesetzt erzeugen - nur Aktualisierungen der eingetragenen "readings" ein Ereignis. Wenn hinter dem - Namen eines "readings" ein optionaler Schwellwert über [:threshold] angegeben ist - wird das event nur getriggert wenn die Änderungen >= threshold ist. + nur Aktualisierungen der eingetragenen "readings" ein Ereignis. @@ -486,7 +484,13 @@ Gerät dokumentiert. Dieses Attribut enthält eine durch Kommata getrennte Liste von "readings". Wenn gesetzt, erzeugen nur Veränderungen der gelisteten "readings" ein Ereignis. Wenn die aktualiserten Werte der gelisteten - "readings" identisch sind, wird kein Ereignis generiert. + "readings" identisch sind, wird kein Ereignis generiert.
+ + Wenn hinter dem Namen eines "readings" eine :Schwelle angegeben ist, wird + das Event nur getriggert wenn die Änderung grösser als diese + Schwelle ist. + + Die unterschiedlichen Bedeutungen von event-on-update-reading und event-on-change-reading sind folgende: diff --git a/fhem/fhem.pl b/fhem/fhem.pl index 0ebbef6f0..e11d563dd 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -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 = $_;