Hallo zusammen, seit kurzem habe ich einen dynamischen Stromvertrag und möchte die Rechnungen des Stromanbieters kontrollieren. Bei einem statischen Tarif wie bisher war dies ja einfach möglich, indem man den Zählerstand jeweils am Ende des Kalendermonats ausgelesen hat und die Differenz zur letzten Ablesung mit dem Arbeitspreis multipliziert hat. Beim dynamischen Stromtarif muss die Berechnung jede Stunde durchgeführt und aufsummiert werden. Ich habe dies wie unten realisiert und es scheint sehr gut zu funktionieren.
Es wird die Integration “EPEX Spot” benötigt.
Eigene Nutzung und Verbesserungsvorschläge sind willkommen!
#Automation
alias: 91 Calculate and Add Hourly Energy Cost
description: ""
trigger:
- platform: time_pattern
minutes: "59"
seconds: "59"
action:
- service: homeassistant.update_entity
entity_id: sensor.hourly_energy_cost
- service: input_number.set_value
data_template:
entity_id: input_number.monthly_energy_cost
value: |
{{ (states('input_number.monthly_energy_cost') | float) +
(states('sensor.hourly_energy_cost') | float) }}
- service: input_number.set_value
data_template:
entity_id: input_number.last_counter_value
value: "{{ states('sensor.total_imported_energy') }}"
mode: single
alias: 91 Reset Monthly Energy Cost
description: ""
trigger:
- platform: time
at: "00:59:58"
condition:
- condition: template
value_template: "{{ now().day == 1 }}"
action:
- service: input_number.set_value
data:
entity_id: input_number.monthly_energy_cost
value: 0
mode: single
#Configuration
template:
- sensor:
- name: hourly_energy_cost
unique_id: '2a752964-5e33-4d69-8c5a-99e2de245f65'
unit_of_measurement: "€"
state: >-
{% set current_energy = states('sensor.total_imported_energy') | float %}
{% set last_energy = states('input_number.last_counter_value') | float %}
{% set energy_used = current_energy - last_energy %}
{% set epex_price = states('sensor.epex_spot_data_net_price') | float %}
{% set working_price = 0.2009 %}
{% set tax = 0.19 %}
{{ (energy_used * epex_price / 100.0 * (1.0 + tax) + working_price) | float }}
- sensor:
- name: monthly_energy_cost
unique_id: '2a2a794b-7c63-4ff6-94e6-6bc0fd0a68ce'
unit_of_measurement: "€"
state: "{{ states.input_number.monthly_energy_cost.state | round(2) }}"
#Helper
input_number.monthly_energy_cost
input_number.last_counter_value