Files
battery-charging-optimizer/openems/CHANGELOG.md
felix.zoesch 0fa03a566a 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>
2025-12-12 08:04:07 +01:00

229 lines
7.1 KiB
Markdown

# Changelog
Alle wichtigen Änderungen an diesem Projekt werden in dieser Datei dokumentiert.
Das Format basiert auf [Keep a Changelog](https://keepachangelog.com/de/1.0.0/),
und dieses Projekt folgt [Semantic Versioning](https://semver.org/lang/de/).
## [3.3.2] - 2024-11-30
### Fixed
- **Automation 8 SOC-Spike Protection**: Plausibilitäts-Check verhindert vorzeitigen Stop beim Umschalten auf REMOTE-Modus
- Template-Condition prüft SOC-Bereich 99-101% statt nur >99%
- Filtert ungültige Werte wie 65535% beim ESS-Modus-Wechsel
- **Keep-Alive SOC-Check**: Zusätzliche Schutzmaßnahme gegen ungültige SOC-Werte
- Template-Condition prüft SOC <= 100% vor Modbus-Befehl
- Überspringt Zyklen bei Spikes, läuft aber weiter
### Changed
- Erweiterte `battery_optimizer_automations.yaml` (Automation 8)
- Erweiterte `speicher_manuell_laden.yaml` (Keep-Alive)
- Backups erstellt: `.yaml.backup` Dateien
### Documentation
- Neue Datei: `FIX_SOC_SPIKE_REMOTE_MODE.md` mit detaillierter Problembeschreibung, Lösung und Test-Anleitung
## [3.3.1] - 2024-11-26
### Fixed
- **SOC-Plausibilitäts-Check**: Filtert ungültige SOC-Werte (z.B. 65535% Spikes beim ESS-Modus-Wechsel)
- **Negative Power Values**: `charge_power_battery` wird nun korrekt als negativer Wert gesetzt (-5000 für Laden)
- **Automation Integration**: Nutzt bestehende Automations für ESS-Modus und Keep-Alive statt direkter Service-Calls
### Changed
- Removed `@time_trigger` decorators from PyScript - Triggers now via Home Assistant Automations
- Simplified `execute_charging_schedule` - delegates to existing automation infrastructure
- Updated documentation for proper automation-based architecture
## [3.2.0] - 2025-01-20
### Fixed
- **Timezone Handling**: Durchgehende Verwendung von `ZoneInfo("Europe/Berlin")` in allen Scripts
- **haStrom API Error Handling**: Bessere Fehlerbehandlung mit HTTP-Status-Codes und Response-Text
- **DateTime Comparison**: Korrekte timezone-aware datetime Vergleiche in PyScript
### Changed
- `get_local_now()` function für konsistente lokale Zeit
- Explicit timezone conversion in `get_electricity_prices()`
- Improved logging für API-Fehler
## [3.1.0] - 2024-12-15
### Added
- **Ranking-Based Optimization**: Globale Optimierung über Tagesgrenzen hinweg
- **Tomorrow Price Support**: Einbeziehung von morgigen Strompreisen (ab 14:00)
- **hastrom_flex_extended.py**: Erweiterter Price Fetcher mit Tomorrow-Support
- **Cross-Midnight Planning**: Findet günstigste Stunden unabhängig von Tagesgrenzen
### Changed
- Algorithm von threshold-based zu ranking-based
- Berücksichtigt jetzt heute + morgen in einem 48h-Fenster
- Verbesserte Statistiken und Logging
### Fixed
- Mitternachts-Übergang wird korrekt gehandhabt
- PV-Forecast Integration verbessert
## [3.0.0] - 2024-11-28
### Added
- **Sections Dashboards**: Modern
e Home Assistant 2024.2+ Dashboards
- Drei Dashboard-Varianten (Standard, Compact, Minimal)
- Auto-responsive Layout
- Improved mobile compatibility
### Changed
- Dashboard-Architektur komplett überarbeitet
- Maximum 4-Spalten Layout für mobile
- Mushroom Cards statt veralteter Entities Cards
- Bubble Card Integration
### Deprecated
- Alte horizontal/vertical stack Dashboards (v1/v2)
## [2.0.0] - 2024-10-15
### Added
- InfluxDB2 Integration für historische Daten
- Erweiterte Error Handling
- Dashboard Verbesserungen
### Fixed
- Modbus FLOAT32 Encoding (Big-Endian)
- Controller Priority Issues in OpenEMS
- State value 255-character limitation
## [1.2.1] - 2024-09-20
### Fixed
- **CRITICAL**: Hourly execution automation war nicht aktiv
- PyScript state storage (Attribute statt Value für komplexe Daten)
## [1.2.0] - 2024-09-10
### Added
- Automatische Preis-Update Trigger
- Manual Override mit Auto-Reset (4h)
- Low-SOC Warnung
- Startup calculation nach HA-Neustart
### Fixed
- Input textarea limitierung umgangen via pyscript state
- Generator expressions in PyScript (nicht unterstützt)
## [1.1.0] - 2024-08-25
### Added
- Threshold-based optimization algorithm
- Basic dashboard
- Manual control automations
- PV forecast integration (Forecast.Solar)
### Changed
- Improved configuration structure
- Better logging
## [1.0.0] - 2024-08-01
### Added
- Initial release
- Basic battery charging optimization
- haStrom FLEX PRO price integration
- OpenEMS Modbus control
- Simple time-based scheduling
- Basic Home Assistant integration
---
## Version Matrix
| Version | Algorithm | Tomorrow Support | Dashboard | Automations |
|---------|-----------|------------------|-----------|-------------|
| 3.3.1 | Ranking | ✅ | Sections | HA-based |
| 3.2.0 | Ranking | ✅ | Sections | PyScript |
| 3.1.0 | Ranking | ✅ | Sections | PyScript |
| 3.0.0 | Ranking | ✅ | Sections | PyScript |
| 2.x | Threshold | ❌ | Enhanced | PyScript |
| 1.x | Threshold | ❌ | Basic | PyScript |
---
## Migration Guides
### 3.2.0 → 3.3.1
1. Update `battery_charging_optimizer.py` (v3.3.1)
2. Remove PyScript time triggers (now handled by automations)
3. Import `battery_optimizer_automations.yaml`
4. Verify existing keep-alive automations work correctly
### 3.1.0 → 3.2.0
1. Update all `.py` files with timezone fixes
2. Test haStrom API connectivity
3. Verify datetime comparisons in logs
### 2.x → 3.0.0
1. Backup old dashboard
2. Install new Sections dashboard
3. Install required HACS cards (Mushroom, Bubble)
4. Verify mobile responsive behavior
### 1.x → 2.0.0
1. Update Modbus configuration (FLOAT32 Big-Endian)
2. Configure InfluxDB2 (optional)
3. Update dashboard to new format
4. Verify controller priority in OpenEMS
---
## Known Issues
### v3.3.1
- Keep-Alive automation muss manuell in HA erstellt werden (nicht automatisch)
- Dashboard-Import kann HACS-Card Warnings zeigen (installiere alle required cards)
### v3.2.0
- haStrom API manchmal langsam (>5s response time) - wird durch Timeout abgefangen
### v3.1.0
- Tomorrow-Preise erst ab 14:00 verfügbar (normal, nicht ein Bug)
- Mitternachts-Neuberechnung optional (kann zu doppelter Berechnung führen)
---
## Planned Features
- [ ] Dynamische Ladeleistungs-Anpassung basierend auf PV-Produktion
- [ ] Multi-Tarif Support (neben haStrom FLEX PRO)
- [ ] Wettervorhersage Integration (Temperatur-Kompensation)
- [ ] Machine Learning für Verbrauchsprognose
- [ ] Mobile App Benachrichtigungen
- [ ] Grafana Dashboard Templates
- [ ] Multi-Batterie Support
---
## Contributing
Contributions sind willkommen! Für größere Änderungen:
1. Erstelle ein Issue zur Diskussion
2. Fork das Repository
3. Erstelle einen Feature Branch (`git checkout -b feature/AmazingFeature`)
4. Commit deine Changes (`git commit -m 'Add some AmazingFeature'`)
5. Push zum Branch (`git push origin feature/AmazingFeature`)
6. Öffne einen Pull Request
---
## Support
- **Documentation**: [README.md](README.md), [INSTALLATION.md](INSTALLATION.md)
- **Issues**: [Gitea Issues](https://gitea.ges4.net/felix/openems-battery-optimizer/issues)
- **Discussions**: [Gitea Discussions](https://gitea.ges4.net/felix/openems-battery-optimizer/discussions)