FHEM Forum

FHEM => Automatisierung => Perl für FHEM-User => Thema gestartet von: MartinD am 20 September 2025, 14:46:07

Titel: Falscher Reading abfangen
Beitrag von: MartinD am 20 September 2025, 14:46:07
Hallo,

ich versuche hier ein falsches Reading abzufangen:

PV_Leistung-temp_2:I_DC_Power.* {
sprintf("%.2f",(ReadingsNum ($name, 'I_DC_Power', 0) +ReadingsNum ($name, 'B_Instantaneous_Power', 0) + ReadingsNum ($name, 'M_AC_POWER_FeendIn', 0)))
   }
soll eigentlich Werte < 7.5 erzeugen.
Hin und wieder kommt aber ein Ausreißer der um Faktor 10 zu hoch ist.
Mein Versuch da abzufangen mit:
PV_Leistung_2:PV_Leistung-temp_2.* {
    my $pwr = ReadingsNum ($name, 'PV_Leistung-temp_2', 0);
                   $pwr    = $pwr > 8 ? $pwr : $pwr/10;
                   $pwr
                   }

resultiert mit Log-Meldungen:
PERL WARNING: Useless use of division (/) in void context at (eval 97764) line 3

Kann mich jemand auf die richtige Spur lenken?

Mit besten Grüßen

Martin
   
Titel: Aw: Falscher Reading abfangen
Beitrag von: mi.ke am 20 September 2025, 15:30:06
Moin,

ich würde es mit einer if Abfrage versuchen

cheers mi.ke
Titel: Aw: Falscher Reading abfangen
Beitrag von: frober am 20 September 2025, 18:09:04
Du kannst es in Klammern setzen
$pwr    = $pwr > 8 ? $pwr : ($pwr/10); aber es gehört doch umgedreht
$pwr = $pwr > 8 ? $pwr/10 : $pwr;

Größer 8 möchtest du doch durch 10 teilen!?

@mi.ke das ist eine if-Abfrage, nur in verkürzter Schreibweise.