feat: Major update - Battery Optimizer v3.4.0 with comprehensive fixes

## 🎯 Hauptänderungen

### Version 3.4.0 - SOC-Drift & Charging Capacity
-  Sicherheitspuffer (20-50% konfigurierbar) für untertägige SOC-Schwankungen
-  Monatliche automatische Batterie-Kalibrierung
- 🐛 SOC-Plausibilitäts-Check (filtert 65535% Spikes beim Modus-Wechsel)
- 🐛 Zeitabhängige API-Abfrage (vor/nach 14:00 Uhr)

### Neue Features
- 🔋 **Safety Buffer**: Kompensiert SOC-Drift und Eigenverbrauch
- 🔋 **Auto-Calibration**: Monatlicher Vollzyklus für SOC-Genauigkeit
- 🔋 **Spike Protection**: 4-fach Schutz gegen ungültige SOC-Werte
- 🔋 **Smart API**: Verhindert HTTP 500 Errors bei fehlenden Tomorrow-Preisen

### Dokumentation
- 📚 SOC_CALIBRATION_GUIDE.md - Umfassender Kalibrierungs-Guide
- 📚 FIX_CHARGING_CAPACITY.md - Sicherheitspuffer-Dokumentation
- 📚 FIX_SOC_SPIKE_PROBLEM.md - Spike-Protection-Lösung
- 📚 FIX_API_TIMING.md - Zeitabhängige API-Abfrage
- 📚 DIAGNOSE_LADE_PROBLEM.md - Debug-Guide

### Neue Dateien
- battery_calibration_automation.yaml - 4 Automations für Kalibrierung
- battery_calibration_input_helper.yaml - Input Helper Config
- battery_optimizer_input_helper_safety_buffer.yaml - Puffer Config
- debug_schedule.py - Umfassendes Debug-Script

### Scripts
- battery_charging_optimizer.py v3.4.0
- hastrom_flex_extended.py v1.1.0
- debug_schedule.py v1.0.0

### Fixes
- 🐛 SOC springt auf 65535% beim ESS-Modus-Wechsel → Debounce + Plausibilitäts-Check
- 🐛 API-HTTP-500 vor 14:00 → Zeitabhängige Abfrage
- 🐛 Batterie nicht bis 100% geladen → Sicherheitspuffer
- 🐛 SOC driftet ohne Vollzyklen → Automatische Kalibrierung

## 🚀 Installation

1. Input Helper erstellen (siehe battery_optimizer_input_helper_safety_buffer.yaml)
2. Automations installieren (siehe battery_calibration_automation.yaml)
3. Scripts aktualisieren (battery_charging_optimizer.py v3.4.0)
4. PyScript neu laden

## 📊 Verbesserungen

- Präzisere Ladeplanung durch Sicherheitspuffer
- Robustheit gegen SOC-Drift
- Keine API-Fehler mehr vor 14:00
- Hardware-Stopp bei 100% wird respektiert
- Bessere Batterie-Gesundheit durch regelmäßige Kalibrierung

🤖 Generated with Claude Code (claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
felix.zoesch
2025-12-12 08:04:07 +01:00
parent 5ab422426f
commit 0fa03a566a
90 changed files with 22002 additions and 0 deletions

View File

@@ -0,0 +1,98 @@
# ✅ Entitäten-Checkliste
## Nach Installation sollten folgende Entitäten existieren:
### Input Boolean (2 Stück)
- [ ] `input_boolean.battery_optimizer_enabled`
- [ ] `input_boolean.battery_optimizer_manual_override`
### Input Number (7 Stück)
- [ ] `input_number.battery_capacity_kwh`
- [ ] `input_number.battery_optimizer_min_soc`
- [ ] `input_number.battery_optimizer_max_soc`
- [ ] `input_number.battery_optimizer_max_charge_power`
- [ ] `input_number.battery_optimizer_price_threshold`
- [ ] `input_number.battery_optimizer_reserve_capacity`
- [ ] `input_number.battery_optimizer_pv_threshold`
### Input Text (1 Stück)
- [ ] `input_text.battery_optimizer_status`
### Template Sensors (3 Stück) - werden AUTOMATISCH erstellt
Diese Sensoren werden erst nach Home Assistant Neustart und Laden der Templates erstellt:
- [ ] `sensor.battery_charging_plan_status`
- [ ] `sensor.battery_next_action`
- [ ] `sensor.battery_estimated_savings`
**Hinweis:** Template Sensors zeigen "unavailable" bis der erste Plan berechnet wurde!
### PyScript States (1 Stück) - wird AUTOMATISCH erstellt
Dieser State wird beim ersten Aufruf von `calculate_charging_schedule()` erstellt:
- [ ] `pyscript.battery_charging_schedule`
### Bestehende Entitäten (müssen bereits vorhanden sein)
- [ ] `input_boolean.goodwe_manual_control` (dein bestehendes System)
- [ ] `input_number.charge_power_battery` (dein bestehendes System)
- [ ] `sensor.openems_ess0_soc` (OpenEMS Modbus)
- [ ] `sensor.hastrom_flex_pro` (Strompreis-Sensor)
- [ ] `sensor.energy_production_today` (Forecast.Solar Ost)
- [ ] `sensor.energy_production_today_2` (Forecast.Solar West)
- [ ] `sensor.energy_production_tomorrow` (Forecast.Solar Ost)
- [ ] `sensor.energy_production_tomorrow_2` (Forecast.Solar West)
## Prüfen nach Installation
### Schritt 1: Input Helper prüfen
```
Einstellungen → Geräte & Dienste → Helfer
```
Suche nach "battery_optimizer" - sollte 10 Einträge zeigen
### Schritt 2: Template Sensors prüfen
```
Entwicklerwerkzeuge → Zustände
```
Suche nach "battery_" - Template Sensors sollten existieren (können "unavailable" sein)
### Schritt 3: Ersten Plan berechnen
```
Entwicklerwerkzeuge → Dienste
service: pyscript.calculate_charging_schedule
```
### Schritt 4: PyScript State prüfen
```
Entwicklerwerkzeuge → Zustände
```
Suche nach "pyscript.battery_charging_schedule" - sollte jetzt existieren!
### Schritt 5: Template Sensors sollten jetzt Werte haben
```
Entwicklerwerkzeuge → Zustände
```
- `sensor.battery_charging_plan_status` sollte z.B. "3 Ladungen geplant" zeigen
- `sensor.battery_next_action` sollte nächste Aktion zeigen
- `sensor.battery_estimated_savings` zeigt Ersparnis (oder 0)
## Fehlende Entitäten beheben
### Wenn Input Helper fehlen:
1. Prüfe ob `battery_optimizer_config.yaml` richtig in `/config/packages/` liegt
2. Prüfe ob in `configuration.yaml` Packages aktiviert sind:
```yaml
homeassistant:
packages: !include_dir_named packages
```
3. Home Assistant neu starten
4. Logs prüfen auf Fehler
### Wenn Template Sensors fehlen:
1. Prüfe ob der `template:` Abschnitt in der Config ist
2. Home Assistant neu starten
3. Yaml-Konfiguration prüfen in Developer Tools
### Wenn PyScript State fehlt:
1. PyScript muss installiert sein
2. `battery_optimizer.py` muss in `/config/pyscript/` sein
3. Dienst `pyscript.calculate_charging_schedule` manuell aufrufen
4. Logs prüfen auf Fehler