Ich verstehe nicht, warum ((0 > 0.001) || (0 < 0.001)) hier "wahr" ist:
sub historyCheck ($$) {
my ($device, $reading) = @_;
my $newVal = ReadingsNum($device, $reading, 0);
my $lastVal = ReadingsNum('Datenhalde', 'lastValue_'.$device.'_'.$reading, 0);
my $newDiff = $newVal - $lastVal;
my $lastDiff = ReadingsNum('Datenhalde', 'lastDiff_'.$device.'_'.$reading, 0);
my $diffDifference = $lastDiff - $newDiff;
if (($diffDifference > 0.001) || ($diffDifference < 0.001)) {
fhem('setreading Datenhalde lastDiff_'.$device.'_'.$reading.' '.$newDiff);
Log 1, ("historyCheck($device): Geänderte Abweichung: jetzt $newDiff, vorher $lastDiff, Differenz $diffDifference");
}
}
Logausgabe:
2022.10.27 09:15:17 1: historyCheck(myMeter): Geänderte Abweichung: jetzt 0, vorher 0, Differenz 0
((0 > 0.001) || (0 < 0.001))
0 > 0.001 -> nein
oder
0 < 0.001 -> ja
Ergebnis ja/wahr
Danke. Gemeint war natürlich
(($diffDifference > 0.001) || ($diffDifference < -0.001))
Das Leben kann so einfach sein, wenn andere beim Denken helfen.
Zitat von: Motivierte linke Hände am 27 Oktober 2022, 10:16:09
(($diffDifference > 0.001) || ($diffDifference < -0.001))
Wie wäre es denn mit
((abs($diffDifference) > 0.001)
Auch das wäre definitiv besser als mein erster Ansatz! ::)