Ein Simulator zur Analyse und Optimierung der Batteriesteuerung bei Photovoltaik-Anlagen mit dynamischen Strompreisen. Das Projekt vergleicht verschiedene Steuerungsstrategien und ermöglicht die Berechnung der Kosteneffekte unterschiedlicher Betriebsmodi.
Dieses Projekt simuliert die Steuerung einer Batterie in einem Haushalt mit PV-Anlage unter verschiedenen Preismodellen. Es vergleicht:
- Statische Batteriesteuerung mit festem Strompreis
- Ungesteuerte Batterienutzung mit dynamischen Strompreisen
- Intelligente/optimierte Batteriesteuerung basierend auf Strompreisprognosen
- BatControl-Steuerung mit verschiedenen Modi
- Web-Interface: Benutzerfreundliche Oberfläche zur Eingabe von Parametern und Visualisierung der Ergebnisse
- Mehrere Simulationsmodelle: Vier verschiedene Modelle zum Vergleich unterschiedlicher Steuerungsstrategien
- Flexible Parameter: Anpassbare Batterie-, PV- und Verbrauchsparameter
- Detaillierte Auswertung: Stundengenaue Darstellung von Kosten, Netzbezug und Batteriestand
- Docker-Support: Einfache Bereitstellung über Docker
- Python 3.11 oder höher
- Docker (optional, für Container-basierte Ausführung)
- Repository klonen:
git clone https://github.com/MaStr/pv-bat-simulator.git
cd pv-bat-simulator- Abhängigkeiten installieren:
pip install -r requirements.txt- BatControl-Bibliothek installieren (für Modell 4):
wget https://github.com/muexxl/batcontrol/releases/download/0.5.5/batcontrol-0.5.5-py3-none-any.whl
pip install batcontrol-0.5.5-py3-none-any.whl- Docker Image erstellen:
docker build -t pv-bat-simulator .- Container starten:
docker run -p 5000:5000 pv-bat-simulatorLokal:
python app.pyDocker:
docker run -p 5000:5000 pv-bat-simulatorDie Anwendung ist dann unter http://localhost:5000 erreichbar.
Über das Web-Interface können Sie:
- Systemparameter eingeben (Batteriekapazität, Lade-/Entladeleistung)
- Verbrauchsprofile definieren (24 Stundenwerte in Wh)
- PV-Erzeugung angeben (24 Stundenwerte in Wh)
- Strompreise festlegen (statisch oder dynamisch mit 24 Stundenwerten)
- Simulationen starten und Ergebnisse vergleichen
Simuliert die grundlegende Batteriesteuerung mit einem festen Strompreis:
- PV-Strom deckt zuerst den direkten Verbrauch
- PV-Überschuss lädt die Batterie
- Bei Strombedarf wird zuerst die Batterie, dann das Netz genutzt
- Kosten werden nur für Netzbezug berechnet (statischer Preis)
Anwendungsfall: Referenzmodell für Haushalte ohne dynamischen Stromtarif
Nutzt die gleiche Steuerungsstrategie wie Modell 1, aber mit stündlich variablen Strompreisen:
- Identische Batteriesteuerung wie Modell 1
- Kosten basieren auf stündlich wechselnden Strompreisen
- Berechnet einen verbrauchsgewichteten Durchschnittspreis
Anwendungsfall: Analyse der Kosteneffekte bei dynamischen Tarifen ohne aktive Preisoptimierung
Intelligente Batteriesteuerung mittels linearer Optimierung (PuLP):
- Bei niedrigen Preisen: Batterie wird auch aus dem Netz geladen
- Bei hohen Preisen: Batterie wird bevorzugt entladen, um Netzbezug zu minimieren
- Berücksichtigt Preisdifferenzen und optimiert über 24 Stunden
- Nutzt den CBC-Solver für optimale Entscheidungen
Anwendungsfall: Maximale Kostenersparnis durch vorausschauende Steuerung basierend auf Preisprognosen
Verwendet die batcontrol-Bibliothek mit drei Modi:
- MODE 10 (DISCHARGE ALLOWED): Normale Nutzung, Batterieentladung erlaubt
- MODE 0 (AVOID DISCHARGE): Netzbezug statt Batterieentladung bei steigenden Preisen
- MODE -1 (CHARGE FROM GRID): Batterie aus dem Netz laden bei niedrigen Preisen
Anwendungsfall: Realistische Simulation mit bewährter Open-Source-Steuerungslogik
Die Simulationen arbeiten mit folgenden Parametern:
- Stundenwerte: Alle Berechnungen basieren auf 24 Stunden (1 Tag)
- Auflösung: 1 Stunde pro Datenpunkt
- Kapazität: Batteriekapazität in Wh (z.B. 10.000 Wh = 10 kWh)
- Max. Ladeleistung: Maximale Ladeleistung in W (z.B. 5.000 W = 5 kW)
- Max. Entladeleistung: Maximale Entladeleistung in W (z.B. 5.000 W = 5 kW)
- Anfangs-SOC: Anfänglicher Ladestand der Batterie (0.0-1.0, Standard: 0.0 oder 0.2)
- Lastprofil: 24 Verbrauchswerte in Wh pro Stunde
- PV-Erzeugung: 24 PV-Erzeugungswerte in Wh pro Stunde
- Statischer Preis: Fester Strompreis in €/kWh (z.B. 0,30 €/kWh)
- Dynamische Preise: 24 Börsenstrompreise + Aufschläge + MwSt. in €/kWh
- Preis-Abstand: Mindestpreisdifferenz für aktives Nachladen (€/kWh)
- Backend: Flask (Python Web Framework)
- Optimierung: PuLP (Linear Programming)
- Numerische Berechnung: NumPy
- Zeitzonenverarbeitung: pytz
- Steuerungslogik: batcontrol (externe Bibliothek)
- Alle internen Berechnungen erfolgen in Wh bzw. kWh
- PV-Strom wird prioritär für direkten Verbrauch genutzt
- Überschüssiger PV-Strom lädt die Batterie (wenn Kapazität vorhanden)
- Batterie hat konfigurierbare Lade-/Entladegrenzen
- Kosten = Netzbezug × Strompreis
Das Optimierungsproblem minimiert die Gesamtstromkosten über 24 Stunden unter Berücksichtigung von:
- Energiebilanz (Verbrauch = Netzbezug + Batterie + PV - Überschuss)
- Batterie-Kapazitätsgrenzen (min/max SOC)
- Lade-/Entladeleistungsgrenzen
- Preisabhängiger Ladefreigabe (nur bei günstigen Preisen aus Netz laden)
Für jedes Modell werden folgende Ergebnisse ausgegeben:
- Netzbezug: Stündlicher Bezug aus dem Netz (Wh)
- Batteriebezug: Stündliche Entladung der Batterie (Wh)
- Kosten pro Stunde: Stündliche Stromkosten (€)
- Batteriestand: Ladezustand nach jeder Stunde (Wh)
- Gesamtkosten: Summe der Stromkosten über 24 Stunden (€)
- Gewichteter Durchschnittspreis: Effektiver Strompreis (€/kWh, nur bei dynamischen Preisen)
Ein typisches Szenario könnte sein:
- Batterie: 10 kWh Kapazität, 5 kW Lade-/Entladeleistung
- PV-Anlage: 8 kWp, typisches Tages-Erzeugungsprofil
- Verbrauch: Haushalts-Lastprofil mit ca. 15 kWh/Tag
- Preise: Variable Börsenstrompreise (0,15-0,45 €/kWh)
Die Simulation zeigt dann, wie viel Geld durch intelligente Batteriesteuerung im Vergleich zu einfacher Nutzung gespart werden kann.
Dieses Projekt verwendet die batcontrol-Bibliothek, die unter der MIT-Lizenz steht.
Beiträge sind willkommen! Bitte öffnen Sie ein Issue oder erstellen Sie einen Pull Request.