FHEM Forum

FHEM => Automatisierung => Perl für FHEM-User => Thema gestartet von: Motivierte linke Hände am 27 Oktober 2022, 09:46:09

Titel: [Gelöst] Bitte mal das Brett vor meinem Kopf entfernen
Beitrag von: Motivierte linke Hände am 27 Oktober 2022, 09:46:09
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
Titel: Antw:Bitte mal das Brett vor meinem Kopf entfernen
Beitrag von: rabehd am 27 Oktober 2022, 10:13:24
((0 > 0.001) || (0 < 0.001))

0 > 0.001 -> nein
oder
0 < 0.001 -> ja
Ergebnis ja/wahr
Titel: Antw:Bitte mal das Brett vor meinem Kopf entfernen
Beitrag von: Motivierte linke Hände am 27 Oktober 2022, 10:16:09
Danke. Gemeint war natürlich

(($diffDifference > 0.001) || ($diffDifference < -0.001))

Das Leben kann so einfach sein, wenn andere beim Denken helfen.
Titel: Antw:Bitte mal das Brett vor meinem Kopf entfernen
Beitrag von: Nobbynews am 27 Oktober 2022, 10:23:31
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)
Titel: Antw:[Gelöst] Bitte mal das Brett vor meinem Kopf entfernen
Beitrag von: Motivierte linke Hände am 27 Oktober 2022, 10:38:07
Auch das wäre definitiv besser als mein erster Ansatz!  ::)