# ============================================ # Battery Charging Optimizer v3 - Automatisierungen # ============================================ # Diese Automatisierungen zu deiner automations.yaml hinzufügen # oder über die UI erstellen # # HINWEIS: Die Keep-Alive und ESS-Modus Automations sind NICHT enthalten, # da diese bereits existieren: # - speicher_manuell_laden.yaml (Keep-Alive alle 30s) # - manuelle_speicherbeladung_aktivieren.yaml (ESS → REMOTE) # - manuelle_speicherbeladung_deaktivieren.yaml (ESS → INTERNAL) # Automatisierung 1: Tägliche Planerstellung um 14:05 Uhr alias: "Batterie Optimierung: Tägliche Planung" description: "Erstellt täglich um 14:05 Uhr den Ladeplan basierend auf Strompreisen" trigger: - platform: time at: "14:05:00" condition: - condition: state entity_id: input_boolean.battery_optimizer_enabled state: "on" action: - service: pyscript.calculate_charging_schedule data: {} - service: notify.persistent_notification data: title: "Batterie-Optimierung" message: "Neuer Ladeplan erstellt" mode: single # Automatisierung 2: Stündliche Ausführung des Plans alias: "Batterie Optimierung: Stündliche Ausführung" description: "Führt jede Stunde zur Minute :05 den Ladeplan aus" trigger: - platform: time_pattern minutes: "5" condition: - condition: state entity_id: input_boolean.battery_optimizer_enabled state: "on" - condition: state entity_id: input_boolean.battery_optimizer_manual_override state: "off" action: - service: pyscript.execute_charging_schedule data: {} mode: single # Automatisierung 3: Initiale Berechnung nach Neustart alias: "Batterie Optimierung: Start-Berechnung" description: "Erstellt Ladeplan nach Home Assistant Neustart" trigger: - platform: homeassistant event: start condition: - condition: state entity_id: input_boolean.battery_optimizer_enabled state: "on" action: - delay: "00:02:00" # 2 Minuten warten bis alles geladen ist - service: pyscript.calculate_charging_schedule data: {} - service: pyscript.execute_charging_schedule data: {} mode: single # Automatisierung 4: Mitternachts-Neuberechnung alias: "Batterie Optimierung: Mitternachts-Update" description: "Neuberechnung um Mitternacht wenn Tomorrow-Daten im Plan waren" trigger: - platform: time at: "00:05:00" condition: - condition: state entity_id: input_boolean.battery_optimizer_enabled state: "on" - condition: template value_template: > {{ state_attr('pyscript.battery_charging_schedule', 'has_tomorrow_data') == true }} action: - service: pyscript.calculate_charging_schedule data: {} mode: single # Automatisierung 5: Preis-Update Trigger alias: "Batterie Optimierung: Bei Preis-Update" description: "Erstellt neuen Plan wenn neue Strompreise verfügbar (nach 14 Uhr)" trigger: - platform: state entity_id: sensor.hastrom_flex_pro_ext condition: - condition: state entity_id: input_boolean.battery_optimizer_enabled state: "on" - condition: template value_template: > {{ trigger.to_state.state != trigger.from_state.state and now().hour >= 14 }} action: - service: pyscript.calculate_charging_schedule data: {} - service: notify.persistent_notification data: title: "Batterie-Optimierung" message: "Neuer Ladeplan nach Preis-Update erstellt" mode: single # Automatisierung 6: Notfall-Überprüfung bei niedrigem SOC alias: "Batterie Optimierung: Niedrig-SOC Warnung" description: "Warnt wenn Batterie unter Minimum fällt" trigger: - platform: numeric_state entity_id: sensor.esssoc below: 20 condition: - condition: state entity_id: input_boolean.battery_optimizer_enabled state: "on" action: - service: notify.persistent_notification data: title: "Batterie-Warnung" message: "Batterie-SOC ist unter {{ states('input_number.battery_optimizer_min_soc') }}%. Prüfe Ladeplan!" mode: single # Automatisierung 7: Manueller Override Reset alias: "Batterie Optimierung: Manueller Override beenden" description: "Deaktiviert manuellen Override nach 4 Stunden" trigger: - platform: state entity_id: input_boolean.battery_optimizer_manual_override to: "on" for: hours: 4 action: - service: input_boolean.turn_off target: entity_id: input_boolean.battery_optimizer_manual_override - service: notify.persistent_notification data: title: "Batterie-Optimierung" message: "Manueller Override automatisch beendet" mode: restart # Automatisierung 8: Laden stoppen wenn SOC erreicht alias: "Batterie Optimierung: Stopp bei Max-SOC" description: "Beendet manuelles Laden wenn maximaler SOC erreicht" trigger: - platform: numeric_state entity_id: sensor.esssoc above: 99 condition: - condition: state entity_id: input_boolean.goodwe_manual_control state: "on" # SOC-Plausibilitäts-Check: Filtert ungültige Werte (z.B. 65535% beim ESS-Modus-Wechsel) - condition: template value_template: > {% set soc = states('sensor.esssoc') | float(0) %} {{ soc >= 99 and soc <= 101 }} action: - service: input_boolean.turn_off target: entity_id: input_boolean.goodwe_manual_control # ESS-Modus wird durch manuelle_speicherbeladung_deaktivieren gesetzt - service: notify.persistent_notification data: title: "Batterie-Optimierung" message: "Manuelles Laden beendet - SOC 100% erreicht" mode: single