Efficiency calculations with last value in Home Assistant

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