Add opt-in SDL measurement sources and independent visualization toggles. Exclude balancing power from household telemetry and new household energy. Preserve custom views and cover measurement, migration and Symcon 8.0 behavior.
This commit is contained in:
+14
-5
@@ -8,11 +8,11 @@ final class EnergieMessung
|
||||
{
|
||||
private const WATTSEKUNDEN_PRO_KWH = 3600000.0;
|
||||
|
||||
public static function hausleistung(float $pv, float $netz, float $batterie): float
|
||||
public static function hausleistung(float $pv, float $netz, float $batterie, float $sdl = 0.0): float
|
||||
{
|
||||
return max(
|
||||
0.0,
|
||||
self::endlich($pv) + self::endlich($netz) - self::endlich($batterie)
|
||||
self::endlich($pv) + self::endlich($netz) - self::endlich($batterie) - self::endlich($sdl)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -21,7 +21,9 @@ final class EnergieMessung
|
||||
float $netzbezug,
|
||||
float $netzeinspeisung,
|
||||
float $batterieLaden,
|
||||
float $batterieEntladen
|
||||
float $batterieEntladen,
|
||||
float $sdlLaden = 0.0,
|
||||
float $sdlEntladen = 0.0
|
||||
): float {
|
||||
return max(
|
||||
0.0,
|
||||
@@ -30,18 +32,22 @@ final class EnergieMessung
|
||||
+ self::endlich($batterieEntladen)
|
||||
- self::endlich($netzeinspeisung)
|
||||
- self::endlich($batterieLaden)
|
||||
- self::endlich($sdlLaden)
|
||||
+ self::endlich($sdlEntladen)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array{PV: float, Haus: float, Netz: float, Batterie: float} $leistungen
|
||||
* @param array{PV: float, Haus: float, Netz: float, Batterie: float, SDL?: float} $leistungen
|
||||
* @return array{
|
||||
* PVEnergie: float,
|
||||
* Hausenergie: float,
|
||||
* NetzbezugEnergie: float,
|
||||
* EinspeisungEnergie: float,
|
||||
* BatterieLadenEnergie: float,
|
||||
* BatterieEntladenEnergie: float
|
||||
* BatterieEntladenEnergie: float,
|
||||
* SDLLadenEnergie: float,
|
||||
* SDLEntladenEnergie: float
|
||||
* }
|
||||
*/
|
||||
public static function energieDeltas(array $leistungen, int $sekunden): array
|
||||
@@ -51,6 +57,7 @@ final class EnergieMessung
|
||||
$haus = self::endlich($leistungen['Haus']);
|
||||
$netz = self::endlich($leistungen['Netz']);
|
||||
$batterie = self::endlich($leistungen['Batterie']);
|
||||
$sdl = self::endlich($leistungen['SDL'] ?? 0.0);
|
||||
|
||||
return [
|
||||
'PVEnergie' => max(0.0, $pv) * $faktor,
|
||||
@@ -59,6 +66,8 @@ final class EnergieMessung
|
||||
'EinspeisungEnergie' => max(0.0, -$netz) * $faktor,
|
||||
'BatterieLadenEnergie' => max(0.0, $batterie) * $faktor,
|
||||
'BatterieEntladenEnergie' => max(0.0, -$batterie) * $faktor,
|
||||
'SDLLadenEnergie' => max(0.0, $sdl) * $faktor,
|
||||
'SDLEntladenEnergie' => max(0.0, -$sdl) * $faktor,
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user