Falscher Reading abfangen

Begonnen von MartinD, 20 September 2025, 14:46:07

Vorheriges Thema - Nächstes Thema

MartinD

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
   

mi.ke

Moin,

ich würde es mit einer if Abfrage versuchen

cheers mi.ke
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

frober

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.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...