Hello everyone,
I receive the individual energy values from my heating system in my Home Assistant and would like to calculate the efficiency from this. I would like to carry out the following calculations:
Total energy:
Total_energy_generated = Generated_energy_heating + Generated_energy_domestic_water
Total_energy_injected = Injected_energy_heating + Injected_energy_domestic_water
Generated_energy_difference:
Generated_Energy_Difference = Total_Energy_Generated_Current_Value - Total_Energy_Generated_Last_Value
Injected_Energy_Difference:
Input_Energy_Difference = Total_Energy_Input_Current_Value - Total_Energy_Input_Last_Value
Efficiency:
Efficiency = Generated_Energy_Difference / Injected_Energy_Difference
Unfortunately, I can’t quite get this to work. There is either an error in the .yaml or the values are simply not updating on the dashboard. What could a correct solution look like? Here is my dashboard (last attempt, the value does not update) :
sensor:
- platform: luxtronik
sensors:
- group: calculations
id: ID_WEB_BIV_Stufe_akt
friendly_name: Bivalenzstufe
icon: mdi:step-forward-2
- group: calculations
id: ID_WEB_WP_BZ_akt
friendly_name: Betriebszustand
icon: mdi:state-machine
- group: calculations
id: ID_WEB_Time_WPein_akt
friendly_name: WP läuft seit
icon: mdi:clock-start
- group: calculations
id: ID_WEB_Time_ZWE1_akt
friendly_name: ZWE1 läuft seit
icon: mdi:clock-start
- group: calculations
id: ID_WEB_Time_SSPEIN_akt
friendly_name: SSP Ein
icon: mdi:clock-start
- group: calculations
id: ID_WEB_Time_SSPAUS_akt
friendly_name: SSP Aus
icon: mdi:clock-start
- group: calculations
id: ID_WEB_Time_VDStd_akt
friendly_name: VD Standby Zeit
icon: mdi:clock-start
- group: calculations
id: ID_WEB_Time_HRM_akt
friendly_name: HRM Zeit
icon: mdi:clock-start
- group: calculations
id: ID_WEB_Time_HRW_akt
friendly_name: HRW Zeit
icon: mdi:clock-start
- group: calculations
id: ID_WEB_Time_LGS_akt
friendly_name: TDI läuft seit
icon: mdi:clock-start
# Template-Sensoren
- platform: template
sensors:
# Erzeugte Energie Differenz
wp_erzeugte_energie_differenz:
friendly_name: "WP Erzeugte Energie Differenz"
unit_of_measurement: "kWh"
value_template: >
{% set previous = states('input_number.wp_erzeugte_energie_previous_value') | float(0) %}
{% set current = states('sensor.wp_gesamtenergie_erzeugt') | float(0) %}
{{ (current - previous) | round(2) }}
# Eingesetzte Energie Differenz
wp_eingesetzte_energie_differenz:
friendly_name: "WP Eingesetzte Energie Differenz"
unit_of_measurement: "kWh"
value_template: >
{% set previous = states('input_number.wp_eingesetzte_energie_previous_value') | float(0) %}
{% set current = states('sensor.wp_gesamtenergie_eingebracht') | float(0) %}
{{ (current - previous) | round(2) }}
# Wirkungsgrad WP
wp_wirkungsgrad_wp:
friendly_name: "WP Wirkungsgrad"
unit_of_measurement: ""
value_template: >
{% set erzeugt = states('sensor.wp_erzeugte_energie_differenz') | float(0) %}
{% set eingesetzt = states('sensor.wp_eingesetzte_energie_differenz') | float(1) %}
{% if eingesetzt > 0 %}
{{ (erzeugt / eingesetzt) | round(2) }}
{% else %}
0
{% endif %}
# Bivalenzstufe Zahl
wp_bivalenzstufe_zahl:
friendly_name: "Bivalenzstufe Zahl"
unit_of_measurement: ""
value_template: >
{% set bivalenzstufe = states('sensor.wp_bivalenzstufe') %}
{% if bivalenzstufe == 'one compressor allowed to run' %}
1 # one compressor allowed to run
{% elif bivalenzstufe == 'two compressors allowed to run' %}
2 # two compressors allowed to run
{% elif bivalenzstufe == 'additional heat generator allowed' %}
3 # Zusätzlicher Wärmeerzeuger darf mitlaufen
{% else %}
0 # Defaultwert, wenn keiner der Bedingungen zutrifft
{% endif %}
automation:
- id: '1741886598380'
alias: Automatische Mail
description: ''
triggers:
- entity_id: input_boolean.test_mail
from: 'off'
to: 'on'
trigger: state
- trigger: state
entity_id:
- sensor.wp_vl
for:
hours: 0
minutes: 10
seconds: 0
conditions: []
actions:
- data:
message: ***************
title: ***************
target: ***************
action: ***************
mode: single
- alias: Speichern des aktuellen Werts der Erzeugten Energie
trigger:
- platform: state
entity_id: sensor.wp_gesamtenergie_erzeugt
action:
- service: input_number.set_value
target:
entity_id: input_number.wp_erzeugte_energie_previous_value
data:
value: '{{ states(''sensor.wp_gesamtenergie_erzeugt'') | float(0) }}'
id: 3c4c3a58eea84c6ea9de08aa25ce2047
- alias: Speichern des aktuellen Werts der Eingesetzten Energie
trigger:
- platform: state
entity_id: sensor.wp_gesamtenergie_eingebracht
action:
- service: input_number.set_value
target:
entity_id: input_number.wp_eingesetzte_energie_previous_value
data:
value: '{{ states(''sensor.wp_gesamtenergie_eingebracht'') | float(0)
}}'
id: 6a43db2ce27544ce90a9242f8bab5b7c