Einige dynamische Stromtarife sind schon auf dem Markt, ab 2025 muss jeder Anbieter einen dynamischen Stromtarif anbieten.
Aber lohnt sich das? Kann ich mit einen dynamischen Stromtarif sparen?
Mit dynamischen Stromtarifen kann man Geld spare, wenn man in der Lage ist, Verbraucher mit hoher Stromaufnahme in den Zeiten des niedrigen Tarifes laufen zu lassen, aber wer will oder kann das?
Auch das Laden des Akkus der PV, in Zeiten des niedrigen Stromtarifes bedarf schon einiger Steuerung.
Ich bin mal hingegangen und wollte erst mal wissen, ob ich ohne extra Steuerung, oder Eingreifen in mein Leben mit einem dynamischen Stromtarif Geld sparen kann. Ich habe eine Wärmepumpe und eine PV-Anlage mit Speicher.
Die PV-Anlage und den Speicher habe ich im ersten Test mal außer Acht gelassen und mir einen Stromtarif angesehen, der je nach Tageszeit bestimmte Kosten pro kWh hat.
Dann habe ich den Stromverbrauch in den jeweiligen Zeitfenstern des Tarifes errechnet und dies dann in € gegen meinen derzeitigen Stromtarif gestellt. Mal sehen, was daraus wird, ist gerade erst fertig geworden.
Die Automatisierung berechnet über Time Trigger den jeweiligen Stromverbrauch, in dem es den aktuellen GesamtVerbrauch in kWh zunächst einmal in einen helper schreibt und dann jeweils die Differenz zwischen dem last_state und dem aktuellen GesamtVerbrauch ermittelt und diese Differenz dem Helper für die Preiszone addiert.
In der Bedingung wird geprüft, ob der last_state <> 0 ist, sonst ist die nachfolgende Berechnung der Differenzen falsch.
Dann sind Variablen definiert, die den Preis des dynamischen Tarifes und meines Anbieters festschreiben.
Danach folgt die Unterscheidung nach den Zeitfenstern des Anbieters.
In der Choose-Anweisung wird dann jedes Mal der aktuelle Gesamtverbrauch meines Hauses minus des last_state des Gesamtverbrauches dem jeweiligen Helper zu addiert, der zu dem Zeit-/Preisfenster passt.
Danach berechne ich die Werte in € für die einzelnen Entitäten.
– der Preis mit meinem Stromversorger
– Preis bei dem dynamischen Tarif
– Preise je Zeit-/Preisfenster
Danach überschreibe ich den last_state mit dem aktuellen Wert, damit ich im nächsten Durchlauf die Differenz wieder neu berechnen kann.
Wir brauchen dazu einige Helper und eine Automatisierung.
Der Sensor „inverter_total_load_consumption“ bildet den Gesamtverbrauch an Strom unseres Hauses ab und wird von einem Deye Wechselrichter zur Verfügung gestellt.
input_number:
inverter_total_load_consumption_last_state:
min: 0
max: 10000000000000
step: 0.001
unit_of_measurement: "kWh"
dyn_energy_consumption_high:
min: 0
max: 10000000000000
step: 0.001
unit_of_measurement: "kWh"
dyn_energy_consumption_midi:
min: 0
max: 10000000000000
step: 0.001
unit_of_measurement: "kWh"
dyn_energy_consumption_low:
min: 0
max: 10000000000000
step: 0.001
unit_of_measurement: "kWh"
low_price:
name: niedriger Preis
min: 0
max: 10000
step: 0.0001
unit_of_measurement: '€'
midi_price:
name: mittlerer Preis
min: 0
max: 10000
step: 0.0001
unit_of_measurement: '€'
high_price:
name: Hoher Preis
min: 0
max: 10000
step: 0.0001
unit_of_measurement: '€'
octopus_price:
name: octopus Preis
min: 0
max: 10000
step: 0.0001
unit_of_measurement: '€'
my_price:
name: mein Preis
min: 0
max: 10000
step: 0.0001
unit_of_measurement: '€'
alias: Verbrauch nach Zeit akkumulieren
description: ""
triggers:
- trigger: time_pattern
seconds: /10
enabled: true
conditions:
- condition:
- condition: template
value_template: >
{{ states('sensor.eu08l_hp1_compressor_power_consumption_accumulated')
| float > 0 }}
actions:
- variables:
high_price: 0.3744
midi_price: 0.3244
low_price: 0.2544
my_price: 0.3779
- choose:
- conditions:
- condition: time
after: "02:00:00"
before: "06:00:00"
sequence:
- target:
entity_id: input_number.dyn_energy_consumption_low
data:
value: >-
{{ states('input_number.dyn_energy_consumption_low') | float(0)
+ ((states('sensor.inverter_total_load_consumption') | float(0)
) -
states('input_number.inverter_total_load_consumption_last_state')
| float(0)) }}
action: input_number.set_value
- conditions:
- condition: time
after: "06:00:00"
before: "12:00:00"
sequence:
- target:
entity_id: input_number.dyn_energy_consumption_midi
data:
value: >-
{{ states('input_number.dyn_energy_consumption_midi') | float(0)
+ ((states('sensor.inverter_total_load_consumption') | float(0)
) -
states('input_number.inverter_total_load_consumption_last_state')
| float(0)) }}
action: input_number.set_value
- conditions:
- condition: time
after: "12:00:00"
before: "16:00:00"
sequence:
- target:
entity_id: input_number.dyn_energy_consumption_low
data:
value: >-
{{ states('input_number.dyn_energy_consumption_low') | float(0)
+ ((states('sensor.inverter_total_load_consumption') | float(0)
) -
states('input_number.inverter_total_load_consumption_last_state')
| float(0)) }}
action: input_number.set_value
- conditions:
- condition: time
after: "16:00:00"
before: "18:00:00"
sequence:
- target:
entity_id: input_number.dyn_energy_consumption_midi
data:
value: >-
{{ states('input_number.dyn_energy_consumption_midi') | float(0)
+ ((states('sensor.inverter_total_load_consumption') | float(0)
) -
states('input_number.inverter_total_load_consumption_last_state')
| float(0)) }}
action: input_number.set_value
- conditions:
- condition: time
after: "18:00:00"
before: "21:00:00"
sequence:
- target:
entity_id: input_number.dyn_energy_consumption_high
data:
value: >-
{{ states('input_number.dyn_energy_consumption_high') | float(0)
+ ((states('sensor.inverter_total_load_consumption') | float(0)
) -
states('input_number.inverter_total_load_consumption_last_state')
| float(0)) }}
action: input_number.set_value
- conditions:
- condition: time
after: "21:00:00"
before: "02:00:00"
sequence:
- target:
entity_id: input_number.dyn_energy_consumption_midi
data:
value: >-
{{ states('input_number.dyn_energy_consumption_midi') | float(0)
+ ((states('sensor.inverter_total_load_consumption') | float(0)
) -
states('input_number.inverter_total_load_consumption_last_state')
| float(0)) }}
action: input_number.set_value
- action: input_number.set_value
metadata: {}
data:
value: |-
{% if states('sensor.inverter_total_load_consumption') | float(0) > 0 %}
{{ states('sensor.inverter_total_load_consumption') | float(0) }}
{% else %}
{{ states('input_number.inverter_total_load_consumption_last_state') | float(0)}}
{% endif %}
target:
entity_id: input_number.inverter_total_load_consumption_last_state
enabled: true
- target:
entity_id: input_number.high_price
data:
value: >-
{% if states('input_number.dyn_energy_consumption_high') not in
['unknown', 'unavailable'] %}
{{ states('input_number.dyn_energy_consumption_high') | float(0) * high_price }}
{% else %}
0
{% endif %}
action: input_number.set_value
- target:
entity_id: input_number.low_price
data:
value: >-
{% if states('input_number.dyn_energy_consumption_low') not in
['unknown', 'unavailable'] %}
{{ states('input_number.dyn_energy_consumption_low') | float(0) * low_price }}
{% else %}
0
{% endif %}
action: input_number.set_value
- target:
entity_id: input_number.midi_price
data:
value: >-
{% if states('input_number.dyn_energy_consumption_midi') not in
['unknown', 'unavailable'] %}
{{ states('input_number.dyn_energy_consumption_midi') | float(0) * midi_price }}
{% else %}
0
{% endif %}
action: input_number.set_value
- target:
entity_id: input_number.octopus_price
data:
value: >-
{{ (states('input_number.low_price') | float(0) +
states('input_number.midi_price') | float(0) +
states('input_number.high_price') | float(0) ) | round(2) }}
action: input_number.set_value
- target:
entity_id: input_number.my_price
data:
value: >-
{{ ((states('input_number.dyn_energy_consumption_low') | float(0) +
states('input_number.dyn_energy_consumption_midi') | float(0) +
states('input_number.dyn_energy_consumption_high') | float(0)) *
my_price) | round(2) }}
action: input_number.set_value
mode: single