## Hauptänderungen ### Removed - Sicherheitspuffer (20%) entfernt - führte zu unvollständiger Ladung - Reservekapazität (2 kWh) entfernt - Hardware hat eigene Puffer - Problem: Mehr Ladestunden geplant als nötig, aber tatsächliche Ladung begrenzt - Folge: Batterie erreichte nie 100% SOC ### Changed - Standardwert max_charge_power: 5000W → 8000W (+60%) - Standardwert price_threshold: 28ct → 25ct/kWh - Ladelogik vereinfacht: Direkte Berechnung ohne Puffer ### Fixed - Batterie lädt jetzt vollständig bis 100% SOC - Genauere Ladestunden-Berechnung - Bessere Kapazitätsnutzung: Volle Leistung in allen Stunden ## Projekt-Aufräumarbeiten ### Archiviert - Bugfix-Dokumentationen → archive/ - BUGFIX_TIMEZONE_v3.2.md - DIAGNOSE_LADE_PROBLEM.md - FIX_API_TIMING.md - FIX_CHARGING_CAPACITY.md - FIX_SOC_SPIKE_PROBLEM.md - FIX_SOC_SPIKE_REMOTE_MODE.md - SOC_CALIBRATION_GUIDE.md ### Entfernt - docs/ (Duplikate) - debug_log.txt, debug_schedule.py ### Neu - UPGRADE_TO_v3.5.0.md - Detaillierter Upgrade-Guide - PROJECT_SUMMARY_v3.5.0.md - Technische Zusammenfassung - pyscripts/ aktualisiert auf v3.5.0 ## Migration 1. Backup erstellen 2. Neue Skripte nach /config/pyscript/ kopieren 3. PyScript neu laden 4. Input Helper anpassen (8000W, 25ct) 5. Test durchführen Details: siehe UPGRADE_TO_v3.5.0.md --- Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
6.8 KiB
6.8 KiB
Projekt-Zusammenfassung: Battery Optimizer v3.5.0
Aufräumarbeiten durchgeführt ✅
Entfernte/Archivierte Dateien
-
Bugfix-Dokumentationen →
archive/:- BUGFIX_TIMEZONE_v3.2.md
- DIAGNOSE_LADE_PROBLEM.md
- FIX_API_TIMING.md
- FIX_CHARGING_CAPACITY.md
- FIX_SOC_SPIKE_PROBLEM.md
- FIX_SOC_SPIKE_REMOTE_MODE.md
- SOC_CALIBRATION_GUIDE.md
-
Debug-Dateien (gelöscht):
- debug_log.txt
- debug_schedule.py
-
Duplikate (gelöscht):
- docs/ (Duplikate von Root-Dokumentationen)
- pyscripts/ (veraltete v3.3.1 Kopien, jetzt neu erstellt mit v3.5.0)
-
Legacy-Versionen →
legacy/:- v1/, v2/, v3/ (340KB historische Daten)
Aktuelle Projektstruktur
openems/
├── archive/ # Alte Bugfix-Dokumentationen
├── automations/ # Home Assistant Automationen
├── config/ # Konfigurationsdateien
├── dashboards/ # Dashboard-Varianten
├── legacy/ # Alte Versionen (v1-v3)
├── pyscripts/ # 🎯 PRODUKTIONS-SKRIPTE (v3.5.0)
│ ├── battery_charging_optimizer.py
│ ├── hastrom_flex_extended.py
│ └── ess_set_power.py
├── battery_charging_optimizer.py # Root-Version (Master)
├── hastrom_flex_extended.py
├── ess_set_power.py
├── CHANGELOG.md # ✅ Aktualisiert mit v3.5.0
├── CLAUDE.md # Projekt-Anweisungen für AI
├── EMS_OpenEMS_HomeAssistant_Dokumentation.md
├── INSTALLATION.md
├── LICENSE
├── README.md
├── UPGRADE_TO_v3.5.0.md # 🆕 Neuer Upgrade-Guide
├── project_memory.md
├── battery_optimizer_config.yaml
├── battery_optimizer_input_helper_safety_buffer.yaml # Veraltet
├── battery_calibration_automation.yaml
├── battery_calibration_input_helper.yaml
└── rest_requests.yaml
Hauptänderungen v3.5.0
🔧 Code-Änderungen
1. Sicherheitspuffer entfernt
Vorher (v3.4.0):
'safety_buffer': float(state.get('input_number.battery_optimizer_safety_buffer') or 20) / 100, # 20%
'reserve_capacity': float(state.get('input_number.battery_optimizer_reserve_capacity') or 2) * 1000, # 2 kWh
available_capacity_wh -= config['reserve_capacity'] # -2000 Wh
available_capacity_wh_with_buffer = available_capacity_wh * (1 + safety_buffer) # +20%
needed_hours = int((available_capacity_wh_with_buffer + ...) / max_charge_per_hour)
Nachher (v3.5.0):
# Keine Puffer mehr!
available_capacity_wh = (config['max_soc'] - current_soc) / 100 * config['battery_capacity']
needed_hours = int((available_capacity_wh + max_charge_per_hour - 1) / max_charge_per_hour)
2. Standardwerte optimiert
# Vorher:
'max_charge_power': float(state.get('...') or 5000),
'price_threshold': float(state.get('...') or 28),
# Nachher:
'max_charge_power': float(state.get('...') or 8000), # +60%
'price_threshold': float(state.get('...') or 25), # -10%
3. Version und Logging
# Version Header:
Version: 3.5.0 - REMOVED: Sicherheitspuffer und Reservekapazität
Batterie lädt jetzt bis 100% SOC
# Log-Ausgaben:
log.info("=== Batterie-Optimierung gestartet (v3.5.0 - Volle Ladung bis 100%) ===")
log.info(f"Verfügbare Ladekapazität: {available_capacity_wh/1000:.2f} kWh (bis {config['max_soc']}% SOC)")
log.info(f"🎯 Benötigte Ladestunden: {needed_hours} (bei {max_charge_per_hour}W pro Stunde)")
📊 Problem-Analyse: Warum 100% nicht erreicht wurde
Szenario: SOC 50% → Soll auf 100%
Alt (v3.4.0):
1. Verfügbare Kapazität: (100 - 50) * 10kWh = 5000 Wh
2. Reserve-Abzug: 5000 - 2000 = 3000 Wh
3. Sicherheitspuffer: 3000 * 1.20 = 3600 Wh (für Planung)
4. Benötigte Stunden: 3600 / 5000 = 0.72 → 1 Stunde
5. Geplante Energie: 1 Stunde * 5000W = 5000 Wh (theoretisch)
6. ABER remaining_capacity = 3000 Wh (OHNE Puffer!)
7. Tatsächlich geladen: min(5000, 3000) = 3000 Wh
8. Ergebnis: 50% + 30% = 80% SOC ❌
Neu (v3.5.0):
1. Verfügbare Kapazität: (100 - 50) * 10kWh = 5000 Wh
2. Benötigte Stunden: 5000 / 8000 = 0.625 → 1 Stunde
3. Geplante Energie: 1 Stunde * 8000W = 8000 Wh (theoretisch)
4. remaining_capacity: 5000 Wh (gleich wie verfügbar)
5. Tatsächlich geladen: min(8000, 5000) = 5000 Wh
6. Ergebnis: 50% + 50% = 100% SOC ✅
🎯 Erwartete Verbesserungen
- Volle Ladung: Batterie lädt bis 100% SOC (oder Hardware-Limit ~98%)
- Weniger Ladestunden: Bei 8000W statt 5000W werden ~37% weniger Stunden benötigt
- Bessere Effizienz: Volle Leistung in allen geplanten Stunden
- Niedrigere Kosten: Konzentration auf wirklich günstigste Stunden
📋 Migration-Checkliste
- Code aktualisiert (v3.5.0)
- Syntax-Check erfolgreich
- pyscripts/ neu erstellt
- CHANGELOG.md aktualisiert
- Upgrade-Guide erstellt (UPGRADE_TO_v3.5.0.md)
- In Home Assistant installieren
- PyScript neu laden
- Input Helper aktualisieren (8000W, 25ct)
- Erste Berechnung testen (manuell)
- Erste Ladung überwachen
- 100% SOC bestätigen
Nächste Schritte für Deployment
-
Backup erstellen:
ssh homeassistant cd /config/pyscript cp battery_charging_optimizer.py battery_charging_optimizer.py.v3.4.0.backup -
Neue Version kopieren:
# Von diesem Repository zu Home Assistant scp pyscripts/*.py homeassistant:/config/pyscript/ -
PyScript neu laden:
- Home Assistant → Developer Tools → Services
- Service:
pyscript.reload
-
Input Helper anpassen:
input_number.battery_optimizer_max_charge_power→ 8000input_number.battery_optimizer_price_threshold→ 25
-
Test durchführen:
- Service:
pyscript.calculate_charging_schedule - Log prüfen:
tail -f /config/home-assistant.log | grep battery - Schedule prüfen: State von
pyscript.battery_charging_schedule
- Service:
-
Über Nacht testen:
- Erste Ladung abwarten
- SOC-Verlauf überwachen
- 100% Erreichen bestätigen
Dateigrößen
- battery_charging_optimizer.py: 24 KB (v3.5.0)
- Reduzierung durch Code-Bereinigung: ~1.5 KB (-6%)
Git Status
Bereite Commit vor mit:
git add .
git commit -m "Update: Battery Optimizer v3.5.0 - Volle Ladung bis 100% SOC
- Entfernt: Sicherheitspuffer (20%) und Reservekapazität (2kWh)
- Hardware hat eigene Schutzpuffer, Software-Reserven unnötig
- Geändert: Standardwerte auf 8000W und 25ct/kWh
- Fix: Batterie lädt jetzt vollständig bis 100% SOC
- Projekt aufgeräumt: Archive, Legacy-Versionen strukturiert
- Upgrade-Guide hinzugefügt"
Status: ✅ Bereit für Deployment
Version: 3.5.0
Datum: 2025-12-28
Größte Verbesserung: 100% Ladung jetzt möglich