I have a NIBE heatpump and in this country they don't seem to want to sell the flow meter which would allow calculation of the COP. You can install a flow meter in the central heating loop but unfortunately with the all in one NIBE you would not be able to see the DHW flow figures as the shuttle valve and pipes are internal. I wanted to see if the heat pump is matching the performance as advertised.
I ended up adding an ESP8266 based device which had an rs485 connection to the heat pump. This is essentially emulating the NIBE modbus part you can buy for circa £600 !#!@. I made the equivalent for about £20. NIBE seems to have a policy for charging too much for a lot of accessories and the online tracking software.
I am running a node-red server which frequently polls the ESP8266 and saves the data in an influxdb. It calculates the COP as part of the process.
On my NIBE F1255 I can disable the compressor and use only the internal resistance heating. The process is as follows.
1. The immersion works in 1 kWh increments. It is worth having a high power setting for the process.
2. Put the pump for the central heating loop in manual control. I also set a demand for 30 degrees in the house.
3. Start with whatever the lowest pump % setting you have and then for each 5% setting record the difference between temperature out and in on the central heating loop. It is worth waiting for about a minute for the temperature to stabilise after each pump setting before taking the reading.
4. Then switch the heating to the DHW and repeat the process.
You should have a nice graph of delta T vs pump %.
Now the process works on the idea that DT for a volume of water is given by DT = power in / (volume * 1.06ish)
So for each of the readings you have you can get a value of V = immersion power / DT. You can ignore the 1.06 as you don't need to know the V exactly. Just a proportional value for use later.
So in the future you can set the heatpump to work as normal. Using the modbus, read in the power input into the compressor;The pump % setting for the hot water loop; The temperature in and out.
Interpolate the values from your graph using the % pump setting. Call this value V
then power into the hot water = DT * V
COP is power into hot water / power into compressor.
The accuracy is obviously dependant on the accuracy of the temperature readings and the resistance in the hot water loop not changing. I have the radiators balanced so the number of radiators on the circuit isn't changing. If you have thermostats opening and closing all the time then your numbers will not be so accurate.
Things I have noticed with my COP. With 3º OAT I am getting about 4.5 COP at the moment. In April last year when the borehole had cooled I was getting 4.0 COP. I haven't had a chance to look at SCOP as I still need to gather a years worth of data. I shall update with some more figures during the winter if people are interested.
The DHW COP really falls after 50ºC. If I luxury boost to 60C then the COP moves from 2.5 to finish at about 2.0.
I have attached the node red flow which might be a useful starter for 10. I never coded in JS before and don't code much anyhows so there is not a lot of documentation. It might help somewhat.
The basis for my ESP8266 code. This will be need to be modified to use the Wifi.
https://github.com/openhab/openhab-addons/blob/2.5.x/bundles/org.openhab.binding.nibeheatpump/contrib/NibeGW/Arduino/NibeGW/NibeGW.ino