7.3 KiB
7.3 KiB
Batterie-Lade-Optimierung für OpenEMS + Home Assistant
🎯 Ziel
Intelligente Steuerung der Batterieladung basierend auf:
- ⚡ Dynamischen Strompreisen (haStrom FLEX PRO)
- ☀️ PV-Prognosen (Forecast.Solar)
- 🔋 Batterie-Status und Verbrauch
📊 Dein System
- Batterie: GoodWe 10 kWh (nutzbar 20-100%)
- Wechselrichter: GoodWe 10 kW
- PV-Anlage: 9,2 kWp (Ost/West Flachdach)
- Steuerung: OpenEMS Edge auf BeagleBone
- Automation: Home Assistant + PyScript
🎮 Funktionen
Automatische Optimierung
- ✅ Tägliche Planerstellung um 14:05 Uhr (nach Strompreis-Update)
- ✅ Stündliche automatische Ausführung
- ✅ Berücksichtigung von PV-Prognosen
- ✅ Konservative Strategie (nur bei sehr günstigen Preisen)
- ✅ Schutz der Batterie (SOC-Grenzen, Reserve)
Intelligente Entscheidungen
Das System lädt nur wenn:
- Strompreis unterhalb Schwellwert (< 28 ct/kWh)
- Wenig PV-Ertrag erwartet
- Batterie-Kapazität verfügbar
- Kein manueller Override aktiv
Sicherheit & Kontrolle
- 🛡️ Keep-Alive alle 30s (verhindert Timeout)
- 🚨 Notfall-Stop Funktion
- 🔧 Manueller Override (4h Auto-Reset)
- 📊 Umfangreiches Dashboard
- 📝 Detailliertes Logging
📦 Installierte Komponenten
Konfigurationsdateien
battery_optimizer_config.yaml- Input Helper, Templates, Sensorenbattery_optimizer_rest_commands.yaml- OpenEMS REST API Befehlebattery_optimizer_automations.yaml- 6 Automatisierungen
PyScript Module
battery_charging_optimizer.py- Haupt-Optimierungsalgorithmusbattery_power_control.py- Modbus Steuerung & Hilfsfunktionen
Dashboard
battery_optimizer_dashboard.yaml- Lovelace UI Konfiguration
Dokumentation
INSTALLATION_GUIDE.md- Schritt-für-Schritt InstallationREADME.md- Diese Datei
🚀 Quick Start
1. Installation
# PyScript via HACS installieren
# Konfigurationsdateien zu Home Assistant hinzufügen
# PyScript Dateien nach /config/pyscript/ kopieren
# Home Assistant neu starten
Siehe INSTALLATION_GUIDE.md für Details.
2. Konfiguration
Setze folgende Werte:
- Min SOC: 20%
- Max SOC: 100%
- Preis-Schwellwert: 28 ct/kWh
- Max Ladeleistung: 10000 W
- Reserve: 2 kWh
- Strategie: Konservativ
3. Ersten Plan erstellen
# Entwicklerwerkzeuge → Dienste
service: pyscript.calculate_charging_schedule
4. Optimierung aktivieren
input_boolean.battery_optimizer_enabled: ON
📈 Beispiel: Heute (7. Nov 2025)
Strompreise
- Günstigste Stunde: 3:00 Uhr - 26.72 ct/kWh
- Durchschnitt: 29.51 ct/kWh
- Teuerste Stunde: 17:00 Uhr - 37.39 ct/kWh
- Aktuell (19:00 Uhr): 31.79 ct/kWh
Optimierungs-Strategie
Mit konservativer Strategie würde System:
- ✅ Laden: 1-5 Uhr (Preise: 26-27 ct/kWh)
- ❌ Nicht laden: 6-23 Uhr (Preise über Schwellwert)
- ☀️ Warten auf PV-Ertrag ab Sonnenaufgang
Geschätzte Ersparnis: 8-12% vs. ständiges Laden bei Durchschnittspreis
🎛️ Services
Haupt-Services
# Neuen Plan berechnen
pyscript.calculate_charging_schedule
# Aktuellen Plan ausführen
pyscript.execute_current_schedule
Manuelle Steuerung
# Laden starten (10kW)
pyscript.start_charging_cycle:
power_w: -10000
# Laden stoppen
pyscript.stop_charging_cycle
# Notfall-Stop
pyscript.emergency_stop
Modbus Direkt
# Beliebige Leistung setzen
pyscript.set_battery_power_modbus:
power_w: -5000 # 5kW laden
📊 Monitoring
Wichtige Sensoren
Status
input_boolean.battery_optimizer_enabled- System AN/AUSsensor.battery_state_of_charge- Aktueller SOCsensor.nächste_ladestunde- Wann wird geladen
Energie
sensor.battery_power- Aktuelle Batterieleistungsensor.pv_power- Aktuelle PV-Leistungsensor.house_consumption- Hausverbrauch
Prognosen
sensor.energy_production_tomorrow- PV Ost morgensensor.energy_production_tomorrow_2- PV West morgensensor.durchschnittspreis_heute- Avg. Strompreis
Dashboard
![Dashboard Preview]
- Status-Karten
- Preis-Grafik
- Konfiguration
- Energieflüsse
- Manuelle Steuerung
- Ladeplan-Tabelle
⚙️ Strategien
Konservativ (Standard)
- Ziel: Minimales Risiko, günstigste Preise
- Schwellwert: Min + 30% der Tagesspanne
- Ideal für: Einstieg, stabilen Betrieb
Moderat
- Ziel: Ausgewogen
- Schwellwert: Durchschnittspreis
- Ideal für: Nach Testphase
Aggressiv
- Ziel: Maximale Arbitrage
- Schwellwert: 70% des Durchschnitts
- Ideal für: Erfahrene Nutzer
- Hinweis: Entlade-Funktion noch nicht implementiert
🔧 Technische Details
Optimierungs-Algorithmus
1. Strompreise für 24h laden
2. PV-Prognose berechnen (Ost + West)
3. Batterie-Status prüfen
4. Für jede Stunde:
- Ist Preis < Schwellwert?
- Ist PV-Ertrag < 1 kWh?
- Ist Kapazität verfügbar?
→ Wenn JA: Ladung planen
5. Plan speichern & ausführen
OpenEMS Integration
Modbus TCP: 192.168.89.144:502
- Register 706:
ess0/SetActivePowerEquals(FLOAT32) - Negativ: Laden (z.B. -10000W = 10kW laden)
- Positiv: Entladen (z.B. 5000W = 5kW entladen)
JSON-RPC: 192.168.89.144:8084
- ESS Mode: REMOTE (manuell) / INTERNAL (auto)
- Controller: ctrlBalancing0 (enable/disable)
Ablauf Ladevorgang
graph TD
A[Stündlicher Trigger] --> B{Plan vorhanden?}
B -->|Nein| C[Warten]
B -->|Ja| D{Ladung geplant?}
D -->|Nein| E[Auto-Modus]
D -->|Ja| F[ESS → REMOTE]
F --> G[Balancing → OFF]
G --> H[Modbus 706 schreiben]
H --> I[Keep-Alive 30s]
I --> J{Nächste Stunde}
J --> K[Zurück zu Auto]
🔮 Roadmap
Phase 1: Basis (✅ Fertig)
- ✅ Preis-basierte Optimierung
- ✅ Einfache PV-Prognose
- ✅ Automatische Ausführung
- ✅ Dashboard
Phase 2: Erweitert (geplant)
- InfluxDB Integration
- Historische Verbrauchsanalyse
- Verbesserte PV-Verteilung (stündlich)
- Wetterabhängige Anpassungen
Phase 3: Intelligent (Zukunft)
- Machine Learning Verbrauchsprognose
- Dynamische Strategien
- Entlade-Arbitrage
- Peak-Shaving
- Netzdienliche Optimierung
🐛 Bekannte Einschränkungen
- PV-Prognose nutzt vereinfachte Tagesverteilung
- Keine historische Verbrauchsanalyse (kommt in Phase 2)
- Entlade-Funktion noch nicht implementiert
- Keep-Alive nur in PyScript (bei HA-Neustart Unterbrechung)
📚 Weiterführende Links
🤝 Beitragen
Verbesserungsvorschläge willkommen!
- PV-Prognose verfeinern
- Verbrauchsprognose hinzufügen
- ML-Modelle trainieren
- Dashboard verbessern
⚠️ Disclaimer
- System greift direkt in Batteriesteuerung ein
- Verwendung auf eigene Gefahr
- Keine Haftung für Schäden
- Teste ausgiebig mit niedriger Leistung
- Überwache die ersten Tage intensiv
📝 Changelog
Version 1.0 (2025-11-07)
- Initiale Version
- Konservative Strategie
- Basis-Optimierung implementiert
- Dashboard & Monitoring
- Vollständige Dokumentation
Autor: Felix's Energie-Optimierungs-Projekt Status: Production Ready ✅ Python: 3.x (PyScript) Home Assistant: 2024.x+