Hi all!
I’m working on a new binding for a heat pump I own - an IVT Greenline 11e, based on a Rego600 (specifically rego637) unit. The Rego6xx units are used in many heatpumps, like IVT/Bosch/Autotherm/Carrier and others.
Based on information I was able to collect from various web sites:
I managed to implement a binding capable of accessing many parameters:
- radiator return temperature,
- outdoor temperature,
- hot water temperature,
- forward temperature,
- room temperature,
- compressor temperature,
- heat fluid out temperature,
- heat fluid in temperature,
- cold fluid in temperature,
- cold fluid out temperature,
- external hot water temperature,
- last error,
- heating curve,
- front display leds,
- and many more…
The binding source code can be found here.
I haven’t build the hardware piece yet, but here are some details - the Rego6xx unit has a DB-9 serial interface. Due to it’s nature it can only operate on a really short distances. To overcome this, I plan to use a ESP-01 module (serial to wifi) and install a serial to wifi bridge firmware (there are a couple already available for the before mentioned board) - this way there will be no need to install additional wires between computer room and laundry (and therefore binding uses a tcp connection).
Since messing with the heat pump is not something to take lightly, I also build a simulator to test the binding before wiring everything up - if somebody is willing to play with it, source code can be found here - it’s a .Net project.
In order to use the binding, you need to add the following line to the .things file:
regoheatpump:ipRego6xx:ivt [ address="localhost", refreshInterval=60 ]
address is the ip address of of the heat pump and the refreshInterval is the interval in seconds used to refresh the values. One can also specify a tcp port to be used with the connection. So if one also runs the above mentioned simulator you are now able to read simulated values from the “heat pump”.
Adding something like to the .items file:
Number GT1_Temperature "Return temperature (GT1) [%.1f °C]" <temperature> { channel="regoheatpump:ipRego6xx:ivt:registers#radiatorReturnGT1" }
Number GT2_Temperature "Outdoor (GT2) [%.1f °C]" <temperature> { channel="regoheatpump:ipRego6xx:ivt:registers#outdoorGT2" }
Number GT3_Temperature "Hot water (GT3) [%.1f °C]" <temperature> { channel="regoheatpump:ipRego6xx:ivt:registers#hotWaterGT3" }
Number GT4_Temperature "Shunt, flow (GT4) [%.1f °C]" <temperature> { channel="regoheatpump:ipRego6xx:ivt:registers#shuntGT4" }
String Last_Error "Last error line [%s]" { channel="regoheatpump:ipRego6xx:ivt:status#lastError" }
will give you some of the values. Last step, add those to the .sitemap file:
Text item=GT1_Temperature
Text item=GT2_Temperature
Text item=GT3_Temperature
Text item=GT4_Temperature
Text item=Last_Error
As pointed out, before actually moving to the real device, I would really appreciate if somebody is willing to check to binding code to minimize any errors/issues since I really don’t want to mess the heat pump, specially not in the winter time .
Any feedback greatly appreciated.
Disclaimer - I haven’t test the binding with a real device so use at you own risk. I will update the post and hopefully do a push request when I’m able to test the real thing. I will also add some schematic/wiring on how to build up the hardware part.
I would also like to thanks all the guys providing the details about how the Rego6xx devices work.
Note: this is still work in progress, but should be mature enough to start with initial testing. There are some endpoints I’m not 100% how data is formatted and will need an actual device in order to finalize, but this will come later.
Cheers!