Controlling Ecoforest heatpumps via Modbus

You can only have one master device per Modbus.
If both Modbus channels are occupied, there is no other solution.

In a year I will get a Ecoforest EcoGeo heat pump. I would like to control it with HA, but let the heat pump control the output temperature itself (like it can do when you add temperature sensors.) Do you know if it is possible to emulate those sensors with the modbus (so I can use any sensor via HA)?
Or would it be sufficient to use the on/off inputs per zone and let the heat pump figure out the temperature without any indoor temperature sensors?
I would probably be able to figure it out by myself if I knew all the modbus registers. But I can’t find any information about them. Where did you get the information about the registers that you used?

Kind regards,

Jurian Zwaan

I got this list from the importer in The Netherlands.
For reading the unit I use the BMS2 channel which is in read-only mode at this time for monitoring only.

BMSAddress				
1	Brine temp. Out 	R 	Analog	
2	Brine temp. In 	R 	Analog	
3	Heating temp. Out 	R 	Analog	
4	Heating temp. In 	R 	Analog	
5	Compressor suction temperature 	R 	Analog	
6	Compresor suction pressure 	R 	Analog	
7	Compressor discharge pressure 	R 	Analog	
8	DHW temperature 	R 	Analog	
11	Outdoor temperature 	R 	Analog	
13	Brine circuit pressure 	R 	Analog	
14	Heating circuit pressure 	R 	Analog	
29	Brine temp. Air Unit outlet 	R 	Analog	
30	COP 	R 	Analog	
31	PF 	R 	Analog	
94	Condensation temperature 	R 	Analog	
132	Superheat 	R 	Analog	
133	Expansion valve position % 	R 	Analog	
134	BUS DHW Setpoint 	R/W 	Analog	
135	BUS Heating DG1 Setpoint 	R/W 	Analog	
136	BUS Heating SG2 Setpoint 	R/W 	Analog	
137	BUS Heating SG3 Setpoint 	R/W 	Analog	
138	BUS Heating SG4 Setpoint 	R/W 	Analog	
139	BUS Cooling DG1 Setpoint 	R/W 	Analog	
140	BUS Cooling SG2 Setpoint 	R/W 	Analog	
141	BUS Cooling SG3 Setpoint 	R/W 	Analog	
142	BUS Cooling SG4 Setpoint 	R/W 	Analog	
143	BUS Pool Setpoint 	R/W 	Analog	
194	Supply temperature SG2 	R 	Analog	
195	Supply temperature SG3 	R 	Analog	
196	Supply temperature SG4 	R 	Analog	
198	Start temperature for DHW 	R 	Analog	
199	Evaporation temperature 	R 	Analog	
200	Heating buffer tank temperature 	R 	Analog	
201	Cooling buffer tank temperature 	R 	Analog	
202	EER 	R 	Analog	
203	Compresor discharge temperature 	R 	Analog	
1	Compressor RPM 	R 	Integer	
3	Scroll Temp. 	R 	Integer	
4	Inverter temperature 	R 	Integer	
79	Working Hours L 	R 	Integer	
80	Working Hours H 	R 	Integer	
81	Power consumption 	R 	Integer	
82	Condensation capacity 	R 	Integer	
92	CURRENT_HOUR 	R 	Integer	
93	CURRENT_MINUTE 	R 	Integer	
94	CURRENT_DAY 	R 	Integer	
95	CURRENT_MONTH 	R 	Integer	
96	CURRENT_YEAR 	R 	Integer	
143	Condensation energy 	January 	R 	Integer
144	Condensation energy 	February 	R 	Integer
145	Condensation energy 	March 	R 	Integer
146	Condensation energy 	April 	R 	Integer
147	Condensation energy 	may 	R 	Integer
				
148	Condensation energy 	June 	R 	Integer
149	Condensation energy 	July 	R 	Integer
150	Condensation energy 	August 	R 	Integer
151	Condensation energy 	September 	R 	Integer
152	Condensation energy 	October 	R 	Integer
153	Condensation energy 	November 	R 	Integer
154	Condensation energy 	December 	R 	Integer
155	Evaporation energy 	January 	R 	Integer
156	Evaporation energy 	February 	R 	Integer
157	Evaporation energy 	March 	R 	Integer
158	Evaporation energy 	April 	R 	Integer
159	Evaporation energy 	may 	R 	Integer
160	Evaporation energy 	June 	R 	Integer
161	Evaporation energy 	July 	R 	Integer
162	Evaporation energy 	August 	R 	Integer
163	Evaporation energy 	September 	R 	Integer
164	Evaporation energy 	October 	R 	Integer
165	Evaporation energy 	November 	R 	Integer
166	Evaporation energy 	December 	R 	Integer
167	Electrical consumption 	January 	R 	Integer
168	Electrical consumption 	February 	R 	Integer
169	Electrical consumption 	March 	R 	Integer
170	Electrical consumption 	April 	R 	Integer
171	Electrical consumption 	may 	R 	Integer
172	Electrical consumption 	June 	R 	Integer
173	Electrical consumption 	July 	R 	Integer
174	Electrical consumption 	August 	R 	Integer
175	Electrical consumption 	September 	R 	Integer
176	Electrical consumption 	October 	R 	Integer
177	Electrical consumption 	November 	R 	Integer
178	Electrical consumption 	December 	R 	Integer
184	Evaporation capacity 	R 	Integer	
220	Working program by BUS 	R/W 	Integer	
221	BUS DHW Demand 	R/W 	Integer	
222	BUS Pool Demand 	R/W 	Integer	
223	BUS DG1 Demand 	R/W 	Integer	
224	BUS SG2 Demand 	R/W 	Integer	
225	BUS SG3 Demand 	R/W 	Integer	
226	BUS SG4 Demand 	R/W 	Integer	
280	Number of Starts L 	R 	Integer	
281	Number of Starts H 	R 	Integer	
284	Software version 1 	R 	Integer	
285	Software version 2 	R 	Integer	
286	Software version 3 	R 	Integer	
50	Alarm: 1= No alarm; 0=Active alarm 	R 	Boolean	
53	on/off control by BUS 	R/W 	Boolean	
127	Summer 	R 	Boolean	
128	Winter 	R 	Boolean	
				
I: Integer -->Register
A: Analog--> Register/10
B Boolean -->Coil
Data types
Integer BMS address+5001 (Protocol: MB Extended)

I use on/off control for heating and cooling. Stepped off from the TH Therm units because this limited me to one sensor per group on the heatpump.
With on/off control I can control a group to turn on independently on a zone that requests heat or cool.

Do you mean th-tune? And if so, do you have any information about the modbus registers of that device?
And how does the heat pump determine the output temperature when you use on/off, only the outside temperature?

As mentioned I am using only on/off for heating and cooling.
The water temperature is determined by the outside temperature.

TH-tune is the right name. I removed this way of control because it is an expensive device with limitations for the way I wanted to control the zones.

Hi NielsS,

Will have an Ecoforest 5-22 KW water heatpump installed after summer. The installer is recommending an expensive thermostat from which I think will be the Th-Tune…

Could you please confirm the logic below for controlling this:
Reading the installation manual I think I can just use input signals for heating/cooling through the J4 connector. Is that how you did it?
The manifold will have 1 actuator per valve which are controlled via home assistant via room-thermostats. When one of the thermostats deviates x value from target the actuator valve is opened and a signal is given through the J4 port to switch on the heat pump?

Regards Bart

I am not sure what you mean with J4 (too long time ago and not having the manual around)
I ditched the expensive TH Tune and replaced it with a zonecontroller that measures temperature and humidity per room.

Inputs for heat and cool are respectively:

Group Heat   Cool
DG1   DI5    DI6
SG2   DI7    DI8
SG3   DI9    DI10
SG4   DI11   DI12

These inputs are simple on/off channels. There is a 24 volt and a input. If you connect these together, the group will be active then. Heat goes before cooling and hot water request is always overruling.
I am using SG3 and SG4 for 2 different groups (2 buildings)
My zonecontroller measures every room independently. If there is heat or cool request, the zone opens and after one minute the SG3 or SG4 group will be enabled for heating or cooling.

Which zone controller do you use @NielsS? When using Google I only find two mentions of the word zonecontroller in the manually. But can’t find any related device.

I have looked at Tech and Honeywell and both did not meet my expectations.
Integrating in HA was not possible at that time or was a too expensive system.

So I built one on a ESP32 to have a 8 channel heat and cool zone controller with temperature and humidity sensors. This unit can run standalone with a built in webserver and also connects with a REST-API interface and MQTT.

@NielsS would you mind sharing detailed info about this?

I am new to HA, but are looking for an alternative to the thTouch. I’m looking for two options, that I cannot get to work:

  • anticipating low and high electricity prices (APX, using tibber)
  • setting a slightly lower night temp (‘nacht verlaging’)

Any help how to do this through HA sould be very much appreciated! Can it be done with a Protoss PE11 or is more needed?

I have an ecogeo c3-12kw. My idea is to use this integration to monitorize the machine and also to fully shutdown/power on when I go holidays. Is it possible with this?. @NielsS pointed this should be read only, but at the same time he talks about he uses it to off certain groups. Also the addresses from the first list and the one he received from Netherland importer are different. I know, I didn’t understand anything :slight_smile:

For the BMS adresses, just add 5001 to the number it has in the list. Example: if the list shows 2 as adress, the true address is 5002 (to make it difficult). Maybe they have changed the list to the true address for conventience. (also I have an older model that was released in 2018 and this have an older firmware/controller)

If you enable the full control by BMS, be aware that all the control needs to be via the BMS port. For example: cooling and heating per channel is then demanded via modbus only. External inputs for heat, cool, dhw and other controls do not work.

This is a personally designed pcb with dito software.
It is not yet publicly released due to some small issues in the pcb design.

Is there any way that I can power off/power on it remotely and in a safer way? Without disconnecting power meanwhile the compressor running.

There are external inputs which prohibit turning on the compressor. You can use these inputs for this feature.
The installation manual has these inputs described.

Thanks for your feedback and all the information provided in this thread. Really appreciated.
My concern with this is it’s not very “clean way”, I mean, inhibit powering the compressor sounds too messy and probably associated to rise other alarms in the systems. It’s also true that it doesn’t appear mapped in your list any address to power on/off the machine… so wouldn’t be a possibility although at anytime write would be enabled in the future.
By the way, how do you go with enabling write mode with BMS?.
Regards,

The external controls inputs are part of the internal control unit. Using these inputs does not break the compressor.

The list of inputs:

Description Signal Type Connector
Control of electrical consumption (EVU) Digital input Voltage-free (0V) DI1
WINTER / SUMMER program selection Digital input Voltage-free (0V) DI2
Enable / disable DHW production Digital input Voltage-free (0V) DI3
Pool production Digital input Voltage-free (0V) DI4

I did not enable the BMS external control due to limitations. The heatpump does not respond to other external thermostats when BMS external control is enabled.

Wow. This part "“heatpump does not respond to other external thermostats when BMS external control is enabled” has put me off from integrating my EcoGeo heatpump.

Anyhow, I may try monitoring just to play around with modbus on esphome, has anyone tried this instead of fancy hardware converters?

Same thing here with me.
I have my Protos all set up. (at the moment only reading a modbus energymeter)
Data is comming in via NodeRed, but the Protos isn’t appearing in HA at Devices or Entities.

How do i get my Protos PE11 in my devices list?