dynamischer Stromtarif

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

Schreibe einen Kommentar