19_Revolt: disable risky plausability check for energy outliers (Forum #71840)

git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@17443 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
gernot-h 2018-09-30 20:56:22 +00:00
parent 7e7edbd4d7
commit b7c4fc2e44

View File

@ -101,22 +101,28 @@ sub Revolt_Parse($$)
$energy -= AttrVal($name, "EnergyAdjustValue", 0); $energy -= AttrVal($name, "EnergyAdjustValue", 0);
my $isInvalid = 0; my $isInvalid = 0;
my $energydiff = 0; #my $energydiff = 0;
my $maxenergy = 0; #my $maxenergy = 0;
if (defined($def->{READINGS}{"energy"})) { #TODO: This plausability check will stop accepting values forever after
my $timediff = gettimeofday() - str2time($def->{READINGS}{"energy"}{TIME}); #receiving a very small outlier once. We could use abs(...), but what about
$energydiff = $energy - $def->{READINGS}{"energy"}{VAL}; #changing energyadjustvalue etc.? Do we really need this at all?
$maxenergy = 3.65 * ($timediff / 3600.0); #
} #if (defined($def->{READINGS}{"energy"})) {
# my $timediff = gettimeofday() - str2time($def->{READINGS}{"energy"}{TIME});
# $energydiff = $energy - $def->{READINGS}{"energy"}{VAL};
# $maxenergy = 3.65 * ($timediff / 3600.0);
#}
#if ($energydiff > $maxenergy) {
# $isInvalid = 1;
#}
if (0 == $pf) { if (0 == $pf) {
$pf = 0.0001; $pf = 0.0001;
} }
# plausability check partly taken from http://www.sknorrell.de/blog/energiemesssung-mit-revolt-nc-5462/ # plausability check partly taken from http://www.sknorrell.de/blog/energiemesssung-mit-revolt-nc-5462/
if (($voltage < 80) || ($freq > 65) || ($power > 3650) || ($current > 16) || if (($voltage < 80) || ($freq > 65) || ($power > 3650) || ($current > 16) ||
((($power / $voltage / $pf) > 0.00999) && (0 == $current)) || ((($power / $voltage / $pf) > 0.00999) && (0 == $current))) {
($energydiff > $maxenergy)) {
$isInvalid = 1; $isInvalid = 1;
} }