8.9 KiB
Batterie-Optimierung Installation Guide
Übersicht
Dieses System optimiert die Batterieladung deines GoodWe/OpenEMS Systems basierend auf:
- Dynamischen Strompreisen (haStrom FLEX PRO)
- PV-Prognosen (Forecast.Solar)
- Batterie-Status und Kapazität
System-Anforderungen
- ✅ Home Assistant mit PyScript Integration
- ✅ OpenEMS Edge auf BeagleBone (IP: 192.168.89.144)
- ✅ GoodWe Wechselrichter mit 10kWh Batterie
- ✅ Strompreis-Sensor (sensor.hastrom_flex_pro)
- ✅ Forecast.Solar Integration (Ost + West)
Installation
Schritt 1: PyScript Installation
Falls noch nicht installiert:
- Über HACS → Integrationen → PyScript suchen und installieren
- Home Assistant neu starten
- Konfiguration → Integrationen → PyScript hinzufügen
Schritt 2: Konfigurationsdateien
2.1 Configuration.yaml erweitern
Füge den Inhalt aus battery_optimizer_config.yaml zu deiner configuration.yaml hinzu:
# In configuration.yaml einfügen:
input_text: !include input_text.yaml
input_number: !include input_number.yaml
input_boolean: !include input_boolean.yaml
input_select: !include input_select.yaml
template: !include templates.yaml
rest_command: !include rest_commands.yaml
modbus: !include modbus.yaml
Oder direkt in die configuration.yaml kopieren (siehe battery_optimizer_config.yaml).
2.2 REST Commands hinzufügen
Erstelle rest_commands.yaml oder füge zu deiner bestehenden Datei hinzu:
- Inhalt aus
battery_optimizer_rest_commands.yaml
2.3 Modbus Konfiguration
Falls noch nicht vorhanden, füge die Modbus-Konfiguration hinzu:
modbus:
- name: openems
type: tcp
host: 192.168.89.144
port: 502
sensors:
- name: "OpenEMS Batterie Sollwert"
address: 706
data_type: float32
scan_interval: 30
unit_of_measurement: "W"
device_class: power
Schritt 3: PyScript Dateien kopieren
Kopiere die folgenden Dateien nach /config/pyscript/:
battery_charging_optimizer.py→/config/pyscript/battery_charging_optimizer.pybattery_power_control.py→/config/pyscript/battery_power_control.py
# Auf deinem Home Assistant System:
cd /config/pyscript/
# Dann Dateien hochladen via File Editor oder SSH
Schritt 4: Automatisierungen erstellen
Füge die Automatisierungen aus battery_optimizer_automations.yaml hinzu:
Option A: Über UI
- Einstellungen → Automatisierungen & Szenen
- Jede Automatisierung manuell erstellen
Option B: YAML
- Zu
automations.yamlhinzufügen - Oder als separate Datei inkludieren
Schritt 5: Home Assistant neu starten
Vollständiger Neustart erforderlich für:
- Neue Input Helper
- REST Commands
- Modbus Konfiguration
- PyScript Module
Schritt 6: Initial-Konfiguration
Nach dem Neustart:
-
Input Helper prüfen
- Einstellungen → Geräte & Dienste → Helfer
- Alle "Batterie Optimizer" Helfer sollten vorhanden sein
-
Grundeinstellungen setzen
input_number.battery_optimizer_min_soc: 20%input_number.battery_optimizer_max_soc: 100%input_number.battery_optimizer_price_threshold: 28 ct/kWhinput_number.battery_optimizer_max_charge_power: 10000 Winput_number.battery_optimizer_reserve_capacity: 2 kWhinput_select.battery_optimizer_strategy: "Konservativ (nur sehr günstig)"
-
Optimierung aktivieren
input_boolean.battery_optimizer_enabled: AN
-
Ersten Plan berechnen
- Entwicklerwerkzeuge → Dienste
- Dienst:
pyscript.calculate_charging_schedule - Ausführen
Schritt 7: Dashboard einrichten (optional)
Füge eine neue Ansicht in Lovelace hinzu:
- Inhalt aus
battery_optimizer_dashboard.yaml
Test & Verifizierung
Test 1: Manuelle Plan-Berechnung
# Entwicklerwerkzeuge → Dienste
service: pyscript.calculate_charging_schedule
Prüfe danach:
input_text.battery_charging_schedulesollte JSON enthalten- Logs prüfen: Einstellungen → System → Protokolle
Test 2: Manuelles Laden testen
# Entwicklerwerkzeuge → Dienste
service: pyscript.start_charging_cycle
data:
power_w: -3000 # 3kW laden
Prüfe:
sensor.battery_powersollte ca. -3000W zeigen- ESS Mode sollte REMOTE sein
- Nach 1 Minute stoppen:
service: pyscript.stop_charging_cycle
Test 3: Automatische Ausführung
Warte auf die nächste volle Stunde (xx:05 Uhr). Die Automation sollte automatisch:
- Den Plan prüfen
- Bei Ladestunde: Laden aktivieren
- Sonst: Automatik-Modus
Konfiguration & Tuning
Strategien
Konservativ (empfohlen für Start)
- Lädt nur bei sehr günstigen Preisen
- Minimales Risiko
- Schwellwert: Min-Preis + 30% der Spanne
Moderat
- Lädt bei allen Preisen unter Durchschnitt
- Ausgewogenes Verhältnis
- Schwellwert: Durchschnittspreis
Aggressiv
- Maximale Arbitrage
- Lädt bei Preisen unter 70% des Durchschnitts
- Kann auch Entladung bei hohen Preisen umsetzen (noch nicht implementiert)
Wichtige Parameter
Preis-Schwellwert (input_number.battery_optimizer_price_threshold)
- Maximum das du bereit bist zu zahlen
- Bei "Konservativ": Wird automatisch niedriger gesetzt
- Beispiel: 28 ct/kWh → lädt nur wenn Preis < 28 ct
Reserve-Kapazität (input_number.battery_optimizer_reserve_capacity)
- Wie viel kWh für Eigenverbrauch reserviert bleiben sollen
- Verhindert, dass Batterie komplett für günstiges Laden "verbraucht" wird
- Beispiel: 2 kWh → max. 8 kWh werden aus Netz geladen
Min/Max SOC
- Schützt die Batterie
- Standard: 20-100%
- Kann je nach Batterietyp angepasst werden
Erweiterte Funktionen
Keep-Alive
Das System schreibt alle 30 Sekunden die Leistung neu, um Timeouts im REMOTE-Mode zu verhindern.
Notfall-Stop
Bei Problemen:
service: pyscript.emergency_stop
Deaktiviert sofort:
- Alle manuellen Steuerungen
- Automatisierungen
- Setzt ESS zurück auf INTERNAL/Auto
Manueller Override
Aktiviere input_boolean.battery_optimizer_manual_override um:
- Automatische Ausführung zu pausieren
- System läuft weiter im Hintergrund
- Wird nach 4 Stunden automatisch deaktiviert
Monitoring & Logs
Log-Level einstellen
In configuration.yaml:
logger:
default: info
logs:
custom_components.pyscript: debug
custom_components.pyscript.file.battery_charging_optimizer: debug
custom_components.pyscript.file.battery_power_control: debug
Wichtige Log-Meldungen
- "Batterie-Optimierung gestartet" → Plan wird berechnet
- "Strompreise geladen: X Stunden" → Preisdaten OK
- "Geplante Ladungen: X Stunden" → Anzahl Ladestunden
- "Aktiviere Laden: XW" → Ladezyklus startet
- "Keep-Alive: Schreibe XW" → Timeout-Verhinderung
Troubleshooting
Problem: Kein Ladeplan erstellt
Ursache: Strompreise nicht verfügbar Lösung:
- Prüfe
sensor.hastrom_flex_pro - Warte bis 14:05 Uhr
- Manuell triggern:
pyscript.calculate_charging_schedule
Problem: Batterie lädt nicht trotz Plan
Ursache: OpenEMS antwortet nicht Lösung:
- Prüfe REST Commands einzeln
- Teste:
rest_command.set_ess_remote_mode - Prüfe OpenEMS Logs auf BeagleBone
Problem: Laden stoppt nach kurzer Zeit
Ursache: Keep-Alive funktioniert nicht Lösung:
- Prüfe PyScript Logs
- Prüfe
pyscript.battery_charging_activeState - Neu starten:
pyscript.start_charging_cycle
Problem: Unrealistische Ladepläne
Ursache: PV-Prognose oder Verbrauch falsch Lösung:
- Prüfe Forecast.Solar Sensoren
- Passe
input_number.battery_optimizer_reserve_capacityan - Ändere Strategie auf "Konservativ"
Nächste Schritte / Erweiterungen
Phase 2: InfluxDB Integration
- Historische Verbrauchsdaten nutzen
- Bessere Vorhersagen
- Lernender Algorithmus
Phase 3: Erweiterte PV-Prognose
- Stündliche Verteilung statt Tagessumme
- Wetterabhängige Anpassungen
- Cloud-Cover Berücksichtigung
Phase 4: Arbitrage-Funktion
- Entladung bei hohen Preisen
- Peak-Shaving
- Netzdienliche Steuerung
Phase 5: Machine Learning
- Verbrauchsprognose
- Optimierte Ladezeiten
- Selbstlernende Parameter
Support & Logs
Bei Problemen bitte folgende Informationen bereitstellen:
- Home Assistant Version
- PyScript Version
- Relevante Logs aus "Einstellungen → System → Protokolle"
- Screenshots der Input Helper Werte
input_text.battery_charging_scheduleInhalt
Sicherheitshinweise
⚠️ Wichtig:
- System greift direkt in Batteriesteuerung ein
- Bei Fehlfunktion kann Batterie beschädigt werden
- Überwache die ersten Tage intensiv
- Setze sinnvolle SOC-Grenzen
- Nutze Notfall-Stop bei Problemen
✅ Best Practices:
- Starte mit konservativer Strategie
- Teste erst mit kleinen Ladeleistungen
- Überwache Batterie-Temperatur
- Prüfe regelmäßig die Logs
- Halte OpenEMS aktuell
Lizenz & Haftung
Dieses System wird "as-is" bereitgestellt. Keine Haftung für Schäden an Hardware oder Datenverlust. Verwendung auf eigene Gefahr.
Version: 1.0 Datum: 2025-11-07 Autor: Felix's Batterie-Optimierungs-Projekt