---
title: "Thermia Athena 14HC Total Heat Pump"
description: "Control the Thermia Athena 14HC Total over Modbus TCP: operating mode, heating and cooling enable, supply and hot water setpoints, temperatures and alarms."
url: "https://taphome.com/en/compatibility/thermia-athena-14hc-total/"
language: en
lastmod: 2026-11-15
generator: hugo
ai:
  topics: ["modbus-tcp","heat-pump","ethernet","hot-water","cooling","alarms"]
  questions: ["How to integrate the Thermia Athena 14HC Total with TapHome?","What does the Thermia Athena 14HC Total TapHome template control and measure?","How to connect a Thermia Athena heat pump via Modbus TCP to TapHome?","How to enable Modbus TCP on a Thermia Athena in Settings / BMS?","Which slave ID does the Thermia Athena use over Modbus TCP?","Why does the Thermia Athena ignore its heat curve after connecting TapHome?","How to reset Thermia Athena alarms from TapHome?"]
---

# Thermia Athena 14HC Total Heat Pump

Communication: Modbus TCP

> 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 Thermia Athena 14HC Total is a heat pump with the Thermia Genesis controller. TapHome connects to it directly over Modbus TCP through the Ethernet port of the display unit — no gateway is needed. The template controls the operating mode, heating and cooling enable, the system supply temperature set point and the domestic hot water set point, and reads supply, return, outdoor and hot water temperatures, the current operating states, the heating season, the dew point sensor and the alarms. The template was created by TapHome partner FLASH Company.

## Hardware connection

The Genesis controller offers two Modbus interfaces:

- **Modbus TCP/IP** — the RJ45 connector on the display unit. This is the interface used by TapHome.
- **Modbus RTU** — port MBe on the BM card in the electrical cabinet. It is not used by this template.

Connect the RJ45 connector of the display unit to the same local network as the TapHome Core with a standard Ethernet cable.

> [!WARNING]
> On an installation with secondary units, the primary/secondary communication uses the same RJ45 connector on the display unit. Use a network switch or router, and do not connect TapHome to the port the primary unit uses to communicate with its secondaries.

## Configuration

### Enabling Modbus TCP on the heat pump

All Modbus parameters are under **Settings / BMS** on the heat pump display.

1. Open **Settings / BMS**.
2. Set **Modbus mode** to **TCP/IP**. The factory default is RTU.
3. Check the **Port** — the factory default is **502** (range 1–65535). The template connects to port 502; if a different port is set on the heat pump, the TapHome module must use the same one.

> [!NOTE]
> Switching the BMS function from Modbus RTU to Modbus TCP/IP is part of the service settings of the heat pump. It requires the service password, or a service technician.

The Modbus address (slave ID) set on the heat pump applies only to Modbus RTU. Over Modbus TCP/IP the address is not used: the heat pump answers every slave ID on its IP address and Modbus port.

### Import parameters

When the template is imported in the TapHome app (Modbus TCP module), it asks for two parameters:

- **IP address** — the IP address of the heat pump's display unit on the local network.
- **Slave Id** — prefilled with **1**. Over Modbus TCP/IP the heat pump ignores it, so the default value can be kept.

> [!WARNING]
> When the module starts, it enables **fixed system supply set point** on the heat pump (coil 41). From then on the heat pump no longer uses its own heat curve for the system supply temperature; it follows the set point of the **System supply temperature** thermostat in TapHome (holding register 116). Set this thermostat to a suitable value right after the import.

## Device capabilities

### Operating mode and enables

- **Operating mode** — selects Off, Standby or On / Auto (holding register 0).
- **Heating enable** — switches heating on or off (coil 9).
- **Cooling enable** — switches active cooling on or off (coil 10).

### Temperatures and set points

- **System supply temperature** — thermostat with the current supply line temperature (input register 9) and the fixed system supply set point (holding register 116), adjustable from 10 to 55 °C.
- **Domestic hot water** — thermostat with the weighted tap water temperature (input register 17). Changing the set point writes the stop temperature of hot water (holding register 23) and moves the start temperature (holding register 22) by the same amount, so the hysteresis set on the heat pump is kept. The set point range is 30–65 °C.
- **Return temperature** — return line temperature (input register 8).
- **Outdoor temperature** — outdoor temperature (input register 13).
- **Hot water top temperature** and **Hot water bottom temperature** — tap water top and lower temperatures (input registers 15 and 16).
- **Calculated supply setpoint** — system supply line set point calculated by the heat pump (input register 18).

### Operating states

- **Heating active**, **Hot water heating active**, **Defrost active** and **Cooling active** — derived from the "currently running" bit field (input register 2). Cooling active covers both active and passive cooling.
- **Compressor running** — compressor control signal (discrete input 199).
- **Compressor speed [%]** — compressor speed in percent (input register 54).
- **Season** — shows Heating while the heating season (winter) is active (discrete input 220).
- **Dew point sensor** — shows Active when the dew point sensor is triggered (input register 324).

### Alarms and service information

- **Alarm class A** — the class A alarm as a separate device (discrete input 0).
- The module itself reports an active class A alarm as an error, and class B, class C and the external alarm input as warnings.
- The service action **Reset all alarms** on the module resets the alarms of the heat pump (coil 3).

The module's service attributes show the software version of the heat pump (major, minor, build), compressor and hot water operating hours, compressor speed in rpm, discharge pipe, condenser in and condenser out temperatures, flow rate, high and low pressure, superheat, the heat curve supply set point and the heating season stop temperature.

## Troubleshooting

### No Modbus communication

1. Check that the cable is plugged into the RJ45 connector on the display unit, not into port MBe on the BM card.
2. In **Settings / BMS**, check that Modbus mode is **TCP/IP** — the factory default is RTU. Changing it requires the service password.
3. Check that the port in **Settings / BMS** matches the port of the TapHome module (502 by default).
4. Check that the IP address in the module matches the current address of the display unit.

### Supply or return temperature has no value

The supply line and return line temperatures (input registers 9 and 8) are not available on Athena Standard.

### The heat pump ignores its heat curve

This is expected: the module enables the fixed system supply set point every time it starts, and the heat pump then follows the **System supply temperature** thermostat. If the fixed set point is switched off by other means, the module enables it again at its next start.

## Available devices 19

These devices appear in TapHome after import.

Thermia Athena 14HC Total Module

Service Attributes

|                                       |
|---------------------------------------|
| Software version major                |
| Software version minor                |
| Software version build                |
| Compressor operating hours \[h]       |
| Hot water operating hours \[h]        |
| Compressor speed \[rpm]               |
| Discharge pipe temperature \[°C]      |
| Condenser in temperature \[°C]        |
| Condenser out temperature \[°C]       |
| Flow rate \[l/min]                    |
| High pressure \[bar]                  |
| Low pressure \[bar]                   |
| Superheat \[K]                        |
| Heat curve supply set point \[°C]     |
| Heating season stop temperature \[°C] |

Service Actions

|                  |
|------------------|
| Reset all alarms |

Initialize

```taphome
MODBUSW(C, 41, Bool, 1)
```

Read (module)

```taphome
IF(MODBUSR(D, 0, Bool), ADDERROR("Class A alarm active"));
IF(MODBUSR(D, 1, Bool), ADDWARNING("Class B alarm active"));
IF(MODBUSR(D, 2, Bool), ADDWARNING("Class C alarm active"));
IF(MODBUSR(D, 202, Bool), ADDWARNING("External alarm input active"));
```

Service Attributes

Software version major

```taphome
MODBUSR(A, 311, UInt16)
```

Software version minor

```taphome
MODBUSR(A, 312, UInt16)
```

Software version build

```taphome
MODBUSR(A, 313, UInt16)
```

Compressor operating hours \[h]

```taphome
MODBUSR(A, 48, UInt16) * 65536 + MODBUSR(A, 49, UInt16)
```

Hot water operating hours \[h]

```taphome
MODBUSR(A, 50, UInt16) * 65536 + MODBUSR(A, 51, UInt16)
```

Compressor speed \[rpm]

```taphome
MODBUSR(A, 5, UInt16)
```

Discharge pipe temperature \[°C]

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

Condenser in temperature \[°C]

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

Condenser out temperature \[°C]

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

Flow rate \[l/min]

```taphome
MODBUSR(A, 321, UInt16) / 10
```

High pressure \[bar]

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

Low pressure \[bar]

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

Superheat \[K]

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

Heat curve supply set point \[°C]

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

Heating season stop temperature \[°C]

```taphome
MODBUSR(H, 16, Int16) / 100
```

Service Actions

Reset all alarms

```taphome
MODBUSW(C, 3, Bool, 1)
```

Alarm class A Reed Contact

Read

```taphome
MODBUSR(D, 0, Bool)
```

Cooling active Reed Contact

Read

```taphome
(MODBUSR(A, 2, UInt16) & 0x90) > 0
```

Compressor running Reed Contact

Read

```taphome
MODBUSR(D, 199, Bool)
```

Heating active Reed Contact

Read

```taphome
GETBIT(MODBUSR(A, 2, UInt16), 3)
```

Defrost active Reed Contact

Read

```taphome
GETBIT(MODBUSR(A, 2, UInt16), 1)
```

Hot water heating active Reed Contact

Read

```taphome
GETBIT(MODBUSR(A, 2, UInt16), 2)
```

Cooling enable Switch

Values / States: ON · OFF

Read switch state

```taphome
MODBUSR(C, 10, Bool)
```

Write switch state

```taphome
MODBUSWNE(C, 10, Bool, St)
```

Heating enable Switch

Values / States: ON · OFF

Read switch state

```taphome
MODBUSR(C, 9, Bool)
```

Write switch state

```taphome
MODBUSWNE(C, 9, Bool, St)
```

Operating mode Multi-value Switch

Values / States: Off · Standby · On / Auto

Read switch state

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

Write switch state

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

Season Reed Contact

Read

```taphome
MODBUSR(D, 220, Bool)
```

Dew point sensor Reed Contact

Read

```taphome
MODBUSR(A, 324, UInt16) > 0
```

System supply temperature Thermostat

Read temperature

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

Read desired temperature

```taphome
MODBUSR(H, 116, Int16) / 100
```

Write desired temperature

```taphome
MODBUSWNE(H, 116, Int16, ROUND(Se * 100))
```

Return temperature Temperature Sensor

Read temperature

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

Domestic hot water Thermostat

Read temperature

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

Read desired temperature

```taphome
MODBUSR(H, 23, Int16) / 100
```

Write desired temperature

```taphome
VAR hyst := MODBUSR(H, 23, Int16) - MODBUSR(H, 22, Int16);
MODBUSWNE(H, 23, Int16, ROUND(Se * 100));
MODBUSWNE(H, 22, Int16, ROUND(Se * 100) - hyst);
```

Hot water top temperature Temperature Sensor

Read temperature

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

Outdoor temperature Temperature Sensor

Read temperature

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

Calculated supply setpoint Temperature Sensor

Read temperature

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

Hot water bottom temperature Temperature Sensor

Read temperature

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

Compressor speed \[%] Variable

Read

```taphome
MODBUSR(A, 54, UInt16) / 100
```

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

## Import parameters

Enter these values when you import the XML.

| Asked in the app | Default       |
|------------------|---------------|
| Slave Id         | `1`           |
| IP address       | `192.168.1.0` |

## 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/)

