Empfehlungen zur automatisierten Steuerung von PV + Akku über Solcast

Hallo zusammen,

seit ein paar Monaten bin ich glücklicher Eigentümer einer PV-Anlage mit FoxESS WR und hybrider Batterie. In der Garage stehen zwei EV’s mit einer Wallbox.

Nach vielem hin und her habe ich den Wechselrichter auch über Modbus in mein LAN und über die Foxess Modbus App auch in HA mit sehr vielen Sensoren, Work Modes usw. erhalten. Alles ganz klasse.

Bislang habe ich stets den Gedanken verfolgt, die Steuerung der Batterie über die HA Automationen zu betreiben und nicht über eine App für HA wie z.B. Solar Optimizer umzusetzen.

Wichtig: Meine PV-Anlage ist aufgrund des Solarspitzengesetzes auf 60 % (=9 kWh) der 15kWp gedrosselt. Insofern habe ich ein großes Interesse an sonnigen Tagen die Batterie nicht morgens, sondern zum Peak Zeitpunkt aufladen zu lassen.

Meine Gedankengänge:

Trigger: Überprüfe um 06.30 Uhr jeden Tag, ob Solcast Spitzenleistung ist höher als 8000W.

–> Wenn ja: Lade die Batterie erst zum Zeitpunkt von Solcast Spitzenleistung. Davor soll die Batterie nicht aufgeladen werden.

–> Wenn nein: Lade die Batterie im Self Use Mode vormittags auf.

Hier mal mein Code, welcher leider noch nicht so funktioniert, wie ich mir das vorstelle. Zwar wird die Batterie entladen, aber zum Peak Zeitpunkt NICHT aufgeladen.

Neben diesem Mangel möchte ich gerne das Peak Aufladen noch insofern optimieren, dass die Batterie nicht mit voller Leistung aufgeladen wird, sondern z.B. nur mit 4,5 kWh und der Rest soll ins Netz eingespeist werden.

Habt ihr Ideen, das Skript zum Funktionieren zu bringen und zu optimieren?

alias: “PV | FoxESS – Tagessteuerung: Entladen & Laden nach Solcast 8kW Regel”
description: Steuert die Batterieladung nach Solcast-Prognose mit Ladefenster bis 15:00
triggers:
- at: “06:30:00”
trigger: timeconditions:
actions:
- variables:peak_dt: >{{ states(‘sensor.solcast_pv_forecast_zeitpunkt_spitzenleistung_heute’)| as_datetime(default=None) }}
  peak_power_w: >{{ states(‘sensor.solcast_pv_forecast_prognose_spitzenleistung_heute’) |float(0) }
  now_dt: “{{ now() }}”precharge_lead_min: 60window_end_dt: “{{ now().replace(hour=15, minute=0, second=0, microsecond=0) }}”
  peak_valid: >{{ peak_dt is not none and peak_dt.date() == now().date() and peak_dt >now() }}precharge_start: |{% if peak_dt is not none %}{{ (peak_dt - timedelta(minutes=precharge_lead_min)) }}{% else %}{{ None }}{% endif %}peak_threshold_w: 8000
- data:title: PV | FoxESS – Debugmessage: >Solcast: Peak {{ peak_power_w | round(0) }} W um {{ peak_dt if peak_dtis not none else ‘unbekannt’ }}.
  Valid={{ peak_valid }} | Precharge ab{{ precharge_start if precharge_start is not none else ‘—’ }},
  Fenster-Ende: {{ window_end_dt }} | Schwelle: {{ peak_threshold_w }}
  W.action: notify.mobile_app_aloha
- choose:
- conditions:
   condition: templatevalue_template: “{{ peak_power_w >= peak_threshold_w and peak_valid }}”sequence:
   - target:entity_id: select.h3pro_work_modedata:option: Force Dischargeaction: select.select_option
   - target:entity_id: number.h3pro_max_charge_currentdata:value: 0action: number.set_value
   - target:entity_id: number.h3pro_max_discharge_currentdata:value: 50action: number.set_value
     data:title: PV | FoxESS – Debugmessage: >Starker Tag erkannt ({{ peak_power_w | round(0) }} W).Entlade-Phase aktiv. Ladefenster bis {{ window_end_dt }}.action: notify.mobile_app_aloha
   - choose:
- conditions:
    condition: templatevalue_template: |{{ precharge_start is not noneand now() >= precharge_startand now() < window_end_dt }}sequence: default:
    wait_template: |{{ precharge_start is not none and now() >= precharge_start }}timeout: “12:00:00”continue_on_timeout: true
    choose:
- conditions:
    condition: templatevalue_template: “{{ now() < window_end_dt }}”sequence:
    target:entity_id: select.h3pro_work_modedata:option: Self Useaction: select.select_option
    target:entity_id: number.h3pro_max_charge_currentdata:value: 50action: number.set_value
    target:entity_id: number.h3pro_max_discharge_currentdata:value: 5action: number.set_value
    data:title: PV | FoxESS – Ladefenster
    aktivaction: notify.mobile_app_aloha
mode: single

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
s.a.: (Neues Update & Features - Hier in der Community 🫶)