favstarmafia

joined 2 years ago
MODERATOR OF
[–] favstarmafia@feddit.org 2 points 1 month ago

Ich habe ein GIT dazu angelegt, falls jemand mit daran arbeiten will: https://codeberg.org/favstarmafia/PeakShave

[–] favstarmafia@feddit.org 1 points 1 month ago

Ich habe ein GIT dazu angelegt, falls jemand mit daran arbeiten will: https://codeberg.org/favstarmafia/PeakShave

 

Mach deine PV-Anlage mit Home Assistant netzdienlich: Prognosebasierte Einspeisespitzenkappung statt einfachem Peak-Shaving

Was mich dazu gebracht hat

An sonnigen Sommertagen läuft meine PV-Anlage mittags auf Hochtouren. Der Akku ist längst voll, und der Rest fließt ins Netz — genau dann, wenn tausende andere Anlagen dasselbe tun. Ich habe mich irgendwann gefragt: Ist das wirklich das Beste, was ich mit meiner Anlage und Home Assistant machen kann?

Die Antwort ist nein. Und dieser Artikel beschreibt, was ich stattdessen gebaut habe.

Es geht nicht darum, Geld zu sparen — das tue ich damit nicht, zumindest nicht direkt. Es geht darum zu verstehen, was möglich wäre, wenn das viele täten. Denn die Kosten für den Netzausbau, den diese Mittagsspitzen erzwingen, zahlen am Ende alle Haushalte über die Netzentgelte.

Was ist der Unterschied zu kommerziellem Peak-Shaving?

Hersteller wie SENEC bewerben ihre Speicher gerne mit dem Begriff "Peak-Shaving" oder "netzdienlichem Laden". Was dahinter steckt, ist allerdings bescheidener als der Name vermuten lässt: Der Akku wird morgens nicht sofort geladen, sondern der Überschuss wird zunächst eingespeist. Erst wenn die Produktion mittags ihren Höhepunkt erreicht, beginnt die Ladung des Akkus.

Das ist im Kern eine kleine Verschiebung der normalen Eigenverbrauchsoptimierung. Morgens speist die Anlage trotzdem ein, und es gibt keine garantierte freie Kapazität zum eigentlichen Mittagspeak. Der Netzeffekt ist entsprechend gering.

Mein Ansatz funktioniert anders, weshalb ich ihn bewusst prognosebasierte Einspeisespitzenkappung nenne:

Ich berechne jeden Morgen, wie viel die Anlage noch produzieren wird. Daraus ergibt sich, wie viel freie Kapazität ich im Akku brauche, um den Mittagspeak vollständig aufzunehmen. Ist der Akku zu voll, wird er aktiv entladen — bevor der Peak kommt. Der Produktionspeak fließt dann in den Akku statt ins Netz.

Kein Reagieren, sondern Planen.

Warum das trotzdem niemand macht

Weil es sich finanziell nicht lohnt. Der Akku wird mehr belastet, man verzichtet auf einen Teil der frühen Eigenverbrauchsoptimierung, und es gibt keine Vergütung dafür. Die Einsparung bei den Netzentgelten kommt bei allen an — auch bei denen, die nichts dazu beitragen.

Klassisches Kollektivgut-Problem.

Ich mache es trotzdem, weil ich verstehen will wie es geht und weil ich hoffe, dass andere die Idee aufgreifen. Wenn das zum Standard für Heimspeicher würde, könnten die Mittagsspitzen im Niederspannungsnetz erheblich reduziert werden — ohne dass dafür ein einziger Meter Kabel neu verlegt werden müsste.

Wie der Algorithmus funktioniert

Dieser Abschnitt richtet sich an alle — auch ohne technisches Vorwissen.

Die Grundidee

Zwei Fragen stehen im Mittelpunkt:

  1. Wie viel wird die Anlage heute noch produzieren?
  2. Wie viel freie Kapazität brauche ich dafür im Akku?

Aus diesen beiden Werten ergibt sich ein Ziel-SOC — also ein Zielwert für den Ladezustand kurz vor dem Fenster der maximalen Einspeisung, also der Phase, in der die Anlage am meisten produziert und ohne Steuerung am stärksten ins Netz einspeisen würde. Ist der Akku voller als dieser Zielwert, entlädt die Steuerung ihn aktiv: Zu diesem Zeitpunkt ist die PV-Produktion noch gering, der Akku übernimmt die Hausversorgung und wird dabei auf den Zielwert entladen. Ist er schon leer genug, passiert nichts.

Ein Beispiel: Die Prognose sagt 8 kWh für den Rest des Tages. Der Akku fasst 10 kWh. Dann sollte der Ladezustand vor dem Fenster der maximalen Einspeisung bei etwa 20 % liegen. Steht er gerade bei 75 %, muss er vorher entladen werden.

Wann genau?

Die Steuerung berechnet aus dem Fenster der maximalen Einspeisung und der Ladegeschwindigkeit des Akkus zwei Zeitpunkte:

  • Startzeit: Genau so früh wie nötig, damit der Akku rechtzeitig den Ziel-SOC erreicht — nicht früher. Bei sich verschlechternder Prognose verschiebt sich der Start automatisch nach hinten oder entfällt ganz.
  • Stoppzeit: So gewählt, dass die anschließende Ladephase symmetrisch um den prognostizierten Peak liegt — also etwa eine halbe Ladezeit vor dem Peak. Der Stopp greift wenn beide Bedingungen erfüllt sind: die berechnete Stoppzeit ist erreicht UND der SOC liegt innerhalb von 10 Prozentpunkten über dem Zielwert. Das verhindert, dass die Entladung stoppt obwohl der Akku noch deutlich zu voll ist.

Das Startfenster ist bewusst schmal (30 Minuten), damit die Steuerung nicht zu früh reagiert und bei wechselhaftem Wetter keine unnötigen Entladezyklen entstehen.

Woher kommt das Fenster der maximalen Einspeisung — besonders bei Ost-West-Anlagen

Bei einer reinen Südausrichtung ist das Fenster der maximalen Einspeisung leicht zu bestimmen: irgendwann kurz nach Mittag. Bei einer Ost-West-Anlage wie meiner ist es komplizierter: Morgens produziert die Ostseite, abends die Westseite — das Gesamtmaximum liegt irgendwo dazwischen und verschiebt sich je nach Jahreszeit und Wetter.

Die Lösung ist ein gewichteter Mittelwert aus den Peakzeiten beider Seiten, wobei die installierte Leistung als Gewicht dient:

Peakzeit = (Peakzeit Ost × kWp Ost + Peakzeit West × kWp West) ÷ (kWp Ost + kWp West)

Bei meiner Anlage mit 3,6 kWp Ost und 2,0 kWp West fließt die Ostseite also stärker in die Berechnung ein. Wer eine andere Aufteilung hat, passt die Zahlen entsprechend an — das Prinzip funktioniert für jede Kombination.

Zwei Prognosequellen

Ich verwende zwei Wetterdienste parallel:

  • Forecast.Solar liefert die Energiemenge (kWh) für heute und den Restanteil — diese Werte fließen direkt in die Berechnung des Ziel-SOC ein.
  • OpenMeteo liefert die Peakzeiten für Ost- und Westseite getrennt.

Beide verhalten sich merklich unterschiedlich — Forecast.Solar ist in meiner Erfahrung deutlich konservativer als OpenMeteo. Da die Prognosequalität direkt die Steuerung beeinflusst, gibt es einen einstellbaren Korrekturfaktor, mit dem man die Prognose nach oben oder unten skalieren kann. Nach einigen Wochen Daten lässt sich dieser Wert auf die eigene Anlage kalibrieren.

Kein Netzbezug — oberstes Ziel, keine Garantie

Wenn die Steuerung den Akku entlädt, soll das nicht dazu führen, dass später Strom aus dem Netz bezogen werden muss. Das ist das oberste Ziel — aber keine Garantie. Bei einer zu optimistischen Prognose kann der Akku zu stark entladen werden, die PV liefert weniger als erwartet, und es entsteht trotzdem Netzbezug für mehrere Stunden. Dafür gibt es zwei Schutzebenen:

Ein konfigurierbarer Mindest-SOC (Standard: 15 %) sorgt dafür, dass der Akku nie vollständig leer entladen wird. Und sobald die Steuerung erkennt, dass trotzdem Netzbezug entsteht — etwa weil ein Verbraucher kurz viel zieht — schaltet sie sofort zurück in den normalen Eigenverbrauchsmodus.

Ein ehrlicher Hinweis zur Akkubelastung

Durch das aktive Entladen vor dem Peak durchläuft der Akku täglich einen zusätzlichen Lade- und Entladevorgang — je nach Prognose mit unterschiedlicher Tiefe. An einem typischen Sommertag bedeutet das eine Entladung von z.B. 75 % auf 20 % vor dem Peak und anschließend eine Volladung durch die PV. Das entspricht annähernd einem zusätzlichen Vollzyklus pro Tag. Da die Steuerung nur im Sommer aktiv ist, landet man über das Jahr bei grob geschätzt 40–60 % mehr Vollzyklen als ohne diese Steuerung — der genaue Wert hängt stark von Wetter, Anlagengröße und Eigenverbrauch ab. Moderne LFP-Akkus sind für sehr viele tausend Zyklen ausgelegt — aber wer einen älteren oder kleineren Akku hat, sollte das einkalkulieren.


Die Umsetzung mit Home Assistant

Ab hier wird es technischer. Dieser Abschnitt richtet sich an Nutzer, die sich mit Home Assistant bereits auskennen und schon mit Automatisierungen und Blueprints gearbeitet haben.

Meine Komponenten

  • PV-Anlage: Ost-West, 3,6 kWp Ost (Azimut 90°, 25° Neigung) + 2,0 kWp West (Azimut 270°, 25° Neigung)
  • Wechselrichter: Huawei SUN2000-5KTL-M1 mit Huawei Solar Custom Integration
  • Heimspeicher: 10 kWh LUNA 2000, Entladeleistung 3,4 kW
  • Prognosedienste: Forecast.Solar Integration und OpenMeteo Solar Forecast Integration

Wie die Teile zusammenspielen

Die Steuerung besteht aus drei Bausteinen:

Template-Sensoren berechnen die gewichteten Peakzeiten aus den Rohdaten beider Prognosedienste. Diese Sensoren sind die Grundlage für die Zeitplanung im Blueprint und müssen einmalig in der configuration.yaml angelegt werden (siehe Anhang).

Das Blueprint enthält die eigentliche Steuerungslogik: Ziel-SOC berechnen, Start- und Stoppzeiten bestimmen, und den Betriebsmodus des Wechselrichters schalten. Es läuft als normaler HA-Trigger alle 5 Minuten sowie bei bestimmten Ereignissen.

Der Wechselrichter kennt verschiedene Betriebsmodi. Im Modus maximise_self_consumption optimiert er den Eigenverbrauch normal. Im Modus fully_fed_to_grid entlädt der Akku aktiv ins Hausnetz. Zwischen diesen beiden Modi schaltet das Blueprint hin und her. Wer einen anderen Wechselrichter hat, braucht entsprechende Schaltmöglichkeiten — das Prinzip ist übertragbar, die konkreten Entitätsnamen müssen angepasst werden. Ein LLM kann dabei gut helfen.

Was zwingend erforderlich ist

Wer das Blueprint adaptieren möchte, braucht diese Bausteine — unabhängig vom Hersteller:

Sensoren (lesend):

  • Aktueller Ladezustand des Akkus in Prozent
  • Aktuelle PV-Produktion in Watt
  • Aktuelle Lade- oder Entladeleistung des Akkus in Watt (mit Vorzeichen — positiv = laden, negativ = entladen)
  • Netzbezug in kW (live)
  • Heutige Gesamtprognose in kWh
  • Restprognose für heute in kWh
  • Gewichteter Peakzeit-Sensor in HH:MM (Template-Sensor, siehe Anhang)

Steuerung (schreibend):

  • Schaltbarer Betriebsmodus des Wechselrichters oder Speichers — mindestens Eigenverbrauch und aktive Entladung

Hilfs-Entität:

  • Ein input_text für den zuletzt ausgeführten Fall — wird vom Blueprint beschrieben und hilft bei der Fehlersuche

Optionale Erweiterung: Akku-Richtung als Sensor

Nützlich für die Beobachtung des Systems ist ein einfacher Template-Sensor, der den aktuellen Akkuzustand als lesbaren Text darstellt: laden, entladen oder idle. Mit einer 100W-Schwelle werden kurze Schwankungen herausgefiltert. Dieser Sensor lässt sich auch als Trigger für ein erweitertes Logging verwenden — immer wenn der Akku die Richtung wechselt, wird ein Datensatz geschrieben. Das macht den Tagesverlauf später gut auswertbar.


Aktueller Stand und Ausblick

Die Steuerung läuft seit kurzem und ich beobachte die ersten Ergebnisse. Der Korrekturfaktor steht noch auf dem Standardwert 1,0 — nach ausreichend Vergleichsdaten zwischen Prognose und tatsächlichem Ertrag werde ich ihn kalibrieren. Was ich dabei lerne, werde ich direkt in diesen Artikel einfließen lassen.

Fragen, Erfahrungen aus anderen Anlagen und Anpassungen für andere Wechselrichter sind sehr willkommen.

Dieser Artikel wird aktiv weiterentwickelt. Die Steuerung läuft seit kurzem, Daten zur Prognosequalität und Kalibrierung des Korrekturfaktors folgen in einigen Wochen. Wer das Blueprint bereits adaptiert oder Erfahrungen mit ähnlichen Ansätzen hat, ist eingeladen das hier zu diskutieren — das hilft dabei, den Artikel zu verbessern.


Anhang: Code

Template-Sensor: Gewichtete Peakzeit (OpenMeteo)

Dieser Sensor berechnet die gewichtete Peakzeit aus den OpenMeteo-Peakzeiten für Ost- und Westseite. Die Gewichte (3600 und 2000) entsprechen den installierten Watt-Peak — diese Werte müssen auf die eigene Anlage angepasst werden. Der Divisor (5600) ist die Summe beider Werte.

In der configuration.yaml unter dem template: Block einfügen:

- name: "PV Peak Zeit Gewichtet"
  unique_id: pv_peak_zeit_gewichtet
  icon: mdi:clock-outline
  state: >
    {% set t_ost = states('sensor.solar_ost_power_highest_peak_time_today') %}
    {% set t_west = states('sensor.solar_west_power_highest_peak_time_today') %}
    {% if t_ost not in ['unknown', 'unavailable', ''] and t_west not in ['unknown', 'unavailable', ''] %}
      {% set ost_min = (t_ost | as_timestamp | timestamp_custom('%H:%M', true))[0:2] | int * 60
                     + (t_ost | as_timestamp | timestamp_custom('%H:%M', true))[3:5] | int %}
      {% set west_min = (t_west | as_timestamp | timestamp_custom('%H:%M', true))[0:2] | int * 60
                       + (t_west | as_timestamp | timestamp_custom('%H:%M', true))[3:5] | int %}
      {% set peak = (ost_min * 3600 + west_min * 2000) / 5600 %}
      {{ '%02d:%02d' | format((peak // 60) | int, (peak % 60) | int) }}
    {% else %}
      unknown
    {% endif %}

Template-Sensor: Gewichtete Peakzeit (Forecast.Solar, optional)

Wer beide Prognosedienste vergleichen möchte, kann zusätzlich diesen Sensor anlegen. Die Sensornamen sensor.power_highest_peak_time_today und sensor.power_highest_peak_time_today_2 stammen aus der Forecast.Solar Integration — _2 bezeichnet die zweite konfigurierte Anlagenausrichtung.

- name: "PV Peak Zeit Gewichtet Forecast Solar"
  unique_id: pv_peak_zeit_gewichtet_forecast_solar
  icon: mdi:clock-outline
  state: >
    {% set t_ost = states('sensor.power_highest_peak_time_today') %}
    {% set t_west = states('sensor.power_highest_peak_time_today_2') %}
    {% if t_ost not in ['unknown', 'unavailable', ''] and t_west not in ['unknown', 'unavailable', ''] %}
      {% set ost_min = (t_ost | as_timestamp | timestamp_custom('%H:%M', true))[0:2] | int * 60
                     + (t_ost | as_timestamp | timestamp_custom('%H:%M', true))[3:5] | int %}
      {% set west_min = (t_west | as_timestamp | timestamp_custom('%H:%M', true))[0:2] | int * 60
                       + (t_west | as_timestamp | timestamp_custom('%H:%M', true))[3:5] | int %}
      {% set peak = (ost_min * 3600 + west_min * 2000) / 5600 %}
      {{ '%02d:%02d' | format((peak // 60) | int, (peak % 60) | int) }}
    {% else %}
      unknown
    {% endif %}

Template-Sensor: Akku-Richtung (optional, für Logging)

- name: "Akku Richtung"
  unique_id: akku_richtung
  icon: mdi:battery-arrow-up
  state: >
    {% set w = states('sensor.batterien_lade_entladeleistung') | float(0) %}
    {% if w > 100 %}
      laden
    {% elif w < -100 %}
      entladen
    {% else %}
      idle
    {% endif %}

Das Blueprint

Die Sensornamen (sensor.batterien_batterieladung, sensor.energy_production_today_remaining etc.) und Betriebsmodi (maximise_self_consumption, fully_fed_to_grid) stammen aus der Huawei Solar Integration und müssen für andere Systeme angepasst werden. Die Steuerungslogik selbst ist herstellerunabhängig.

blueprint:
  name: "PV Peak-Shave v2 (Akku symmetrisch um Peak)"
  description: >
    Entlädt den Akku rechtzeitig vor dem PV-Peak ins Netz, sodass die
    verfügbare Akku-Kapazität symmetrisch um den prognostizierten
    Peak-Zeitpunkt herum geladen werden kann. Der Ziel-SOC wird dynamisch
    aus der verbleibenden PV-Restprognose berechnet.

    Anker für die Berechnung: sensor.pv_peak_zeit_gewichtet
    (gewichteter Mittelwert OpenMeteo Ost/West).

    Höchste Priorität: kein Netzbezug.
  domain: automation

  input:

    min_ziel_soc:
      name: Min Ziel-SOC beim Entladen (%)
      description: >
        Sicherheitspuffer – der Akku wird nie unter diesen SOC entladen,
        auch wenn die Restprognose eine tiefere Entladung erlauben würde.
      default: 15
      selector:
        number:
          min: 5
          max: 50
          step: 5
          unit_of_measurement: "%"

    prognose_korrekturfaktor:
      name: Prognose-Korrekturfaktor
      description: >
        Multiplikator auf die Forecast.Solar Restprognose.
        1.0 = keine Korrektur, 0.8 = 20% Abschlag.
        Nach einigen Wochen Daten anpassen.
      default: 1.0
      selector:
        number:
          min: 0.5
          max: 1.5
          step: 0.05

    netzbezug_schwelle:
      name: Netzbezugs-Schwelle (W)
      description: >
        Wenn der Netzbezug diesen Wert überschreitet, wird sofort auf
        Maximaler Eigenverbrauch zurückgeschaltet.
      default: 500
      selector:
        number:
          min: 100
          max: 2000
          step: 50
          unit_of_measurement: W

    netzbezug_dauer:
      name: Netzbezugs-Dauer vor Abbruch (s)
      description: >
        Der Netzbezug muss diese Zeit lang über der Schwelle liegen,
        bevor abgebrochen wird (verhindert kurze Spitzen).
      default: 60
      selector:
        number:
          min: 10
          max: 300
          step: 10
          unit_of_measurement: s

mode: single
max_exceeded: silent

trigger:
  - platform: time_pattern
    minutes: "/5"
    id: "tick"

  - platform: numeric_state
    entity_id: sensor.batterien_batterieladung
    below: !input min_ziel_soc
    id: "min_soc_unterschritten"

  - platform: numeric_state
    entity_id: sensor.netzbezug_live
    above: !input netzbezug_schwelle
    for:
      seconds: !input netzbezug_dauer
    id: "netzbezug_alarm"

variables:
  min_ziel_soc_var: !input min_ziel_soc
  prognose_korrekturfaktor_var: !input prognose_korrekturfaktor
  netzbezug_schwelle_var: !input netzbezug_schwelle

  # Anlagen-Konstanten – auf eigene Anlage anpassen
  # Hier die kleinere der beiden Leistungen (Laden/Entladen) eintragen –
  # bei asymmetrischen Speichern ergibt das einen konservativeren, also früheren Stoppzeitpunkt.
  speicher_kwh: 10
  entladeleistung_kw: 3.4
  ladeleistung_kw: 3.4

  # Dynamischer Ziel-SOC aus Restprognose
  restprognose_kwh: >
    {{ (states('sensor.energy_production_today_remaining') | float(0)
      + states('sensor.energy_production_today_remaining_2') | float(0))
      * prognose_korrekturfaktor_var }}
  ziel_soc_var: >
    {{ [100 - (restprognose_kwh / speicher_kwh * 100) | int, min_ziel_soc_var] | max }}

  # Peak-Zeit aus gewichtetem Sensor
  peak_str: "{{ states('sensor.pv_peak_zeit_gewichtet') }}"
  peak_ts: >
    {% if peak_str not in ['unknown', 'unavailable', ''] %}
      {{ today_at(peak_str) | as_timestamp(0) }}
    {% else %}
      0
    {% endif %}

  # Berechnete Zeiten
  aufnahme_kwh: "{{ (100 - ziel_soc_var) / 100 * speicher_kwh }}"
  halbe_ladezeit_min: "{{ (aufnahme_kwh / ladeleistung_kw * 60 / 2) | int }}"
  stopp_ts: "{{ peak_ts - halbe_ladezeit_min * 60 if peak_ts > 0 else 0 }}"
  soc_aktuell: "{{ states('sensor.batterien_batterieladung') | float(0) }}"
  entladbar_kwh: "{{ (soc_aktuell - ziel_soc_var) / 100 * speicher_kwh }}"
  entladezeit_min: "{{ (entladbar_kwh / entladeleistung_kw * 60) | int }}"
  start_ts: "{{ stopp_ts - entladezeit_min * 60 if stopp_ts > 0 else 0 }}"

action:
  - choose:

      # ══════════════════════════════════════════════════════════════
      # FALL A: Notabbruch – Netzbezug zu hoch
      # ══════════════════════════════════════════════════════════════
      - conditions:
          - condition: trigger
            id: "netzbezug_alarm"
          - condition: state
            entity_id: select.batterien_betriebsmodus
            state: "fully_fed_to_grid"
        sequence:
          - action: input_text.set_value
            target:
              entity_id: input_text.peakshave_letzter_fall
            data:
              value: >
                A|{{ peak_str }}|{{ stopp_ts | timestamp_custom('%H:%M', true) if stopp_ts > 0 else 'n/a' }}|{{ start_ts | timestamp_custom('%H:%M', true) if start_ts > 0 else 'n/a' }}|{{ entladezeit_min }}|{{ halbe_ladezeit_min }}|{{ ziel_soc_var | round(0) }}|{{ restprognose_kwh | round(1) }}
          - action: select.select_option
            target:
              entity_id: select.batterien_betriebsmodus
            data:
              option: maximise_self_consumption

      # ══════════════════════════════════════════════════════════════
      # FALL B: Sicherheitsstopp – Min-SOC unterschritten
      # ══════════════════════════════════════════════════════════════
      - conditions:
          - condition: trigger
            id: "min_soc_unterschritten"
          - condition: state
            entity_id: select.batterien_betriebsmodus
            state: "fully_fed_to_grid"
        sequence:
          - action: input_text.set_value
            target:
              entity_id: input_text.peakshave_letzter_fall
            data:
              value: >
                B|{{ peak_str }}|{{ stopp_ts | timestamp_custom('%H:%M', true) if stopp_ts > 0 else 'n/a' }}|{{ start_ts | timestamp_custom('%H:%M', true) if start_ts > 0 else 'n/a' }}|{{ entladezeit_min }}|{{ halbe_ladezeit_min }}|{{ ziel_soc_var | round(0) }}|{{ restprognose_kwh | round(1) }}
          - action: select.select_option
            target:
              entity_id: select.batterien_betriebsmodus
            data:
              option: maximise_self_consumption

      # ══════════════════════════════════════════════════════════════
      # FALL D: Geplanter Stopp – Stoppzeit erreicht UND SOC nahe Zielwert
      # Beide Bedingungen müssen erfüllt sein: now >= stopp_ts
      # und soc_aktuell <= ziel_soc_var + 10 (Toleranzpuffer)
      # ══════════════════════════════════════════════════════════════
      - conditions:
          - condition: trigger
            id: "tick"
          - condition: state
            entity_id: select.batterien_betriebsmodus
            state: "fully_fed_to_grid"
          - condition: template
            value_template: >
              {% if peak_ts == 0 %}
                false
              {% else %}
                {{ now().timestamp() >= stopp_ts and soc_aktuell <= ziel_soc_var + 10 }}
              {% endif %}
        sequence:
          - action: input_text.set_value
            target:
              entity_id: input_text.peakshave_letzter_fall
            data:
              value: >
                D|{{ peak_str }}|{{ stopp_ts | timestamp_custom('%H:%M', true) if stopp_ts > 0 else 'n/a' }}|{{ start_ts | timestamp_custom('%H:%M', true) if start_ts > 0 else 'n/a' }}|{{ entladezeit_min }}|{{ halbe_ladezeit_min }}|{{ ziel_soc_var | round(0) }}|{{ restprognose_kwh | round(1) }}
          - action: select.select_option
            target:
              entity_id: select.batterien_betriebsmodus
            data:
              option: maximise_self_consumption

      # ══════════════════════════════════════════════════════════════
      # FALL E: Geplanter Start
      # ══════════════════════════════════════════════════════════════
      - conditions:
          - condition: trigger
            id: "tick"
          - condition: not
            conditions:
              - condition: state
                entity_id: select.batterien_betriebsmodus
                state: "fully_fed_to_grid"
          - condition: state
            entity_id: sun.sun
            state: "above_horizon"
          - condition: template
            value_template: >
              {{ restprognose_kwh >= (100 - ziel_soc_var) / 100 * speicher_kwh }}
          - condition: template
            value_template: >
              {{ soc_aktuell > ziel_soc_var + 5 }}
          - condition: template
            value_template: >
              {% if peak_ts == 0 %}
                false
              {% else %}
                {% set jetzt = now().timestamp() %}
                {{ jetzt >= start_ts and jetzt < (start_ts + 1800) }}
              {% endif %}
        sequence:
          - action: input_text.set_value
            target:
              entity_id: input_text.peakshave_letzter_fall
            data:
              value: >
                E|{{ peak_str }}|{{ stopp_ts | timestamp_custom('%H:%M', true) if stopp_ts > 0 else 'n/a' }}|{{ start_ts | timestamp_custom('%H:%M', true) if start_ts > 0 else 'n/a' }}|{{ entladezeit_min }}|{{ halbe_ladezeit_min }}|{{ ziel_soc_var | round(0) }}|{{ restprognose_kwh | round(1) }}
          - action: select.select_option
            target:
              entity_id: select.batterien_betriebsmodus
            data:
              option: fully_fed_to_grid
 

Was ist das hier?

Eine Home Assistant Automation (Blueprint) die meinen Hausakku vor der solaren Mittagsspitze gezielt ins Netz entlädt - damit der Akku leer ist wenn die PV-Spitze kommt und diese vollständig aufgenommen werden kann, statt ins Netz zu drücken. Das Ziel ist Netzdienlichkeit, nicht Gewinnmaximierung.


Warum Peak-Shave?

Das Stromnetz hat täglich ein massives Problem: Zwischen 11 und 14 Uhr speisen Millionen PV-Anlagen gleichzeitig ins Netz ein. Die Netzfrequenz steigt, Regelenergie wird teuer, im Extremfall müssen Anlagen abgeregelt werden.

Ein Hausakku könnte helfen — aber nur wenn er zur richtigen Zeit leer ist. Im Normalbetrieb lädt der Akku am Morgen und ist zur Mittagsspitze bereits voll. Er kann dann die PV-Spitze nicht mehr aufnehmen und die überschüssige Energie geht trotzdem ins Netz.

Die Idee: Den Akku vor dem Peak aktiv entladen, damit er die Spitze aufnehmen kann. Der Akku verhält sich dann wie ein Grünspeicher — er verschiebt Energie zeitlich statt sie zu verschleiern.


Voraussetzungen

Hardware:

  • Huawei SUN2000 Wechselrichter (M1 oder MB0 Serie)
  • Huawei LUNA2000 Batteriespeicher
  • Huawei Smart Dongle (WLAN-FE oder 4G)

Software:

Benötigte Entitäten:

  • select.batterien_betriebsmodus — Betriebsmodus umschalten
  • sensor.batterien_batterieladung — aktueller SOC in %
  • sensor.netzbezug_live — aktueller Netzbezug in W
  • sensor.sun_next_noon — Zeitpunkt des nächsten Sonnenhöchststands
  • sensor.energy_production_today — Tagesprognose Ost-Dach (Forecast.Solar)
  • sensor.energy_production_today_2 — Tagesprognose West-Dach (Forecast.Solar)
  • sensor.energy_production_today_remaining — Restprognose ab jetzt
  • sensor.energy_production_today_remaining_2 — Restprognose ab jetzt (zweiter String)

Die Entity-IDs können bei eurer Installation abweichen — bitte anpassen.


Die Logik in einfacher Sprache

Wann startet die Automation?

Einmal täglich wird geprüft ob Peak-Shave heute sinnvoll ist:

  • Die Tagesprognose muss über einem einstellbaren Schwellwert liegen (Standard 15 kWh)
  • Der Akku muss genug Ladung haben (mehr als Ziel-SOC + 5%)
  • Die Sonne muss aufgegangen sein
  • Es muss noch genug Zeit bis zum Sonnenhöchststand sein

Wann genau startet sie?

Der Startzeitpunkt wird dynamisch berechnet:

Startzeit = Solar-Noon − Puffer (90 Min.) − Entladezeit − 10 Min. Sicherheit

Die Entladezeit hängt vom aktuellen SOC ab — je voller der Akku, desto früher startet die Automation. Bei SOC 80% und 5 kW Entladeleistung dauert es etwa 100 Minuten den Akku auf 20% zu entladen. Die Automation startet dann entsprechend früher.

Was passiert während des Entladens?

Der Wechselrichter wird auf fully_fed_to_grid gesetzt — PV-Strom und Akkustrom gehen ins Netz. Die Automation läuft still im Hintergrund und überwacht drei Stopp-Bedingungen.

Fünf Fälle — klare Prioritäten

Fall A — Kein Netzbezug (höchste Priorität) Wenn der Netzbezug über 500 W für 60 Sekunden steigt, wird Peak-Shave sofort abgebrochen. Eigenverbrauch hat immer Vorrang. Die 60-Sekunden-Verzögerung verhindert Abbrüche durch kurze Leistungsspitzen.

Fall B — SOC-Ziel erreicht Wenn der Akku den eingestellten Mindest-SOC (Standard 20%) erreicht, wird zurück auf Eigenverbrauch geschaltet. Der Akku behält einen Sicherheitspuffer.

Fall C — Noon-Stopp Spätestens 90 Minuten vor dem Sonnenhöchststand wird gestoppt — damit genug Zeit bleibt den Akku von der PV-Spitze wieder vollzuladen.

Fall D — Startzeit-Check Alle 5 Minuten wird geprüft ob die berechnete Startzeit erreicht ist. Das 6-Minuten-Startfenster stellt sicher dass die Automation nicht mehrfach startet.

Fall E — Restprognose-Wächter Während des Entladens wird alle 5 Minuten geprüft ob die verbleibende PV-Prognose noch ausreicht um den Akku wieder vollzuladen. Wenn nicht — sofortiger Stopp. Das verhindert dass der Akku abends zu leer ist weil Wolken die Prognose zunichte gemacht haben.

Stopp wenn: Restprognose < (10 kWh − Akku aktuell in kWh)

Wirtschaftlichkeit

Das Ergebnis ist wirtschaftlich knapp negativ — das ist beabsichtigt:

  • Einspeisevergütung: ~8,5 ct/kWh
  • Zusätzlicher Akkuverschleiß: ~1,08 € pro Vollzyklus (6.500 € Akku ÷ 6.000 Zyklen)
  • Ca. 100 Peak-Shave Tage pro Jahr × 0,58 Extra-Zyklen = ~63 € Verschleiß
  • Ca. 100 Tage × 10 kWh × 8,5 ct = ~85 € Einnahmen
  • Ergebnis: ~22 € Gewinn pro Jahr — kaum über Break-even

Wer Peak-Shave wirtschaftlich betreiben will braucht eine höhere Einspeisevergütung oder dynamische Tarife. Das hier ist bewusst ein Beitrag zur Netzdienlichkeit — kein Geschäftsmodell.


Einstellbare Parameter

Parameter Standard Beschreibung
Prognose-Schwelle 15 kWh Mindest-Tagesprognose für Start
Ziel-SOC 20% Mindest-SOC beim Entladen
Stopp vor Solar-Noon 90 Min. Sicherheitspuffer für Nachladen
Netzbezugs-Schwelle 500 W Ab wann wird abgebrochen
Netzbezugs-Dauer 60 Sek. Wie lange muss Netzbezug anliegen

Hinweis zur Prognose-Schwelle: Forecast.Solar liegt in meiner Erfahrung systematisch 20-30% zu niedrig. Ich habe die Schwelle deshalb von 15 auf 12 kWh gesenkt. Wer genaue Prognosedaten hat kann höher ansetzen.

Hinweis zum Ziel-SOC: Mit Fall E als Sicherheitsnetz kann der Ziel-SOC aggressiver eingestellt werden — z.B. 10%. Fall E stoppt die Entladung automatisch wenn danach nicht mehr genug PV kommt um den Akku wieder vollzuladen.


Das Blueprint YAML

blueprint:
  name: "PV Peak-Shave Einspeisung (Grünspeicher)"
  description: >
    Entlädt den Akku vor dem solaren Höchststand gezielt ins Netz (fully_fed_to_grid),
    damit der Akku zur PV-Spitze leer ist und wieder vollgeladen werden kann.
    Verhält sich wie ein Grünspeicher mit Peak-Shave.
    Höchste Priorität: kein Netzbezug.
  domain: automation
  input:

    prognose_schwelle:
      name: Prognose-Schwelle (kWh)
      description: >
        Mindest-Tagesprognose damit die Automation überhaupt startet.
        Unter diesem Wert passiert nichts.
      default: 15
      selector:
        number:
          min: 5
          max: 40
          step: 0.5
          unit_of_measurement: kWh

    ziel_soc:
      name: Ziel-SOC beim Entladen (%)
      description: >
        Bis auf diesen SOC wird der Akku vor dem PV-Peak entladen.
        20% = 2 kWh Sicherheitspuffer bei 10 kWh Akku.
      default: 20
      selector:
        number:
          min: 5
          max: 50
          step: 5
          unit_of_measurement: "%"

    minuten_vor_noon:
      name: Stopp vor Solar-Noon (Minuten)
      description: >
        Spätestens so viele Minuten vor dem solaren Höchststand wird
        auf Maximaler Eigenverbrauch zurückgeschaltet.
      default: 90
      selector:
        number:
          min: 30
          max: 180
          step: 15
          unit_of_measurement: min

    netzbezug_schwelle:
      name: Netzbezugs-Schwelle (W)
      description: >
        Wenn der Netzbezug diesen Wert überschreitet, wird sofort auf
        Maximaler Eigenverbrauch zurückgeschaltet.
      default: 500
      selector:
        number:
          min: 100
          max: 2000
          step: 50
          unit_of_measurement: W

    netzbezug_dauer:
      name: Netzbezugs-Dauer vor Abbruch (Sekunden)
      description: >
        Der Netzbezug muss diese Zeit lang über der Schwelle liegen,
        bevor abgebrochen wird (verhindert kurze Spitzen).
      default: 60
      selector:
        number:
          min: 10
          max: 300
          step: 10
          unit_of_measurement: s

mode: queued
max: 2
max_exceeded: silent

trigger:
  - platform: time_pattern
    minutes: "/5"
    id: "check_startzeit"

  - platform: numeric_state
    entity_id: sensor.batterien_batterieladung
    below: !input ziel_soc
    id: "soc_ziel_erreicht"

  - platform: numeric_state
    entity_id: sensor.netzbezug_live
    above: !input netzbezug_schwelle
    for:
      seconds: 60
    id: "netzbezug_alarm"

  - platform: time_pattern
    minutes: "/5"
    id: "check_noon_stopp"

variables:
  prognose_schwelle_var: !input prognose_schwelle
  ziel_soc_var: !input ziel_soc
  minuten_vor_noon_var: !input minuten_vor_noon
  netzbezug_schwelle_var: !input netzbezug_schwelle

action:
  - choose:

    # ══════════════════════════════════════════════════════════════════
    # FALL A: Notfall-Abbruch – Netzbezug zu hoch (höchste Priorität)
    # ══════════════════════════════════════════════════════════════════
    - conditions:
        - condition: trigger
          id: "netzbezug_alarm"
        - condition: state
          entity_id: select.batterien_betriebsmodus
          state: "fully_fed_to_grid"
      sequence:
        - action: select.select_option
          target:
            entity_id: select.batterien_betriebsmodus
          data:
            option: maximise_self_consumption
        - action: system_log.write
          data:
            message: >
              PV Peak-Shave: ABBRUCH – Netzbezug
              {{ states('sensor.netzbezug_live') | round(0) }} W
              über Schwelle {{ netzbezug_schwelle_var }} W.
            level: warning

    # ══════════════════════════════════════════════════════════════════
    # FALL B: SOC-Ziel erreicht
    # ══════════════════════════════════════════════════════════════════
    - conditions:
        - condition: trigger
          id: "soc_ziel_erreicht"
        - condition: state
          entity_id: select.batterien_betriebsmodus
          state: "fully_fed_to_grid"
      sequence:
        - action: select.select_option
          target:
            entity_id: select.batterien_betriebsmodus
          data:
            option: maximise_self_consumption
        - action: system_log.write
          data:
            message: >
              PV Peak-Shave: SOC {{ states('sensor.batterien_batterieladung') | round(0) }} %
              <= Ziel {{ ziel_soc_var }} %. Zurück auf Eigenverbrauch.
            level: info

    # ══════════════════════════════════════════════════════════════════
    # FALL C: Solar-Noon naht – Noon-Stopp
    # ══════════════════════════════════════════════════════════════════
    - conditions:
        - condition: trigger
          id: "check_noon_stopp"
        - condition: state
          entity_id: select.batterien_betriebsmodus
          state: "fully_fed_to_grid"
        - condition: template
          value_template: >
            {% set noon_ts = states('sensor.sun_next_noon') | as_timestamp(0) %}
            {% set now_ts = now().timestamp() %}
            {% set minuten_bis_noon = (noon_ts - now_ts) / 60 %}
            {{ minuten_bis_noon <= minuten_vor_noon_var and minuten_bis_noon >= 0 }}
      sequence:
        - action: select.select_option
          target:
            entity_id: select.batterien_betriebsmodus
          data:
            option: maximise_self_consumption
        - action: system_log.write
          data:
            message: >
              PV Peak-Shave: Noon-Stopp –
              {{ ((states('sensor.sun_next_noon') | as_timestamp(0) - now().timestamp()) / 60) | round(0) }}
              Min. bis Solar-Noon.
            level: info

    # ══════════════════════════════════════════════════════════════════
    # FALL E: Restprognose reicht nicht mehr für vollen Akku
    # ══════════════════════════════════════════════════════════════════
    - conditions:
        - condition: trigger
          id: "check_noon_stopp"
        - condition: state
          entity_id: select.batterien_betriebsmodus
          state: "fully_fed_to_grid"
        - condition: template
          value_template: >
            {% set verbleibend = states('sensor.energy_production_today_remaining') | float(0)
                               + states('sensor.energy_production_today_remaining_2') | float(0) %}
            {% set akku_kwh = (states('sensor.batterien_batterieladung') | float(0) / 100) * 10 %}
            {{ verbleibend < (10 - akku_kwh) }}
      sequence:
        - action: select.select_option
          target:
            entity_id: select.batterien_betriebsmodus
          data:
            option: maximise_self_consumption
        - action: system_log.write
          data:
            message: >
              PV Peak-Shave: Stopp – Restprognose
              {{ (states('sensor.energy_production_today_remaining') | float(0) +
                  states('sensor.energy_production_today_remaining_2') | float(0)) | round(1) }} kWh
              reicht nicht für vollen Akku
              (aktuell {{ (states('sensor.batterien_batterieladung') | float(0) / 100 * 10) | round(1) }} kWh).
            level: info

    # ══════════════════════════════════════════════════════════════════
    # FALL D: Startzeit-Check – Peak-Shave starten
    # ══════════════════════════════════════════════════════════════════
    - conditions:
        - condition: trigger
          id: "check_startzeit"
        - condition: not
          conditions:
            - condition: state
              entity_id: select.batterien_betriebsmodus
              state: "fully_fed_to_grid"
        - condition: state
          entity_id: sun.sun
          state: "above_horizon"
        - condition: template
          value_template: >
            {% set noon_ts = states('sensor.sun_next_noon') | as_timestamp(0) %}
            {% set now_ts = now().timestamp() %}
            {% set minuten_bis_noon = (noon_ts - now_ts) / 60 %}
            {{ minuten_bis_noon > minuten_vor_noon_var }}
        - condition: template
          value_template: >
            {% set akku_kwh = (states('sensor.batterien_batterieladung') | float(0) / 100) * 10 %}
            {% set akku_min_kwh = (ziel_soc_var | float(20) / 100) * 10 %}
            {% set entladbar_kwh = [akku_kwh - akku_min_kwh, 0] | max %}
            {% set entladeleistung_kw = 3.5 %}
            {% set entladezeit_min = (entladbar_kwh / entladeleistung_kw * 60) | int %}
            {% set noon_ts = states('sensor.sun_next_noon') | as_timestamp(0) %}
            {% set start_ts = noon_ts - (minuten_vor_noon_var * 60) - (entladezeit_min * 60) - 600 %}
            {% set now_ts = now().timestamp() %}
            {{ now_ts >= start_ts and now_ts < (start_ts + 360) }}
        - condition: template
          value_template: >
            {% set prognose = states('sensor.energy_production_today') | float(0)
                            + states('sensor.energy_production_today_2') | float(0) %}
            {{ prognose >= prognose_schwelle_var }}
        - condition: template
          value_template: >
            {{ states('sensor.batterien_batterieladung') | float(0) > ziel_soc_var | float(20) + 5 }}
      sequence:
        - action: select.select_option
          target:
            entity_id: select.batterien_betriebsmodus
          data:
            option: fully_fed_to_grid
        - action: system_log.write
          data:
            message: >
              PV Peak-Shave: START –
              Prognose {{ (states('sensor.energy_production_today') | float(0) +
                           states('sensor.energy_production_today_2') | float(0)) | round(1) }} kWh,
              SOC {{ states('sensor.batterien_batterieladung') | round(0) }} %,
              Solar-Noon in {{ ((states('sensor.sun_next_noon') | as_timestamp(0) -
                                 now().timestamp()) / 60) | round(0) }} Min.
            level: info

Installation

  1. YAML-Datei als pv_peak_shave_einspeisung.yaml in den Ordner config/blueprints/automation/ kopieren
  2. Home Assistant neu laden oder Entwicklerwerkzeuge → YAML → Blueprints neu laden
  3. Einstellungen → Automationen → Automation erstellen → Blueprint auswählen
  4. Entity-IDs anpassen falls sie bei eurer Installation abweichen
  5. Parameter nach eurer Anlage einstellen
  6. Automation speichern und aktivieren

Hinweise und Einschränkungen

Akkugröße: Das Blueprint ist auf 10 kWh ausgelegt (Huawei LUNA2000-10kWh). Wer eine andere Akkugröße hat muss in Fall E den Wert 10 durch die eigene Kapazität in kWh ersetzen.

Entladeleistung: Im Blueprint ist 3,5 kW Entladeleistung hardcodiert (Zeile entladeleistung_kw = 3.5). Bitte an die eigene Anlage anpassen.

Forecast.Solar: Die Prognosegenauigkeit variiert stark je nach Standort und Dachausrichtung. Die Prognose-Schwelle sollte nach ein paar Wochen Beobachtung kalibriert werden.

Manueller Eingriff: Wenn Peak-Shave manuell abgebrochen wird, startet die Automation an diesem Tag nicht mehr automatisch neu — das Startfenster ist dann verpasst. Ein manueller Neustart ist möglich.


Was diese Automation nicht ist

Das ist kein wirtschaftliches Optimierungssystem. Es gibt elegantere Ansätze um den Akkuverschleiß zu minimieren — z.B. Ladestart verzögern statt aktiv entladen. Aber diese Ansätze erreichen kein echtes Peak-Shave weil der Akku beim solaren Höchststand nicht leer genug ist.

Wer primär den Akku schonen will und Netzdienlichkeit als Nebenziel hat sollte einen anderen Ansatz wählen.


Getestet mit: Huawei SUN2000-4KTL-M1, SUN2000-5KTL-M1, LUNA2000-10kWh, huawei_solar v1.6.0, Home Assistant 2026.4

 

Wenn man die aktuelle Presse und einschlägige Medien zu unserem Stromnetz durchsucht, kommt man schnell zu dem Schluss, dass es ohne rotierende Massen, die mit Kernenergie oder fossilen Energieträgern betrieben werden, nicht funktionieren wird.

Zusätzlich wird immer noch behauptet, regenerative Energiequellen, wären über Jahrzehnte nicht hinreichend, um die notwendige Betriebssicherheit zu gewährleisten (Blackout Panik).

In diesem Beitrag würde ich gerne mit euch zusammen Argumente dafür sammeln, warum es doch möglich ist, nur mit regenerativer Stromerzeugung ein stabiles Stromnetz für unsere CO₂-frei Zukunft zu betreiben und das nicht erst in den nächsten 50 Jahren, sondern in den nächsten 5!

Teilt hier gerne euer Wissen und gute Artikel dazu, damit wir alle die notwendigen Argumente vorliegen haben, wenn mal wieder ein Artikel der Uran-Fossil-Lobby etwas anderes behauptet.

#Energiewende #Stromversorgung

[–] favstarmafia@feddit.org 1 points 1 year ago

Meine Zelle mit den 1000 Haushalten, wäre per ihrer Definition netzdienlich, da sie die Mitglieder der Zelle quasi (so lange der Akku groß genug ist) aus dem Netz nimmt.

Das mit dem Booster ist eine super Idee, es gibt aber noch mehrere hundert PowerPoint Anträge, die nur auf das Zocken am Strommarkt ausgelegt sind, einfach, weil die Speicher billiger geworden sind, die werden nicht netzdienlich sein.

[–] favstarmafia@feddit.org 2 points 1 year ago

Verstehe ich das richtig, du willst bei allen 5 Millionen PV Anlagen dabei helfen, das so toll zu regeln, wie bei dir :-) Ich verstehe auch den Widerspruch nicht, der zu einer lokalen Zelle mit einem mittelgroßen Speicher besteht.

[–] favstarmafia@feddit.org 1 points 1 year ago

Es gibt auch ohne clevere optimierungsalgorithmen 11 perfekte Standort in Deutschland, rate mal wo die sind? Ich werde den Beitrag natürlich nicht löschen, weil du, vermutlich mit Absicht, nicht auf den interessanten Teil geantwortet hast.

[–] favstarmafia@feddit.org 1 points 1 year ago (1 children)

Stimmt so nicht, da wir keine lokalen Strompreise haben, nur die Netzentgelte können lokal variieren.

[–] favstarmafia@feddit.org 1 points 1 year ago

Das Netz hat eine lokale Topologie, die ist dem Strompreis aber egal, deshalb müssen große Stromspeicher sehr lange geplant werden und können immer nur Schritt für Schritt ans Netz angeschlossen werden, das wird alles sehr langsam gehen müssen, damit wird die Kontrolle behalten. Mein Vorschlag belastet das lokale Netz nicht, sondern entlastet es, das könnte man, wenn wir nicht in Deutschland leben würden, rein technisch, sehr schnell, an sehr vielen Orten gleichzeitig umsetzen.

[–] favstarmafia@feddit.org 2 points 1 year ago

So sieht das bei mir auch so aus und unsere PV ist nur 5 kWp groß (Akku 5 KW), trotzdem speisen wir im Sommer massiv Strom ins Netz, wenn ihn keiner braucht. Ich kompensiere das durch Überschussladen, ist aber am Ende trotzdem mehr Strom als wir benötigen. Außerdem leben die meisten Menschen zu Miete und können sich nur sehr kleine Balkonanlagen leisten. Der mittelgroße lokale Stromspeicher könnte das sozialisieren.

Zu dem Diagramm unten. Diese Wellen werden in Zukunft immer größer werden, da wir ja noch die ganze Primärenergie (Wärme, Verkehr, Industrie) auf Strom umstellen wollen. Ja nach Szenario sind das Faktor 3 bis 7, zu dem aktuellen Strombedarf.

Je mehr wir diese Extremwerte durch mittelgroße lokale Speicher reduzieren, je günstiger können wir die Energiewende für die Endverbraucher umsetzen.

Große Speicher sind nur dann sinnvoll, wenn sie zur Netzdienlichkeit gezwungen werden, was der Regulator aber aktuell nicht vorsieht in Deutschland. Was die lokalen Netzbetreiber an vielen Stellen noch mehr in Problem bringen wird, als sie jetzt schon sind, weil sie die Akkus nicht unter Kontrolle haben (bis auf die Option zur Notabschaltung). Deshalb werden sie viele Großspeicher entweder ablehnen oder verzögern, nicht weil sie die nicht wollen, sondern weil sie die in ihr Netz integrieren müssen, was alles sehr langsam gehen wird.

Mittelgroße lokale Speicher, nach meiner Definition, die mit ihren Verbrauchern und Erzeugern vernetzt sind, können ihnen egal sein, denn sie werden das Netz entlasten, sind also immer netzdienlich.

[–] favstarmafia@feddit.org 2 points 1 year ago

Ja, in Österreich ist das möglich, in Deutschland aktuell leider nicht und die Fossil-Union wird da bestimmt noch weiter auf der Bremse stehen. Da der Speicher meistens dann speichern wird, wenn der Strom billig ist und ausleitet, wenn er teuer ist, wird es sich sehr wahrscheinlich über den so erzeugten Cash Flow selbst finanzieren.

 

Aktuell gibt es viele Berichte über große Batteriespeicher, die angeblich unser Netz vor dem Blackout retten sollen, aber so wie sie aktuell ausgeschrieben werden, könnten sie sogar der Auslöser dafür werden.

Nehmen wir mal als Beispiel einen großen, wirtschaftlich (also nicht netzdienlich) betriebenen Batteriespeicher, der in Bayern gebaut wird. Dieser wird an manchen Tagen im Winter versuchen, Strom einzuspeichern, weil er gerade billig ist. Aber in seiner räumlichen Nähe gibt es gar keinen Stromproduzenten, denn der Preis ist deshalb billig, weil Windkraftanlagen im Norden sehr viel Strom produzieren. Also muss der Strom für diesen Akku durch ganz Deutschland transportiert werden und belastet dabei natürlich unser Stromnetz. Damit das Stromnetz das aushält, werden wir es ausbauen müssen, was natürlich am Ende wir über den Strompreis (oder die Netzentgelte) bezahlen müssen.

Es kommt noch hinzu, dass solche großen Speicher nur von großen Firmen mit viel Kapital installiert werden können, die dann damit "natürlich" auch Renditen für ihre Investoren damit verdienen wollen. Ihr Ziel wird also sein, gegen den "einen" deutschen Strompreis zu wetten, egal, wie die aktuelle Stromversorgung vor Ort gerade aussieht.

Klar, wir sind in Deutschland und wir lösen unsere Probleme schon immer so, aber wir könnten es auch mal anders versuchen, nämlich kleiner und lokaler.

Ein sinnvoller Ansatz wäre, unser Netz in Zellen zu organisieren.

Die kleinste Zelle ist dabei ein Haushalt. Falls es den Bewohnern möglich ist, organisieren sie ihren Haushalt so, dass sie nur so viel Strom verbrauchen, wie sie selbst erzeugen. Also etwa die Spülmaschine anmachen, wenn das Balkonkraftwerk gerade viel Strom erzeugt. Aber das wird nur selten gut funktionieren, da man nicht ständig seinen Stromverbrauch kontrollieren will. Man könnte deshalb zusätzlich einen Akku kaufen, aber der ist hinter dem Zähler relativ ineffizient, da er nur die Verbraucher hinter dem Zähler sieht.

Deshalb wird noch eine weitere Ebene von Zellen benötigt, die viele Haushalte zu einer Einheit zusammenfasst. Das könnten zum Beispiel 1000 räumlich nahe zusammen liegende Haushalte sein, deren smarte Stromzähler über das Internet miteinander verbunden sind. Für diese Zelle baut man dann einen mittelgroßen lokalen Speicher, dem all diese Haushalte ihre Daten schicken (eigentlich nur, was sie gerade verbrauchen oder erzeugen / gerne verschlüsselt!). Immer wenn in der Zelle in Summe mehr Strom erzeugt, als verbraucht wird, beginnt dieser Speicher mit dem Laden. Das führt dazu, dass der erzeugte Strom quasi lokal in der Zelle bleibt und nicht über weitere Strecken transportiert werden muss, was das gesamte Netz stark entasten würde. Wenn die Zelle weniger Strom produziert als verbraucht wird, gibt der Akku den Strom an die Zelle zurück, wovon dann auch die Haushalte profitieren, die keine PV-Anlagen haben.

Im Idealfall würde man so einen Speicher auch lokal finanzieren, zum Beispiel durch Genossenschaften, damit der Ertrag vor Ort bleibt. Immer wenn der Speicher Gewinne erzeugt, baut die Genossenschaft damit neue PV-Anlagen oder vergrößert den Speicher (oder finanziert Spielplätze oder Schwimmbäder).

Leider ist das in Deutschland fast nicht möglich, denn für das lokale Durchleiten von Strom gibt es keine staatliche Erlaubnis. Es gibt nur ein Gesetz, das die Einspeisung von PV-Anlagen regelt, was die lokalen Netzbetreiber dazu zwingt, diesen Strom immer zu kaufen, egal ob er gerade benötigt wird oder nicht. Es ist im Prinzip schon möglich, wenn der lokale Netzbetreiber es unterstützt oder die Genossenschaft eine Lizenz als Stromanbieter beantragt, was aber für so eine Zelle von nur 1000 Haushalten nicht rentabel wäre.

#Stromnetz #Energieversorgung #Energiewende

30
submitted 2 years ago* (last edited 2 years ago) by favstarmafia@feddit.org to c/deutschland@feddit.org
18
submitted 2 years ago* (last edited 1 year ago) by favstarmafia@feddit.org to c/wehrhaftedemokratie@feddit.org
 

Ich möchte speziell den kleinen Parteien im Fediverse mehr Sichtbarkeit verschaffen. Deshalb soll hier eine Liste mit solchen Accounts entstehen. Bitte antwortet mir auf diesen Post, wenn ihr Accounts von kleinen Parteien kennt, die ihr auch vielleicht mal wählen würdet.

Diese Liste habe ich als Einstieg für diesen Beitrag verwendet.

Hier findet ihr ein paar Accounts zu dem Thema Politik & Europa

Hier findet ihr einen Überblick zu Politik & Parteien im Fediverse.

#KleineParteien #Fediverse #Bundestagswahl

 

Post von der Piratenpartei zu ihrem Account bei X.

 

Ich habe hier den Link zu dem Beitrag in https://feddit.org/c/wehrhaftedemokratie eingestellt, weil sich die Communitys sehr ähnlich sind

 

Nicht jeder, der gegen Rechts ist, ist auch der Typ Mensch, der sich Nazis körperlich gegenüberstellen will.

Deshalb sammle ich hier Links zum Spenden.

Dabei soll es insbesondere um die prekäre Lage vor den anstehenden Wahlen in Sachsen, Thüringen und Brandenburg gehen.

Hier werden immer wieder Wahlhelfer*innen, sozialer Parteien, von Nazis angegriffen, um sie systematisch einzuschüchtern.

Falls ihr hierzu gute Ideen habt, wie man insbesondere diese Menschen vor diesem Naziterror schützen könnte, dann teilt diese gerne unter diesem Beitrag.

Noch eine kleine Info zu dem Thema.

Ihr seid gegen Rechts, also seid ihr gegen Faschismus, also seid ihr für den Antifaschismus, kurz Antifa.

Und nein, Antifa bedeutet nicht Linksextrem, es bedeutet einfach nur gegen Faschismus.

Linksliste (Reihenfolge ist ohne Bedeutung)

Ich kenne diese Organisationen nicht selbst, sie wurden mir im Fediverse empfohlen.

Gerne nehme ich weitere Spendenaufrufe hier mit auf.

Aktionen (Reihenfolge ist ohne Bedeutung)

Weitere Fediverse Accounts gegen Rechts (unvollständig)

 

Sieht ziemlich manipuliert aus, das Ergebnis, aber wir können ja noch was dran ändern.

 

Hallo zusammen, da leider weiterhin nicht klar ist, wie es mit Feddit.de weitergeht, habe ich hier eine neue Community zum Thema Fediverse eröffnet.

2
submitted 2 years ago* (last edited 1 year ago) by favstarmafia@feddit.org to c/verkehrswende@feddit.org
 

Was vielen vielleicht noch gar nicht so bekannt ist, es gibt eine Fahrzeugklasse, die aus meiner Sicht eine der tragenden Säulen des zukünftigen Individualverkehrs werden könnte.

Diese Fahrzeuge dürfen bis zu 15 kW Leistung haben und können damit, je nach Konstruktion, bis zu 90 km/h schnell fahren.

Ich möchte hier eine Liste von eFahrzeugen erstellen, mit denen man auch von A nach B kommt, die aber nicht dem Trend der üblichen ePanzer folgen.

Falls ihr noch andere Fahrzeuge dieser Art kennt, dann meldet mir die gerne, ich füge sie dann der Liste hinzu.

Es können auch gerne kleine eFahrzeuge, einer anderen Fahrzeugklasse sein. Sie sollten aber mindestens 70 km/h schnell fahren können, damit man damit auch mal auf einer Landstraße unterwegs sein kann.

eTransporter

Mopped-Fahrzeuge (bis 45 km/h)

Hier findet ihr eine Übersicht, welches Fahrzeug man mit welchem Führerschein fahren darf.

view more: next ›