## 🎯 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>
114 lines
3.9 KiB
YAML
114 lines
3.9 KiB
YAML
# ============================================
|
|
# Battery Charging Optimizer - Dashboard
|
|
# ============================================
|
|
# Füge diese Cards zu deinem Lovelace Dashboard hinzu
|
|
|
|
type: vertical-stack
|
|
cards:
|
|
# Status-Übersicht
|
|
- type: entities
|
|
title: Batterie-Optimierung Status
|
|
show_header_toggle: false
|
|
entities:
|
|
- entity: input_boolean.battery_optimizer_enabled
|
|
name: Optimierung aktiviert
|
|
- entity: input_boolean.battery_optimizer_manual_override
|
|
name: Manuelle Überschreibung
|
|
- entity: input_text.battery_optimizer_status
|
|
name: Status
|
|
|
|
# Manuelle Steuerung (dein bestehendes System)
|
|
- type: entities
|
|
title: Manuelle Steuerung
|
|
show_header_toggle: false
|
|
entities:
|
|
- entity: input_boolean.goodwe_manual_control
|
|
name: Manueller Modus
|
|
- entity: input_number.charge_power_battery
|
|
name: Ladeleistung
|
|
- type: divider
|
|
- entity: sensor.esssoc
|
|
name: Batterie SOC
|
|
- entity: sensor.battery_power
|
|
name: Batterie Leistung
|
|
|
|
# Konfiguration
|
|
- type: entities
|
|
title: Optimierungs-Einstellungen
|
|
show_header_toggle: false
|
|
entities:
|
|
- entity: input_number.battery_capacity_kwh
|
|
name: Batterie-Kapazität
|
|
- entity: input_number.battery_optimizer_min_soc
|
|
name: Min. SOC
|
|
- entity: input_number.battery_optimizer_max_soc
|
|
name: Max. SOC
|
|
- entity: input_number.battery_optimizer_max_charge_power
|
|
name: Max. Ladeleistung
|
|
- type: divider
|
|
- entity: input_number.battery_optimizer_price_threshold
|
|
name: Preis-Schwellwert
|
|
- entity: input_number.battery_optimizer_reserve_capacity
|
|
name: Reserve-Kapazität
|
|
- entity: input_number.battery_optimizer_pv_threshold
|
|
name: PV-Schwellwert
|
|
|
|
# Aktionen
|
|
- type: entities
|
|
title: Aktionen
|
|
show_header_toggle: false
|
|
entities:
|
|
- type: button
|
|
name: Plan neu berechnen
|
|
icon: mdi:refresh
|
|
tap_action:
|
|
action: call-service
|
|
service: pyscript.calculate_charging_schedule
|
|
- type: button
|
|
name: Plan jetzt ausführen
|
|
icon: mdi:play
|
|
tap_action:
|
|
action: call-service
|
|
service: pyscript.execute_charging_schedule
|
|
|
|
# Ladeplan-Tabelle
|
|
- type: markdown
|
|
title: Geplante Ladungen (nächste 24h)
|
|
content: >
|
|
{% set schedule = state_attr('pyscript.battery_charging_schedule', 'schedule') %}
|
|
{% if schedule %}
|
|
{% set charges = schedule | selectattr('action', 'eq', 'charge') | list %}
|
|
{% if charges | count > 0 %}
|
|
| Zeit | Leistung | Preis | Grund |
|
|
|------|----------|-------|-------|
|
|
{% for charge in charges[:10] %}
|
|
| {{ charge.datetime[11:16] }} | {{ charge.power_w }}W | {{ charge.price }}ct | {{ charge.reason }} |
|
|
{% endfor %}
|
|
{% else %}
|
|
*Keine Ladungen geplant*
|
|
{% endif %}
|
|
{% else %}
|
|
*Kein Plan vorhanden - bitte neu berechnen*
|
|
{% endif %}
|
|
|
|
# Statistiken
|
|
- type: markdown
|
|
title: Plan-Statistiken
|
|
content: >
|
|
{% set attrs = state_attr('pyscript.battery_charging_schedule', 'schedule') %}
|
|
{% if attrs %}
|
|
**Letzte Aktualisierung:** {{ state_attr('pyscript.battery_charging_schedule', 'last_update') }}
|
|
|
|
**Anzahl Stunden:** {{ state_attr('pyscript.battery_charging_schedule', 'num_hours') }}
|
|
|
|
**Geplante Ladungen:** {{ state_attr('pyscript.battery_charging_schedule', 'num_charges') }}
|
|
|
|
**Gesamtenergie:** {{ state_attr('pyscript.battery_charging_schedule', 'total_energy_kwh') }} kWh
|
|
|
|
**Durchschnittspreis:** {{ state_attr('pyscript.battery_charging_schedule', 'avg_charge_price') }} ct/kWh
|
|
|
|
**Erste Ladung:** {{ state_attr('pyscript.battery_charging_schedule', 'first_charge_time') }}
|
|
{% else %}
|
|
*Keine Statistiken verfügbar*
|
|
{% endif %}
|