<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns="http://www.w3.org/2005/Atom"
      xmlns:thr="http://purl.org/syndication/thread/1.0"
      xml:lang="en-us">
  <link rel="self" href="http://Andreas-Voit.at/feeds/blog-von-andreas-voit_tag_fronius.atom_1.0.links-and-content.xml" />
  <title type="text">Blog von Andreas Voit – tag: fronius</title>
  <id>https://andreas-voit.at/tags/fronius/</id>
  <link href="http://Andreas-Voit.at" />
  <icon>/favicon.ico</icon>
  <updated>2026-10-06T11:25:14+01:00</updated>
  <author>
    <name>Andreas Voit</name>
  </author>
  <subtitle type="text">Articles tagged with fronius from Blog von Andreas Voit</subtitle>
  <rights>All content written by Andreas Voit</rights>
  <generator uri='https://github.com/novoid/lazyblorg'>Generated from Org-mode source code using lazyblorg which is written in Python. Industrial-strength technology, baby.</generator>
<!-- ############################################################################################# -->
<entry>
    <title type="text">Batterie erst laden, wenn es sich lohnt: PV-Prognose-Steuerung für Fronius GEN24 und BYD mit Home Assistant</title>
    <link href='https://Andreas-Voit.at/2026/10/06/home-assistant-batteriesteuerung-pv-prognose' />
    <published>2026-10-06T10:00:00+01:00</published>
    <updated>2026-10-06T10:00:00+01:00</updated>
    <category scheme='https://Andreas-Voit.at/tags/homeassistant' term='homeassistant' />
    <category scheme='https://Andreas-Voit.at/tags/photovoltaik' term='photovoltaik' />
    <category scheme='https://Andreas-Voit.at/tags/fronius' term='fronius' />
    <category scheme='https://Andreas-Voit.at/autotags/language' term='language:deutsch' />
    <summary type='html'>
&lt;p&gt;

Ein Batteriespeicher macht von sich aus etwas ziemlich Unkluges: Er lädt mit der ersten Kilowattstunde Überschuss am Morgen und ist an einem Sonnentag schon zu Mittag voll. Genau dann, wenn die PV-Anlage am meisten liefert, geht alles ins Netz. In diesem Artikel zeige ich, wie ich mit Home Assistant, einer PV-Prognose und ein paar Modbus-Registern meinen Fronius GEN24 dazu bringe, die BYD-Batterie vormittags warten zu lassen und sie trotzdem jeden Tag sicher vollzuladen. Mit Schritt-für-Schritt-Anleitung, allen YAML-Blöcken, Rechenbeispielen und einem Dashboard.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="http://Andreas-Voit.at/2026/10/06/home-assistant-batteriesteuerung-pv-prognose/2026-10-06T10.00.01%20PV%20LIVE%20Dashboard%20Demo.png"&gt;
  &lt;img src="http://Andreas-Voit.at/2026/10/06/home-assistant-batteriesteuerung-pv-prognose/http://Andreas-Voit.at/2026/10/06/home-assistant-batteriesteuerung-pv-prognose/http://Andreas-Voit.at/2026/10/06/home-assistant-batteriesteuerung-pv-prognose/2026-10-06T10.00.01%20PV%20LIVE%20Dashboard%20Demo%20-%20scaled%20width%20620.png" alt="PV LIVE Dashboard mit Energiefluss, Verlaufsgrafiken und Batteriesteuerung" width="TMPREPLACEMEwidthSTART-2026-10-06T10.00.01 PV LIVE Dashboard Demo - scaled width 620.png-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-2026-10-06T10.00.01 PV LIVE Dashboard Demo - scaled width 620.png-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Das Dashboard mit Batteriesteuerung (Demo-Daten): Die Ladung ist pausiert, der PV-Überschuss geht ins Netz. &lt;a class="figcaption-clue-link" href="http://Andreas-Voit.at/2026/10/06/home-assistant-batteriesteuerung-pv-prognose/2026-10-06T10.00.01%20PV%20LIVE%20Dashboard%20Demo.png"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

    </summary>    <content type='html'>

&lt;p&gt;

Ein Batteriespeicher macht von sich aus etwas ziemlich Unkluges: Er lädt mit der ersten Kilowattstunde Überschuss am Morgen und ist an einem Sonnentag schon zu Mittag voll. Genau dann, wenn die PV-Anlage am meisten liefert, geht alles ins Netz. In diesem Artikel zeige ich, wie ich mit Home Assistant, einer PV-Prognose und ein paar Modbus-Registern meinen Fronius GEN24 dazu bringe, die BYD-Batterie vormittags warten zu lassen und sie trotzdem jeden Tag sicher vollzuladen. Mit Schritt-für-Schritt-Anleitung, allen YAML-Blöcken, Rechenbeispielen und einem Dashboard.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="2026-10-06T10.00.01%20PV%20LIVE%20Dashboard%20Demo.png"&gt;
  &lt;img src="2026-10-06T10.00.01%20PV%20LIVE%20Dashboard%20Demo%20-%20scaled%20width%20620.png" alt="PV LIVE Dashboard mit Energiefluss, Verlaufsgrafiken und Batteriesteuerung" width="TMPREPLACEMEwidthSTART-2026-10-06T10.00.01 PV LIVE Dashboard Demo - scaled width 620.png-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-2026-10-06T10.00.01 PV LIVE Dashboard Demo - scaled width 620.png-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Das Dashboard mit Batteriesteuerung (Demo-Daten): Die Ladung ist pausiert, der PV-Überschuss geht ins Netz. &lt;a class="figcaption-clue-link" href="2026-10-06T10.00.01%20PV%20LIVE%20Dashboard%20Demo.png"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Die Idee&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

Die Steuerung beantwortet alle 15 Minuten eine einzige Frage: Reicht die restliche Sonne heute noch, um das Haus zu versorgen und die Batterie trotzdem vollzumachen? Wenn ja, und es bleibt sogar noch etwas übrig, darf die Batterie mit dem Laden warten. Der Strom geht in der Zwischenzeit ins Netz. Sobald es knapp wird, spätestens aber um 13:00, wird das Laden der Batterie gestartet.

&lt;/p&gt;


&lt;p&gt;

Was das bringt:

&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Die Batterie ist nicht schon vormittags voll und kann die
Mittagsspitze aufnehmen. Das entlastet das Netz und hilft, wenn der
Netzbetreiber die Einspeiseleistung begrenzt.&lt;/li&gt;
&lt;li&gt;Die Batterie verbringt weniger Stunden bei 100 %, was ihrer
Lebensdauer guttut.&lt;/li&gt;
&lt;li&gt;Es geht keine Kilowattstunde verloren: Sie wird nur zu einer anderen
Uhrzeit eingespeist.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;

Wichtig ist, was die Steuerung nicht tut. Sie begrenzt nur das &lt;b&gt;Laden&lt;/b&gt;. Das Entladen bleibt unverändert, die Batterie versorgt das Haus also weiter, wenn die PV nicht reicht. Die untere Grenze ist dabei immer das Minimum, das im Batteriemanagement des GEN24 eingestellt ist.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Meine Anlage&lt;/h2&gt;&lt;/header&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Komponente&lt;/th&gt;
&lt;th&gt;Daten&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Wechselrichter&lt;/td&gt;
&lt;td&gt;Fronius GEN24 mit Fronius Smart Meter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batterie&lt;/td&gt;
&lt;td&gt;BYD, 22,1 kWh&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PV&lt;/td&gt;
&lt;td&gt;13,9 kWp, ein Dach, Azimut 70°, Neigung 5°&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wallbox (optional)&lt;/td&gt;
&lt;td&gt;Fronius Wattpilot, in der App mit dem GEN24 gekoppelt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Home Assistant&lt;/td&gt;
&lt;td&gt;HA Green im selben LAN&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;

Die Anleitung funktioniert genauso für andere Anlagengrößen. Angepasst werden müssen nur die Batteriekapazität und die Daten für die PV-Prognose.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Voraussetzungen&lt;/h2&gt;&lt;/header&gt;

&lt;ul&gt;
&lt;li&gt;Fronius GEN24 mit angeschlossener Batterie, Zugriff auf die
Weboberfläche als Techniker oder Kunde mit Modbus-Rechten&lt;/li&gt;
&lt;li&gt;Home Assistant mit Zugriff auf die &lt;code
class="verbatim"&gt;configuration.yaml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;HACS mit den Integrationen &lt;code class="verbatim"&gt;SunSpec&lt;/code&gt;
(von CJNE) und für das Dashboard &lt;code
class="verbatim"&gt;power-flow-card-plus&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Die eingebaute Integration &lt;code
class="verbatim"&gt;Forecast.Solar&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Alle verwendeten Geräte haben eine fix zugeordnete IP (bei mir
werden diese über einen DHCP-Server am Router verwaltet)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;

Ein Hinweis vorab: Die Skripte schreiben direkt in Register des Wechselrichters. Ich habe sie an meinem GEN24 getestet. Bevor du schreibst, prüfe unbedingt, ob das Lese-Register für den Ladestand denselben Wert zeigt wie die Fronius-App (Schritt 4). Stimmt das nicht, liegen die Register bei dir woanders und du solltest nichts schreiben.

&lt;/p&gt;


&lt;p&gt;

Anmerkung: Ich habe mich für die Modbus-Schnittstelle entschieden, da ich so direkt über mein lokales Netzwerk auf den Wechselrichter zugreifen kann.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Schritt 1: Modbus am GEN24 einschalten&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

In der Weboberfläche des GEN24 unter Kommunikation, Modbus:

&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modbus-Server über TCP: an, Port 502&lt;/li&gt;
&lt;li&gt;SunSpec Model Type: &lt;code class="verbatim"&gt;int + SF&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Zähleradresse: 200&lt;/li&gt;
&lt;li&gt;Wechselrichter-Steuerung über Modbus: an&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;

Der letzte Punkt ist die Voraussetzung dafür, dass Home Assistant die Ladeleistung begrenzen darf.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Schritt 2: Werte in Home Assistant holen&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

Für die Anzeige nutze ich die SunSpec-Integration. Unter Einstellungen, Geräte &amp;amp; Dienste, SunSpec, Eintrag hinzufügen:

&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Host: IP des GEN24, Port 502, Unit ID 1&lt;/li&gt;
&lt;li&gt;Read models: &lt;code class="verbatim"&gt;103&lt;/code&gt;, &lt;code
class="verbatim"&gt;160&lt;/code&gt;, &lt;code class="verbatim"&gt;124&lt;/code&gt;
(Wechselrichter, MPPT, Speicher)&lt;/li&gt;
&lt;li&gt;Ein zweiter Eintrag mit Unit ID 200 liefert den Smart Meter (Modell
203).&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;

Achtung: Wer später im Optionen-Dialog etwas ändert, etwa das Abfrageintervall, muss dort die Read models erneut prüfen. Bei mir war danach Modell 124 abgewählt und der Ladestand fehlte.

&lt;/p&gt;


&lt;p&gt;

Danach benenne ich die Entitäten so um, dass die IDs sprechend sind (Entität öffnen, Zahnrad, Entitäts-ID):

&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Neue Entitäts-ID&lt;/th&gt;
&lt;th&gt;Quelle in SunSpec&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code class="verbatim"&gt;sensor.pv_leistung&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Summe der MPPT-Module 0 und 1 (Template)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code class="verbatim"&gt;sensor.batterie_laden&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;MPPT module 2 DC Power&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code class="verbatim"&gt;sensor.batterie_entladen&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;MPPT module 3 DC Power&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code class="verbatim"&gt;sensor.byd_ladezustand&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Storage &lt;code class="verbatim"&gt;ChaState&lt;/code&gt; (Ladezustand in
%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code class="verbatim"&gt;sensor.netz_leistung&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Zähler: AC Meter Watts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;

SunSpec zählt die MPPT-Module ab 0. Module 0 und 1 sind die beiden PV-Strings, Module 2 und 3 die Batterie. Nicht verwechseln: &lt;code&gt;ChaState&lt;/code&gt; ist der Ladezustand in Prozent, &lt;code&gt;ChaSt&lt;/code&gt; nur der Ladestatus als Zahl.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Schritt 3: Modbus-Hub für die Steuerung&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

Zum Schreiben braucht Home Assistant die eingebaute Modbus-Integration. Der folgende Block kommt in die &lt;code&gt;configuration.yaml&lt;/code&gt;. Gibt es dort schon einen &lt;code&gt;modbus:&lt;/code&gt;-Schlüssel, wird nur der Teil ab &lt;code&gt;- name:&lt;/code&gt; darunter angehängt.

&lt;/p&gt;


	  &lt;div class="example_code"&gt;
	  &lt;pre&gt;modbus:
  - name: gen24
    type: tcp
    host: 192.168.1.80  # lokale IP deines GEN24
    port: 502
    sensors:
      - name: GEN24 Speicher Ladestand Modbus
        slave: 1
        address: 40351
        input_type: holding
        data_type: uint16
        scale: 0.01
        precision: 1
        unit_of_measurement: "%"
        scan_interval: 30
      - name: GEN24 Speicher Steuermodus
        slave: 1
        address: 40348
        input_type: holding
        data_type: uint16
        scan_interval: 30
      - name: GEN24 Speicher Ladeleistung Limit
        slave: 1
        address: 40356
        input_type: holding
        data_type: int16
        scale: 0.01
        precision: 0
        unit_of_measurement: "%"
        scan_interval: 30
      - name: GEN24 Speicher Rueckfallzeit
        slave: 1
        address: 40358
        input_type: holding
        data_type: uint16
        unit_of_measurement: "s"
        scan_interval: 30	  &lt;/pre&gt;
    &lt;/div&gt;


&lt;p&gt;

Die vier Register stammen aus dem SunSpec-Speichermodell 124:

&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Register&lt;/th&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Bedeutung&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;40348&lt;/td&gt;
&lt;td&gt;&lt;code class="verbatim"&gt;StorCtl_Mod&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0 = normal, 1 = Ladeleistung begrenzen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;40351&lt;/td&gt;
&lt;td&gt;&lt;code class="verbatim"&gt;ChaState&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ladezustand in % (nur lesen, zur Kontrolle)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;40356&lt;/td&gt;
&lt;td&gt;&lt;code class="verbatim"&gt;InWRte&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;erlaubte Ladeleistung in 0,01 % (10000 = 100 %)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;40358&lt;/td&gt;
&lt;td&gt;&lt;code class="verbatim"&gt;InOutWRte_RvrtTms&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Rückfallzeit in Sekunden&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;

Die Rückfallzeit ist das Sicherheitsnetz: Hört der GEN24 eine Stunde lang nichts mehr von Home Assistant, kehrt er von selbst in den Normalbetrieb zurück.

&lt;/p&gt;


&lt;p&gt;

Nach dem Speichern die Konfiguration prüfen und Home Assistant neu starten. Modbus-Änderungen brauchen einen Neustart.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Schritt 4: Register prüfen&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

Bevor irgendetwas geschrieben wird, vergleiche in den Entwicklerwerkzeugen (HA Einstellungen - Werkzeuge - Zustände):

&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code class="verbatim"&gt;sensor.gen24_speicher_ladestand_modbus&lt;/code&gt;
muss denselben Wert zeigen wie &lt;code
class="verbatim"&gt;sensor.byd_ladezustand&lt;/code&gt; und die Fronius-App.&lt;/li&gt;
&lt;li&gt;&lt;code class="verbatim"&gt;sensor.gen24_speicher_steuermodus&lt;/code&gt;
sollte 0 sein.&lt;/li&gt;
&lt;li&gt;&lt;code
class="verbatim"&gt;sensor.gen24_speicher_ladeleistung_limit&lt;/code&gt; sollte
100 % zeigen.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;

Erst wenn das passt, geht es weiter.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Schritt 5: PV-Prognose mit Forecast.Solar&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

Einstellungen, Geräte &amp;amp; Dienste, Integration hinzufügen, Forecast.Solar. Pro Dachfläche ein Eintrag mit Breite, Länge, Neigung, Azimut und Modulleistung. Liegen zwei Dachflächen in verschiedene Richtungen, werden es zwei Einträge.

&lt;/p&gt;


&lt;p&gt;

Von jedem Eintrag brauche ich nur eine Entität: "Geschätzte verbleibende Energieproduktion heute". Ich benenne sie nach dem Schema &lt;code&gt;sensor.prognose_rest_&amp;lt;dach&amp;gt;&lt;/code&gt; um, bei mir also &lt;code&gt;sensor.prognose_rest_dach&lt;/code&gt;. Der folgende Template-Sensor summiert automatisch alle Entitäten mit diesem Präfix.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Schritt 6: Der Prognose-Überschuss&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

Das Herzstück ist ein Template-Sensor, der ausrechnet, wie viel Energie heute übrig bleibt, wenn Haus und Batterie versorgt sind:

&lt;/p&gt;


	  &lt;div class="example_code"&gt;
	  &lt;pre&gt;Überschuss = Restprognose × Sicherheit
           − Grundlast × Stunden bis Sonnenuntergang
           − (100 % − Ladezustand) × Kapazität ÷ Wirkungsgrad	  &lt;/pre&gt;
    &lt;/div&gt;


&lt;p&gt;

Der Block kommt unter den bestehenden &lt;code&gt;template:&lt;/code&gt;-Schlüssel. Wichtig: Es darf in der &lt;code&gt;configuration.yaml&lt;/code&gt; nur einen &lt;code&gt;template:&lt;/code&gt;-Schlüssel geben. Gibt es zwei, gewinnt der letzte und die Sensoren des ersten verschwinden kommentarlos.

&lt;/p&gt;


	  &lt;div class="example_code"&gt;
	  &lt;pre&gt;template:
  - sensor:
      - name: "PV Prognose Rest"
        unique_id: pv_prognose_rest
        unit_of_measurement: "kWh"
        device_class: energy
        availability: &amp;gt;
          {{ states.sensor
             | selectattr('entity_id', 'match',
                          'sensor\.prognose_rest_')
             | selectattr('state', 'is_number')
             | list | count &amp;gt; 0 }}
        state: &amp;gt;
          {{ states.sensor
             | selectattr('entity_id', 'match',
                          'sensor\.prognose_rest_')
             | map(attribute='state') | map('float', 0)
             | sum | round(1) }}

      - name: "PV Prognose Ueberschuss"
        unique_id: pv_prognose_ueberschuss
        unit_of_measurement: "kWh"
        availability: &amp;gt;
          {{ has_value('sensor.byd_ladezustand')
             and has_value('sensor.pv_prognose_rest') }}
        state: &amp;gt;
          {% set kapazitaet = 22.1 %}
          {% set wirkungsgrad = 0.95 %}
          {% set sicherheit = 0.7 %}
          {% set grundlast_kw = 0.5 %}
          {% set soc =
               states('sensor.byd_ladezustand') | float %}
          {% set rest =
               states('sensor.pv_prognose_rest') | float %}
          {% set sunset =
               state_attr('sun.sun', 'next_setting') %}
          {% if is_state('sun.sun', 'above_horizon')
                and sunset %}
            {% set sek = as_timestamp(sunset)
                         - as_timestamp(now()) %}
            {% set stunden = [sek / 3600, 0] | max %}
          {% else %}
            {% set stunden = 0 %}
          {% endif %}
          {% set fehlend = (100 - soc) / 100
                           * kapazitaet / wirkungsgrad %}
          {% set verbrauch = grundlast_kw * stunden %}
          {{ (rest * sicherheit - verbrauch - fehlend)
             | round(1) }}	  &lt;/pre&gt;
    &lt;/div&gt;


&lt;p&gt;

Die vier Stellschrauben oben im Template:

&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Wert&lt;/th&gt;
&lt;th&gt;Bei mir&lt;/th&gt;
&lt;th&gt;Bedeutung&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code class="verbatim"&gt;kapazitaet&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;22,1 kWh&lt;/td&gt;
&lt;td&gt;nutzbare Kapazität der Batterie&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code class="verbatim"&gt;wirkungsgrad&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0,95&lt;/td&gt;
&lt;td&gt;Ladeverluste: für 1 kWh in der Batterie braucht es 1,05 kWh PV&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code class="verbatim"&gt;sicherheit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0,7&lt;/td&gt;
&lt;td&gt;es werden nur 70 % der Prognose geglaubt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code class="verbatim"&gt;grundlast_kw&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0,5 kW&lt;/td&gt;
&lt;td&gt;durchschnittlicher Hausverbrauch tagsüber&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;

Der Sicherheitsfaktor ist bewusst vorsichtig. Prognosen liegen an wechselhaften Tagen gern daneben, und eine Batterie, die abends nicht voll ist, ärgert mehr als eine, die eine Stunde zu früh lädt.

&lt;/p&gt;


&lt;p&gt;

Danach Entwicklerwerkzeuge, YAML, Template-Entitäten neu laden.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Schritt 7: Zwei Skripte zum Pausieren und Freigeben&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

Einstellungen, Automationen &amp;amp; Szenen, Skripte, Skript erstellen, drei Punkte, In YAML bearbeiten. Zwei Skripte anlegen:

&lt;/p&gt;


	  &lt;div class="example_code"&gt;
	  &lt;pre&gt;alias: Batterieladung pausieren
sequence:
  - action: modbus.write_register
    data:
      hub: gen24
      slave: 1
      address: 40358   # Rückfallzeit 1 Stunde
      value: 3600
  - action: modbus.write_register
    data:
      hub: gen24
      slave: 1
      address: 40356   # Ladeleistung 0 %
      value: 0
  - action: modbus.write_register
    data:
      hub: gen24
      slave: 1
      address: 40348   # Begrenzung aktivieren
      value: 1
mode: single	  &lt;/pre&gt;
    &lt;/div&gt;


	  &lt;div class="example_code"&gt;
	  &lt;pre&gt;alias: Batterieladung freigeben
sequence:
  - action: modbus.write_register
    data:
      hub: gen24
      slave: 1
      address: 40348   # Normalbetrieb
      value: 0
  - action: modbus.write_register
    data:
      hub: gen24
      slave: 1
      address: 40356   # Ladeleistung 100 %
      value: 10000
  - action: modbus.write_register
    data:
      hub: gen24
      slave: 1
      address: 40358   # Rückfallzeit aus
      value: 0
mode: single	  &lt;/pre&gt;
    &lt;/div&gt;


&lt;p&gt;

Die Reihenfolge ist Absicht: Beim Pausieren wird zuerst die Rückfallzeit gesetzt, damit die Sperre nie ohne Sicherheitsnetz aktiv ist. Beim Freigeben wird zuerst der Steuermodus zurückgesetzt.

&lt;/p&gt;


&lt;p&gt;

Testen am besten bei Sonne: "pausieren" ausführen, die Ladeleistung der Batterie fällt auf 0 und der Steuermodus zeigt 1. "freigeben" ausführen, die Batterie lädt wieder und der Steuermodus zeigt 0.

&lt;/p&gt;


&lt;p&gt;

Ein Stolperstein: Neuere HA-Versionen schlagen in der Doku teils &lt;code&gt;device_address&lt;/code&gt; statt &lt;code&gt;slave&lt;/code&gt; vor. Bei &lt;code&gt;modbus.write_register&lt;/code&gt; hat meine Installation das abgelehnt, mit &lt;code&gt;slave&lt;/code&gt; funktioniert es.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Schritt 8: Schalter und Automation&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

Zuerst unter Einstellungen, Geräte &amp;amp; Dienste, Helfer einen Schalter "Batteriesteuerung aktiv" anlegen (&lt;code&gt;input_boolean.batteriesteuerung_aktiv&lt;/code&gt;). Damit lässt sich die Steuerung jederzeit abschalten.

&lt;/p&gt;


&lt;p&gt;

Dann die Automation. Sie kennt zwei Arten von Auslösern: die Prüfung alle 15 Minuten und eine Reihe von Ereignissen, bei denen immer freigegeben wird.

&lt;/p&gt;


	  &lt;div class="example_code"&gt;
	  &lt;pre&gt;alias: Batteriesteuerung nach Prognose
description: &amp;gt;-
  Pausiert die Batterieladung vormittags, solange die
  PV-Prognose reicht, um Haus zu versorgen und die
  Batterie trotzdem vollzuladen. Gibt spätestens um
  13:00, bei Sonnenuntergang, nach HA-Neustart und
  beim Ausschalten wieder frei.
mode: single
triggers:
  - trigger: time_pattern
    minutes: "/15"
    id: pruefen
  - trigger: homeassistant
    event: start
    id: freigeben
  - trigger: time
    at: "13:00:00"
    id: freigeben
  - trigger: sun
    event: sunset
    id: freigeben
  - trigger: state
    entity_id: input_boolean.batteriesteuerung_aktiv
    to: "off"
    id: freigeben
actions:
  - choose:
      - conditions:
          - condition: trigger
            id: pruefen
          - condition: state
            entity_id: input_boolean.batteriesteuerung_aktiv
            state: "on"
          - condition: sun
            after: sunrise
          - condition: time
            before: "13:00:00"
          - condition: template
            value_template: &amp;gt;
              {% set u = states(
                   'sensor.pv_prognose_ueberschuss')
                   | float(-99) %}
              {% set pausiert = states(
                   'sensor.gen24_speicher_steuermodus')
                   | int(0) == 1 %}
              {{ u &amp;gt; 2 or (pausiert and u &amp;gt; 1) }}
          # Optional, nur mit Wallbox:
          # nicht pausieren, solange das Auto lädt
          - condition: template
            value_template: &amp;gt;
              {% set w = 'sensor.wallbox_leistung' %}
              {% set p = states(w) | float(0) %}
              {% set e = state_attr(w,
                   'unit_of_measurement') %}
              {{ (p * 1000 if e == 'kW' else p) &amp;lt; 100 }}
        sequence:
          - action: script.batterieladung_pausieren
      - conditions:
          - condition: trigger
            id: freigeben
        sequence:
          - action: script.batterieladung_freigeben
    default:
      - if:
          - condition: template
            value_template: &amp;gt;
              {{ states('sensor.gen24_speicher_steuermodus')
                 | int(1) != 0 }}
        then:
          - action: script.batterieladung_freigeben	  &lt;/pre&gt;
    &lt;/div&gt;


&lt;p&gt;

Wer keine Wallbox hat, löscht die zweite Template-Bedingung samt Kommentar.

&lt;/p&gt;


&lt;p&gt;

Den Schalter erst einschalten, wenn der Überschuss-Sensor plausible Werte zeigt.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Die Regeln auf einen Blick&lt;/h2&gt;&lt;/header&gt;


&lt;figure class="image-center"&gt;
&lt;a href="2026-10-06T10.00.04%20Batteriesteuerung%20Regeln.png"&gt;
  &lt;img src="2026-10-06T10.00.04%20Batteriesteuerung%20Regeln%20-%20scaled%20width%20620.png" alt="Übersicht der Regeln" width="TMPREPLACEMEwidthSTART-2026-10-06T10.00.04 Batteriesteuerung Regeln - scaled width 620.png-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-2026-10-06T10.00.04 Batteriesteuerung Regeln - scaled width 620.png-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Wann pausiert wird und wann immer freigegeben wird &lt;a class="figcaption-clue-link" href="2026-10-06T10.00.04%20Batteriesteuerung%20Regeln.png"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

Pausiert wird nur, wenn alle vier Bedingungen erfüllt sind. Trifft bei der 15-Minuten-Prüfung eine nicht mehr zu und läuft gerade eine Pause, gibt der &lt;code&gt;default&lt;/code&gt;-Zweig die Ladung frei. Zusätzlich gibt es feste Freigaben um 13:00, bei Sonnenuntergang, nach einem Neustart von Home Assistant und beim Ausschalten des Schalters.

&lt;/p&gt;


&lt;p&gt;

Zwei Details verdienen eine Erklärung:

&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hysterese: Eine neue Pause beginnt erst ab 2 kWh Überschuss, eine
laufende Pause wird aber bis 1 kWh gehalten. Ohne diesen Abstand würde
die Steuerung bei einem Wert um 2 kWh im Viertelstundentakt hin und her
schalten.&lt;/li&gt;
&lt;li&gt;Erneuern: Jede Prüfung, die die Pause bestätigt, schreibt die
Rückfallzeit von einer Stunde neu. Solange Home Assistant läuft, läuft
die Pause also weiter. Fällt es aus, ist nach spätestens einer Stunde
wieder Normalbetrieb.&lt;/li&gt;
&lt;/ul&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Rechenbeispiele&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

Am besten versteht man die Steuerung an konkreten Zahlen. Alle Beispiele nutzen meine Werte: 22,1 kWh Kapazität, Wirkungsgrad 0,95, Sicherheit 0,7 und Grundlast 0,5 kW.

&lt;/p&gt;


&lt;p&gt;

Eine Faustregel vorweg: Jedes Prozent Ladezustand entspricht 0,221 kWh in der Batterie oder 0,233 kWh PV-Energie, um es nachzuladen.

&lt;/p&gt;


	  &lt;header&gt;&lt;h3 class="section-title"&gt;Beispiel 1: Sonniger Morgen, Batterie halb leer&lt;/h3&gt;&lt;/header&gt;


&lt;p&gt;

Ein echter Wert von meinem Dashboard, um 08:56 an einem sonnigen Oktobertag. Die Batterie steht bei 32 %, Forecast.Solar erwartet noch 44,5 kWh, Sonnenuntergang ist um etwa 18:32.

&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Schritt&lt;/th&gt;
&lt;th&gt;Rechnung&lt;/th&gt;
&lt;th&gt;kWh&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Glaubwürdige Prognose&lt;/td&gt;
&lt;td&gt;44,5 × 0,7&lt;/td&gt;
&lt;td&gt;31,15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hausverbrauch bis Sonnenuntergang&lt;/td&gt;
&lt;td&gt;0,5 kW × 9,6 h&lt;/td&gt;
&lt;td&gt;− 4,80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bis zur vollen Batterie&lt;/td&gt;
&lt;td&gt;68 % × 22,1 ÷ 0,95&lt;/td&gt;
&lt;td&gt;− 15,82&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prognose-Überschuss&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;= 10,53&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;

10,5 kWh sind deutlich über 2 kWh, die Ladung wird pausiert. Die PV deckte zu diesem Zeitpunkt mit 3,7 kW den Hausverbrauch von 3,3 kW, die Batterie stand still, 431 W gingen ins Netz.

&lt;/p&gt;


	  &lt;header&gt;&lt;h3 class="section-title"&gt;Beispiel 2: Bewölkter Tag&lt;/h3&gt;&lt;/header&gt;


&lt;p&gt;

Gleiche Uhrzeit, aber nur 18 kWh Prognose, Batterie bei 40 %:

&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Schritt&lt;/th&gt;
&lt;th&gt;Rechnung&lt;/th&gt;
&lt;th&gt;kWh&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Glaubwürdige Prognose&lt;/td&gt;
&lt;td&gt;18 × 0,7&lt;/td&gt;
&lt;td&gt;12,60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hausverbrauch bis Sonnenuntergang&lt;/td&gt;
&lt;td&gt;0,5 kW × 9,6 h&lt;/td&gt;
&lt;td&gt;− 4,80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bis zur vollen Batterie&lt;/td&gt;
&lt;td&gt;60 % × 22,1 ÷ 0,95&lt;/td&gt;
&lt;td&gt;− 13,96&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prognose-Überschuss&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;= −6,16&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;

Negativ heißt: Die Sonne reicht heute voraussichtlich nicht einmal für eine volle Batterie. Es wird nicht pausiert, die Batterie lädt wie gewohnt ab der ersten Kilowattstunde.

&lt;/p&gt;


	  &lt;header&gt;&lt;h3 class="section-title"&gt;Beispiel 3: Batterie fast voll&lt;/h3&gt;&lt;/header&gt;


&lt;p&gt;

Die Batterie steht morgens noch bei 95 %, weil es in der Nacht kaum Verbrauch gab. Die Prognose ist mit 12 kWh nur mäßig:

&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Schritt&lt;/th&gt;
&lt;th&gt;Rechnung&lt;/th&gt;
&lt;th&gt;kWh&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Glaubwürdige Prognose&lt;/td&gt;
&lt;td&gt;12 × 0,7&lt;/td&gt;
&lt;td&gt;8,40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hausverbrauch bis Sonnenuntergang&lt;/td&gt;
&lt;td&gt;0,5 kW × 9,6 h&lt;/td&gt;
&lt;td&gt;− 4,80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bis zur vollen Batterie&lt;/td&gt;
&lt;td&gt;5 % × 22,1 ÷ 0,95&lt;/td&gt;
&lt;td&gt;− 1,16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prognose-Überschuss&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;= 2,44&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;

Auch an einem mittelmäßigen Tag wird pausiert, weil der Batterie nur noch gut eine Kilowattstunde fehlt. Die holt sie sich am Nachmittag.

&lt;/p&gt;


	  &lt;header&gt;&lt;h3 class="section-title"&gt;Beispiel 4: Wie viel Prognose braucht eine Pause?&lt;/h3&gt;&lt;/header&gt;


&lt;p&gt;

Die Rechnung lässt sich auch umdrehen. Damit um 09:00 bei 32 % Ladezustand pausiert wird, muss der Überschuss über 2 kWh liegen:

&lt;/p&gt;


	  &lt;div class="example_code"&gt;
	  &lt;pre&gt;Restprognose &amp;gt; (2 + 4,75 + 15,82) ÷ 0,7 = 32,2 kWh	  &lt;/pre&gt;
    &lt;/div&gt;


&lt;p&gt;

Bei einer leeren Batterie braucht es also einen richtig guten Tag. Jedes Prozent weniger Ladezustand erhöht die nötige Prognose um etwa 0,33 kWh. Darum entlädt sich die Batterie während einer Pause auch nie nennenswert: Sinkt der Ladestand, steigt der Fehlbetrag, der Überschuss schrumpft, und unter 1 kWh wird freigegeben.

&lt;/p&gt;


	  &lt;header&gt;&lt;h3 class="section-title"&gt;Beispiel 5: Die Freigabe im Laufe des Vormittags&lt;/h3&gt;&lt;/header&gt;


&lt;p&gt;

Während der Pause fallen zwei Dinge: Die Restprognose sinkt, weil die Sonne ja schon scheint und die Energie ins Netz geht, und die Zeit bis Sonnenuntergang wird kürzer. Der erste Effekt ist stärker, darum schrumpft der Überschuss bis zum Mittag. Auf dem simulierten Beispieltag weiter unten sieht das so aus:

&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Uhrzeit&lt;/th&gt;
&lt;th&gt;Rest&lt;/th&gt;
&lt;th&gt;Ladezustand&lt;/th&gt;
&lt;th&gt;Rechnung&lt;/th&gt;
&lt;th&gt;Überschuss&lt;/th&gt;
&lt;th&gt;Entscheidung&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;09:00&lt;/td&gt;
&lt;td&gt;45,2&lt;/td&gt;
&lt;td&gt;24,6 %&lt;/td&gt;
&lt;td&gt;31,64 − 4,75 − 17,54&lt;/td&gt;
&lt;td&gt;9,3&lt;/td&gt;
&lt;td&gt;Pause&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11:45&lt;/td&gt;
&lt;td&gt;32,8&lt;/td&gt;
&lt;td&gt;24,6 %&lt;/td&gt;
&lt;td&gt;22,96 − 3,38 − 17,54&lt;/td&gt;
&lt;td&gt;2,0&lt;/td&gt;
&lt;td&gt;Pause halten (&amp;gt; 1)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12:00&lt;/td&gt;
&lt;td&gt;31,0&lt;/td&gt;
&lt;td&gt;24,6 %&lt;/td&gt;
&lt;td&gt;21,70 − 3,25 − 17,54&lt;/td&gt;
&lt;td&gt;0,9&lt;/td&gt;
&lt;td&gt;Freigabe&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;

Um 11:45 würde eine neue Pause nicht mehr starten (nicht über 2 kWh), die laufende wird aber noch gehalten. Um 12:00 fällt der Wert unter 1 kWh und die Batterie lädt los. Das ist genau der Moment, in dem die verbleibende Sonne gerade noch für eine volle Batterie reicht, mit 30 % Reserve.

&lt;/p&gt;


	  &lt;header&gt;&lt;h3 class="section-title"&gt;Beispiel 6: Das Auto lädt&lt;/h3&gt;&lt;/header&gt;


&lt;p&gt;

Meine Wallbox ist mit dem Wechselrichter gekoppelt und lädt das Auto mit PV-Überschuss. Würde die Batterie pausieren, während das Auto lädt, könnte das Auto auch den Nachmittag verbrauchen und die Batterie würde nicht voll. Darum gilt: Zieht die Wallbox mehr als 100 W, wird nicht pausiert. Fängt das Auto während einer Pause an zu laden, gibt die nächste Prüfung frei.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Ein simulierter Sonnentag&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

Um den Effekt zu zeigen, habe ich einen sonnigen Tag mit 46 kWh PV durchgerechnet, einmal ohne und einmal mit Steuerung. Die Automation ist dabei exakt nachgebildet, die Prognose ist der Einfachheit halber perfekt.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="2026-10-06T10.00.02%20Batteriesteuerung%20Tagesverlauf%20ohne%20und%20mit%20Pause.png"&gt;
  &lt;img src="2026-10-06T10.00.02%20Batteriesteuerung%20Tagesverlauf%20ohne%20und%20mit%20Pause%20-%20scaled%20width%20620.png" alt="Zwei Diagramme" width="TMPREPLACEMEwidthSTART-2026-10-06T10.00.02 Batteriesteuerung Tagesverlauf ohne und mit Pause - scaled width 620.png-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-2026-10-06T10.00.02 Batteriesteuerung Tagesverlauf ohne und mit Pause - scaled width 620.png-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Simulierter Tag (Demo-Daten): Ohne Steuerung ist die Batterie um 12:45 voll, mit Steuerung um 14:30. &lt;a class="figcaption-clue-link" href="2026-10-06T10.00.02%20Batteriesteuerung%20Tagesverlauf%20ohne%20und%20mit%20Pause.png"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kennzahl&lt;/th&gt;
&lt;th&gt;ohne Steuerung&lt;/th&gt;
&lt;th&gt;mit Steuerung&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Batterie voll um&lt;/td&gt;
&lt;td&gt;12:45&lt;/td&gt;
&lt;td&gt;14:30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Höchste Einspeisung&lt;/td&gt;
&lt;td&gt;7,5 kW&lt;/td&gt;
&lt;td&gt;6,0 kW&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Einspeisung gesamt&lt;/td&gt;
&lt;td&gt;21,9 kWh&lt;/td&gt;
&lt;td&gt;21,9 kWh&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ladezustand am Abend (19:30)&lt;/td&gt;
&lt;td&gt;89 %&lt;/td&gt;
&lt;td&gt;89 %&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;

Die Energiemenge ist gleich, nur die Uhrzeit verschiebt sich. Ohne Steuerung landet die volle Mittagsspitze im Netz, mit Steuerung fängt die Batterie sie ab. Vormittags, wenn die Leistung noch niedrig ist, geht der Strom dafür ins Netz.

&lt;/p&gt;


&lt;figure class="image-center"&gt;
&lt;a href="2026-10-06T10.00.03%20Batteriesteuerung%20Prognose-Ueberschuss%20Verlauf.png"&gt;
  &lt;img src="2026-10-06T10.00.03%20Batteriesteuerung%20Prognose-Ueberschuss%20Verlauf%20-%20scaled%20width%20620.png" alt="Liniendiagramm des Prognose-Überschusses von Sonnenaufgang bis 15" width="TMPREPLACEMEwidthSTART-2026-10-06T10.00.03 Batteriesteuerung Prognose-Ueberschuss Verlauf - scaled width 620.png-TMPREPLACEMEwidthEND" height="TMPREPLACEMEheightSTART-2026-10-06T10.00.03 Batteriesteuerung Prognose-Ueberschuss Verlauf - scaled width 620.png-TMPREPLACEMEheightEND" loading="lazy" /&gt;
&lt;/a&gt;
&lt;figcaption&gt;Der Prognose-Überschuss am selben Tag mit den beiden Schwellen &lt;a class="figcaption-clue-link" href="2026-10-06T10.00.03%20Batteriesteuerung%20Prognose-Ueberschuss%20Verlauf.png"&gt;(klicken für größere Version)&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;

Nach der Freigabe steigt der Überschuss wieder, weil die Batterie schnell voller wird. Eine neue Pause gibt es trotzdem nicht: Bis 13:00 bleibt der Wert unter 2 kWh, danach ist ohnehin Schluss.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Schritt 9: Das Dashboard&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

Damit man sieht, was die Steuerung gerade tut, habe ich ein Dashboard mit Energiefluss, Verläufen und einem Abschnitt für die Steuerung. Neues Dashboard anlegen, Raw-Konfigurationseditor öffnen und einfügen. Der Energiefluss braucht &lt;code&gt;power-flow-card-plus&lt;/code&gt; aus HACS. Ohne Wallbox fällt der Block &lt;code&gt;individual&lt;/code&gt; weg.

&lt;/p&gt;


	  &lt;div class="example_code"&gt;
	  &lt;pre&gt;views:
  - title: PV LIVE
    path: pv
    type: sections
    max_columns: 4
    sections:
      - type: grid
        column_span: 4
        cards:
          - type: heading
            heading: Live
            icon: mdi:solar-power-variant
          - type: custom:power-flow-card-plus
            grid_options:
              columns: full
            entities:
              battery:
                entity:
                  consumption: sensor.batterie_entladen
                  production: sensor.batterie_laden
                state_of_charge: sensor.byd_ladezustand
              grid:
                entity: sensor.netz_leistung
              solar:
                entity: sensor.pv_leistung
                display_zero_state: true
              individual:
                - entity: sensor.wallbox_leistung
                  name: Wallbox
                  icon: mdi:car-electric
                  display_zero: true
            clickable_entities: true
            display_zero_lines: true
            use_new_flow_rate_model: true
            kilo_decimals: 1
            max_expected_power: 15000
            min_expected_power: 0.01
      - type: grid
        column_span: 4
        cards:
          - type: heading
            heading: Verlauf 24 h
            icon: mdi:chart-line
          - type: horizontal-stack
            grid_options:
              columns: full
            cards:
              - type: history-graph
                title: PV-Leistung
                hours_to_show: 24
                entities:
                  - entity: sensor.pv_leistung
                    name: PV gesamt
              - type: history-graph
                title: Netz
                hours_to_show: 24
                entities:
                  - entity: sensor.netz_leistung
                    name: Bezug (+) / Einspeisung (−)
              - type: history-graph
                title: Batterie-Ladezustand
                hours_to_show: 24
                entities:
                  - entity: sensor.byd_ladezustand
                    name: BYD
              - type: history-graph
                title: Prognose-Überschuss
                hours_to_show: 24
                entities:
                  - entity: sensor.pv_prognose_ueberschuss
                    name: Überschuss
      - type: grid
        column_span: 4
        cards:
          - type: heading
            heading: Batteriesteuerung
            icon: mdi:battery-sync
          - type: tile
            entity: input_boolean.batteriesteuerung_aktiv
            name: Steuerung nach Prognose
            icon: mdi:weather-sunny-alert
            color: amber
            icon_tap_action:
              action: toggle
          - type: markdown
            content: &amp;gt;
              {% set modus = states(
                   'sensor.gen24_speicher_steuermodus') %}
              {% set wb = states('sensor.wallbox_leistung') %}
              {% if modus | int(0) == 1 %}
              ### ⏸️ Ladung pausiert

              PV-Überschuss geht ins Netz,
              Freigabe spätestens 13:00
              {% elif wb | float(0) &amp;gt; 0.1 %}
              ### 🚗 Auto lädt

              Keine Ladepause, Batterie und Wallbox
              teilen sich den Überschuss
              {% else %}
              ### 🔋 Ladung frei

              Batterie lädt normal
              {% endif %}
          - type: tile
            entity: sensor.pv_prognose_ueberschuss
            name: Prognose-Überschuss
            icon: mdi:chart-bell-curve-cumulative
            color: blue
          - type: tile
            entity: sensor.pv_prognose_rest
            name: Restproduktion heute
            icon: mdi:solar-power
            color: amber	  &lt;/pre&gt;
    &lt;/div&gt;


&lt;p&gt;

Das Bild am Anfang des Artikels zeigt das Ergebnis mit Demo-Daten um 10:00: Die PV liefert 4,0 kW, das Haus braucht 0,5 kW, 3,5 kW gehen ins Netz, die Batterie steht bei 25 % still und wartet.

&lt;/p&gt;


	  &lt;header&gt;&lt;h2 class="section-title"&gt;Erfahrungen nach den ersten Tagen&lt;/h2&gt;&lt;/header&gt;


&lt;p&gt;

Am ersten sonnigen Tag hat die Steuerung um 09:00 pausiert. Um 11:00 hat Forecast.Solar die Prognose von 27 auf 14 kWh gesenkt, worauf sofort freigegeben wurde. Um 12:45 gab es noch eine kurze Pause, um 13:00 die feste Freigabe. Um 15:00 war die Batterie voll. Genau so soll es sein: Die Steuerung reagiert, wenn die Prognose schlechter wird, und der Sicherheitsfaktor sorgt dafür, dass es trotzdem reicht.

&lt;/p&gt;


&lt;p&gt;

Drei Dinge, über die ich gestolpert bin:

&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wenn SunSpec und der Modbus-Hub gleichzeitig abfragen, sind manche
Werte kurz "nicht verfügbar". Ein Abfrageintervall von 60 Sekunden in
der SunSpec-Integration hat das beruhigt.&lt;/li&gt;
&lt;li&gt;Nach jeder Änderung im SunSpec-Optionen-Dialog die Read models
prüfen, sonst fehlt der Ladezustand und der Überschuss-Sensor ist nicht
verfügbar.&lt;/li&gt;
&lt;li&gt;Ein zweiter &lt;code class="verbatim"&gt;template:&lt;/code&gt;-Schlüssel in der
&lt;code class="verbatim"&gt;configuration.yaml&lt;/code&gt; lässt die Sensoren aus
dem ersten still verschwinden.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;

Wer die Steuerung nachbaut, sollte die ersten Tage den Verlauf von &lt;code&gt;sensor.gen24_speicher_steuermodus&lt;/code&gt; neben den Ladezustand legen. Dort sieht man sofort, wann pausiert und wann freigegeben wurde, und kann Sicherheitsfaktor oder Grundlast an das eigene Haus anpassen.

&lt;/p&gt;

    </content>
    <id>https://andreas-voit.at/2026/10/06/home-assistant-batteriesteuerung-pv-prognose-from-tag-feed-with-content</id>
</entry></feed>