Files
battery-charging-optimizer/legacy/v1/INSTALLATION_GUIDE.md

350 lines
8.9 KiB
Markdown

# 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:
1. Über HACS → Integrationen → PyScript suchen und installieren
2. Home Assistant neu starten
3. 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:
```yaml
# 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:
```yaml
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/`:
1. `battery_charging_optimizer.py``/config/pyscript/battery_charging_optimizer.py`
2. `battery_power_control.py``/config/pyscript/battery_power_control.py`
```bash
# 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.yaml` hinzufü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:
1. **Input Helper prüfen**
- Einstellungen → Geräte & Dienste → Helfer
- Alle "Batterie Optimizer" Helfer sollten vorhanden sein
2. **Grundeinstellungen setzen**
- `input_number.battery_optimizer_min_soc`: 20%
- `input_number.battery_optimizer_max_soc`: 100%
- `input_number.battery_optimizer_price_threshold`: 28 ct/kWh
- `input_number.battery_optimizer_max_charge_power`: 10000 W
- `input_number.battery_optimizer_reserve_capacity`: 2 kWh
- `input_select.battery_optimizer_strategy`: "Konservativ (nur sehr günstig)"
3. **Optimierung aktivieren**
- `input_boolean.battery_optimizer_enabled`: AN
4. **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
```yaml
# Entwicklerwerkzeuge → Dienste
service: pyscript.calculate_charging_schedule
```
Prüfe danach:
- `input_text.battery_charging_schedule` sollte JSON enthalten
- Logs prüfen: Einstellungen → System → Protokolle
### Test 2: Manuelles Laden testen
```yaml
# Entwicklerwerkzeuge → Dienste
service: pyscript.start_charging_cycle
data:
power_w: -3000 # 3kW laden
```
Prüfe:
- `sensor.battery_power` sollte ca. -3000W zeigen
- ESS Mode sollte REMOTE sein
- Nach 1 Minute stoppen:
```yaml
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:
```yaml
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`:
```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_active` State
- 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_capacity` an
- Ä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:
1. Home Assistant Version
2. PyScript Version
3. Relevante Logs aus "Einstellungen → System → Protokolle"
4. Screenshots der Input Helper Werte
5. `input_text.battery_charging_schedule` Inhalt
## 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