JamesPa Posted March 20, 2022 Share Posted March 20, 2022 I am currently looking at which heat pump to install for my 4 bed detached 1930s house (fairly well insulated following lots of work by me). I have read with interest many of the posts on this forum, and also on the renewable heating hub forum and Heat Geek (the latter of which I recommend very highly for anybody who wants actually to understand what affects the efficiency of heating systems and why, rather than trying to sort between often conflicting opinions). I have also read extensively elsewhere and had several quotes (none of which I entirely trust) What is driving me mad now is trying to work out what the candidate systems are actually capable of, more specifically as regards weather compensation. Since this is one of a very small number of factors key to the overall system efficiency, understanding what the heat pumps (or more accurately the heat pump controllers) are capable of is an important factor (at least for me) in any decision. The easily accessible information is mostly marketing hyperbole of one kind or another, so I have been reading the installation/commissioning/user manuals but with only limited success. Almost all heat pumps seem to feature (as a minimum) a user-adjustable linear weather compensation curve. What is not clear is which ones allow a non-linear/multipoint curve to be programmed in, nor is it clear which ones vary the flow temperature if the target room temperature is changed programmatically, eg for night time setback, (this latter feature is sometimes called parallel shifting). I get the impression that the only way to find out may be to own one, which of course is too late! I'm currently particularly interested in the capability of the Grant (Chofu) heat pump as I have identified this as a candidate for other reasons. The manual is clear that the compensation curve is linear only, but does anyone know whether the native Chofu controller implements parallel shifting. It can certainly be programmed for a timed setback ('economy' vs 'comfort'), but the manual is silent on how this is actually achieved . If anybody knows the answer, or has definitive answers for any other common make, I would be interested (and maybe others would too). If I get more than a couple of responses I will compile and post a table. Link to comment Share on other sites More sharing options...
dpmiller Posted March 20, 2022 Share Posted March 20, 2022 Our CoolEnergy unit has multipoint control for flow temp vs ambient, as well as maximum inverter speed vs ambient. Link to comment Share on other sites More sharing options...
J1mbo Posted March 21, 2022 Share Posted March 21, 2022 (edited) Certainly if using radiators, a straight line wc ‘curve’ isn’t really optimal because the radiator output doesn’t follow a linear relationship to flow temperature - check radiator data sheets to see. Some will provide a formula as well. It’s because the air flow will be increased with greater dT between the surface and the air, hence output rising at a faster rate than increase in flow. On the “others” camp - Vaillant ArothermPlus has configurable curves that seem to match radiator output nicely. The system does vary the flow temp with room temperature, both in terms of deviation from set point and the set point itself (when configured to do so). This has the handy impact that the system can be very responsive in morning heat up, if you work that way, by setting a higher target for a short period of time without impacting that much the overall COP achieved. It also has configurable floor and cap temperatures as well as maximum outside temperature for heating mode. Edited March 21, 2022 by J1mbo Link to comment Share on other sites More sharing options...
Kevm Posted March 22, 2022 Share Posted March 22, 2022 Not sure if have this but it's a link to lots of Grant/Chofu manuals and other info. https://github.com/aerona-chofu-ashp/docs Mitsubishi allows multi-point curves and also has a room temperature more that claims to use a combination of outside and room temps. I haven't tried it though. Link to comment Share on other sites More sharing options...
ReedRichards Posted March 23, 2022 Share Posted March 23, 2022 (edited) The yellow curve shows what I calculate to be the weather compensation required to match my radiators and the straight line is what I am using. There's not a huge difference. Both are based on the assumption that the MCS calculation is correct and I need my maximum flow temperature at -3.8 C or less. Edited March 23, 2022 by ReedRichards Link to comment Share on other sites More sharing options...
JamesPa Posted March 23, 2022 Author Share Posted March 23, 2022 ReedRichards - similar to my calculated curve (using a rad exponent of 1.3) there is a couple of degrees difference in the middle (which is where the temperature sits most of the time). 2 degrees is noticeable. Its clearly not beyond the wit of man (but maybe beyond the wit of some designers or installers of heat pumps) to implement a multipoint curve, and its hardly the most challenging piece of code ever. Still not perfect of course, because wind makes a difference and possibly also humidity, but still better and possibly able to be tweaked to allow for humidity at least because the most humid days at predictable temperatures. Anyway the roll so far looks like: Vaillant: Selectable (but fixed) non linear curves, adapts flow temp to room temp Mitsubishi: Multipoint curves, claims to adapt flow temp to room temp but not verified experimentally CoolEnergy: Multipoint curves, flow temp does not adapt to room temp Grant/Chofu: Straight line only, flow temp does not adapt to room temp(?). Possibility that multizone function could be 'bodged' to implement night time set back of flow temp in single zone system Anybody know for definite about Daikin, LG, Samsung, Viessmann, Nibe, Hitachi? Link to comment Share on other sites More sharing options...
ReedRichards Posted March 23, 2022 Share Posted March 23, 2022 I have LG. It's straight line only for weather compensation. Flow temp may adapt to room temp but this is not a documented feature (you can control on Water or Air + Water but the difference this makes is not documented). Link to comment Share on other sites More sharing options...
J1mbo Posted March 23, 2022 Share Posted March 23, 2022 With the Vaillant, the curves can also be tuned by applying positive or negative offsets to the VRC700 temp sensor and the outside temp sensor (in 0.5 degree steps(. It’s a bit of a cludge but it does provide shifting of the curves up and down. Room temperature itself would typically be regulated to the readings from the wireless Ambisense controller (or the other one who’s name escapes me). Link to comment Share on other sites More sharing options...
ReedRichards Posted March 23, 2022 Share Posted March 23, 2022 23 minutes ago, J1mbo said: With the Vaillant, the curves can also be tuned by applying positive or negative offsets ... Likewise, I can the offset the water temperature determined by weather compensation by +- 5 C in 1 C steps (LG Therma V). Link to comment Share on other sites More sharing options...
Ommm Posted May 13, 2022 Share Posted May 13, 2022 A bit late to this thread, but I *think* it might be possible to have an external source adjust the weather compensation curves on the Grant/Chofu via Modbus. I see the values in the table that's been reverse engineered, but I haven't tried changing them. If this is of interest I can investigate and report back. You'd still get a two-point straight line, but you could then adjust the two points dynamically, eg over the course of a day. Then you'd need something to send the Modbus commands - fairly simple from a Raspberry Pi or similar. Rather depends what you want to do with them from then on. Link to comment Share on other sites More sharing options...
JamesPa Posted May 14, 2022 Author Share Posted May 14, 2022 Is the modbus connection active, I thought I had seen a post where the poster had reverse engineered the communication between the controller and the hp because he had found that the modbus connection was inactive. Link to comment Share on other sites More sharing options...
Ommm Posted May 14, 2022 Share Posted May 14, 2022 (edited) https://github.com/aerona-chofu-ashp/modbus There are some slightly unusual default baud rate settings (by default 19200 bps, no parity, two stop bits), but it's enabled by default. Modbus is a request-response protocol, so if you don't send a valid request you won't hear anything back. Once I had the baud rate settings (and got my +/- the right way round) it worked straight away. Edited May 14, 2022 by Ommm Link to comment Share on other sites More sharing options...
HughF Posted May 14, 2022 Share Posted May 14, 2022 6 hours ago, Ommm said: https://github.com/aerona-chofu-ashp/modbus There are some slightly unusual default baud rate settings (by default 19200 bps, no parity, two stop bits), but it's enabled by default. Modbus is a request-response protocol, so if you don't send a valid request you won't hear anything back. Once I had the baud rate settings (and got my +/- the right way round) it worked straight away. 2 stop bits? Ok.... that's, different. *Embedded electronics by day - my industry (offshore survey) runs on serial ports, still Link to comment Share on other sites More sharing options...
GaryW Posted November 15, 2022 Share Posted November 15, 2022 On 13/05/2022 at 23:17, Ommm said: A bit late to this thread, but I *think* it might be possible to have an external source adjust the weather compensation curves on the Grant/Chofu via Modbus. I see the values in the table that's been reverse engineered, but I haven't tried changing them. If this is of interest I can investigate and report back. You'd still get a two-point straight line, but you could then adjust the two points dynamically, eg over the course of a day. Then you'd need something to send the Modbus commands - fairly simple from a Raspberry Pi or similar. Rather depends what you want to do with them from then on. This is really interesting, and something I'd like to see more off. Load compensation - lowering and raising based on an air stat in the main living area is the way forward! Link to comment Share on other sites More sharing options...
ReedRichards Posted November 15, 2022 Share Posted November 15, 2022 7 hours ago, GaryW said: Load compensation - lowering and raising based on an air stat in the main living area is the way forward! And something you would have with any gas boiler paired with any controller (suitably wired together) if they both support OpenTherm. Link to comment Share on other sites More sharing options...
GaryW Posted November 15, 2022 Share Posted November 15, 2022 Yes, opentherm added to a heat pump is a no brainer and why has it not been done already? The standard is there, all that needs changed is the flow temp numbers. Anyway, any further info on aerona flow temp changes on ModBus? Link to comment Share on other sites More sharing options...
HughF Posted November 15, 2022 Share Posted November 15, 2022 7 hours ago, GaryW said: Yes, opentherm added to a heat pump is a no brainer and why has it not been done already? The standard is there, all that needs changed is the flow temp numbers. Anyway, any further info on aerona flow temp changes on ModBus? It sort of has, but it hasn’t been done using opentherm. Evergreen Energy have launched a IoT temp controller called Homely that does load compensation and automatically figures out the best WC curve for your emitters, but it only supports Midea and Samsung, and it doesn’t have a nice wall stat, just a phone app. Link to comment Share on other sites More sharing options...
Ommm Posted November 15, 2022 Share Posted November 15, 2022 (edited) OpenTherm is a Honeywell boiler protocol. Heat pumps are mostly designed in countries where they don't have boilers, and there isn't much crossover between the boiler world and the heatpump world. If you're using a boiler controller for a heatpump you're doing it wrong - you should be using the heatpump's own controller instead. Anyway, I knocked up this code and it reads the weather comp settings. An algorithm to change them is left as an exercise for the reader - I have put in an example of how to write a register, but it's commented out so it doesn't change any of your settings. I have a Modbus TCP server (actually a Raspberry Pi 1 running mbusd and a USB-Modbus adapter) at the IP address in the code below. You also need to install the pyModbusTCP library (I got it from pip). It's also possible to use the same with a USB Modbus adapter but needs reworking to use a library other than pyModbusTCP (I previously used MinimalModbus). #!/usr/bin/env python3 from pyModbusTCP.client import ModbusClient # the values return are 16-bit signed integers, # so convert to python integers def sint16(v): signbit = 1 << 15 return (v & (signbit - 1)) - (v & signbit) def read(mb, reg): result = mb.read_holding_registers(reg, 1) if isinstance(result, list): return sint16(result[0]) else: return 0 def write(mb, reg, val): mb.write_single_register(reg, val) # hostname of the ModbusTCP server hostname = "192.168.4.117" # connect to the server on port 502 mb = ModbusClient(host=hostname, port=502, unit_id=1, auto_open=True, debug=False) # read settings from the holding register table # these are in units of 0.1C, resolution 0.5C z1_fixed_outgoingwater_set = read(mb, 2)*0.1 z1_tm1 = read(mb, 3)*0.1 z1_tm2 = read(mb, 4)*0.1 z1_te1 = read(mb, 5)*0.1 z1_te2 = read(mb, 6)*0.1 print("Zone 1: Fixed setpoint %f" % (z1_fixed_outgoingwater_set)) print("Zone 1: At min air temp te1=%f, outgoing water temp is tm1=%f" % (z1_te1, z1_tm1)) print("Zone 1: At max air temp te2=%f, outgoing water temp is tm2=%f" % (z1_te2, z1_tm2)) # set Zone 1 fixed outgoing water setpoint to 55C ##write(mb, 2, 55*10) When I run this I get: Quote Zone 1: Fixed setpoint 55.000000 Zone 1: At min air temp te1=-2.000000, outgoing water temp is tm1=56.000000 Zone 1: At max air temp te2=20.000000, outgoing water temp is tm2=45.000000 which must be what my installer has configured it with. Edited November 15, 2022 by Ommm Typo in mbusd 1 1 Link to comment Share on other sites More sharing options...
GaryW Posted November 16, 2022 Share Posted November 16, 2022 14 hours ago, Ommm said: OpenTherm is a Honeywell boiler protocol. Heat pumps are mostly designed in countries where they don't have boilers, and there isn't much crossover between the boiler world and the heatpump world. If you're using a boiler controller for a heatpump you're doing it wrong - you should be using the heatpump's own controller instead. Anyway, I knocked up this code and it reads the weather comp settings. An algorithm to change them is left as an exercise for the reader - I have put in an example of how to write a register, but it's commented out so it doesn't change any of your settings. I have a Modbus TCP server (actually a Raspberry Pi 1 running mbusd and a USB-Modbus adapter) at the IP address in the code below. You also need to install the pyModbusTCP library (I got it from pip). It's also possible to use the same with a USB Modbus adapter but needs reworking to use a library other than pyModbusTCP (I previously used MinimalModbus). #!/usr/bin/env python3 from pyModbusTCP.client import ModbusClient # the values return are 16-bit signed integers, # so convert to python integers def sint16(v): signbit = 1 << 15 return (v & (signbit - 1)) - (v & signbit) def read(mb, reg): result = mb.read_holding_registers(reg, 1) if isinstance(result, list): return sint16(result[0]) else: return 0 def write(mb, reg, val): mb.write_single_register(reg, val) # hostname of the ModbusTCP server hostname = "192.168.4.117" # connect to the server on port 502 mb = ModbusClient(host=hostname, port=502, unit_id=1, auto_open=True, debug=False) # read settings from the holding register table # these are in units of 0.1C, resolution 0.5C z1_fixed_outgoingwater_set = read(mb, 2)*0.1 z1_tm1 = read(mb, 3)*0.1 z1_tm2 = read(mb, 4)*0.1 z1_te1 = read(mb, 5)*0.1 z1_te2 = read(mb, 6)*0.1 print("Zone 1: Fixed setpoint %f" % (z1_fixed_outgoingwater_set)) print("Zone 1: At min air temp te1=%f, outgoing water temp is tm1=%f" % (z1_te1, z1_tm1)) print("Zone 1: At max air temp te2=%f, outgoing water temp is tm2=%f" % (z1_te2, z1_tm2)) # set Zone 1 fixed outgoing water setpoint to 55C ##write(mb, 2, 55*10) When I run this I get: which must be what my installer has configured it with. Kudos Ommm. This is great work. My aerona is being installed end of month, will be trying this over the holiday period. Tieing this into HA with the input of a living room thermostat is a simple solution. Link to comment Share on other sites More sharing options...
Ken Bone Posted February 1, 2023 Share Posted February 1, 2023 I install hat pumps for a living. I also own a Grant, and are looking for ways to change the flow temp on the fly. The Homley device is a great product, currently it does not work with the Grant units. Are you running that code above in HA YAML. Great work . Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now