---
title: "Stiebel Eltron HPA-O Serie Heat Pump"
description: "Operating mode and temperature setpoints for two heating circuits and DHW via Modbus TCP. TapHome integration for Stiebel Eltron HPA-O Serie heat pumps."
url: "https://taphome.com/en/compatibility/stiebel-eltron-hpa-0-serie/"
language: en
lastmod: 2026-11-15
generator: hugo
ai:
  topics: ["modbus-tcp","heat-pump","isg-gateway","ethernet","wpm-controller"]
  questions: ["How to integrate Stiebel Eltron HPA-O Serie with TapHome?","What does the Stiebel Eltron HPA-O Serie TapHome template control?","How to connect Stiebel Eltron ISG gateway via Modbus TCP to TapHome?","What is the difference between Stiebel Eltron HPA-O Serie and Premium templates?","How to set heating circuit and DHW temperatures on Stiebel Eltron via TapHome?","What operating modes are available for Stiebel Eltron heat pumps in TapHome?"]
---

# Stiebel Eltron HPA-O Serie Heat Pump

Communication: Modbus TCP

- [Stiebel Eltron Official Website](https://www.stiebel-eltron.com)

> Network address
> 
> TapHome reaches this device at the address entered on import. Give the device a fixed address — an IP reservation in the router, or its mDNS name if it supports one — otherwise the integration stops working when the router changes the address.
> 
> [Network Preparation](https://taphome.com/en/docs/setup/network-preparation/)

## Integration guide

The Stiebel Eltron HPA-O Serie is an air source heat pump from the base (non-Premium) product line. Like the Premium variant, it does not have a direct Modbus interface — communication requires the **ISG web** or **ISG plus** gateway (Internet Service Gateway), which exposes the heat pump's registers over Modbus TCP on the local network.

The TapHome template provides operating mode control, comfort and ECO temperature setpoints for two heating circuits and domestic hot water (DHW), and DHW temperature monitoring. Compared to the Premium template, this base variant focuses on core HVAC setpoint control without the additional energy metering and runtime counters.

## Hardware connection

The ISG gateway connects to the heat pump's WPM controller via the CAN bus (internal wiring). For Modbus TCP communication with TapHome, connect the ISG gateway to the local network using a standard Ethernet cable (RJ45).

- **Protocol:** Modbus TCP
- **Port:** 502
- **Slave ID:** 1 (fixed)
- **Default ISG IP:** 192.168.0.126

> [!WARNING]
> The ISG gateway cannot run Modbus TCP simultaneously with other ISG software interfaces (e.g., ServiceWelt remote monitoring). Read-only Modbus access is possible alongside the EMI energy management extension, but requires ISG firmware v12.1.2 or higher.

## Configuration

### Enabling Modbus communication

The ISG gateway has Modbus TCP enabled by default on port 502. No special activation is required. The IP address can be configured through the SERVICEWELT "Profile" tab.

When importing the template in TapHome, provide:

- **IP Address** — the ISG gateway's IP on the local network (default: 192.168.0.126)
- **Slave ID** — Modbus slave address (fixed at 1)

> [!TIP]
> When connected directly (point-to-point), the ISG retains its default address 192.168.0.126.

### Register addressing

The ISG documentation uses **1-based** register addresses. The TapHome template uses **0-based** addresses (offset of 1). For example, ISG register 507 (OUTSIDE TEMPERATURE) corresponds to template address A:506.

## Device capabilities

### Operating mode control

The **Operating Mode** multi-value switch writes to holding register H:1500 and allows selecting one of six modes:

| Value | Mode | Description |
|-------|------|-------------|
| 0 | Emergency Operation | Minimal operation, backup heating only |
| 1 | Standby Mode | Frost protection only |
| 2 | Programmed Operation | Alternates between ECO and Comfort per the WPM weekly program |
| 3 | Comfort Mode | Constant comfort temperature setpoints |
| 4 | ECO Mode | Energy-saving reduced temperature setpoints |
| 5 | DHW Mode | Domestic hot water heating only, no space heating |

> [!NOTE]
> When changing the operating mode via Modbus, change only the mode OR a temperature setpoint in a single step — not both simultaneously. The heat pump needs to stabilize after each change.

### Heating circuit temperature setpoints

The template provides four thermostat devices for two heating circuits, each with Comfort and ECO setpoints:

- **HC1 Comfort Temperature** — reads current HC1 temperature from A:507, writes comfort setpoint to H:1501 (range 5–30 °C)
- **HC1 ECO Temperature** — reads current HC1 temperature from A:507, writes ECO setpoint to H:1502 (range 5–30 °C)
- **HC2 Comfort Temperature** — reads current HC2 temperature from A:510, writes comfort setpoint to H:1504 (range 5–30 °C)
- **HC2 ECO Temperature** — reads current HC2 temperature from A:510, writes ECO setpoint to H:1505 (range 5–30 °C)

The actual operating setpoint depends on the selected operating mode — Comfort Mode uses the comfort value, ECO Mode uses the ECO value, and Programmed Operation alternates between both per the WPM schedule.

### Direct flow temperature setpoints

Instead of the controller's own heating curve, TapHome can write the required flow water temperature directly — for example from the smart rule **Equithermic regulation**:

| Device | Current value | Setpoint register | Range |
|--------|---------------|-------------------|-------|
| Heating flow temperature (fixed value) | A:514 (actual flow temperature) | H:1507 (ISG 1508) | 20–70 °C |
| Fixed flow temperature mode | H:1507 (on while a fixed value is set) | H:1507 (ISG 1508) | on / off |
| Cooling flow temperature – floor | A:514 (actual flow temperature) | H:1513 (ISG 1514) | 7–25 °C |
| Cooling flow temperature – fan coil | A:514 (actual flow temperature) | H:1516 (ISG 1517) | 7–25 °C |

- **Heating flow temperature (fixed value)** — fixed flow temperature of heating circuit 1. The setpoint is limited to 20–70 °C, rounded to 0.5 K and written only when it changes (the register holds 0.1 °C). Writing a temperature also switches the fixed value mode on.
- **Fixed flow temperature mode** — on while the controller holds a fixed value. Switching on writes nothing: the mode switches on when a temperature is written to Heating flow temperature (fixed value). Switching off writes 0x9000 to H:1507 and the controller returns to the heating curve of circuit 1.
- **Cooling flow temperature – floor / fan coil** — set flow temperature for area (floor) cooling and for fan coil cooling, limited to 7–25 °C and written only when it changes.

> [!WARNING]
> A fixed flow temperature disables the heating curve of heating circuit 1. On WPM 3, the controller uses the fixed value to regulate the return temperature, not the flow temperature. Before cooling, switch the fixed value mode off with the **Fixed flow temperature mode** switch.

> [!WARNING]
> Cooling (Cooling flow temperature – floor, Cooling flow temperature – fan coil) requires cooling to be enabled on the WPM controller: **KÜHLEN** set to ON and model C. Unless an FEK/FET remote control with humidity sensor is installed, dew point protection is up to TapHome — the smart rule must keep the cooling flow temperature above the dew point.

> [!NOTE]
> The fixed value mode can be switched off via Modbus only from WPM 3 software 39005 and WPM 3i software 39106. With older software, the **Fixed flow temperature mode** switch cannot switch the mode off.

### DHW temperature setpoints

Two thermostat devices control domestic hot water temperature:

- **DHW Comfort Temperature** — reads current DHW temperature from A:521, writes comfort setpoint to H:1509 (range 10–60 °C)
- **DHW ECO Temperature** — reads current DHW temperature from A:521, writes ECO setpoint to H:1510 (range 10–60 °C)

### Sensor monitoring

The template includes one read-only sensor:

- **DHW Actual Temperature** — current domestic hot water cylinder temperature from A:521 (°C, /10)

### Service attributes

The template exposes 27 diagnostic service attributes accessible in the TapHome device detail view. These include:

- **Controller Identification** — identifies the connected WPM controller type (WPMsystem, LWZ, WPM 3, WPM 3i)
- **Operating Status bits** — real-time flags for HC1/HC2 pump, heat-up program, NHZ stages, HP in heating/DHW mode, compressor running, summer mode, cooling mode, defrost, and silent mode 1/2
- **System sensors** — outdoor temperature, buffer temperature (actual and setpoint), return temperature, hot gas temperature, low/mean/high pressure
- **Fault monitoring** — fault status, active error number, defrost state, message number

> [!NOTE]
> Outdoor temperature is available as a service attribute (A:506) but not as a standalone device in this template. To use it in automation rules, consider the Premium variant template which includes additional standalone sensor devices.

### Additional capabilities

The ISG gateway exposes additional registers not currently included in the TapHome template. These include flow and return temperature sensors, source temperature, system reset commands, and SG Ready smart grid inputs for PV optimization. Comprehensive energy data registers provide daily and total counters for heat produced and power consumed, separated by heating and DHW. These can be added in a future template update.

## Troubleshooting

### No Modbus communication

1. Verify the Ethernet cable is connected to the ISG gateway (not directly to the heat pump)
2. Confirm the ISG IP address — check the router's DHCP lease table or use the default 192.168.0.126
3. Ensure TapHome Core and the ISG gateway are on the same network/subnet
4. Check that port 502 is not blocked by a firewall
5. Verify that no other ISG software interface (e.g., ServiceWelt remote access) is actively using the connection — Modbus cannot run simultaneously with other interfaces except read-only EMI

### Value 32768 returned for sensors

The ISG returns the substitute value 32768 (0x8000) for registers that are not available on the connected controller. This typically means the sensor is not installed or the register is not supported by the specific WPM controller type.

### Faults not clearing via Modbus

System faults can only be acknowledged through the SERVICEWELT user interface on the ISG — they cannot be cleared via Modbus. The template's fault status and active error number attributes allow monitoring faults, but manual acknowledgment is required.

## Available devices 12

These devices appear in TapHome after import.

Stiebel Eltron HPA-0 Module

Service Attributes

|                      |
|----------------------|
| Controller Ident.    |
| Operating Status     |
| HC1 Pump             |
| HC2 Pump             |
| Heat-Up Program      |
| NHZ Settings Run.    |
| HP In Heating Mode   |
| HP In DHW Mode       |
| Compressor Running   |
| Summer Mode          |
| Cooling Mode         |
| Min.1 IWS In Defrost |
| Silent Mode 1        |
| Silent Mode 2        |
| Other Attributes     |
| Outdoor Temp.        |
| Actual Buffer Temp   |
| Return Temp          |
| Set Buffer Temp      |
| Hot Gas Temp.        |
| Low Pressure         |
| Mean Pressure        |
| HiPressure           |
| Defrost State        |
| Fault Status         |
| Message No.          |
| Active Error No.     |

Read (module)

```taphome
Reg2500:=MODBUSR(A, 2500, Int16);
Reg5001:=MODBUSR(A, 5001, Int16);
Reg2505:=MODBUSR(A, 2505, Int16);
If Reg5001=449
ContIdent:="WPMsystem";
ELSEif Reg5001=103
ContIdent:="LWZ Others";
ELSEIF Reg5001=104
ContIdent:="LWZ 304/404/504 SOL, 5/8 CS Premium";
ELSEIF Reg5001=390
ContIdent:="WPM 3";
ELSEIF Reg5001=391
ContIdent:="WPM 3i";
ELSE
ContIdent:="Unknown";
END
IF Reg2505=1
Defrost:="Initiated";
ELSE
Defrost:="Off";
END
```

Service Attributes

Controller Ident.

```taphome
ContIdent
```

Operating Status

```

```

HC1 Pump

```taphome
If(getbit(reg2500,0), "On", "Off")
```

HC2 Pump

```taphome
If(getbit(reg2500,1), "On", "Off")
```

Heat-Up Program

```taphome
If(getbit(reg2500,2), "On", "Off")
```

NHZ Settigs Run.

```taphome
If(getbit(reg2500,3), "On", "Off")
```

HP In Heating Mode

```taphome
If(getbit(reg2500,4), "On", "Off")
```

HP In DHW Mode

```taphome
If(getbit(reg2500,5), "On", "Off")
```

Compressor Running

```taphome
If(getbit(reg2500,6), "On", "Off")
```

Summer Mode

```taphome
If(getbit(reg2500,7), "On", "Off")
```

Cooling Mode

```taphome
If(getbit(reg2500,8), "On", "Off")
```

Min.1 IWS In Defrost

```taphome
If(getbit(reg2500,9), "On", "Off")
```

Silent Mode 1

```taphome
If(getbit(reg2500,10), "On", "Off")
```

Silent Mode 2

```taphome
If(getbit(reg2500,11), "On", "Off")
```

Other Attributes

```

```

Outdoor Temp. \[°C]

```taphome
MODBUSR(A, 506, Int16)/10
```

Actual Buffer Temp \[°C]

```taphome
MODBUSR(A, 517, uint16)/10
```

Return Temp \[°C]

```taphome
MODBUSR(A, 541, uint16)/10
```

Set Buffer Temp \[°C]

```taphome
MODBUSR(A, 518, Int16)/10
```

Hot Gas Temp. \[°C]

```taphome
MODBUSR(A, 543, Int16)/10
```

Low Pressure \[Bar]

```taphome
MODBUSR(A, 544, Int16)/100
```

Mean Pressure \[Bar]

```taphome
MODBUSR(A, 545, Int16)/100
```

HiPressure \[Bar]

```taphome
MODBUSR(A, 546, Int16)/100
```

Defrost State

```taphome
Defrost
```

Fault Status

```taphome
MODBUSR(A, 2503, Int16)
```

Message No.

```taphome
MODBUSR(A, 2507, Int16)
```

Active Error No.

```taphome
MODBUSR(A, 2506, Int16)
```

DHW Actual Temperature Variable Read-only

Current domestic hot water cylinder temperature in °C

Register: A:521 Int16 Unit: °C numeric (/10)

Read

```taphome
MODBUSR(A, 521, Int16)/10
```

DHW Comfort Temperature Thermostat Read and write

Thermostat — reads current DHW temperature, writes comfort setpoint (10–60 °C)

Register: A:521 (current) / H:1509 (setpoint) → H:1509 Int16 Unit: °C numeric (/10)

Read temperature

```taphome
MODBUSR(A, 521, Int16) / 10
```

Read desired temperature

```taphome
MODBUSR(H, 1509, Int16) / 10
```

Write desired temperature

```taphome
MODBUSWNE(H, 1509, Int16, Se * 10)
```

DHW ECO Temperature Thermostat Read and write

Thermostat — reads current DHW temperature, writes ECO setpoint (10–60 °C)

Register: A:521 (current) / H:1510 (setpoint) → H:1510 Int16 Unit: °C numeric (/10)

Read temperature

```taphome
MODBUSR(A, 521, Int16) / 10
```

Read desired temperature

```taphome
MODBUSR(H, 1510, Int16) / 10
```

Write desired temperature

```taphome
MODBUSWNE(H, 1510, Int16, Se * 10)
```

HC1 Comfort Temperature Thermostat Read and write

Thermostat — reads current heating circuit 1 temperature, writes comfort setpoint (5–30 °C)

Register: A:507 (current) / H:1501 (setpoint) → H:1501 Int16 Unit: °C numeric (/10)

Read temperature

```taphome
MODBUSR(A, 507, Int16) / 10
```

Read desired temperature

```taphome
MODBUSR(H, 1501, Int16) / 10
```

Write desired temperature

```taphome
MODBUSWNE(H, 1501, Int16, Se * 10)
```

HC1 ECO Temperature Thermostat Read and write

Thermostat — reads current heating circuit 1 temperature, writes ECO setpoint (5–30 °C)

Register: A:507 (current) / H:1502 (setpoint) → H:1502 Int16 Unit: °C numeric (/10)

Read temperature

```taphome
MODBUSR(A, 507, Int16) / 10
```

Read desired temperature

```taphome
MODBUSR(H, 1502, Int16) / 10
```

Write desired temperature

```taphome
MODBUSWNE(H, 1502, Int16, Se * 10)
```

HC2 Comfort Temperature Thermostat Read and write

Thermostat — reads current heating circuit 2 temperature, writes comfort setpoint (5–30 °C)

Register: A:510 (current) / H:1504 (setpoint) → H:1504 Int16 Unit: °C numeric (/10)

Read temperature

```taphome
MODBUSR(A, 510, Int16) / 10
```

Read desired temperature

```taphome
MODBUSR(H, 1504, Int16) / 10
```

Write desired temperature

```taphome
MODBUSWNE(H, 1504, Int16, Se * 10)
```

HC2 ECO Temperature Thermostat Read and write

Thermostat — reads current heating circuit 2 temperature, writes ECO setpoint (5–30 °C)

Register: A:510 (current) / H:1505 (setpoint) → H:1505 Int16 Unit: °C numeric (/10)

Read temperature

```taphome
MODBUSR(A, 510, Int16) / 10
```

Read desired temperature

```taphome
MODBUSR(H, 1505, Int16) / 10
```

Write desired temperature

```taphome
MODBUSWNE(H, 1505, Int16, Se * 10)
```

Operating Mode Multi-value Switch Read and write

Heat pump operating mode — Emergency, Standby, Programmed, Comfort, ECO, DHW

Register: H:1500 Int16 numeric

Values / States: Emergency Operation · Standby Mode · Programmed Operation · Comfort Mode · ECO Mode · DHW Mode

Read switch state

```taphome
MODBUSR(H, 1500, Int16)
```

Write switch state

```taphome
MODBUSWNE(H, 1500, Int16, Mu)
```

Heating flow temperature (fixed value) Thermostat

Read temperature

```taphome
MODBUSR(A, 514, Int16) / 10
```

Read desired temperature

```taphome
# ISG 1508 FIXED VALUE OPERATION: 200–700 = 20–70 °C, 0x9000 (36864) = mode off
VAR v := MODBUSR(H, 1507, Uint16);
IF(v >= 200 AND v <= 700, v / 10, NaN)
```

Write desired temperature

```taphome
# Fixed flow water temperature of heating circuit 1 (ISG 1508, value x10, 20–70 °C).
# Writing a value of 20–70 °C also switches the fixed value mode on: it disables the
# weather compensation of circuit 1 in the controller, on WPM 3 it regulates the return temperature.
# Before cooling the fixed value mode must be switched off (switch Fixed flow temperature mode).
# Rounding to 0.5 K and writing only on change keeps the number of writes low.
IF ISNAN(Se)
    RETURN(0);
END
VAR t := MAX(20, MIN(70, ROUND(Se * 2) / 2));
MODBUSWNE(H, 1507, Int16, ROUND(t * 10))
```

Fixed flow temperature mode Switch

Values / States: ON · OFF

Read switch state

```taphome
# On when ISG 1508 holds a fixed value of 20–70 °C (200–700); off = 0x9000 (36864)
VAR v := MODBUSR(H, 1507, Uint16);
IF(v >= 200 AND v <= 700, 1, 0)
```

Write switch state

```taphome
# Switching on writes nothing: the mode is switched on by writing a temperature to the
# device Heating flow temperature (fixed value), e.g. from the Equithermic regulation smart rule.
# Switching off writes 0x9000 (36864 as Uint16) to ISG 1508 and the controller returns
# to heating curve 1.
# The fixed value disables the weather compensation of circuit 1, on WPM 3 it regulates
# the return temperature, and it must be switched off before cooling.
IF St = 0
    MODBUSWNE(H, 1507, Uint16, 36864);
END
```

Cooling flow temperature – floor Thermostat

Read temperature

```taphome
MODBUSR(A, 514, Int16) / 10
```

Read desired temperature

```taphome
MODBUSR(H, 1513, Int16) / 10
```

Write desired temperature

```taphome
# Set flow water temperature for area (floor) cooling (ISG 1514, value x10, 7–25 °C).
# Cooling must be enabled on the controller (KÜHLEN ON, model C).
# Dew point protection is TapHome's job unless FEK/FET is installed.
IF ISNAN(Se)
    RETURN(0);
END
VAR t := MAX(7, MIN(25, Se));
MODBUSWNE(H, 1513, Int16, ROUND(t * 10))
```

Cooling flow temperature – fan coil Thermostat

Read temperature

```taphome
MODBUSR(A, 514, Int16) / 10
```

Read desired temperature

```taphome
MODBUSR(H, 1516, Int16) / 10
```

Write desired temperature

```taphome
# Set flow water temperature for fan coil cooling (ISG 1517, value x10, 7–25 °C).
# Cooling must be enabled on the controller (KÜHLEN ON, model C).
# Dew point protection is TapHome's job unless FEK/FET is installed.
IF ISNAN(Se)
    RETURN(0);
END
VAR t := MAX(7, MIN(25, Se));
MODBUSWNE(H, 1516, Int16, ROUND(t * 10))
```

**Connection:** Modbus TCP • Slave ID: $\[SlaveId]

Possible improvements (10)

- A:506 Outdoor Temperature — Int16, /10, °C — available as service attribute only, not as standalone device
- A:515 Actual Flow Temperature — Int16, /10, °C — overall flow temperature
- A:516 Actual Return Temperature — Int16, /10, °C — overall return temperature (0–90 °C)
- A:536 Source Temperature — Int16, /10, °C — heat source (air) temperature
- H:1508 Fixed Value Operation — Int16, /10, °C, R/W — fixed value heating, OFF or 20–70 °C
- H:1520 Reset — 1=System Reset, 2=Fault List Reset, 3=Heat Pump Reset — ISG 1521
- H:4001–4003 SG Ready Control — SG Ready ON/OFF switch + Input 1 + Input 2 for PV optimization / smart grid integration
- A:3501–3516 Energy Data (heating + DHW + consumption) — Heating/DHW heat produced (day/total kWh/MWh), power consumed (day/total kWh/MWh), NHZ totals
- A:505 Relative Humidity — Int16, /10, % — relative humidity (WPMsystem, WPM 3)
- A:513 Actual Flow Temperature WP — Int16, /10, °C — flow temperature from heat pump (MFG, if available)

## Import parameters

Enter these values when you import the XML.

| Asked in the app | Default       |
|------------------|---------------|
| Slave ID         | `1`           |
| IP address       | `192.168.0.1` |

## Sources

- ISG Modbus TCP/IP Software Documentation
  
  [www.stiebel-eltron.com.au](https://www.stiebel-eltron.com.au/download/1685919441_321798-44755-9770_ISG%20Modbus_en.pdf) 2026-03-29
  
  [PDF](https://taphome.com/compatibility/devices/stiebel-eltron-hpa-0-serie/manufacturer/isg-modbus-documentation.pdf)
- Stiebel Eltron ISG — Home Assistant Integration
  
  [github.com](https://github.com/pail23/stiebel_eltron_isg_component) 2026-03-29

Manufacturer documents are © their respective owners. They are provided as published by the manufacturer, for reference only.

## Related Documentation

- [Modbus Integration](https://taphome.com/en/compatibility/modbus-guide/)
- [Modbus](https://taphome.com/en/docs/integration/modbus/)
- [Simple configuration using templates](https://taphome.com/en/docs/integration/modbus/templates/)
- [Modbus scripts and prefetch](https://taphome.com/en/docs/script/modbus-scripts/)
- [Modbus functions](https://taphome.com/en/docs/script/modbus/)
- [Modbus data types](https://taphome.com/en/docs/script/modbus-data-types/)

