Install so far straight forward. Inserted the new electric meter between the the outgoing lead from fuse the existing heat pump electric meter in its own enclosure. Managed to connect so it was reading a negative number so swopped the live wires round to resolve.
The web page is pretty much configure to allow you read data straight away. But took a while to get my head round how to navigate.
Screen shot of what I see, basically just electric, outside temp and there is a DHW flag but I think it needs connecting to something else for a stronger reading,
Just waiting for a M bus to heat meter reader.
Maxa i32V5 6kW ASHP (heat and cooling)
6.5kW PV
13.5kW GivEnergy AIO Battery.
Posted by: @luciaI'm wondering how someone like me, who runs away screaming when pointed at Github, manages to monitor their heat pump system for all the key factors like flow and return temps, power use, outside/inside temperatures, SCOP etc.
...
I'm asking for self-interested reasons - it seems to be an arcane science - but also because I think it is an under-discussed topic.
There has in fact been plenty of discussion, but it is probably not easy to find unless you know the right search terms, and I am not sure what they are!
In effect, there are three routes to monitoring:
(a) rely on the manufacturer's app or whatever. Easy, but constrained 100% by whatever the manufacturer wants to let you see. Whatever.
(b) what we might broadly call third party solutions, ranging from Home Assistant (very Home Assistant, very Marmite) and the other various hardware/software packages through to things like Homely. Almost all will involve some sort of expenditure (sometimes not trivial) and most will require DIY and computing skills. At the most expensive, most complex end of this route you get third party sensors, ie you are no longer reliant on the manufacturer's data, which may or may not be tweaked in various ways (we just don't know, and given dieselgate, we should probably be wary unless we can do some verification, which often can be done).
(c) the DIY approach, typically using something called a modbus connection to the AHSP or its controller. Many (50% or more?) AHSPs have modbus, you just have to find out how to access it), and the simplest most reliable way to connect is by wire; the data collected over this connection goes into a database, from where it can be viewed and analysed. One compromise is that I monitor the manufacturer's sensors/data, and so am dependent on the manufacturer not cooking the books. This is the route I chose, and although it does require modest expenditure, some DIY stuff and some computing ability, it is definitely not beyond what I call the reasonably capable interested amateur. I then plot the results using a plotting package from python (python being a relatively easy to use programming language eg if room is too hot, then turn the heating down a bit). The charts look like this, and as you can see, they cover most if not all the variables you are interested in:
This is a week at the end of last January (you can zoom and pan these charts to your heart's content). You can see among other things:
(a) frequent cycling (the zig-zag in the upper chart), though if you zoom in, it is not necessarily detrimental cycling, at about two cycles per hour
and, as it was cold on the night of the 26th/27th Jan,
(b) multiple defrost cycles (these are marked by the actual LWT (leaving water temperature, the temp of the water as it leaves the heat pump) dropping below the Actual RWT (returning water temperature, the temp as it returns to the heat pump)
(c) how the hourly energy consumption goes up, and the hourly COP (blue line on the chart) falls rather dramatically during this period of defrost cycling.
I have partly written up how to do this on the forum, see here, but was overtaken by various events before I could complete it. I have every intention of completing the write up this coming winter...
Midea 14kW (for now...) ASHP heating both building and DHW
@cathoderay Being a renewable energy nerd sans programming ability, I have taken the middle but relatively expensive Homely mode; I am reliant on the manufacturer’s honesty and the installer’s ability to ensure my ASHP is running efficiently. I realise that I could employ external monitoring and bypassing what the manufacturers are telling me but, even if I did that, I doubt that I could better the settings Homely chooses dynamically anyway.
External metering might be more accurate to tell me the COP or even the SCOP I suppose - but my system would still be consuming the same amount as the system did without the more precise measurements. 😉
I’ll stick with the present arrangement and just sprinkle a little salt on the COP readings - my consumption history over the last few years during which N-Power then Eon Next and more recently Octopus Energy has been very difficult to tie down to weekly / monthly consumption as the first two suppliers made a total mess of my meter reading throughout the time they supplied me. As best I can tell, (allowing for all the changes I have made to the property’s heat loss, added solar PV, added battery storage, method of heating, going all electric) added an ASHP and removed the gas heating and cooking, our annual consumption is somewhat lower than it was. Another twelve months time, and I feel I will have enough data to make an accurate account of the savings. Regards, Toodles.
Toodles, he heats his home with cold draughts and cooks his food with magnets.
Posted by: @toodlesBeing a renewable energy nerd sans programming ability, I have taken the middle but relatively expensive Homely mode; I am reliant on the manufacturer’s honesty and the installer’s ability to ensure my ASHP is running efficiently. I realise that I could employ external monitoring and bypassing what the manufacturers are telling me but, even if I did that, I doubt that I could better the settings Homely chooses dynamically anyway.
I also rely on the manufacturer's data, but, as noted above, I do have some ways of verifying some of the data. For example, I have an independent heat pump dedicated kWh meter (not modbus enabled, so I can't wire it in) which I can and do read manually. The energy in data it produces is similar to, but not the same as, the data Midea make available. I have yet to determine why the Midea data is different. I also have a crude analogue flow meter in the primary circuit, and thereby can verify one of the key determinants of energy out (the other two are delta t between LWT and RWT, which I can get crude IR thermometer readings for, and specific heat of the circulating fluid, which is a known). I can therefore get a tolerable independent manual estimate of energy out, and that means that, given I also have energy in, I can calculate an independent COP. These are ad hoc manual checks, not automated monitoring running in parallel, but they do at least provide a way of checking Midea's data. By and large, the discrepancies aren't that great.
The system I use also allows for basic Homely like dynamic controls, the 'if the room is too hot, then turn down the LWT a bit, if it is too cold, then turn up the LWT a bit' type controls. I could add, with a bit of slightly more complex coding, anticipatory controls based on weather forecasts, but as the forecasts aren't always even close to the actual weather, I haven't bothered. The room temp being over or under temp is one of the most useful variables to use to tweak the system, because it is the end result of all the other factors currently (and recently) in play eg solar gain/doing a lot of cooking will cause the room temp to overshoot, wind and rain chill will cause it to undershoot, and my automatic dynamic control then just tweaks the LWT whichever way it needs to go.
To give an idea of the coding complexity involved, I reproduce below the full heavily commented (makes it look much busier than it is!) python code from my auto-adaption script. The script runs all the time in the background, if there is a power cut (as happened yesterday!), it gets restarted automatically. It first sets up the modbus connections, one to the Midea wired controller, one to my independent room temp sensor, and then checks the room temperature (aIAT - dIAT, actual indoor air temp minus desired indoor air temp) every hour (the scheduler is at the bottom of the code), and tweaks the LWT as needed by moving the ends of the weather compensation curve (WCC) up or down. It looks like a lot of code, but it is very repetitive, if X do Y, with elif being shorthand for 'else if' - it simply runs through the code which executes a series of if X do Y statements. It also logs it's activity to a log file, that way I can check it is doing it's thing (it does). Note that a Midea modbus connection allow you to both read and write to the controller, that is, I can both get a variable's value, and in some cases set the value, eg the ends of the WCC. This is extremely useful...
import minimalmodbus import serial from datetime import datetime import schedule import time import os import sys # I think these are needed to keep things running smoothly... os.fork() and sys.exit() # set up the wired controller connection instrument = minimalmodbus.Instrument('/dev/ttyUSB0', 1) instrument.serial.port instrument.serial.baudrate = 9600 instrument.serial.bytesize = 8 instrument.serial.parity = serial.PARITY_NONE instrument.serial.stopbits = 1 instrument.mode = minimalmodbus.MODE_RTU # set up the aIAT sensor connection (uses the same serial settings as above) instrument_MD02 = minimalmodbus.Instrument('/dev/ttyUSB0', 3) instrument_MD02.mode = minimalmodbus.MODE_RTU # set the desired IAT dIAT = 19 # baseline standard WCC pre auto-adapt was 58@-4 / 33@15 # auto-adapt started 0800 30th Oct 2023 def hrCheck(): # check DHW is NOT running (ie reg0 is not 6) and only do hrCheck it it is not running # reg0 = instrument.read_register(0) ## doesn't work, DHW can be on, but not actually heating as tank is > 40 degrees # use valve position instead on_off = instrument.read_register(129, 0) valve_pos = "{:08b}".format(on_off)[-5] # 1 = DHW is on, 0 = DHW is off # note valve_pos is a string, not an integer, hence need '0' not 0 if valve_pos == '0': #print(f'valve_pos={valve_pos}') #print(type(valve_pos)) # get a datetime for logging now = datetime.now() now = now.strftime("%Y-%m-%dT%H:%M:%S") # get the aIAT (it is reported as x 10, ie 12.6 as 126 so need to divide by 10) aIAT = instrument_MD02.read_register(1, 0, 4)/10 #sleep a while to reduce bus collisions time.sleep(0.1) # compare the aIAT to the dIAT and set the ends of the WCC accordingly # for now, keep it simple, no loops, write code out in full # set the baseline, non-adapted curve values # NOTE MAX value for left hand end =60, baseline plus adaption must not exceed this # log changes here # original values: left/right: 56/32 # 2023-11-08 1655: 56/34 leftBase = 56 rightBase = 34 if aIAT - dIAT >= 3: # house is too warm, lower ends of WCC by 3 degree C instrument.write_register(265, leftBase - 3, 0) instrument.write_register(266, rightBase - 3, 0) # sleep then get current WCC settings, just to be sure time.sleep(0.1) leftWCC = instrument.read_register(265, 0) rightWCC = instrument.read_register(266, 0) with open('./modbus/auto_adapt_log.csv', 'a') as f: f.write(f'\n{now},{round(aIAT - dIAT, 1)},{leftWCC},{rightWCC}') elif aIAT - dIAT >= 2 and aIAT - dIAT < 3: # house is too warm, lower ends of WCC by 2 degree C instrument.write_register(265, leftBase - 2, 0) instrument.write_register(266, rightBase - 2, 0) # sleep then get current WCC settings, just to be sure time.sleep(0.1) leftWCC = instrument.read_register(265, 0) rightWCC = instrument.read_register(266, 0) with open('./modbus/auto_adapt_log.csv', 'a') as f: f.write(f'\n{now},{round(aIAT - dIAT, 1)},{leftWCC},{rightWCC}') elif aIAT - dIAT >= 1 and aIAT - dIAT < 2: # house is too warm, lower ends of WCC by 1 degree C instrument.write_register(265, leftBase - 1, 0) instrument.write_register(266, rightBase - 1, 0) # sleep then get current WCC settings, just to be sure time.sleep(0.1) leftWCC = instrument.read_register(265, 0) rightWCC = instrument.read_register(266, 0) with open('./modbus/auto_adapt_log.csv', 'a') as f: f.write(f'\n{now},{round(aIAT - dIAT, 1)},{leftWCC},{rightWCC}') elif aIAT - dIAT > -1 and aIAT - dIAT < 1: # house is right range, set non-adapted WCC ends instrument.write_register(265, leftBase, 0) instrument.write_register(266, rightBase, 0) # sleep then get current WCC settings, just to be sure time.sleep(0.1) leftWCC = instrument.read_register(265, 0) rightWCC = instrument.read_register(266, 0) with open('./modbus/auto_adapt_log.csv', 'a') as f: f.write(f'\n{now},{round(aIAT - dIAT, 1)},{leftWCC},{rightWCC}') elif aIAT - dIAT > -2 and aIAT - dIAT <= -1: # house is too cool, raise ends of WCC by 1 degree C instrument.write_register(265, leftBase + 1, 0) instrument.write_register(266, rightBase + 1, 0) # sleep then get current WCC settings, just to be sure time.sleep(0.1) leftWCC = instrument.read_register(265, 0) rightWCC = instrument.read_register(266, 0) with open('./modbus/auto_adapt_log.csv', 'a') as f: f.write(f'\n{now},{round(aIAT - dIAT, 1)},{leftWCC},{rightWCC}') elif aIAT - dIAT > -3 and aIAT - dIAT <= -2: # house is too cool, raise ends of WCC by 2 degree C instrument.write_register(265, leftBase + 2, 0) instrument.write_register(266, rightBase + 2, 0) # sleep then get current WCC settings, just to be sure time.sleep(0.1) leftWCC = instrument.read_register(265, 0) rightWCC = instrument.read_register(266, 0) with open('./modbus/auto_adapt_log.csv', 'a') as f: f.write(f'\n{now},{round(aIAT - dIAT, 1)},{leftWCC},{rightWCC}') elif aIAT - dIAT <= -3: # house is too cool, raise ends of WCC by 3 degree C instrument.write_register(265, leftBase + 3, 0) instrument.write_register(266, rightBase + 3, 0) # sleep then get current WCC settings, just to be sure time.sleep(0.1) leftWCC = instrument.read_register(265, 0) rightWCC = instrument.read_register(266, 0) with open('./modbus/auto_adapt_log.csv', 'a') as f: f.write(f'\n{now},{round(aIAT - dIAT, 1)},{leftWCC},{rightWCC}') else: # only gets executed if nothing matches ie an error has occured # sleep then get current WCC settings, just to be sure time.sleep(0.1) leftWCC = instrument.read_register(265, 0) rightWCC = instrument.read_register(266, 0) with open('./modbus/auto_adapt_log.csv', 'a') as f: f.write(f'\n{now},{round(aIAT - dIAT, 1)},{leftWCC},{rightWCC},error, WCC ends were not set') #def hwON(): # instrument.write_register() # do the check every hour at 10m 30s past the hour (won't accept '00' for minutes) # changed to 10m 30s to test whether running hrCheck turns off DHW at 13:10:30 schedule.every().hour.at("10:30").do(hrCheck) # after running 13:01:30 hrCheck make sure DHW is on # schedule.every().day.at("13:03:30").do(hwON) # uncomment this to cancel schedule temporarily # schedule.clear() # for testing, uncomment this line and kill/restart in terminal to get one off run # schedule.run_all() while True: schedule.run_pending() time.sleep(1)
Midea 14kW (for now...) ASHP heating both building and DHW
Posted by: @cathoderayIn effect, there are three routes to monitoring:
Well 4 really, you have missed heat pump monitor. It not reliant on anything from the heat pump, so no need to tap in to modbus etc. Class 2 heat meter, electric meter, outside temperature from that you get everyone need to monitor. All pre configured ready to install and go
Maxa i32V5 6kW ASHP (heat and cooling)
6.5kW PV
13.5kW GivEnergy AIO Battery.
Following this thread with much interest.
Posted by: @cathoderayI also rely on the manufacturer's data, but, as noted above, I do have some ways of verifying some of the data. For example, I have an independent heat pump dedicated kWh meter (not modbus enabled, so I can't wire it in) which I can and do read manually. The energy in data it produces is similar to, but not the same as, the data Midea make available. I have yet to determine why the Midea data is different.
@cathoderay I have a Samsung Gen6. I have an independent electricity meter showing ASHP usage. The numbers don't quite match the Samsung data, but I put this down to the fact on my circuit the meter is only measuring ASHP unit consumption (on a separate RCD circuit) and does not include the two 50W circulating pumps nor the couple watts drawn by the Samsung controller itself. When taken into consideration, I am satisfied the values are consistently reliable.
I found the rest of your post very enlightening, particularly your dynamic modification of LWTs based on room temp as affected by external factors other than outside ambient temperatures - brilliant!
My installation is new, and at present I'm stuck manually taking readings daily and recording them in a spreadsheet. I have reliable electrical metering, manufacturers temp sensors, and electronic and mechanical flow meters installed. I have some limited python knowledge and a technical background, so am keen to work out how to increase my monitoring capability, but an reluctant to install any invasive monitoring equipment - sticking a sensor on a pipe is OK, but I'm not prepared to cut into pipework to install additional measuring meters. I guess my next task should be to determine if my controller has modbus capability to allow me to read and record data more frequently, and to modify settings such as LWT (Edit - I see it does with an additional modbus module that can be purchased separately)
@old_scientist The samsung Gen 6 can use modbus to communicate but it needs an additional PCB in the outside unit. I believe Homely uses the same card, like this
https://midsummerwholesale.co.uk/buy/samsung-heat-pumps/Samsung-modbus-MIM-B19
House-2 bed partial stone bungalow, 5kW Samsung Gen 6 ASHP (Self install)
6.9 kWp of PV
5kWh DC coupled battery
Blog: https://thegreeningofrosecottage.weebly.com/
Heatpump Stats: http://heatpumpmonitor.org/system/view?id=60
@bontwoody In the case of my Daikin ASHP, Homely supplied the DCOM-LT/IO Modbus for the install. (I’m uncertain whether that is ‘IO’ or ‘10’ but I think IO) and the supplied manual has ‘loads’ of dip switch combinations for many configurations! Regards, Toodles.
Toodles, he heats his home with cold draughts and cooks his food with magnets.
This is the unit I have:
https://www.saturnsales.co.uk/Daikin%20DCOM-LT-IO%20Modbus%20Sequence%20Controller.html
Regards, Toodles.
Toodles, he heats his home with cold draughts and cooks his food with magnets.
Posted by: @bontwoody@old_scientist The samsung Gen 6 can use modbus to communicate but it needs an additional PCB in the outside unit. I believe Homely uses the same card, like this
-- Attachment is not available --
https://midsummerwholesale.co.uk/buy/samsung-heat-pumps/Samsung-modbus-MIM-B19
@bontwoody Thanks, that's the one and for other Samsung owners who may be interested I found loads more info here:
Question first to @lucia Why?
what each of us need is a method of controlling the temperature of our house. Each ashp has an interface to do that. The key bit is to be shown how to use it, and ensure it is set up for weather compensation with the lowest feasible water flow temperatures.
i understand the Heatgeek optimisation method is to reduce the weather compensation parameters until the house is cold and then increase them a bit. Then let the pump and weather compensation do its own thing. Then monitor electricity usage with the supplier app.
I’m really glad that enthusiast geeks want to robustly monitor their equipment and advance the (b)leading edge of the technology eg. https://community.openenergymonitor.org/t/heatpumpmonitor-org-starts-starts-per-hour/26246 but I hope and expect (as an everyday user) to not need to.
I also realise that many want to fine tune their total renewable technology to minimise their bills in conjunction with their batteries. But for a heatpump alone the extra, specialist degree of control shouldn’t be need surely. Making the optimal use of agile needs extra control certainly.
So fundamentally what do you want the monitoring to do?
2kW + Growatt & 4kW +Sunnyboy PV on south-facing roof Solar thermal. 9.5kWh Givenergy battery with AC3. MVHR. Vaillant 7kW ASHP (very pleased with it) open system operating on WC
Question first to @lucia Why?
Good question @judith
Because I want/need to know exactly how my kit is faring, what it is costing me and what, if anything I can do to improve things. And by all accounts the supplied monitoring kit is fairly naff whatever brand of heat pump is installed.
Before I had a smart meter I was reading my gas/electric meters weekly, every Sunday. Unless I was away of course. I'm shoe string productions I can't afford for things to go astray. Hopefully, I manage this without being a pain in the proverbial...
I can't afford batteries and solar.
I am on Octopus Tracker and have been from the start of it. That's what prompted weekly meter reads because those prices can/have fluctuated quite dramatically at times. Octopus will generate a bill within days of new readings being supplied. Thus no nasty surprises.
And I turned into an utter energy geek. 🤷🏻♀️
I monitor Agile through the Octopus Compare app and would change if necessary.
I had a Twitter chat with one of the Octopus Heat Pump head honchos the other night about their 50º design temps. He admitted that they do it to keep costs down but reckoned it was balanced out by smart tariffs. I think that's a very privileged way of justifying it because those tariffs still need batteries and solar to make a real dent in running costs.
So back to your Q - good, accurate, accessible, open data, monitoring capabilities should be mandatory with all heat pump installations. It should be universalised from the word go. But it isn't and it won't ever be.
Sadly, what's available right now is beyond my pay grade and geek capabilities but hopefully someone will come up with something cheaper and easier to install...
Until then it will bug me... for sure.
- 21 Forums
- 1,962 Topics
- 42.6 K Posts
- 68 Online
- 2,276 Members
Join Us!
Heat Pump Dramas?
Thinking about installing a heat pump but unsure where to start? Already have one but it’s not performing as expected? Or are you locked in a frustrating dispute with an installer or manufacturer? We’re here to help.
✅ Pre-Installation Planning
✅ Post-Installation Troubleshooting
✅ Performance Optimisation
✅ Complaint Support (Manufacturer & Installer)
Latest Posts
-
@eliuccio Unfortunately, whilst I agree with a lot of...
By JamesPa , 7 minutes ago
-
RE: Volumisers in Heat Pump Systems: Does Placement Matter?
@jamespa the key point, from my own logical thought pro...
By Mars , 13 minutes ago
-
RE: Newbie out of her depth – Samsung AE120RXYDEG 12kW heat pump
@bami I think if the heat loss documentation matches a ...
By bontwoody , 29 minutes ago
-
RE: What is the best strategy for operating a very oversized heat pump?
@jamespa I'm afraid that's over my head but if anyon...
By IRMartini , 58 minutes ago
-
RE: Setback savings - fact or fiction?
And here in case any one wants it is the code I used in...
By cathodeRay , 1 hour ago
-
RE: Samsung Gen 7 R290 12kW is not behaving how I expected
Definitely its in the 20xx FSVs. Conversely it may be...
By JamesPa , 1 hour ago
-
RE: Towel rails. An unexpected final hurdle
We have both Normal Rad for heating the room and then a...
By IRMartini , 3 hours ago
-
RE: Heat Pump Sizing & Installation Costs
Perhaps useful to have installed date too? To get conte...
By Tim441 , 5 hours ago
-
RE: SolarPV tables / online calculator
I'd be interested what others find whilst using that we...
By Majordennisbloodnok , 7 hours ago
-
RE: F.788 Building circuit pump reports internal fault - Vaillant Arotherm
Guess I have to wait for engineer visit. I really hope ...
By jeegnesh , 19 hours ago
-
RE: Act now to defer the UK road tax increase on EVs
@majordennisbloodnok Damn right sir. my attempt at iron...
By Jancold , 22 hours ago
-
RE: ASHP and heating issues in new build house
That’s good gives you more capacity. It made me think, ...
By Terry1812 , 23 hours ago
-
RE: Seewet manhole cover within r290 exclusion zone
Thanks! I asked Vaillant, and they say I should be fi...
By dbrb2 , 1 day ago
-
Looking for the Grant Aerona 3 setting to turn off completely at 20 OAT
I'm running my Aerona 3 on WC and the 'warm end of that...
By damonc , 1 day ago
-
RE: Do I just go with the lowest quote for my heat pump?
So after signing in Sept in two weeks the install may s...
By Jancold , 1 day ago
-
RE: Victorian Semi Retrofit / Extension ASHP and UFH Advice
When you are renovating is always a good time, as it ma...
By JamesPa , 1 day ago
-
RE: Just one room not reaching desired temperature
Looks like this issue is now resolved. Aira installed a...
By ChandyKris , 1 day ago
-
There have been several people on the OpenEnergyMonitor...
By RobS , 2 days ago
-
RE: Say hello and introduce yourself
Good point @jamespa But that probably strengthens @ch...
By Transparent , 2 days ago
Latest Topics
-
Heat Pump Sizing & Installation Costs
By Mars 7 hours ago
-
Volumisers in Heat Pump Systems: Does Placement Matter?
By Mars 8 hours ago
-
SolarPV tables / online calculator
By MichelleC 15 hours ago
-
By Toodles 2 days ago