FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: MartinD am 26 Januar 2026, 18:42:38

Titel: Berechnungen in userReading mit einer if-Bedienung
Beitrag von: MartinD am 26 Januar 2026, 18:42:38
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.
Titel: Aw: Berechnungen in userReading mit einer if-Bedienung
Beitrag von: Torxgewinde am 26 Januar 2026, 21:10:21
Du hast da ein paar Klammern nicht korrekt gesetzt und in einigen Fällen hattest du keinen Rückgabewert. Ob deine Rechenlogik stimmt habe ich mir jetzt nicht überlegt:

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 $diff_ac  = ReadingsNum($name,'Diff_I_AC_Energy_WH',0);
  my $result   = 0;

  if ($i_dc > 0) {
    $result = $diff_ac * (($i_dc - $bat_out) / $i_dc);
  }

  return $result;
}
Titel: Aw: Berechnungen in userReading mit einer if-Bedienung
Beitrag von: MartinD am 27 Januar 2026, 13:01:00
Vielen Dank, so passt es!