Heat Pump COP Calculation

I hope it is an easy and quick question.

I’ll be soon able to receive as calculated real-time feeds:

  • heating power
  • electrical power

How to create automatically the COP on emoncms ?

Real-time is obvious :smile:

How to deal with daily, weekly, monthly, seasonal one ?

Thans in advance.


Maybe this is not what you meant, but here we go:
You could create a virtual feed and let it calculate

(heating_pwr) / electric_pwr (edited)

If Wikipedia is not lying:)

thanks. I need how to do it on a daily basis non emoncms.

PS I don’t think it was the right formula.

The formula for COP is energy-out/energy-in. The energy-in part is typically just the electric power consumed over the measurement period in Kwh. The energy-out part is the total heat output over the measurement period, usually expressed in btu or Kcal but converted to Kwh so that the COP formula results in a unit-less ratio. For example:

If my one-ton mini split heat pump puts out 10,236 btus in an hour, dividing by 3412btu/kwh = 3kwh of energy (heat) output. If it uses 1 kwh of electricity during that hour, then the COP is 3/1 = 3.

That’s the simple answer. In the case of a mini-split, that includes the power used to run the blowers and fans. In non-integrated units, the power used by the air-handler may not be included in the calculation. There are legitimate reasons on both sides of that argument.

If you have a real-time input for heating-power, and it’s not in watt-hrs(wh), divide to convert (1wh = 3.41btus or .860Kcal), then multiply by the number of posting intervals in an hour (If your feeds are every 30 seconds, multiply by 120). Now you can divide that by the input power feed, to get the average COP over the interval.

Log that to a feed called COP and you are done.

Lets use the first cop=3 example to illustrate.

  • If the unit is putting out 10,236 btus per hour, then the input at 30 seconds intervals would be 85.3 (btus).
  • Dividing by 3.412, would be 25 watt-hrs.
  • Multiplying by 120 intervals/hour would be 3000.
  • Dividing by input power (1000 watts) would be 3 (COP).

All that said, I’m curious how you are measuring the heat output of your heat pump. Most attempts I’ve seen try to measure the air-flow and temperature rise at the condenser. That’s pretty hard with a mini-split and only a little easier with an air-handler. I’ve done some work in the area of airflow measurement so I’d be interested in the details if that’s what you are doing.

Logging COP in real time is not right to evaluate daily, weekly, etc.
You cannot cumulate COP.

How I measure ? using internal heat pump measure of flow rate, inflow temp, return temp

I agree, you cannot accumulate COP. When you log to a feed, it is not cumulative. If you plot the feed using any of the emon tools, the values depicted will be the average value of the feed over the period. Think about it. When you log watts to a feed, the plot shows the average watts over each “slice” of the period, whether that is a minute, an hour, or a day. Only the Kwh accumulator is cumulative. A plot of COP will indicate the COP over the period.

I’ll assume that either inflow-temp or return-temp is the output-temperature. DeltaT is the easy part. The hard part is an accurate flow rate. Some systems assume that a given fan speed will equal a particular air-flow, but without knowing the “head”, that is a guess at best. Other systems, like Carrier, use a duct-pressure sensor, which is quite a bit more accurate. So you must be reading these things out, assuming a particular specific heat for the air (which is reasonable) and calculating Btus or Kcals. Or better, saving yourself a step in emon and reporting Kwh.

Upon closer examination, I think we may both be wrong. It is not cumulative, but does not seem to report the average values over the period either. It appears to just report the values of individual data points at intervals corresponding to the plot resolution over the period. For instance, if I look at my refrigerator over a year, there are a bunch of points at zero. The thing reliably runs for about 45 minutes every two hours, so no way there should be zeroes in an annual plot.

The solution for you might be to log the resultant COP value to multiple feeds, each with varying intervals (hour, day, week).

The datalog in my IotaWatt power monitor does report out averages over the reporting periods. Now that I think about the way eMon stors their data, they would need to read the entire year to report daily averages. I guess that’s why they have the capability for multiple feeds at varying intervals. The IotaWatt datalog can provide either average or cumulative data over any given interval by reading the two entries that bound the interval.

I have the measured flow rate.

For clarity I am referring to water side, not refrigerant.

ANyway I still don’t have an automated way to evaluated daily, weekly, monthly, Season COP.

I don’t think to be wrong, sorry.

You would have to use the APIs to fetch the data and average it yourself. If you log the data to a Kwh feed with a one hour interval (stay with me here), then you can determine the average COP of any interval by dividing the difference between the start and end values by the total hours represented in the period.

For example, lets say you average COP 3 over a month. The “Kwh” feed will show an increase of 2232 COP-HOURS over that period. Arbitrarily lets say the value on Jan 1 is 12973 and the value on Feb 1 is 15205. The difference is 2232 COP-HOURS. If you divide that by 744 (31 days of 24 hours) you get 3, which is the average over that period.

The API doesn’t seem that difficult to use, but you can also get a CSV output of the daily cumulative COP-HOUR values, over any given period. Load that into a spreadsheet and you can pretty much get all the things you are looking for.

I was already aware to do it by hand.

I’d suppose that emoncms, focused on energy, would have this automated visualization (like other).

RFC :slight_smile:

Well, the system is open. Whenever I start with “somebody should…” my wife says that’s you. I just described how the data can be kept using the system as is. Now “somebody” needs to create an API to report the averages over that period. In the same way, that API would be useful to extract average power over any interval that is a multiple of the Kwh interval.

I hope your wife is happy and you help her more than here … just joking :joy:

I am not asking for anything different than proposal.

Unfortunately I am not developer but a user only.

Thanks for this long and useful thread. I’ll close here and survive happy (like your wife) with my excel.

ciao !

True, I was sloppy, mixed up input heat floe and output heat flow…

is it air to air , water to water or air to water i think air to water heat pump. you have to install either an ultra sonic flow sensor or a a normal flow sensor right in the water line, once you got the flow rate ( or an air flow meter if air to air) then temp sensor on the input side and one on the out put side then you can calculate the COP. because heat pump COP varies greatly. the same heat pump depending on the ambient temperature of the air or ground, it extracting heat from will range for COP of 1 - 6 depending how warm or how cold it is. also the operating output temp. example if I run my heat pump at as radiant floor heat source only. then my max temp of my output water only need to be between 30 - 40c and if my ground temp is 15- 20 c ( in the early fall) then my heat pump will run at COP +5 come spring time and my ground temps only 5C then my COP only around +3 but if I use the same heat pump for domestic hot water at 50 - 55C then my COP range is 2- 4 depending on time of year

Sorry for the late repy. We have a ‘learn’ article on calculating COP: Learn | OpenEnergyMonitor

This is the calculation we (@TrystanLea) uses for https://heatpumpmonitor.org/

@johncantor also has a spreadsheet on his site showing how COP is calculated: http://heatpumps.co.uk/heatpumpcalculator.html

In emoncms.org at the moment calculating daily, weekly, monthly COP is not really possible.

You can however calculate a cumulative kWh feed for both electricity and heat (assuming that you have heat in Watts).

You can then use the graph interface produce daily, weekly, monthly bar charts from the cumulative electric and heat kwh feeds as explained here:

If you then use csv export as @overeasy suggests you can calculate the COP.

Alternatively I have started developing an automated dashboard for this accessible at http://energy.emoncms.org
If you have the following feed names the heatpump dashboard will enable:

heatpump_elec - heatpump electric input in Watts
heatpump_elec_kwh - heatpump electric input in kWh
heatpump_heat - heatpump heat output in Watts
heatpump_heat_kwh - heatpump heat output in kWh
heatpump_flowT - heatpump flow temperature C
heatpump_returnT - heatpump return temperature C

With these feeds it can provide the following dashboard output:

1 Like

I’m not awfully happy about using 0.5 * Carnot COP in general. It’s probably a safe value for heat pumps used only for heating as a starting position, but if the HP is being used for hot water then the combined COP may be substantially different…

Hi guys, i have a hot water deposit with 300L that has 2 inputs to heat the water:

  • built-in heat pump
  • Solar panels

I’d like to measure the performance of the whole system and i’d like to calculate the real global COP of the system.

As @overeasy stated, a measure of COP is energy-out/energy-in.

So i’ve got my energy-in, a CT that measures all energy delivered to the system, including stand-by, LED’s, water pump, heat pump, everything that otherwise would not be there if didn’t have it.

Now for energy-out, from what i’ve read, i need flow meters and temperature IN/OUT for heater fluid of the energy sources.

What if! i could mesure only the resutling temperature increase and convert that to kWh?
Something like:

How many kW do I need to heat up my tank?”
volume in litres x 4 x temperature rise in degrees centigrade / 3412

Source: How to calculate the kW required to heat a volume of water in a particular time. | elementsofheating

So in this case (with 300L of water) the formula would be:

energy-out = deltaT_rise * 0,3517

For the deltaT_rise i would need to create a feed in emoncms that would only consider rising deltaT, multiply by a constant (0,3517) and integrate ( power to kWh) ?

So i would need to subtract the temperature value with the previous value, log to feed if positive. Integrate (power to kWh) and multiply by 0,3517.

What do you think?

Oh-Boy! A chance to put on my mechanical engineer hat.

First, you don’t really say if you have PV solar panels or solar thermal panels. Big difference. I’m going to assume it’s PV, and that you mention it because you also heat the water with resistance.

Being in the USA, I always do these calculations using btu’s so I’ll not get into the nitty gritty of your math. It’s pretty straightforward and I think you have the concept pretty well. I’ll just make a few comments about my own experiences in this area.

First, it’s my experience that when available, manufacturer’s COP data is usually pretty good. It’s fun to calibrate, measure, and validate, but I’ve always ended up confirming what I already should have known. So take a look at what’s available, and have some respect for any variance you get from that.

Accurately measuring static tank temperature is a challenge. Any time you put a sensor in or on the tank, it becomes usually reads low after awhile unless there is some movement in the fluid. Where you might be looking at 10deg rise in the tank, 1deg can mean a big error.

Your approach requires a closed system. Heat pump water heaters usually run a long time (compared to resistance heating). If there is any use during that period, the results will be off.

I don’t have a heat-pump, I have a solar-thermal system. I’ve monitored it for years with a mind toward determining the overall contribution of the solar vs electric resistance backup. Here’s what I do:

I have a water meter on the cold water feed to the tank(s). It is a pulse type meter, and I have a datalogger that records the 1 gal pulses. I have a temperature sensor on the cold water input which varies only seasonally, and on the hot water output which is pretty consistent with a fast acting accurate mixing valve fed by the tank and the metered cold water feed.

So my net BTUs out of the system is delta T (output-input) x gallons * 8.4 (pounds/gal). Divide that by 3412 to get kWh. In fact, except for adjusting the input temperature about once per month, I could get a decent measurement with the gallons alone. You could do the same with your system. It really doesn’t matter for this metric how you add the heat to the system. To get COP, you would just divide the kWh out by the kWh into the heat pump and resistance heaters.

The other thing you might want to get a handle on is standby heat loss. That’s pretty much a constant that only needs to be measured once. I did it by recording the kWh consumed by my system over a rainy weekend when we were not at home. I reduced that to a BTU (or kWh) loss per hour. So with that, I can add the standby loss to the previous hot water energy output calculation to get the total system energy output.

I’ll be curious to see what you come up with and how it compares to the nameplate ratings and manufacturer’s data of your equipment.