298 lines
7.3 KiB
Markdown
298 lines
7.3 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
# PyScript via HACS installieren
|
|
# Konfigurationsdateien zu Home Assistant hinzufügen
|
|
# PyScript Dateien nach /config/pyscript/ kopieren
|
|
# Home Assistant neu starten
|
|
```
|
|
|
|
Siehe [INSTALLATION_GUIDE.md](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
|
|
|
|
```yaml
|
|
# Entwicklerwerkzeuge → Dienste
|
|
service: pyscript.calculate_charging_schedule
|
|
```
|
|
|
|
### 4. Optimierung aktivieren
|
|
|
|
```yaml
|
|
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
|
|
```yaml
|
|
# Neuen Plan berechnen
|
|
pyscript.calculate_charging_schedule
|
|
|
|
# Aktuellen Plan ausführen
|
|
pyscript.execute_current_schedule
|
|
```
|
|
|
|
### Manuelle Steuerung
|
|
```yaml
|
|
# Laden starten (10kW)
|
|
pyscript.start_charging_cycle:
|
|
power_w: -10000
|
|
|
|
# Laden stoppen
|
|
pyscript.stop_charging_cycle
|
|
|
|
# Notfall-Stop
|
|
pyscript.emergency_stop
|
|
```
|
|
|
|
### Modbus Direkt
|
|
```yaml
|
|
# 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
|
|
|
|
```python
|
|
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
|
|
|
|
```mermaid
|
|
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
|
|
|
|
- [OpenEMS Dokumentation](https://openems.io)
|
|
- [Home Assistant PyScript](https://github.com/custom-components/pyscript)
|
|
- [Forecast.Solar](https://forecast.solar)
|
|
- [haStrom FLEX PRO](https://www.ha-strom.de)
|
|
|
|
## 🤝 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+
|