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:
|
||||
float(num)
|
||||
return True
|
||||
except ValueError:
|
||||
except:
|
||||
return False
|
||||
|
||||
|
||||
@ -231,10 +231,6 @@ def simulation():
|
||||
if p not in parameter:
|
||||
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
|
||||
ergebnis = durchfuehre_simulation(parameter)
|
||||
|
||||
|
@ -46,8 +46,12 @@ class EnergieManagementSystem:
|
||||
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))
|
||||
#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
|
||||
for stunde in range(start_stunde, ende):
|
||||
|
||||
|
@ -39,41 +39,6 @@ class Waermepumpe:
|
||||
leistungsdaten.append(elektrische_leistung)
|
||||
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)
|
||||
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
|
||||
start_datum = datetime.datetime(2024, 3, 31) # Datum der DST-Umstellung
|
||||
if ist_dst_wechsel(start_datum):
|
||||
prediction_hours = 23 # Anpassung auf 23 Stunden für DST-Wechseltage
|
||||
else:
|
||||
prediction_hours = 24 # Standardwert für Tage ohne DST-Wechsel
|
||||
# # Beispielverwendung
|
||||
# start_datum = datetime.datetime(2024, 3, 31) # Datum der DST-Umstellung
|
||||
# if ist_dst_wechsel(start_datum):
|
||||
# prediction_hours = 23 # Anpassung auf 23 Stunden für DST-Wechseltage
|
||||
# else:
|
||||
# prediction_hours = 24 # Standardwert für Tage ohne DST-Wechsel
|
||||
|
@ -54,7 +54,24 @@ class HourlyElectricityPriceForecast:
|
||||
|
||||
def get_price_for_date(self, date_str):
|
||||
"""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']]
|
||||
|
||||
# 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
|
||||
|
||||
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")
|
||||
daily_prices = 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)
|
||||
start_date += timedelta(days=1)
|
||||
|
||||
|
@ -90,9 +90,11 @@ def visualisiere_ergebnisse(gesamtlast, pv_forecast, strompreise, ergebnisse, d
|
||||
if ist_dst_wechsel(datetime.now()):
|
||||
stunden = np.arange(start_hour, prediction_hours-1)
|
||||
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
|
||||
plt.subplot(3, 2, 1)
|
||||
plt.plot(stunden, ergebnisse['Eigenverbrauch_Wh_pro_Stunde'], label='Eigenverbrauch (Wh)', marker='o')
|
||||
|
Loading…
x
Reference in New Issue
Block a user