Files
..

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, Sensoren
  • battery_optimizer_rest_commands.yaml - OpenEMS REST API Befehle
  • battery_optimizer_automations.yaml - 6 Automatisierungen

PyScript Module

  • battery_charging_optimizer.py - Haupt-Optimierungsalgorithmus
  • battery_power_control.py - Modbus Steuerung & Hilfsfunktionen

Dashboard

  • battery_optimizer_dashboard.yaml - Lovelace UI Konfiguration

Dokumentation

  • INSTALLATION_GUIDE.md - Schritt-für-Schritt Installation
  • README.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/AUS
  • sensor.battery_state_of_charge - Aktueller SOC
  • sensor.nächste_ladestunde - Wann wird geladen

Energie

  • sensor.battery_power - Aktuelle Batterieleistung
  • sensor.pv_power - Aktuelle PV-Leistung
  • sensor.house_consumption - Hausverbrauch

Prognosen

  • sensor.energy_production_tomorrow - PV Ost morgen
  • sensor.energy_production_tomorrow_2 - PV West morgen
  • sensor.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)

🤝 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+