EOS/README.md

139 lines
6.5 KiB
Markdown
Raw Normal View History

2024-03-03 18:23:29 +01:00
# Energiesystem Simulation und Optimierung
Dieses Projekt bietet eine umfassende Lösung zur Simulation und Optimierung eines Energiesystems, das auf erneuerbaren Energiequellen basiert. Mit Fokus auf Photovoltaik (PV)-Anlagen, Batteriespeichern (Akkus), Lastmanagement (Verbraucheranforderungen), Wärmepumpen, Elektrofahrzeugen und der Berücksichtigung von Strompreisdaten ermöglicht dieses System die Vorhersage und Optimierung des Energieflusses und der Kosten über einen bestimmten Zeitraum.
2024-03-09 09:28:29 +01:00
## Todo
- `Backend:` Mehr Optimierungsparameter
- `Frontend:` User Management
- `Frontend:` Grafische Ausgabe
- `Frontend:` Speichern von User Einstellungen (PV Anlage usw.)
- `Frontend:` Festeingestellte E-Autos / Wärmepumpen in DB
- `Simulation:` Wärmepumpe allgemeineren Ansatz
- `Simulation:` Strompreisvorhersage > 1D (Timeseries Forecast)
2024-04-17 17:56:17 +02:00
- `Simulation:` Lastverteilung 1h Werte -> Minuten (Tabelle)
2024-03-29 08:27:39 +01:00
- `Dynamische Lasten:` z.B. eine Spülmaschine, welche gesteuert werdeb jabb,
- `Simulation:` AC Chargen möglich
- `Optimierung:` E-Auto Akku voll = in der 0/1 Liste keine Möglichkeit mehr auf 1 (aktuell ist der Optimierung das egalm ändert ja nichts) Optimierungsparameter reduzieren
- `Backend:` Visual Cleaner (z.B. E-Auto Akku = 100%, dann sollte die Lademöglichkeit auf 0 stehen. Zumindest bei der Ausgabe sollte das "sauber" sein)
- `Backend:` Cache regelmäßig leeren können (API)
2024-03-09 09:28:29 +01:00
2024-03-03 18:23:29 +01:00
## Installation
Das Projekt erfordert Python 3.8 oder neuer. Alle notwendigen Abhängigkeiten können über `pip` installiert werden. Klonen Sie das Repository und installieren Sie die erforderlichen Pakete mit:
```bash
git clone [URL des Repositories]
cd [Projektverzeichnis]
pip install -r requirements.txt
2024-03-03 18:28:24 +01:00
```
## PV Prognose API
Für die nötige PV Prognose bitte folgende API nutzen:
https://api.akkudoktor.net/
2024-03-03 18:26:30 +01:00
## Nutzung
Um das System zu nutzen, führen Sie `test.py` aus, das eine Simulation für einen vorgegebenen Zeitraum durchführt. Die Konfiguration der Simulation, einschließlich der Vorhersagedaten und der Systemparameter, kann in den jeweiligen Klassen angepasst werden.
```bash
python test.py
2024-03-03 18:28:24 +01:00
```
2024-03-03 18:26:30 +01:00
## Klassen und Funktionalitäten
In diesem Projekt werden verschiedene Klassen verwendet, um die Komponenten eines Energiesystems zu simulieren und zu optimieren. Jede Klasse repräsentiert einen spezifischen Aspekt des Systems, wie nachfolgend beschrieben:
- `PVAkku`: Simuliert einen Batteriespeicher, einschließlich der Kapazität, des Ladezustands und jetzt auch der Lade- und Entladeverluste.
- `PVForecast`: Stellt Vorhersagedaten für die Photovoltaik-Erzeugung bereit, basierend auf Wetterdaten und historischen Erzeugungsdaten.
- `Load`: Modelliert die Lastanforderungen des Haushalts oder Unternehmens, ermöglicht die Vorhersage des zukünftigen Energiebedarfs.
- `HeatPump`: Simuliert eine Wärmepumpe, einschließlich ihres Energieverbrauchs und ihrer Effizienz unter verschiedenen Betriebsbedingungen.
- `Strompreis`: Bietet Informationen zu den Strompreisen, ermöglicht die Optimierung des Energieverbrauchs und der -erzeugung basierend auf Tarifinformationen.
- `EMS`: Das Energiemanagementsystem (EMS) koordiniert die Interaktion zwischen den verschiedenen Komponenten, führt die Optimierung durch und simuliert den Betrieb des gesamten Energiesystems.
Diese Klassen arbeiten zusammen, um eine detaillierte Simulation und Optimierung des Energiesystems zu ermöglichen. Für jede Klasse können spezifische Parameter und Einstellungen angepasst werden, um verschiedene Szenarien und Strategien zu testen.
### Anpassung und Erweiterung
Jede Klasse ist so gestaltet, dass sie leicht angepasst und erweitert werden kann, um zusätzliche Funktionen oder Verbesserungen zu integrieren. Beispielsweise können neue Methoden zur genaueren Modellierung des Verhaltens von PV-Anlagen oder Batteriespeichern hinzugefügt werden. Entwickler sind eingeladen, das System nach ihren Bedürfnissen zu modifizieren und zu erweitern.
2024-03-09 09:27:17 +01:00
2024-07-30 13:31:57 +02:00
# Input für den Flask Server (Stand 30.07.204)
Beschreibt die Struktur und Datentypen des JSON-Objekts, das an den Flask-Server gesendet wird. Hier mit einem Prognosezeitraum von 48 Stunden!
## Felder des JSON-Objekts
### strompreis_euro_pro_wh
- **Beschreibung**: Ein Array von Floats, das den Strompreis in Euro pro Wattstunde für verschiedene Zeitintervalle darstellt.
- **Typ**: Array
- **Element-Typ**: Float
- **Länge**: bis zu 48
### gesamtlast
- **Beschreibung**: Ein Array von Floats, das die Gesamtlast (Verbrauch) in Watt für verschiedene Zeitintervalle darstellt.
- **Typ**: Array
- **Element-Typ**: Float
- **Länge**: bis zu 48
### pv_forecast
- **Beschreibung**: Ein Array von Floats, das die prognostizierte Photovoltaik-Leistung in Watt für verschiedene Zeitintervalle darstellt.
- **Typ**: Array
- **Element-Typ**: Float
- **Länge**: bis zu 48
### temperature_forecast
- **Beschreibung**: Ein Array von Floats, das die Temperaturvorhersage in Grad Celsius für verschiedene Zeitintervalle darstellt.
- **Typ**: Array
- **Element-Typ**: Float
- **Länge**: bis zu 48
### pv_soc
- **Beschreibung**: Ein Integer, der den aktuellen Ladezustand (State of Charge) der Photovoltaikanlage in Prozent darstellt.
- **Typ**: Integer
### pv_akku_cap
- **Beschreibung**: Ein Integer, der die Kapazität des Photovoltaik-Akkus in Wattstunden darstellt.
- **Typ**: Integer
### einspeiseverguetung_euro_pro_wh
- **Beschreibung**: Ein Float, der die Einspeisevergütung in Euro pro Wattstunde darstellt.
- **Typ**: Float
### eauto_min_soc
- **Beschreibung**: Ein Integer, der den minimalen Ladezustand (State of Charge) des Elektroautos in Prozent darstellt.
- **Typ**: Integer
### eauto_cap
- **Beschreibung**: Ein Integer, der die Kapazität des Elektroauto-Akkus in Wattstunden darstellt.
- **Typ**: Integer
### eauto_charge_efficiency
- **Beschreibung**: Ein Float, der die Ladeeffizienz des Elektroautos darstellt.
- **Typ**: Float
### eauto_charge_power
- **Beschreibung**: Ein Integer, der die Ladeleistung des Elektroautos in Watt darstellt.
- **Typ**: Integer
### eauto_soc
- **Beschreibung**: Ein Integer, der den aktuellen Ladezustand (State of Charge) des Elektroautos in Prozent darstellt.
- **Typ**: Integer
### start_solution
- **Beschreibung**: Kann null sein oder eine vorherige Lösung enthalten (wenn vorhanden).
- **Typ**: null oder object
### haushaltsgeraet_wh
- **Beschreibung**: Ein Integer, der den Energieverbrauch eines Haushaltsgeräts in Wattstunden darstellt.
- **Typ**: Integer
### haushaltsgeraet_dauer
- **Beschreibung**: Ein Integer, der die Dauer der Nutzung des Haushaltsgeräts in Stunden darstellt.
- **Typ**: Integer