The Ecoforest HP24 template connects Ecoforest ecoGEO and ecoAIR heat pumps to TapHome via Modbus RTU over the RS-485 BMS2 port. The template provides comprehensive monitoring of temperatures, production mode statuses, compressor diagnostics, power output, setpoints, and operation program.
The heat pump controller (Carel pCOOEM+) has two RS-485 ports: BMS1 (requires optional serial card) and BMS2 (available by default). Communication uses Slave ID 17 by default for heat pumps.
Important — Slave ID
The default Modbus Slave ID for Ecoforest heat pumps is 17 (not 1). When importing the template in TapHome, change the Slave ID parameter from the default value of 1 to 17 (or your configured address).
Hardware connection
Controller overview
The Ecoforest heat pump uses a Carel pCOOEM+ controller board. The BMS2 port (leftmost connector group) is the primary RS-485 interface for Modbus RTU communication and is available by default — no additional hardware is needed.

Connectors (left to right):
- BMS2 (far left) — Primary RS-485 Modbus port (Tx/Rx-, Tx/Rx+, GND) — available by default
- FieldBus1 (left) — Internal communication
- BMS1 / Serial Card (center-left) — Secondary RS-485 port — requires optional serial connection card
- pLAN (center) — Controller area network
- FieldBus2 (far right) — Internal communication
Technical specifications
- Communication port: BMS2 (RS-485)
- Protocol: Modbus RTU (holding registers, function code 0x03 / 0x06 / 0x10)
- Baud rate: 19200
- Parity: None
- Stop bits: 2
- Data bits: 8
- Default Slave ID: 17 (heat pump)
RS-485 wiring (BMS2 port)
Connect using a 3-wire shielded twisted pair cable:
- Tx/Rx+ (pin A+) on BMS2 –> A+/D+ on TapHome RS-485
- Tx/Rx- (pin B-) on BMS2 –> B-/D- on TapHome RS-485
- GND on BMS2 –> GND on TapHome power supply (mandatory)
Cable specification:
- Type: shielded 3-wire twisted pair
- Shield connected to earth to avoid interference
- Do not install the cable parallel to power cabling
Important — Grounding and cable
Use shielded 3-wire twisted pair cables only. Connect the cable shield to earth. Do not run the RS-485 cable parallel to power cabling. The GND wire must be connected between the heat pump controller and TapHome.
Enabling Modbus communication
Before TapHome can communicate with the Ecoforest heat pump, BUS control must be enabled in the heat pump installer menu. This is a two-step process: configuring the BMS2 port and enabling BUS remote control.
Step 1 — Verify BMS2 port configuration
Navigate to the BMS2 configuration screen in the installer menu:
- Go to Installer menu –> c. Installation (page 6/8)
- Select f. Remote control
- Scroll to page 3/3 of Remote control
- Select c. BUS Control
- Verify the BMS2 configuration shows:
- Protocol: MB Extended
- Baudrate: 19200
- Stop bits: 2
- Parity: None
- Address: 17

Step 2 — Enable BUS remote control
BUS control must be explicitly enabled for the heat pump to accept Modbus commands:
- Go to Installer menu –> c. Installation (page 6/8)
- Select f. Remote control
- Scroll to page 3/3 of Remote control
- Select c. BUS Control
- In the BMS remote control screen, check the Enable checkbox

BUS Control is option c on page 3/3 of the Remote control submenu. Pages 1/3 and 2/3 contain EVU/SG Control and Services Control — scroll past them to reach BUS Control.
Device capabilities
Temperature monitoring
The template provides extensive temperature monitoring across the heat pump’s hydraulic circuits and refrigerant cycle:
Hydraulic circuit temperatures (all /10 conversion, °C):
- Outdoor Temperature (H:2080) — ambient outdoor temperature, with freeze/overheat security alerts
- Primary Circuit Inlet Temperature (H:2082) — source-side water inlet
- Primary Circuit Outlet Temperature (H:2081) — source-side water outlet
- Secondary Circuit Inlet Temperature (H:2085) — load-side water inlet
- Secondary Circuit Outlet Temperature (H:2084) — load-side water outlet
- Heating Buffer Tank Temperature (H:2132) — heating buffer tank
- Cooling Buffer Tank Temperature (H:2133) — cooling buffer tank
- DHW Tank Temperature (H:2130) — domestic hot water tank
- DHW Recirculation Temperature (H:2131) — DHW recirculation loop
Refrigerant cycle temperatures (all /10 conversion except evaporation, °C):
- Compressor Suction Temperature (H:2092) — refrigerant suction line
- Compressor Discharge Temperature (H:2095) — compressor discharge / scroll
- Superheat (H:2096) — refrigerant superheat (suction minus evaporation)
- Inverter Temperature (H:2097) — compressor inverter electronics
- Evaporation Temperature (H:2098) — refrigerant evaporation (uses /100 in template)
- Condensing Temperature (H:2099) — refrigerant condensing
Setpoint monitoring
The template reads current setpoints for all services (all /10 conversion, °C):
- DHW Setpoint (H:2150) — domestic hot water target temperature
- Buffer Heating Setpoint (H:2152) — heating buffer tank target
- Buffer Cooling Setpoint (H:2153) — cooling buffer tank target
- HTR Setpoint (H:2154) — High Temperature Radiator circuit target
- Group 1 Heating Setpoint (H:2155) — zone 1 heating target
- Group 1 Cooling Setpoint (H:2156) — zone 1 cooling target
The setpoint registers are read-only in this template. To write setpoints via Modbus, use the corresponding write registers (H:2720 for DHW, H:2722 for buffer heating, etc.) which require enabling the BUS control for each service first. These can be added as custom Modbus devices in TapHome.
Production mode statuses
Binary status indicators showing which services are currently active:
- DHW Production Mode (H:2030) — domestic hot water production running
- Heating Production Mode (H:2031) — heating production running
- Active Cooling Mode (H:2032) — active cooling production running
- Passive Cooling Mode (H:2033) — passive (free) cooling running
- Pool Production Mode (H:2034) — pool heating running
- Anti-Freeze Mode (C:2035) — anti-freeze protection active
- Dry Floor Mode (C:2036) — floor drying program active
- Integrated Auxiliary Heater (Aux 1) (C:2046) — electric backup heater active
- External Auxiliary Heater (Aux 2) (C:2047) — external auxiliary heater active
Heat pump status and operation program
- Heat Pump Status (H:2045) — multi-value switch: OFF (0), ON (1), EMERGENCY (2)
- Operation Program (H:2044) — multi-value switch: Winter (0), Summer (1), Combined (2)
These are read-only in the current template. To write the heat pump status or operation program, use the write registers H:2700 (status) and H:2701 (program) with different value mappings: write 1=OFF, 2=ON, 3=Emergency for status; write 1=Winter, 2=Summer, 3=Combined for program.
Power monitoring
The template monitors instantaneous power output for each service (all /1000 conversion):
- Instantaneous Power (H:2186) — total heating power
- Heating Power (H:2187) — heating service power
- DHW Power (H:2188) — DHW service power
- Total Cooling Power (H:2190) — total cooling power
- Active Cooling Power (H:2191) — active cooling service power
- Passive Cooling Power (H:2192) — passive cooling service power
Energy metering
- Total Electric Consumption (H:2193) — total instantaneous electric consumption
- Surplus Electric Consumption (H:2194) — electric consumption during surplus (photovoltaic) mode
Compressor diagnostics
- Compressor Starts (H:2103 + H:2104) — total compressor start count (high × 1000 + low)
- Compressor Operating Hours (H:2105 + H:2106) — total compressor runtime in hours (high × 1000 + low)
Pressure monitoring
Three pressure sensors are included but require manual readscript configuration after import:
- Primary Circuit Pressure (H:2083) — source-side water pressure
- Secondary Circuit Pressure (H:2086) — load-side water pressure
- Compressor Suction Pressure (H:2093) — refrigerant suction pressure
- Compressor Discharge Pressure (H:2094) — refrigerant discharge pressure
The pressure devices are imported as ModbusAnalogInput without readscripts. To enable them, add the following readscript in TapHome service settings:
MODBUSR(H, <address>, Int16) / 10where<address>is the register address (e.g. 2083 for primary circuit pressure). The result is in bar.
Service diagnostics
The module exposes eight service attributes for monitoring:
- Heat Pump Time — formatted timestamp from registers H:2000–H:2004
- Software Platform — platform identifier (ESO22, AWD24, WWD24, WWC24)
- Product Range — product type (HP, PS, EM, SM)
- Software Version — firmware version string
- Compilation Type Letter — subversion letter (A–Z)
- Software Version (Build) — build number
- HP Model / ODU Model — decoded model code from registers H:2010–H:2015
- Device Role — installation role (Stand alone, Block master, Block slave, Supervisor, etc.)
Additional capabilities
The Ecoforest API BUS Client manual documents additional write registers not included in this template, including heat pump ON/OFF control (H:2700), operation program selection (H:2701), service demand management (H:2705–H:2715), setpoint control (H:2720–H:2731), zone ambient terminal control (H:2750–H:2759), alarm management (H:2074), compressor speed limiting (H:2765), and surplus/PV management (H:2775–H:2778). Energy meter registers (H:2200+) provide daily, monthly and annual energy counters. These can be added in a future template update or as custom Modbus devices.
Troubleshooting
No Modbus communication
- Verify BUS control is enabled: Installer menu –> Installation –> Remote control –> BUS Control –> Enable must be checked
- Check BMS2 port settings: Protocol must be “MB Extended”, baud rate 19200, parity None, 2 stop bits
- Verify Slave ID: Default is 17 for heat pumps — ensure TapHome is configured with the correct address
- Check RS-485 cables:
- Tx/Rx+ correctly connected to A+/D+ on TapHome
- Tx/Rx- correctly connected to B-/D- on TapHome
- GND connected to TapHome power supply ground — most common issue
- Use shielded twisted pair cable, shield connected to earth
Pressure readings not working
The pressure devices (Primary Circuit Pressure, Secondary Circuit Pressure, Compressor Suction/Discharge Pressure) are imported without readscripts. Add the readscript manually in TapHome:
- Open the device in TapHome service settings
- Add ReadScript:
MODBUSR(H, <register>, Int16) / 10 - Values are in bar (manometric)
Incorrect temperature readings
- Most temperatures use /10 conversion (gain 0.1 per source docs)
- The Evaporation Temperature uses /100 in the template — if readings seem incorrect, try changing to /10
- The duplicate Heating Buffer Tank Temperature entry uses /100 instead of /10 — use the primary entry with /10 conversion
Power readings incorrect
The template uses a fixed /1000 conversion for power registers, but the actual conversion depends on the power units register H:2185 (10=W, 20=kW, 30=MW). Verify the power units setting on your heat pump. If the heat pump reports power in W (value 10 at H:2185), the /1000 conversion is correct. For kW (value 20), readings will be 10x too large.
