TapHome

Stiebel Eltron HPA-O Heat Pump

Modbus TCP
Submitted by
Last updated: 03. 2026

Requires external gateway

Stiebel Eltron ISG web / ISG plus

Stiebel Eltron HPA-O Heat Pump

The Stiebel Eltron HPA-O is an air source heat pump from the Premium series. 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), outdoor and DHW temperature monitoring, water flow rate, runtime counters, and total heat production.

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

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)

If the ISG gateway is connected via a router (DHCP), assign a static IP or DHCP reservation to prevent the address from changing after a power cycle. 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:

ValueModeDescription
0Emergency OperationMinimal operation, backup heating only
1Standby ModeFrost protection only
2Programmed OperationAlternates between ECO and Comfort per the WPM weekly program
3Comfort ModeConstant comfort temperature setpoints
4ECO ModeEnergy-saving reduced temperature setpoints
5DHW ModeDomestic hot water heating only, no space heating

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.

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 several read-only sensors:

  • Outdoor Temperature — ambient temperature from A:506 (°C, /10)
  • DHW Actual Temperature — current domestic hot water cylinder temperature from A:521 (°C, /10)
  • Water Flow Rate — heat pump water flow from A:547 (l/min, /10). May show 0 if the flow sensor is not installed.
  • Heat Quantity — total produced heat energy, combined from registers A:3502 (MWh) and A:3501 (kWh), displayed in MWh
  • Runtime Heating — cumulative heat pump runtime for space heating from A:3643 (hours)
  • Runtime DHW — cumulative heat pump runtime for DHW from A:3644 (hours)
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 — 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
Additional capabilities

The ISG gateway exposes additional registers not currently included in the TapHome template. These include flow and return temperature sensors, source temperature, fixed value operation control, 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

Stiebel Eltron HPA-0 Module
Service Attributes
Controller Ident.identifies connected WPM controller type from A:5001 (ISG 5002); values: WPMsystem (449), LWZ Others (103), LWZ 304/404/504 (104), WPM 3 (390), WPM 3i (391)
Operating Status (header)section header for operating status bit flags — no register, grouping label only
HC1 Pumpbit 0 of A:2500 (ISG 2501) — heating circuit 1 pump status (On/Off)
HC2 Pumpbit 1 of A:2500 (ISG 2501) — heating circuit 2 pump status (On/Off)
Heat-Up Programbit 2 of A:2500 (ISG 2501) — heat-up program active (On/Off)
NHZ Settigs Run.bit 3 of A:2500 (ISG 2501) — reheating stages running (On/Off)
HP In Heating Modebit 4 of A:2500 (ISG 2501) — heat pump in space heating mode (On/Off)
HP In DHW Modebit 5 of A:2500 (ISG 2501) — heat pump in DHW heating mode (On/Off)
Compressor Runningbit 6 of A:2500 (ISG 2501) — compressor running (On/Off)
Summer Modebit 7 of A:2500 (ISG 2501) — summer mode active (On/Off)
Cooling Modebit 8 of A:2500 (ISG 2501) — cooling mode active (On/Off)
Min.1 IWS In Defrostbit 9 of A:2500 (ISG 2501) — at least one heat pump in defrost mode (On/Off)
Silent Mode 1bit 10 of A:2500 (ISG 2501) — silent mode 1 active (On/Off)
Silent Mode 2bit 11 of A:2500 (ISG 2501) — silent mode 2 active, HP off (On/Off)
Other Attributes (header)section header for additional sensor values — no register, grouping label only
Outdoor Temp. [°C]reads A:506 (ISG 507) / 10 — outside temperature; duplicate of device #12
Actual Buffer Temp [°C]reads A:517 (ISG 518, UInt16) / 10 — actual buffer tank temperature
Return Temp [°C]reads A:541 (ISG 542, UInt16) / 10 — return temperature from HP 1
Set Buffer Temp [°C]reads A:518 (ISG 519) / 10 — setpoint buffer temperature
Hot Gas Temp. [°C]reads A:543 (ISG 544) / 10 — hot gas temperature HP 1
Low Pressure [Bar]reads A:544 (ISG 545) / 100 — low pressure HP 1
Mean Pressure [Bar]reads A:545 (ISG 546) / 100 — mean pressure HP 1
HiPressure [Bar]reads A:546 (ISG 547) / 100 — high pressure HP 1
Defrost Statereads A:2505 (ISG 2506) — defrost status: 0=Off, 1=Initiated
Fault Statusreads A:2504 (ISG 2505) — system fault: 0=No Fault, 1=Fault
Message No.reads A:2507 (ISG 2508) — message number (WPMsystem only)
Active Error No.reads A:2506 (ISG 2507) — active fault number (0–65535)

Stiebel Eltron HPA-0 13 C Premium

Read (module)
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.
ContIdent
Operating Status
HC1 Pump
If(getbit(reg2500,0), "On", "Off")
HC2 Pump
If(getbit(reg2500,1), "On", "Off")
Heat-Up Program
If(getbit(reg2500,2), "On", "Off")
NHZ Settigs Run.
If(getbit(reg2500,3), "On", "Off")
HP In Heating Mode
If(getbit(reg2500,4), "On", "Off")
HP In DHW Mode
If(getbit(reg2500,5), "On", "Off")
Compressor Running
If(getbit(reg2500,6), "On", "Off")
Summer Mode
If(getbit(reg2500,7), "On", "Off")
Cooling Mode
If(getbit(reg2500,8), "On", "Off")
Min.1 IWS In Defrost
If(getbit(reg2500,9), "On", "Off")
Silent Mode 1
If(getbit(reg2500,10), "On", "Off")
Silent Mode 2
If(getbit(reg2500,11), "On", "Off")
Other Attributes
Outdoor Temp. [°C]
MODBUSR(A, 506, Int16)/10
Actual Buffer Temp [°C]
MODBUSR(A, 517, uint16)/10
Return Temp [°C]
MODBUSR(A, 541, uint16)/10
Set Buffer Temp [°C]
MODBUSR(A, 518, Int16)/10
Hot Gas Temp. [°C]
MODBUSR(A, 543, Int16)/10
Low Pressure [Bar]
MODBUSR(A, 544, Int16)/100
Mean Pressure [Bar]
MODBUSR(A, 545, Int16)/100
HiPressure [Bar]
MODBUSR(A, 546, Int16)/100
Defrost State
Defrost
Fault Status
MODBUSR(A, 2504, Int16)
Message No.
MODBUSR(A, 2507, Int16)
Active Error No.
MODBUSR(A, 2506, Int16)
DHW Actual Temperature Variable Read-only

Current domestic hot water cylinder temperature

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

DHW Actual Temperature

Read
MODBUSR(A, 521, Int16)/10
Runtime DHW (h) Variable Read-only

Cumulative heat pump runtime for DHW heating in hours

Register: A:3644 Int16 Unit: h numeric

Runtime DHW (h)

Read
MODBUSR(A, 3644, Int16)
Runtime Heating (h) Variable Read-only

Cumulative heat pump runtime for space heating in hours

Register: A:3643 Int16 Unit: h numeric

Runtime Heating (h)

Read
MODBUSR(A, 3643, Int16)
Heat Quantity Variable Read-only

Total produced heat energy in MWh — combines MWh and kWh registers

Register: A:3502 + A:3501 Int16 + Int16 Unit: MWh composite (MSB + LSB/1000)

Heat Quantity

Read
(MODBUSR(A, 3502, Int16) + (MODBUSR(A, 3501, Int16)/1000))
Operating Mode Multi-value Switch

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

Operating Mode

Read switch state
MODBUSR(H, 1500, Int16)
Write switch state
MODBUSW(H, 1500, Int16, Mu)
HC1 ECO Temperature Thermostat

Heating circuit 1 thermostat — current temperature and ECO setpoint (5–30 °C)

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

HC1 ECO Temperature

Read temperature
MODBUSR(A, 507, Int16) / 10
Read desired temperature
MODBUSR(H, 1502, Int16) / 10
Write desired temperature
MODBUSW(H, 1502, Int16, Se * 10)
HC1 Comfort Temperature Thermostat

Heating circuit 1 thermostat — current temperature and Comfort setpoint (5–30 °C)

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

HC1 Comfort Temperature

Read temperature
MODBUSR(A, 507, Int16) / 10
Read desired temperature
MODBUSR(H, 1501, Int16) / 10
Write desired temperature
MODBUSW(H, 1501, Int16, Se * 10)
HC2 ECO Temperature Thermostat

Heating circuit 2 thermostat — current temperature and ECO setpoint (5–30 °C)

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

HC2 ECO Temperature

Read temperature
MODBUSR(A, 510, Int16) / 10
Read desired temperature
MODBUSR(H, 1505, Int16) / 10
Write desired temperature
MODBUSW(H, 1505, Int16, Se * 10)
HC2 Comfort Temperature Thermostat

Heating circuit 2 thermostat — current temperature and Comfort setpoint (5–30 °C)

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

HC2 Comfort Temperature

Read temperature
MODBUSR(A, 510, Int16) / 10
Read desired temperature
MODBUSR(H, 1504, Int16) / 10
Write desired temperature
MODBUSW(H, 1504, Int16, Se * 10)
Water Flow Rate Variable Read-only
Register: A:547 Int16 Unit: l/min numeric (/10)

Water Flow Rate

Read
MODBUSR(A, 547, Int16)/10
DHW ECO Temperature Thermostat

DHW thermostat — current cylinder temperature and ECO setpoint (10–60 °C)

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

DHW ECO Temperature

Read temperature
MODBUSR(A, 521, Int16) / 10
Read desired temperature
MODBUSR(H, 1510, Int16) / 10
Write desired temperature
MODBUSW(H, 1510, Int16, Se * 10)
DHW Comfort Temperature Thermostat

DHW thermostat — current cylinder temperature and Comfort setpoint (10–60 °C)

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

DHW Comfort Temperature

Read temperature
MODBUSR(A, 521, Int16) / 10
Read desired temperature
MODBUSR(H, 1509, Int16) / 10
Write desired temperature
MODBUSW(H, 1509, Int16, Se * 10)
Outdoor Temperature Variable Read-only
Register: A:506 Int16 Unit: °C numeric (/10)

Outdoor Temperature

Read
MODBUSR(A,506, Int16)/10
Connection: Modbus TCP • Slave ID: $[SlaveId]
Possible improvements (10)
  • A:507 Outside Temperature (direct) — ISG 507 = OUTSIDE TEMPERATURE. Template uses A:506 which maps to ISG 507 (dew point per docs). If offset is correct, outdoor temp is already covered.
  • 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:519 Set Buffer Temperature — Int16, /10, °C — buffer setpoint (available as service attribute only)
  • A:522 Actual Temperature DHW — Int16, /10, °C — DHW actual temperature (ISG 522 in 0-based = 523 in 1-based)
  • A:536 Source Temperature — Int16, /10, °C — heat source (ground/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:3504–3516 Energy Data (DHW + consumption) — DHW heat produced (day/total kWh/MWh), heating/DHW power consumed (day/total kWh/MWh), NHZ totals

Sources