mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2025-06-28 00:46:53 +00:00
Zeitprobleme (Sommerzeit, Strompreis + 0:00)
This commit is contained in:
parent
e6c04183cf
commit
118d70479e
@ -36,7 +36,7 @@ def isfloat(num):
|
|||||||
try:
|
try:
|
||||||
float(num)
|
float(num)
|
||||||
return True
|
return True
|
||||||
except ValueError:
|
except:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
@ -231,10 +231,6 @@ def simulation():
|
|||||||
if p not in parameter:
|
if p not in parameter:
|
||||||
return jsonify({"error": f"Fehlender Parameter: {p}"}), 400
|
return jsonify({"error": f"Fehlender Parameter: {p}"}), 400
|
||||||
|
|
||||||
# Optional Typen der Parameter prüfen und sicherstellen, dass sie den Erwartungen entsprechen
|
|
||||||
# if not isinstance(parameter['start_hour'], int):
|
|
||||||
# return jsonify({"error": "start_hour muss vom Typ int sein"}), 400
|
|
||||||
|
|
||||||
# Simulation durchführen
|
# Simulation durchführen
|
||||||
ergebnis = durchfuehre_simulation(parameter)
|
ergebnis = durchfuehre_simulation(parameter)
|
||||||
|
|
||||||
|
@ -46,8 +46,12 @@ class EnergieManagementSystem:
|
|||||||
lastkurve_wh = self.gesamtlast.gesamtlast_berechnen()
|
lastkurve_wh = self.gesamtlast.gesamtlast_berechnen()
|
||||||
|
|
||||||
|
|
||||||
|
assert len(lastkurve_wh) == len(self.pv_prognose_wh) == len(self.strompreis_euro_pro_wh), f"Arraygrößen stimmen nicht überein: Lastkurve = {len(lastkurve_wh)}, PV-Prognose = {len(self.pv_prognose_wh)}, Strompreis = {len(self.strompreis_euro_pro_wh)}"
|
||||||
|
|
||||||
ende = min( len(lastkurve_wh),len(self.pv_prognose_wh), len(self.strompreis_euro_pro_wh))
|
ende = min( len(lastkurve_wh),len(self.pv_prognose_wh), len(self.strompreis_euro_pro_wh))
|
||||||
#print(ende)
|
# print(len(lastkurve_wh), " ",len(self.pv_prognose_wh)," ", len(self.strompreis_euro_pro_wh))
|
||||||
|
|
||||||
|
# sys.exit()
|
||||||
# Berechnet das Ende basierend auf der Länge der Lastkurve
|
# Berechnet das Ende basierend auf der Länge der Lastkurve
|
||||||
for stunde in range(start_stunde, ende):
|
for stunde in range(start_stunde, ende):
|
||||||
|
|
||||||
|
@ -39,41 +39,6 @@ class Waermepumpe:
|
|||||||
leistungsdaten.append(elektrische_leistung)
|
leistungsdaten.append(elektrische_leistung)
|
||||||
return leistungsdaten
|
return leistungsdaten
|
||||||
|
|
||||||
# # Lade die .npz-Datei beim Start der Anwendung
|
|
||||||
# class Waermepumpe:
|
|
||||||
# def __init__(self, max_heizleistung, prediction_hours):
|
|
||||||
# self.max_heizleistung = max_heizleistung
|
|
||||||
# self.prediction_hours = prediction_hours
|
|
||||||
|
|
||||||
# def cop_berechnen(self, aussentemperatur):
|
|
||||||
# cop = 3.0 + (aussentemperatur-0) * 0.1
|
|
||||||
# return max(cop, 1)
|
|
||||||
|
|
||||||
|
|
||||||
# def heizleistung_berechnen(self, aussentemperatur):
|
|
||||||
# #235.092 kWh + Temperatur * -11.645
|
|
||||||
# heizleistung = (((235.0) + aussentemperatur*(-11.645))*1000)/24.0
|
|
||||||
# heizleistung = min(self.max_heizleistung,heizleistung)
|
|
||||||
# return heizleistung
|
|
||||||
|
|
||||||
# def elektrische_leistung_berechnen(self, aussentemperatur):
|
|
||||||
# heizleistung = self.heizleistung_berechnen(aussentemperatur)
|
|
||||||
# cop = self.cop_berechnen(aussentemperatur)
|
|
||||||
# return heizleistung / cop
|
|
||||||
|
|
||||||
# def simulate_24h(self, temperaturen):
|
|
||||||
# leistungsdaten = []
|
|
||||||
|
|
||||||
# # Überprüfen, ob das Temperaturarray die richtige Größe hat
|
|
||||||
# if len(temperaturen) != self.prediction_hours:
|
|
||||||
# raise ValueError("Das Temperaturarray muss genau "+str(self.prediction_hours)+" Einträge enthalten, einen für jede Stunde des Tages.")
|
|
||||||
|
|
||||||
# for temp in temperaturen:
|
|
||||||
# elektrische_leistung = self.elektrische_leistung_berechnen(temp)
|
|
||||||
# leistungsdaten.append(elektrische_leistung)
|
|
||||||
# return leistungsdaten
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,12 +15,11 @@ def ist_dst_wechsel(tag, timezone="Europe/Berlin"):
|
|||||||
# Prüfe, ob die UTC-Offsets unterschiedlich sind (DST-Wechsel)
|
# Prüfe, ob die UTC-Offsets unterschiedlich sind (DST-Wechsel)
|
||||||
dst_wechsel = aktueller_tag_localized.dst() != naechster_tag_localized.dst()
|
dst_wechsel = aktueller_tag_localized.dst() != naechster_tag_localized.dst()
|
||||||
|
|
||||||
return dst_wechsel, aktueller_tag_localized.dst(), naechster_tag_localized.dst()
|
return dst_wechsel
|
||||||
|
|
||||||
|
# # Beispielverwendung
|
||||||
# Beispielverwendung
|
# start_datum = datetime.datetime(2024, 3, 31) # Datum der DST-Umstellung
|
||||||
start_datum = datetime.datetime(2024, 3, 31) # Datum der DST-Umstellung
|
# if ist_dst_wechsel(start_datum):
|
||||||
if ist_dst_wechsel(start_datum):
|
# prediction_hours = 23 # Anpassung auf 23 Stunden für DST-Wechseltage
|
||||||
prediction_hours = 23 # Anpassung auf 23 Stunden für DST-Wechseltage
|
# else:
|
||||||
else:
|
# prediction_hours = 24 # Standardwert für Tage ohne DST-Wechsel
|
||||||
prediction_hours = 24 # Standardwert für Tage ohne DST-Wechsel
|
|
||||||
|
@ -54,7 +54,24 @@ class HourlyElectricityPriceForecast:
|
|||||||
|
|
||||||
def get_price_for_date(self, date_str):
|
def get_price_for_date(self, date_str):
|
||||||
"""Gibt alle Preise für das spezifizierte Datum zurück."""
|
"""Gibt alle Preise für das spezifizierte Datum zurück."""
|
||||||
|
#date_prices = [entry["marketpriceEurocentPerKWh"]+self.abgaben for entry in self.prices if date_str in entry['end']]
|
||||||
|
"""Gibt alle Preise für das spezifizierte Datum zurück, inklusive des Preises von 0:00 des vorherigen Tages."""
|
||||||
|
# Datumskonversion von String zu datetime-Objekt
|
||||||
|
date_obj = datetime.strptime(date_str, '%Y-%m-%d')
|
||||||
|
|
||||||
|
# Berechnung des Vortages
|
||||||
|
previous_day = date_obj - timedelta(days=1)
|
||||||
|
previous_day_str = previous_day.strftime('%Y-%m-%d')
|
||||||
|
|
||||||
|
# Extrahieren des Preises von 0:00 des vorherigen Tages
|
||||||
|
last_price_of_previous_day = [entry["marketpriceEurocentPerKWh"]+self.abgaben for entry in self.prices if previous_day_str in entry['end']][-1]
|
||||||
|
|
||||||
|
# Extrahieren aller Preise für das spezifizierte Datum
|
||||||
date_prices = [entry["marketpriceEurocentPerKWh"]+self.abgaben for entry in self.prices if date_str in entry['end']]
|
date_prices = [entry["marketpriceEurocentPerKWh"]+self.abgaben for entry in self.prices if date_str in entry['end']]
|
||||||
|
|
||||||
|
# Hinzufügen des letzten Preises des vorherigen Tages am Anfang der Liste
|
||||||
|
date_prices.insert(0, last_price_of_previous_day)
|
||||||
|
|
||||||
return np.array(date_prices)/(1000.0*100.0) + self.abgaben
|
return np.array(date_prices)/(1000.0*100.0) + self.abgaben
|
||||||
|
|
||||||
def get_price_for_daterange(self, start_date_str, end_date_str):
|
def get_price_for_daterange(self, start_date_str, end_date_str):
|
||||||
@ -71,7 +88,7 @@ class HourlyElectricityPriceForecast:
|
|||||||
date_str = start_date.strftime("%Y-%m-%d")
|
date_str = start_date.strftime("%Y-%m-%d")
|
||||||
daily_prices = self.get_price_for_date(date_str)
|
daily_prices = self.get_price_for_date(date_str)
|
||||||
#print(len(self.get_price_for_date(date_str)))
|
#print(len(self.get_price_for_date(date_str)))
|
||||||
if daily_prices.size > 0:
|
if daily_prices.size ==24:
|
||||||
price_list.extend(daily_prices)
|
price_list.extend(daily_prices)
|
||||||
start_date += timedelta(days=1)
|
start_date += timedelta(days=1)
|
||||||
|
|
||||||
|
@ -90,9 +90,11 @@ def visualisiere_ergebnisse(gesamtlast, pv_forecast, strompreise, ergebnisse, d
|
|||||||
if ist_dst_wechsel(datetime.now()):
|
if ist_dst_wechsel(datetime.now()):
|
||||||
stunden = np.arange(start_hour, prediction_hours-1)
|
stunden = np.arange(start_hour, prediction_hours-1)
|
||||||
else:
|
else:
|
||||||
stunden = np.arange(start_hour, prediction_hours-1)
|
stunden = np.arange(start_hour, prediction_hours)
|
||||||
|
|
||||||
|
|
||||||
|
print(ist_dst_wechsel(datetime.now())," ",datetime.now())
|
||||||
|
print(start_hour," ",prediction_hours," ",stunden)
|
||||||
|
print(ergebnisse['Eigenverbrauch_Wh_pro_Stunde'])
|
||||||
# Eigenverbrauch, Netzeinspeisung und Netzbezug
|
# Eigenverbrauch, Netzeinspeisung und Netzbezug
|
||||||
plt.subplot(3, 2, 1)
|
plt.subplot(3, 2, 1)
|
||||||
plt.plot(stunden, ergebnisse['Eigenverbrauch_Wh_pro_Stunde'], label='Eigenverbrauch (Wh)', marker='o')
|
plt.plot(stunden, ergebnisse['Eigenverbrauch_Wh_pro_Stunde'], label='Eigenverbrauch (Wh)', marker='o')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user