mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2025-04-19 08:55:15 +00:00
config.py einstellbar Jeder DisCharge = 0 (Akkus nicht benutzen) wird mit 1Cent Strafe belegt, da die Lastverteilung fehlt. Also wenn es egal ist, soll er den Akku anschalten.
75 lines
3.4 KiB
Python
75 lines
3.4 KiB
Python
class Wechselrichter:
|
|
def __init__(self, max_leistung_wh, akku):
|
|
self.max_leistung_wh = max_leistung_wh # Maximale Leistung, die der Wechselrichter verarbeiten kann
|
|
self.akku = akku # Verbindung zu einem Akku-Objekt
|
|
|
|
def energie_verarbeiten(self, erzeugung, verbrauch, hour):
|
|
verluste = 0
|
|
netzeinspeisung = 0
|
|
netzbezug = 0.0
|
|
eigenverbrauch = 0.0
|
|
#eigenverbrauch = min(erzeugung, verbrauch) # Direkt verbrauchte Energie
|
|
|
|
if erzeugung >= verbrauch:
|
|
if verbrauch > self.max_leistung_wh:
|
|
|
|
verluste += erzeugung - self.max_leistung_wh
|
|
restleistung_nach_verbrauch = self.max_leistung_wh - verbrauch
|
|
netzbezug = -restleistung_nach_verbrauch
|
|
eigenverbrauch = self.max_leistung_wh
|
|
|
|
else:
|
|
# if hour==10:
|
|
# print("PV:",erzeugung)
|
|
# print("Load:",verbrauch)
|
|
# print("Max Leist:",self.max_leistung_wh)
|
|
# PV > WR Leistung dann Verlust
|
|
|
|
# Load
|
|
restleistung_nach_verbrauch = erzeugung-verbrauch #min(self.max_leistung_wh - verbrauch, erzeugung-verbrauch)
|
|
# Akku
|
|
geladene_energie, verluste_laden_akku = self.akku.energie_laden(restleistung_nach_verbrauch, hour)
|
|
rest_überschuss = restleistung_nach_verbrauch - (geladene_energie+verluste_laden_akku)
|
|
# if hour == 1:
|
|
# print("Erzeugung:",erzeugung)
|
|
# print("Last:",verbrauch)
|
|
# print("Akku:",geladene_energie)
|
|
# print("Akku:",self.akku.ladezustand_in_prozent())
|
|
# print("RestÜberschuss"," - ",rest_überschuss)
|
|
# print("RestLesitung WR:",self.max_leistung_wh - verbrauch)
|
|
# Einspeisung, restliche WR Kapazität
|
|
|
|
if rest_überschuss > self.max_leistung_wh - verbrauch:
|
|
netzeinspeisung = self.max_leistung_wh - verbrauch
|
|
verluste += rest_überschuss - netzeinspeisung
|
|
else:
|
|
netzeinspeisung = rest_überschuss
|
|
#if hour ==14:
|
|
# print("Erz:",erzeugung," Last:",verbrauch, " RestPV:",rest_überschuss," ",restleistung_nach_verbrauch, " Gela:",geladene_energie," Ver:",verluste_laden_akku," Einsp:",netzeinspeisung)
|
|
verluste += verluste_laden_akku
|
|
|
|
|
|
|
|
eigenverbrauch = verbrauch
|
|
|
|
else:
|
|
benötigte_energie = verbrauch - erzeugung
|
|
max_akku_leistung = self.akku.max_ladeleistung_w
|
|
|
|
#rest_ac_leistung = max(max_akku_leistung - erzeugung,0)
|
|
rest_ac_leistung = max(self.max_leistung_wh - erzeugung,0)
|
|
|
|
if benötigte_energie < rest_ac_leistung:
|
|
aus_akku, akku_entladeverluste = self.akku.energie_abgeben(benötigte_energie, hour)
|
|
else:
|
|
aus_akku, akku_entladeverluste = self.akku.energie_abgeben(rest_ac_leistung, hour)
|
|
|
|
|
|
verluste += akku_entladeverluste
|
|
|
|
netzbezug = benötigte_energie - aus_akku
|
|
eigenverbrauch = erzeugung + aus_akku
|
|
|
|
|
|
return netzeinspeisung, netzbezug, verluste, eigenverbrauch
|