# =================================================================== # Batterie-Optimierung Dashboard - SECTIONS LAYOUT (STANDARD) # Vollversion mit allen Details und Sections-Layout # =================================================================== - type: sections max_columns: 4 title: Batterie Detail path: battery-detail icon: mdi:battery-charging-100 sections: # =================================================================== # SECTION 1: ÜBERSICHT & POWER FLOW # =================================================================== - type: grid cards: - type: heading heading: Energie-Übersicht icon: mdi:home-lightning-bolt - type: custom:power-flow-card-plus entities: battery: entity: sensor.essactivepower state_of_charge: sensor.esssoc display_state: two_way grid: entity: sensor.gridactivepower solar: entity: sensor.productionactivepower home: entity: sensor.consumptionactivepower clickable_entities: true display_zero_state: transparency: 50 w_decimals: 0 kw_decimals: 2 # =================================================================== # SECTION 2: STEUERUNG # =================================================================== - type: grid cards: - type: heading heading: Steuerung icon: mdi:controller - type: custom:bubble-card card_type: button button_type: switch entity: input_boolean.battery_optimizer_enabled name: Automatische Optimierung icon: mdi:robot show_state: true - type: custom:bubble-card card_type: button button_type: switch entity: input_boolean.goodwe_manual_control name: Manuelle Steuerung icon: mdi:hand-back-right show_state: true - type: entities title: Wichtige Parameter entities: - 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: Ladeleistung - entity: input_number.battery_optimizer_reserve_capacity name: Reserve - type: divider - entity: sensor.hastrom_flex_ext name: Aktueller Preis icon: mdi:currency-eur - entity: sensor.esssoc name: Aktueller SOC icon: mdi:battery # =================================================================== # SECTION 3: LADEPLAN-STATUS # =================================================================== - type: grid cards: - type: heading heading: Ladeplan icon: mdi:calendar-clock - type: custom:bubble-card card_type: button entity: pyscript.battery_charging_schedule name: Plan-Status icon: mdi:calendar-check show_state: true show_last_changed: true - type: markdown content: | {% set attrs = state_attr('pyscript.battery_charging_schedule', 'schedule') %} {% if attrs %} **Nächste Ladung:** {% set ns = namespace(found=false) %} {% for entry in attrs %} {% if entry.action == 'charge' and not ns.found %} 🔋 **{{ entry.datetime[11:16] }} Uhr** {{ entry.price }} ct/kWh · {{ entry.power_w }}W {% set ns.found = true %} {% endif %} {% endfor %} {% if not ns.found %} Keine Ladung geplant {% endif %} {% else %} ⚠️ Kein Plan {% endif %} - type: markdown content: | {% set schedule = state_attr('pyscript.battery_charging_schedule', 'schedule') %} {% set last_updated = state_attr('pyscript.battery_charging_schedule', 'last_update') %} {% if schedule %} **Plan erstellt:** {{ last_updated[:16] if last_updated else 'Unbekannt' }} **Geplante Ladestunden:** {% for slot in schedule %} {% if slot.action == 'charge' %} - **{{ slot.datetime[:16] }}** 🔋 {{ slot.power_w }}W · 💶 {{ slot.price }}ct/kWh *{{ slot.reason }}* {% endif %} {% endfor %} {% else %} ⚠️ Kein Plan verfügbar {% endif %} # =================================================================== # SECTION 4: STROMPREIS & LADEPLAN # =================================================================== - type: grid cards: - type: heading heading: Strompreis & Ladeplanung icon: mdi:chart-bell-curve-cumulative - type: custom:plotly-graph title: Strompreis 48h mit geplanten Ladezeiten hours_to_show: 48 refresh_interval: 300 layout: height: 300 showlegend: true legend: orientation: h y: -0.2 margin: t: 20 b: 50 l: 60 r: 20 xaxis: title: Zeit yaxis: title: Preis (ct/kWh) entities: # Strompreis - entity: sensor.hastrom_flex_ext name: Strompreis line: color: '#FF9800' width: 2 fill: tozeroy fillcolor: 'rgba(255, 152, 0, 0.1)' # Geplante Ladezeiten (als Marker) - entity: '' name: Geplante Ladung internal: true mode: markers marker: color: '#4CAF50' size: 14 symbol: star line: color: '#2E7D32' width: 2 # =================================================================== # SECTION 5: BATTERIE SOC & LEISTUNG # =================================================================== - type: grid cards: - type: heading heading: Batterie SOC & Leistung icon: mdi:battery-charging-outline - type: custom:plotly-graph title: Batterie-Übersicht 24h hours_to_show: 24 refresh_interval: 60 layout: height: 300 showlegend: true legend: orientation: h y: -0.2 margin: t: 20 b: 50 l: 60 r: 60 xaxis: title: Zeit yaxis: title: SOC (%) side: left range: [0, 100] yaxis2: title: Leistung (W) side: right overlaying: y entities: # SOC - entity: sensor.esssoc name: SOC yaxis: y line: color: '#2196F3' width: 3 fill: tozeroy fillcolor: 'rgba(33, 150, 243, 0.1)' # Batterie-Leistung - entity: sensor.essactivepower name: Ladeleistung yaxis: y2 line: color: '#4CAF50' width: 2 dash: dot # =================================================================== # SECTION 6: ENERGIE-FLÜSSE # =================================================================== - type: grid cards: - type: heading heading: Energie-Flüsse icon: mdi:transmission-tower - type: custom:plotly-graph title: PV, Netz & Batterie 24h hours_to_show: 24 refresh_interval: 60 layout: height: 300 showlegend: true legend: orientation: h y: -0.2 margin: t: 20 b: 50 l: 60 r: 20 xaxis: title: Zeit yaxis: title: Leistung (W) entities: - entity: sensor.productionactivepower name: PV-Produktion line: color: '#FFC107' width: 2 fill: tozeroy fillcolor: 'rgba(255, 193, 7, 0.2)' - entity: sensor.gridactivepower name: Netzbezug line: color: '#F44336' width: 2 - entity: sensor.essactivepower name: Batterie line: color: '#4CAF50' width: 2 # =================================================================== # SECTION 7: PLAN-STATISTIKEN # =================================================================== - type: grid cards: - type: heading heading: Plan-Statistiken icon: mdi:chart-box - type: markdown content: | {% set attrs = state_attr('pyscript.battery_charging_schedule', 'schedule') %} {% set num_charges = state_attr('pyscript.battery_charging_schedule', 'num_charges') or 0 %} {% set total_energy = state_attr('pyscript.battery_charging_schedule', 'total_energy_kwh') or 0 %} {% set avg_price = state_attr('pyscript.battery_charging_schedule', 'avg_charge_price') or 0 %} {% set num_tomorrow = state_attr('pyscript.battery_charging_schedule', 'num_charges_tomorrow') or 0 %} | Metrik | Wert | |--------|------| | 🕐 **Geplante Ladungen** | {{ num_charges }} Stunden | | ⚡ **Gesamt-Energie** | {{ total_energy | round(1) }} kWh | | 💶 **Durchschnittspreis** | {{ avg_price | round(2) }} ct/kWh | | 📅 **Davon Morgen** | {{ num_tomorrow }} Ladungen | # =================================================================== # SECTION 8: DETAILLIERTE PLAN-TABELLE # =================================================================== - type: grid cards: - type: heading heading: Stunden-Details icon: mdi:table-large - type: markdown title: Vollständiger Ladeplan content: | {% set schedule = state_attr('pyscript.battery_charging_schedule', 'schedule') %} {% if schedule %} | Zeit | Aktion | Leistung | Preis | Grund | |------|--------|----------|-------|-------| {% for slot in schedule[:20] %} | {{ slot.datetime[11:16] }} | {{ '🔋 Laden' if slot.action == 'charge' else '⏸️ Auto' }} | {{ slot.power_w if slot.power_w else '-' }}W | {{ slot.price }}ct | {{ slot.reason }} | {% endfor %} {% else %} ⚠️ **Kein Ladeplan verfügbar** Der Plan wird täglich um 14:05 Uhr neu berechnet. {% endif %} # =================================================================== # SECTION 9: ALLE EINSTELLUNGEN # =================================================================== - type: grid cards: - type: heading heading: Alle Einstellungen icon: mdi:cog-outline - type: entities title: Batterie-Parameter entities: - entity: input_number.battery_optimizer_min_soc name: Minimaler SOC (%) - entity: input_number.battery_optimizer_max_soc name: Maximaler SOC (%) - entity: input_number.battery_optimizer_max_charge_power name: Ladeleistung (W) - entity: input_number.battery_optimizer_reserve_capacity name: Reserve-Kapazität (kWh) - entity: input_number.battery_optimizer_price_threshold name: Preis-Schwelle (ct/kWh) # =================================================================== # SECTION 10: SYSTEM-INFORMATIONEN # =================================================================== - type: grid cards: - type: heading heading: System-Status icon: mdi:information-outline - type: markdown content: | **System-Informationen:** **Batterie:** - Kapazität: {{ states('input_number.battery_capacity_kwh') }} kWh - Aktueller SOC: {{ states('sensor.esssoc') }}% - Leistung: {{ states('sensor.essactivepower') }}W **PV-Prognose:** - Heute Ost: {{ states('sensor.energy_production_today') }} kWh - Heute West: {{ states('sensor.energy_production_today_2') }} kWh - Morgen Ost: {{ states('sensor.energy_production_tomorrow') }} kWh - Morgen West: {{ states('sensor.energy_production_tomorrow_2') }} kWh **Optimizer Status:** - Aktiviert: {{ states('input_boolean.battery_optimizer_enabled') }} - Manueller Modus: {{ states('input_boolean.goodwe_manual_control') }} - Letztes Update: {{ state_attr('pyscript.battery_charging_schedule', 'last_update')[:16] if state_attr('pyscript.battery_charging_schedule', 'last_update') else 'Unbekannt' }} **PyScript Trigger:** - Tägliche Berechnung: 14:05 Uhr - Stündliche Ausführung: xx:05 Uhr