Skip to content

Commit ba4f5ec

Browse files
authored
Optimization of the Inverter class to speed up scr calculation (#607)
* fix(ElecPriceEnergyCharts): get history series, update docs Signed-off-by: redmoon2711 <redmoon2711@gmx.de> * feat(inverter): using lookup table for calculate scr Signed-off-by: redmoon2711 <redmoon2711@gmx.de> --------- Signed-off-by: redmoon2711 <redmoon2711@gmx.de>
1 parent eb23123 commit ba4f5ec

1 file changed

Lines changed: 18 additions & 3 deletions

File tree

src/akkudoktoreos/devices/inverter.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,22 @@ def __init__(
2525
self.parameters: Optional[InverterParameters] = None
2626
super().__init__(parameters)
2727

28+
self.scr_lookup: dict = {}
29+
30+
def _calculate_scr(self, consumption: float, generation: float) -> float:
31+
"""Check if the consumption and production is in the lookup table. If not, calculate and store the value."""
32+
if consumption not in self.scr_lookup:
33+
self.scr_lookup[consumption] = {}
34+
35+
if generation not in self.scr_lookup[consumption]:
36+
scr = self.self_consumption_predictor.calculate_self_consumption(
37+
consumption, generation
38+
)
39+
self.scr_lookup[consumption][generation] = scr
40+
return scr
41+
42+
return self.scr_lookup[consumption][generation]
43+
2844
def _setup(self) -> None:
2945
if self.parameters is None:
3046
raise ValueError(f"Parameters not set: {self.parameters}")
@@ -60,9 +76,8 @@ def process_energy(
6076
grid_import = -remaining_power # Negative indicates feeding into the grid
6177
self_consumption = self.max_power_wh
6278
else:
63-
scr = self.self_consumption_predictor.calculate_self_consumption(
64-
consumption, generation
65-
)
79+
# Calculate scr with lookup table
80+
scr = self._calculate_scr(consumption, generation)
6681

6782
# Remaining power after consumption
6883
remaining_power = (generation - consumption) * scr # EVQ

0 commit comments

Comments
 (0)