Solar Berechnungen

Moin,
Ich habe seit Tagen einen totalen Blackout und bin langsam total verzweifelt.
Gegeben sind die Flow-Daten eines Fronius Wechselrichters mit Speicher:
p_pv = Leitung des PV Generators (kann nur positiv sein)
p_load = Haus-Verbrauch (ist immer negativ)
p_akku = Leistung vom/zum Akku ( negativ=laden, positiv=entladen)
p_grid = Leistung vom/zum Netz (negativ=einspeisen, positiv=Bezug)

Summe p_pv+p_akku+p_load+p_grid = 0
Strom in den Akku oder in den direkt Verbrauch gilt als Eigenverbrauch;
Strom aus dem Akku und/oder von der PV gilt als Eigenerzeugt

Ich möchte gerne die Werte aus der Fronius App emulieren/berechnen:

  • Produktion: Total (= p_pv)
  • Produktion: in den Eigenverbrauch (Anteil der Produktion der in direkt p_load oder in p_akku geht)
  • Produktion: ins Netz (Anteil der Produktion der ins Netz geht)
  • Verbrauch: Total (= abs(p_load))
  • Verbrauch: aus Eigenerzeugung (Anteil des Verbrauchs der von p_pv und/oder p_akku kommt)
  • Verbrauch: aus Netzbezug (Anteil von p_load der aus den Netz bezogen wird, aber nicht in den Akku geht)

Ich kann das gerade noch nicht mal mathematisch erfassen. Alles was ich bisher „geschaffen“ habe, hat bei bestimmten (Vorzeichen-)Konstellationen immer versagt. Ich fürchte eine elegante Formel dafür gibt es nicht, in man muss viele Bedingungen verschachteln, um alle Fälle abzufangen.

Hat jemand einen Tip wie ich das in PHP lösen kann?

Der Fehler vermutlich hier:

Bedenke das dies nur gilt wenn alle Werte zum exakt GLEICHEN Zeitpunkt erfasst werden.
Wenn die aus unterschiedlichen Quellen kommen hast du immer einen zeitlichen Versatz, und dadurch kommt nicht „0“ raus.

gruß
bb

Stimmt, das ist ein guter Punkt. Wird so auch in der API Beschreibung erwähnt.

Ich habe es aber so gar nicht hinbekommen. Noch nicht mal annährend.
Immer war in irgend einer Situation ein Vorziechen im Ergebnis oder in einem der Summanden falsch. Das mit der summe=0 soll nur eine Randbedingung sein, um den generellen Zusammenhang zu zeigen.

Wenn mir das jemand in Formeln gießen könnte wäre mir echt geholfen.

Ich teile hier mal was ich habe. Ist aber noch nicht komplett getestet.
Wenn jemand eine Unstimmigkeit findet, bitter hier posten…

// Produktion
if ($p_pv + $p_load <= 0) {     // kein Uberschuss
    $ProdEigenverbrauch = $p_pv;
    $ProdEingespeist = 0;
    } else                      // Ueberschuss
        {
        if ($p_akku < 0 ) {     // Akku wird geladen
        $ProdEigenverbrauch = abs($p_pv + $p_akku);
        $ProdEingespeist = abs($p_grid);
        } else {                  // Akku wird nicht geladen
        $ProdEigenverbrauch = abs($p_pv - $p_akku);
        $ProdEingespeist = abs($p_grid);
        }
}

// Verbauch
if ($p_load >= 0) {                                 // Kein Verbrauch
    $VerbrauchErzeugt = 0;
    $VerbrauchNetzbezug = 0;
    } else {
        if ($p_pv + $p_akku + $p_load > 0){          // Deckung aus Eigenerzeugung
        $VerbrauchErzeugt = abs($p_load);
        $VerbrauchNetzbezug = 0;
        } else {
        if ($p_akku < 0) {                           // Akku Laedt (erzwungenes Netzladen) zaehlt nicht als Verbrauch
        $VerbrauchErzeugt = $p_pv;
        $VerbrauchNetzbezug = $p_grid + $p_akku + $p_pv;
        } else                                       // Akku Laedt nicht
        $VerbrauchErzeugt = $p_pv + $p_akku;
        $VerbrauchNetzbezug = $p_grid;
        }
}