EOS/modules/class_ems.py
2024-02-18 14:32:27 +01:00

33 lines
1.2 KiB
Python

class EnergieManagementSystem:
def __init__(self, akku, lastkurve_wh, pv_prognose_wh):
self.akku = akku
self.lastkurve_wh = lastkurve_wh
self.pv_prognose_wh = pv_prognose_wh
def simuliere(self):
eigenverbrauch_wh = 0
netzeinspeisung_wh = 0
netzbezug_wh = 0
for stunde in range(len(self.lastkurve_wh)):
verbrauch = self.lastkurve_wh[stunde]
erzeugung = self.pv_prognose_wh[stunde]
if erzeugung > verbrauch:
überschuss = erzeugung - verbrauch
eigenverbrauch_wh += verbrauch
geladene_energie = min(überschuss, self.akku.kapazitaet_wh - self.akku.soc_wh)
self.akku.energie_laden(geladene_energie)
netzeinspeisung_wh += überschuss - geladene_energie
else:
eigenverbrauch_wh += erzeugung
benötigte_energie = verbrauch - erzeugung
aus_akku = self.akku.energie_abgeben(benötigte_energie)
netzbezug_wh += benötigte_energie - aus_akku
return {
'Eigenverbrauch_Wh': eigenverbrauch_wh,
'Netzeinspeisung_Wh': netzeinspeisung_wh,
'Netzbezug_Wh': netzbezug_wh
}