Netzdienliche Steuerung PV

Warum Netzdienlichkeit, was ist das?

Die Energiewende bringt eine fundamentale Herausforderung mit sich: Unser Stromnetz wurde für zentrale Erzeugung gebaut, nicht für Millionen dezentraler Solaranlagen. Genau hier kommt Netzdienlichkeit ins Spiel – Netzdienlichkeit ist ein Konzept, bei dem die dezentralen Solaranlagen aktiv zur Netzstabilität beitragen.

Das Problem:

  • Vormittags laden Millionen PV-Anlagen ihren Speicher voll, obwohl es Strombedarf im Netz gibt.
  • Mittags speisen Millionen PV-Anlagen gleichzeitig Strom ins Netz ein, da ihr Speicher voll ist.
  • Dies führt zu Netzüberlastungen und teurem Redispatch

Die Lösung: Netzdienliches Verhalten

  • Statt den Speicher erst zu laden, unterstützen wir das Netz
  • Morgens: PV-Überschuss einspeisen (statt Batterie zu laden) → dämpft die Morgenlastspitze
  • Nachmittags: Batterie mit lokalem Überschuss laden → entlastet das Netz bei der Mittagsspitze
  • Ergebnis: Weniger Netzausbau, stabileres System, geringere Systemkosten

Die Automatisierung der PV-Anlage

verwendete Home Assistant Entitäten

  1. PV-Prognose (Solcast-Integration)
    • sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute: Prognose für die Rest-PV-Energie des Tages
    • sensor.solcast_pv_forecast_zeitpunkt_spitzenleistung_heute: Zeitpunkt der maximalen Leistung der eigenen PV-Anlage
  2. Batteriemanagement
    • sensor.deye8k_battery: Aktueller Ladestand des eigenen PV-Speichers
    • number.deye8k_battery_max_charging_current: Steuerung des Ladestroms der eigenen Batterie

Die Logik der Automatisierung im Detail

Schlüsselentscheidungen:

  1. Vor der PV-Spitze (morgens):
    • „Kann ich die Batterie später noch voll bekommen?“ → Nur wenn die Prognose knapp ist, wird geladen
    • Sonst: Einspeisung priorisieren → Entlastung der Morgenspitze mit Netzbezug
  2. Nach der PV-Spitze (nachmittags):
    • Batterie laden ->Entlastung der Mittagsspitze mit PV-Überschuss
  3. Sicherheitsfaktor (10%):
    • Berücksichtigt Umwandlungsverluste
    • Puffer für Prognoseungenauigkeiten

Konfigurationsanleitung für Home Assistant

Voraussetzungen:

  • Solcast-Integration, oder ähnliche PV-Vorhersage
  • Batterie Sensor für den Füllstand der Batterie
  • Möglichkeit das Laden der Batterie zu steuern

Schritt-für-Schritt:

  1. Neue Automatisierung anlegen
  2. YAML-Code einfügen:

Die eigenen Werte für den PV-Speicher können in der Automatisierung angepasst werden.

variables:
  battery_capacity: 10.0    # Batteriegröße in kWh
  max_charge_current: 100   # Maximalstrom WR
  max_fill_level: 99.5      # Maximaler Füllstand der Batterie in %
  safety_factor: 1.1         # Bei ungenauen Prognosen erhöhen
alias: Netzdienliche Batterieladesteuerung
description: Regelt Ladeleistung basierend auf Tageszeit, Batteriestand und PV-Prognose
triggers:
  - minutes: /45
    trigger: time_pattern
  - entity_id:
      - sensor.deye8k_battery
      - sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute
      - sensor.solcast_pv_forecast_zeitpunkt_spitzenleistung_heute
    trigger: state
actions:
  - variables:
      battery_level: "{{ states('sensor.deye8k_battery') | float }}"
      remaining_pv: >-
        {{
        states('sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute')
        | float }}
      peak_time_str: >-
        {{ states('sensor.solcast_pv_forecast_zeitpunkt_spitzenleistung_heute')
        }}
      battery_capacity: 25
      max_charge_current: 185
      max_fill_level: 99
      safety_factor: 1.1
      needed_energy: "{{ (battery_capacity * (100 - battery_level) / 100) }}"
      peak_time_ts: >-
        {{ as_timestamp(peak_time_str) if peak_time_str not in ['unknown',
        'unavailable', ''] else none }}
      is_after_peak: |-
        {% if peak_time_ts != none %}
          {{ now().timestamp() > peak_time_ts }}
        {% else %}
          false
        {% endif %}
  - if:
      - condition: template
        value_template: "{{ battery_level >= max_fill_level }}"
    then:
      - target:
          entity_id: number.deye8k_battery_max_charging_current
        data:
          value: 0
        action: number.set_value
    else:
      - if:
          - condition: template
            value_template: "{{ not is_after_peak }}"
        then:
          - if:
              - condition: template
                value_template: "{{ (remaining_pv * safety_factor) < needed_energy }}"
            then:
              - target:
                  entity_id: number.deye8k_battery_max_charging_current
                data:
                  value: "{{ max_charge_current }}"
                action: number.set_value
            else:
              - target:
                  entity_id: number.deye8k_battery_max_charging_current
                data:
                  value: 0
                action: number.set_value
        else:
          - target:
              entity_id: number.deye8k_battery_max_charging_current
            data:
              value: "{{ max_charge_current }}"
            action: number.set_value
mode: single

Warum machen wir das?

  1. Praktischer Klimaschutz:
    • Reduziert Netzausbaukosten
    • Ermöglicht höheren PV-Zubau ohne Netzengpässe
  2. Wirtschaftlicher Vorteil: (Wenn die Pläne zu dynamischen Netzentgelten umgesetzt werden)
    • Höhere Einspeisevergütung durch gezielte Einspeisung
    • Vermeidung teuren Netzausgleichsstroms
    • Höhere Einspeisevergütung durch gezielte Einspeisung
    • Vermeidung teuren Netzausgleichsstroms
  3. Technische Eleganz:
    • Nutzt vorhandene Hardware intelligent
    • Keine zusätzlichen Investitionen nötig

Netzdienlichkeit ist kein Verzicht, sondern intelligente Kooperation mit dem System.

Schreibe einen Kommentar