ich habe Euch in diesem Artikel schon erzählt, dass ich einen dynamischen Stromtarif von Tibber verwende. Richtig Sinn macht dieser mit meinem Balkonkraftwerk und den damit verbundenen Akku’s von Marstek und Growatt.
In diesem Artikel möchte ich Euch aufzeigen, wie ich rein mit Home Assistant eine Nulleinspeisung realisiere und damit bares Geld sparen kann.
Was Ihr dafür benötigt:
Einen großen Akku und einen steuerbaren Wechselrichter, nebst PV Modulen.
- Growatt Noah 2000, hier eines der günstigsten Angebote bei Amazon: https://amzn.to/4f2v2B4
- APSystems EZ-1 M Wechselrichter, günstig neu für aktuell 139 Euro: https://amzn.to/4f3J8m0
- alternativ zum Noah: Marstek B2500 Akku https://amzn.to/4eJGZMs
Wer bereits einen anderen WR hat, keine Sorge, mit etwas Geschick kannst Du auch über den NOAH 2000 direkt die Ausgabe steuern.
Wie man den Noah in Home Assistant einbindet findest Du in diesem Artikel: Noah-MQTT
Nachdem Du Deinen NOAH 2000 und den EZ-1M in HA eingebunden hast benötigen wir einige Helfer. Diese kannst Du direkt in den Einstellungen – Geräte und Dienste – Helfer einrichten:
- Template-Sensoren:
- Sensor für Strom rein oder raus
- Stromproduktion Tibber
- Heimbedarf Strom
- Solarbedarf ZeroPower
Zum Anlegen der Sensoren klicke unten rechts auf „Helfer erstellen„. Dann Template und Sensor auswählen. Für alle gilt folgende Einstellung:
- Maßeinheit: W
- Geräteklasse: Leistung
- Zustandsklasse: Messung
sensor.tibber_inout
{{ states('sensor.power_home') | int - states('sensor.tibber_power_production') | int}}
Hier bestimme ich, ob ich Strom konsumiere (positiver Wert) oder einspeise (negativer Wert).
Ihr seht schon, hier läuft gerade die Nulleinspeisung. 😊
Sensor.Tibber_power_production
Ich brauche einen Sensor, der mir anzeigt, ob ich Strom produziere und ansonsten auf 0 steht.
{% if not has_value("sensor.power_production_home") or states('sensor.power_home') | float(0) > 0 -%}
0
{%- else -%}
{{ states('sensor.power_production_home') }}
{%- endif %}
Der sensor.power_production_home und der sensor.power_home ist mein Sensor von Tibber. Dieser zeigt aber nicht 0 an, wenn nicht mehr produziert wird und ist nach Tagesbeginn nicht verfügbar. Also filtere ich, ob er keinen Wert hat oder Strom vom Grid konsumiert wird. Wenn ja, stelle ich Ihn auf 0, ansonsten zeigt er korrekte Werte an, wenn ich Strom mit Überschuss produziere.
Sensor.heimbedarf_strom
Heimbedarf Strom kalkuliert bei mir den Bedarf an Strom. Da ich ein BKW im Einsatz habe und somit auch Solarertrag produziere, muss ich den Solarertrag mit dem Stromkonsum verrechnen:
{{states("sensor.solar_gesamtleistung") |int(0) -states("sensor.tibber_power_production") |int(0) + states("sensor.power_home") | int(0)}}
Solar_Gesamtleistung ist meine Stromeinspeisung aus dem Akku ins Hausnetz(Wert vom EZ-1M).
Tibber_power_production ist die Einspeisung ins Grid oder 0 (extern zum Netzbetreiber)
Power_Home ist mein Strombezug aus dem Grid (vom Netzbetreiber)
Zusammengerechnet bekomme ich mit diesen den Bedarf meiner Stromverbraucher.
sensor.solarbedarf_zeropower
Der letzte Sensor ermittelt den noch zusätzlich Bedarf an Solarstrom. Diesen benötige ich nur zur Kontrolle, aber nicht in der Automation.
{{states("sensor.heimbedarf_strom") |float(0) - states("number.solar_maximale_leistung") |float(0)}}
Die eigentliche Automation hinter PowerZero:
Ich erkläre euch gleich den Code, hier aber erstmal alles zusammen:
alias: PV PowerZero
description: ""
triggers:
- seconds: /30
trigger: time_pattern
conditions:
- condition: not
conditions:
- condition: state
entity_id: sensor.solar_gesamtleistung
state: unavailable
- condition: state
entity_id: sensor.noah_2000_soc
state: "100"
- condition: numeric_state
entity_id: sensor.noah_2000_output_power
above: 0
actions:
- metadata: {}
data:
value: >
{% set consumption = states('sensor.tibber_inout') | float %} {% set
current_output = states('number.solar_maximale_leistung') | float %} {%
set min_output = 30 %} {% set max_output = 400 %} {% if -6 <
consumption < 6 %}
{% set desired_output = current_output %}
{% else %}
{% set desired_output = current_output + consumption - 15 %}
{% endif %} {% set desired_output = [desired_output | round(0,
'floor'),max_output] | min %} {% set desired_output = [desired_output,
min_output] | max %} {{ desired_output }}
target:
entity_id: number.solar_maximale_leistung
action: number.set_value
mode: single
Ich triggere alle 30 Sekunden und prüfe ob der Noah einspeist, der WR verfügbar ist und der Akku nicht voll. Bei voll mache ich eine etwas andere Steuerung, die ich später mal betrachten werde.
Das Value-Template:
- ich bestimme, wie hoch meine +/- Bedarf an Strom ist: consumption
{% set consumption = states('sensor.tibber_inout') | float %}
- meinen aktuellen Solarproduktion (Wert vom EZ-1M): current_output
{% set current_output = states('number.solar_maximale_leistung') | float %}
- wir setzen min und max Werte: min_output, max_output (400 W reichen mir für den Grundbedarf)
{% set min_output = 30 %} {% set max_output = 400 %}
- wenn die consumption zwischen +/- 6 ist, bleibt der current_output Wert erhalten.
{% if -6 < consumption < 6 %}
{% set desired_output = current_output %}
{% else %} - Ansonsten nehmen wir den current_output, addieren die consumption dazu und haben noch einen Korrekturwert von 15 bei mir.
{% set desired_output = current_output + consumption - 15 %}
{% endif %} - letztens werden noch die max/min Werte abgeglichen.
{% set desired_output = [desired_output | round(0,'floor'),max_output] | min %} {% set desired_output = [desired_output, min_output] | max %}
- Den bestimmten Wert setzen wir als neuen Ausgabewert für den EZ-1M.
{{ desired_output }}
target:
entity_id: number.solar_maximale_leistung
action: number.set_value
Hinweis: Durch die Nutzung der obigen Links erhalte ich unter Umständen eine kleine Provision.
1 Gedanke zu „Nulleinspeisung – From (almost) zero to Power Hero – in Home Assistant“
Kommentare sind geschlossen.