Calculate COP heatpump based on data from yesterday

Hi,

I would like to calculate the COP from newly installed heatpump (ecodan mitsubishi). I cannot do this ‘realtime’ since I only get the data right after 00:00 hours from the day before.

I do have a realtime kWh meter (shelly EM3 pro), but how do I compare those 2 values with each other AFTER the moment I get the energy generation data from the heatpump at 00:00?

Thanks!

This is the current script I’m using which gives me unreal values:

#COP Helper sensors
- platform: statistics
  name: "Heating Energy COP Helper"
  entity_id: sensor.shelly_pro3em_total_active_energy
  state_characteristic: change
  max_age:
    hours: 24
  sampling_size: 100
  precision: 2
- platform: statistics
  name: "Heat Pump Electric Energy COP Helper"
  entity_id: sensor.heat_pump_dailyheatingenergyproduced
  state_characteristic: change
  max_age:
    hours: 24
  sampling_size: 100
  precision: 2
    
#Current COP
- platform: template
  sensors:
    heating_cop_current:
     friendly_name: 'Current Heating COP'
     value_template: >
       {% set q = states('sensor.heat_pump_electric_energy_cop_helper') | float %} 
       {% set w = states('sensor.heating_energy_cop_helper') | float %}
       {% if q >= 0 and w > 0 %}
       {{ (q / w) | round(2) }}
       {% else %}
         0
       {% endif %}

I use kind of a different formula, to calculate the cop on the fly,

first I define the delta T, using diffence in In, and outlet temperatures:

'#############deltat##############

  • platform: template

    sensors:

    deltat:

    friendly_name: "Delta T HP"
    
    value_template: "{% set Out = states('sensor.lucht_water_h_p_out_water_temperature') | float %}
    

{% set In = states(‘sensor.lucht_water_h_p_in_water_temperature’) | float %}

{{ (Out - In)}}"’

Next, I calculate the heatoutput using the delta T and a COP formula (the value 130000 is the fixed flow of the waterpump)

'#############heatoutput##############

  • platform: template

    sensors:

    cophelper:

    friendly_name: "heatoutput"
    
    value_template: "{% set helper = states('sensor.deltat') | float %}
    

{{ (1300000 * 4.18 * helper / 3600 | float)}}"’

last but not least:

'#############copwp##############

  • platform: template

    sensors:

    copwp:

    friendly_name: "COP WP"
    
    value_template: "{% set wpoutput = states('sensor.cophelper') | float(0) %}
    
    {% set wpinput = states('sensor.wpmeteringzb_power') | float(0) %}
    
    {{ (wpoutput / wpinput) | round(2)}}"
    
    unit_of_measurement: "CoP"
    
  • platform: filter

    name: “COP”

    entity_id: sensor.copwp

    filters:

    - filter: range
    
      lower_bound: 0
    
      upper_bound: 8
    

#########dailycopwp#######

'- platform: template

sensors:

dagcop:

  friendly_name: "daily COP"

  value_template: "{% set dayinput = states('sensor.wpmeting_dag') | float  %}

  {% set dayoutput = states('sensor.heat_kwh_wp_dag') | float %}

  {{(dayoutput / dayinput) | round(1, default)}}"

  unit_of_measurement: "Daily CoP"'

the daily cop gets more accurate at the end of the day.

Good luck!

Hi Robbie,

looks a little complicated. How is the flow calculated? 130000 liters per year?