Berechnungen in userReading mit einer if-Bedienung

Begonnen von MartinD, 26 Januar 2026, 18:42:38

Vorheriges Thema - Nächstes Thema

MartinD

Hallo,

ich versuche eine Berechnung als userReading zu formulieren:
Direkt_Verbrauch_Haus:Diff_I_AC_Energy_WH.* {
((ReadingsNum('SolarEdge','I_DC_Power',0) - ReadingsNum('SolarEdge','BatOut',0)) / ReadingsNum('SolarEdge','I_DC_Power',0)) * ReadingsNum($name,'Diff_I_AC_Energy_WH',0)
}

Das funktioniert gut solange I_DC_Power > 0 UND  I_DC_Power > BatOut

Nun wollte ich eine Bedienung einbauen (zunächst für I_DC_Power > 0):
Direkt_Verbrauch_Haus:Diff_I_AC_Energy_WH.* {
if (ReadingsNum('SolarEdge','I_DC_Power',0) > 0 ;
((ReadingsNum('SolarEdge','I_DC_Power',0) - ReadingsNum('SolarEdge','BatOut',0)) / ReadingsNum('SolarEdge','I_DC_Power',0)) * ReadingsNum($name,'Diff_I_AC_Energy_WH',0)
}

und bin daran grandios gescheitert.
Ich sehe nicht mal den Fehler :-(
Kann mir jemand helfend unter die Arme greifen?

Mit besten Grüßen

Martin

[EDIT]
Ich habe auch versucht mit:
Direkt_Verbrauch_Haus:Diff_I_AC_Energy_WH.* {
my $i_dc = ReadingsNum('SolarEdge','I_DC_Power',0);
my $bat_out = ReadingsNum('SolarEdge','BatOut',0);
my $den = $i_dc;
if ($den > 0) { ReadingsNum($name,'Diff_I_AC_Energy_WH',0) * ( ($i_dc - $bat_out) / $den ); } }

War leider auch nichts.