TapHome

Atrea RD5 Air Recovery

Modbus TCP
Submitted by
Last updated: 03. 2026
Atrea RD5 Air Recovery

Atrea DUPLEX series are mechanical ventilation heat recovery (MVHR) units controlled by the RD5 regulation system. TapHome connects directly to the RD5 controller via Modbus TCP over Ethernet — no additional gateway is required.

The template provides thermostat control with temperature setpoint, operating mode selection (Off, Auto, Ventilation, Circulation, Night Precooling, Balance, Overpressure), fan power adjustment (0–100%), four temperature sensors (supply, indoor, outdoor, extract), and comprehensive diagnostics with 45+ error and warning registers.

Network connection

The RD5 controller has a built-in Ethernet interface. Connect it to the same local network as TapHome Core using a standard Ethernet cable.

  • Protocol: Modbus TCP
  • Port: 502
  • Slave ID: 1–255 (configurable)
  • Data encoding: Int16, temperature values divided by 10

Enabling Modbus TCP

Modbus TCP must be explicitly enabled in the RD5 service settings before TapHome can communicate with the unit.

Navigate to service parameter 3.15.1 Modbus TCP and set it to YES.

If Modbus TCP is not enabled (parameter 3.15.1 = NO), the RD5 controller will not respond to any Modbus TCP requests on port 502.

Configuration

When importing the template in TapHome, provide:

  • IP Address — the RD5 controller’s IP on the local network
  • Slave ID — Modbus appliance address (default: 1)

Assign a static IP address to the RD5 controller in the router’s DHCP settings to prevent the address from changing after a power cycle.

The manufacturer recommends using the Manual control routine when the unit is controlled from a BMS system such as TapHome. The template writes control registers (H:10708, H:10709, H:10710) that correspond to the Manual routine (H:10700–H:10703 = 0).

Device capabilities

The template exposes the following devices:

Thermostat
  • Atrea Thermostat — room temperature control with setpoint range 10–40 °C. Reads current temperature from I:10212 (T-SUP), reads desired temperature from H:10716, and writes the setpoint to H:10710. Includes 13 service attributes showing heating/cooling status (water valve, pump, heat pump, preheating, cooling configuration) and 6 service actions for configuring primary/secondary heating, preheating, cooling, capillary freezing protection, and room control sensor selection.
Operating mode control
  • Mode Control — multi-value switch for selecting the operating mode via registers H:10705 (read) / H:10709 (write). Available modes: Off, Auto, Ventilation, Circulation + Ventilation, Circulation, Night Precooling, Balance, Overpressure.
Fan control
  • Ventilation — dimmer controlling fan power from 0% (off) to 100% via registers H:10704 (read) / H:10708 (write). The minimum active power is 12%. Includes 4 service attributes (M1 output %, M2 output %, regulation mode, ventilation interval) and 2 service actions (fan regulation mode selection, ventilation interval setting 0–60 min).
Temperature monitoring

The template includes four temperature sensors:

SensorRegisterDescription
T-SUP (Supply)I:10212Supply air temperature — air delivered to rooms after heat recovery
T-IDA (Indoor)I:10215Indoor air temperature — source selectable between CP Touch, T-ETA, TRKn, or BMS
T-ODA (Outdoor)I:10211Outdoor air temperature — built-in sensor or BMS-provided value
T-ETA (Extract)I:10213Extract air temperature — air extracted from rooms before heat recovery

The T-IDA sensor source can be configured via the service action on the Indoor Air Temperature device. The T-ODA sensor can be switched between the built-in sensor and a BMS-provided value, with configurable sensor position (internal/external).

Module-level diagnostics

The RD5 template monitors 45+ discrete registers (D:11100–D:11184) for errors and warnings, including:

  • Errors: Device overheating, orientation not set, sensor failures (TU1/TU2/TEa/TEb/TA2/T-ODA/T-ETA), STP contact, manometer failures, RD-IO communication, unbalanced flow, configuration missing, insufficient preheating, module failures, frost protection
  • Warnings: Heat exchanger freezing/defrosting, high tariff, insufficient flow/heating, clogged filter, input alarm faults, uncommissioned unit, safe mode, cooling/heating unavailable

A module-level service attribute shows the Unit Orientation (which motor is the supply fan), and a service action allows configuring the supply fan assignment (M1 or M2).

Additional capabilities

The RD5 units also expose Modbus registers for exhaust air temperature (T-EHA), forced mode status, season control, volume flow monitoring (supply/extract), filter replacement period, alarm/filter reset, and control routine configuration. These can be added to the TapHome template in a future update.

Troubleshooting

No Modbus communication
  1. Verify that Modbus TCP is enabled — parameter 3.15.1 Modbus TCP = YES in the service settings
  2. Confirm the RD5 controller’s IP address — check the router’s DHCP lease table
  3. Ensure TapHome Core and the RD5 controller are on the same network/subnet
  4. Check that no firewall is blocking port 502
  5. Respect the 5-second gap between multiple read/write operations as recommended by the manufacturer
Temperature values appear incorrect

Temperature registers use Int16 encoding with the value divided by 10. Values above 32767 represent negative temperatures: (value - 65536) / 10. For example, value 65516 = (65516 - 65536) / 10 = -2.0 °C.

Mode changes not applied

When the unit is in a forced mode (startup, run-down, defrost, D1–D4 input activation), mode write commands may be ignored. Check the forced mode register H:10712 — value 0 means no forced mode is active.

If using the Schedule control routine (H:10700–H:10703 = 1), you must first write value 2 to the corresponding control routine register before writing the new control parameter.

Available devices

Atrea RD5 Module
Service Attributes
Unit Orientation
Service Actions
Set Supply Orientation

Atrea RD5

Read (module)
IF(ModbusR(D, 11100, Bool), ADDERROR("Device Overheating"));
IF(ModbusR(D, 11101, Bool), ADDERROR("Orientation not set"));
IF(ModbusR(D, 11102, Bool), ADDERROR("Type of Heater not set"));
IF(ModbusR(D, 11104, Bool), ADDERROR("STP Contact is active"));
IF(ModbusR(D, 11105, Bool), ADDERROR("Manometer DP1 failure"));
IF(ModbusR(D, 11106, Bool), ADDERROR("Manometer DP2 failure"));
IF(ModbusR(D, 11107, Bool), ADDERROR("Sensor TU1 failure"));
IF(ModbusR(D, 11108, Bool), ADDERROR("Sensor TU2 failure"));
IF(ModbusR(D, 11108, Bool), ADDERROR("Sensor TU2 failure"));
IF(ModbusR(D, 11109, Bool), ADDERROR("Sensor TEa failure"));
IF(ModbusR(D, 11110, Bool), ADDERROR("Sensor TEb failure"));
IF(ModbusR(D, 11111, Bool), ADDERROR("Sensor TA2 failure"));
IF(ModbusR(D, 11112, Bool), ADDERROR("RD-IO Communication failure"));
IF(ModbusR(D, 11114, Bool), ADDERROR("Unbalanced Flow"));
IF(ModbusR(D, 11116, Bool), ADDERROR("Indoor Sensor failure"));
IF(ModbusR(D, 11117, Bool), ADDWARNING("Recuperator Freezing"));
IF(ModbusR(D, 11118, Bool), ADDWARNING("Unfreezing Recuperator... "));
IF(ModbusR(D, 11119, Bool), ADDWARNING("High Tariff"));
IF(ModbusR(D, 11119, Bool), ADDWARNING("High Tariff"));
IF(ModbusR(D, 11120, Bool), ADDWARNING("Insufficient flow"));
IF(ModbusR(D, 11121, Bool), ADDWARNING("Insufficient primary heating output"));
IF(ModbusR(D, 11122, Bool), ADDWARNING("Clogged Filter"));
IF(ModbusR(D, 11123, Bool), ADDWARNING("Fault at AI input IN1"));
IF(ModbusR(D, 11124, Bool), ADDWARNING("Fault at AI input IN2"));
IF(ModbusR(D, 11125, Bool), ADDWARNING("Fault at AI input INk1/1"));
IF(ModbusR(D, 11126, Bool), ADDWARNING("Fault at AI input INk2/1"));
IF(ModbusR(D, 11127, Bool), ADDWARNING("Fault at AI input INk3/1"));
IF(ModbusR(D, 11128, Bool), ADDWARNING("Fault at AI input INk4/1"));
IF(ModbusR(D, 11129, Bool), ADDWARNING("Fault at AI input INk1/2"));
IF(ModbusR(D, 11130, Bool), ADDWARNING("Fault at AI input INk2/2"));
IF(ModbusR(D, 11131, Bool), ADDWARNING("Fault at AI input INk3/2"));
IF(ModbusR(D, 11132, Bool), ADDWARNING("Fault at AI input INk4/2"));
IF(ModbusR(D, 11140, Bool), ADDWARNING("Unit is not in Operation"));
IF(ModbusR(D, 11141, Bool), ADDERROR("Configuration File is Missing"));
IF(ModbusR(D, 11143, Bool), ADDERROR("Insufficient Pre-heating Power"));
IF(ModbusR(D, 11144, Bool), ADDERROR("This combination of heaters is not allowed"));
IF(ModbusR(D, 11145, Bool), ADDERROR("Manometer DP3 failure"));
IF(ModbusR(D, 11146, Bool), ADDERROR("External Manometer Failure"));
IF(ModbusR(D, 11147, Bool), ADDERROR("Modul RD5-K/1"));
IF(ModbusR(D, 11148, Bool), ADDERROR("Modul RD5-K/2"));
IF(ModbusR(D, 11149, Bool), ADDERROR("Unfreezing Heat Pump..."));
IF(ModbusR(D, 11160, Bool), ADDWARNING("Updating..."));
IF(ModbusR(D, 11162, Bool), ADDERROR("This cooler configuration is not allowed"));
IF(ModbusR(D, 11165, Bool), ADDWARNING("Safe Mode Active"));
IF(ModbusR(D, 11166, Bool), ADDERROR("Frost protection-capillary"));
IF(ModbusR(D, 11167, Bool), ADDERROR("Frost protection configuration"));
IF(ModbusR(D, 11168, Bool), ADDWARNING("Unfinished Unit Learning"));
IF(ModbusR(D, 11169, Bool), ADDERROR("T-ODA Sensor failure"));
IF(ModbusR(D, 11170, Bool), ADDERROR("T-ETA/T-IDA Sensor failure"));
IF(ModbusR(D, 11171, Bool), ADDWARNING("Cooling is not available"));
IF(ModbusR(D, 11172, Bool), ADDERROR("Heating is not available"));
IF(ModbusR(D, 11173, Bool), ADDWARNING("Evaporation on"));
IF(ModbusR(D, 11174, Bool), ADDWARNING("Increased ignition power"));
IF(ModbusR(D, 11175, Bool), ADDERROR("Illegal flow setting"));
IF(ModbusR(D, 11184, Bool), ADDWARNING("Filter test configuration"));
Service Attributes
Unit Orientation
SWITCH(MODBUSR(H, 10501, Uint16), 0, "Not Set", 1, "M1 Supply",2, "M2 Supply", "Unknown")
Service Actions
Set Supply Orientation
Parameters: Supply
ModbusW(H, 10501, Uint16, Sup);
Atrea Thermostat Thermostat

Room temperature control — setpoint, current and desired temperature

Register: I:10212 (read current), H:10716 (read desired), H:10710 (write desired) Int16 Unit: °C numeric (value / 10 = °C)
Service Attributes
Heating Water Valve YV1
Heating Water Pump KK
Heating (Water or Electric) SA2
Heat Pump (Heating) DA1
Heat Pump (Heating) SE
Heat Pump (Cooling) DA1
Heat Pump (Cooling) SC
Temp. sensor for Room Control
Preheating
Cooling
Capillary freezing
Primary Heating
Secondary heating
Service Actions
Temp. sensor for Room Control
Primary Heating
Secondary heating
Preheating
Cooling
Capillary Freezing

Atrea Thermostat

Read temperature
MODBUSR(A, 10212, Int16) / 10
Read desired temperature
MODBUSR(H, 10716, Int16) / 10
Write desired temperature
MODBUSWNE(H, 10710, Int16, Se * 10)
Service Attributes
Heating Water Valve YV1
IF(MODBUSR(C, 10201, Bool), "Open", "Closed")
Heating Water Pump KK
IF(MODBUSR(C, 10200, Bool), "ON", "OFF")
Heating (Water or Electric) SA2
var he := MODBUSR(H, 10203, Int16);
IF(he>0, "Active", "Inactive")
Heat Pump (Heating) DA1
var da := MODBUSR(H, 10207, Int16);
IF(da>0, "ON", "OFF")
Heat Pump (Heating) SE
IF(MODBUSR(C, 10215, Bool), "Active", "Inactive");
Heat Pump (Cooling) DA1
IF(MODBUSR(H, 00205, Int16) > 0, "ON", "OFF")
Heat Pump (Cooling) SC
IF(MODBUSR(C, 10216, Bool), "Active", "Inactive")
Temp. sensor for Room Control
SWITCH(MODBUSR(H, 10514, Uint16), 0, "CP", 1, "T-ETA", 2, "TRKn", 3, "BMS", "Unknown" )
Preheating
SWITCH(MODBUSR(H, 10504, Uint16), 0, "None", 1, "Electric", 2, "Liquid", "Unknown" );
Cooling
SWITCH(MODBUSR(H, 10507, Uint16), 0, "None", 1, "Water", 2, "Direct", "Unknown")
Capillary freezing
IF(MODBUSR(H, 10530, Uint16) > 0," DIsabled", "Enabled");
Primary Heating
SWITCH (MODBUSR(H, 10503, Uint16), 0, "None", 1, "Contact-Water", 2, "Analog Water", 3, "PWM-electric", 4, "Contact-Electric", 5, "Thermal pump", "Unknown");
Secondary heating
SWITCH(MODBUSR(H, 10517, Uint16),0 , "None", 1,  "Contact-Water", 2, "Analog water", 3, "PWM-electric", "Unknown");
Service Actions
Temp. sensor for Room Control
Parameters: Sensor
MODBUSW(H, 10514, Uint16, sens);
Primary Heating
Parameters: Heating Source
MODBUSW(H, 10503, Uint16, he)
Secondary heating
Parameters: Source
MODBUSW(H, 10517, Uint16, Soc)
Preheating
Parameters: Preheating
MODBUSW(H, 10504, Uint16, Pre);
Cooling
Parameters: Cooling
MODBUSW(H, 10507, Uint16, Coo)
Capillary Freezing
Parameters: Capillary Freezing (Enabled / Disabled)
MODBUSW(H, 10530, Uint16, CaF);
Supply Air Temperature (T-SUP) Temperature Sensor Read-only
Register: I:10212 Int16 Unit: °C numeric (value / 10 = °C)

Supply Air Temperature (T-SUP)

Read temperature
MODBUSR(A, 10212, Int16) / 10
Indoor Air Temperature (T-IDA) Temperature Sensor Read-only

Indoor air temperature — source selectable between CP Touch panel, T-ETA, TRKn, or BMS

Register: I:10215 Int16 Unit: °C numeric (value / 10 = °C)
Service Attributes
Source
Service Actions
Source of T-IDA

Indoor Air Temperature (T-IDA)

Read temperature
MODBUSR(A, 10215, Int16) / 10
Service Attributes
Source
var va := MODBUSR(H, 10514, Int16);
SWITCH(va, 0, "CP",1, "ETA", 2, "TRKn", 3, "BMS", "Unknown")
Service Actions
Source of T-IDA
Parameters: Source
MODBUSW(H, 10514, Int16, So)
Mode Control Multi-value Switch

Active operating mode — Off, Auto, Ventilation, Circulation, Night Precooling, Balance, or Overpressure

Register: H:10705 (read), H:10709 (write) Int16 numeric
Values / States: OFF · Auto · Ventilation · Circulation + Ventilation · Circulation · Night Precooling · Balance · Overpressure

Mode Control

Read switch state
MODBUSR(H, 10705, Int16)
Write switch state
MODBUSWNE(H, 10709, Int16, Mu)
Outdoor Air Temperature (T-ODA) Temperature Sensor Read-only

Outdoor air temperature — from built-in sensor or BMS-provided value

Register: I:10211 Int16 Unit: °C numeric (value / 10 = °C, negative: (value − 65536) / 10)
Service Attributes
Source for T-ODA
Sensor Position
Service Actions
Choose Source
T-ODA Sensor Position

Outdoor Air Temperature (T-ODA)

Read temperature
MODBUSR(A, 10211, Int16) / 10
Service Attributes
Source for T-ODA
var source := MODBUSR(C, 10510, Bool);
IF(source = 1, "Data from BMS", "Built-in sensor")
Sensor Position
SWITCH(MODBUSR(H,10508, Uint16), 0, "Internal", 1, "External", "Unknown");
Service Actions
Choose Source
Parameters: Source
MODBUSW(C, 10510, Bool, So)
T-ODA Sensor Position
Parameters: Position
MODBUSW(H,10508, Uint16, pos)
Extract Air Temperature (T-ETA) Temperature Sensor Read-only
Register: I:10213 Int16 Unit: °C numeric (value / 10 = °C)

Extract Air Temperature (T-ETA)

Read temperature
MODBUSR(A, 10213, Int16) / 10
Ventilation Dimmer

Fan power control — adjusts ventilation intensity with M1/M2 motor monitoring

Register: H:10704 (read power), H:10708 (write power) Int16 Unit: % numeric (0=Off, 12–100 = power %)
Service Attributes
M1
M2
Regulation M1 / M2
Ventilation Interval (Auto)
Service Actions
Regulation M1/M2
Ventilation Interval (Auto)

Ventilation

Read level
MODBUSR(H, 10704, Int16) / 100
Write level
MODBUSWNE(H, 10708, Int16, Le * 100)
Service Attributes
M1
MODBUSR(H, 10200, Int16)/100 + "%"
M2
MODBUSR(H, 10201, Int16)/100 + "%"
Regulation M1 / M2
SWITCH(MODBUSR(H, 10510, Uint16), 0, "Direct", 1, "Constant flow", 2, "Constant Pressure", 3, "IN1 + IN2", "Unknown" );
Ventilation Interval (Auto)
MODBUSR(H, 10502, Uint16) +" min";
Service Actions
Regulation M1/M2
Parameters: Regulation
MODBUSW(H, 10510, Uint16, Reg);
Ventilation Interval (Auto)
Parameters: Interval (0–60 Inter)
MODBUSW(H, 10502, Uint16, Inter);
Connection: Modbus TCP • Slave ID: $[SlaveId]
Possible improvements (19)
  • I:10214 Exhaust Air Temperature (T-EHA) — Int16, value / 10 = °C, read-only — air temperature after heat recovery (exhaust side)
  • H:10706 Required Temperature (read) — Int16, value / 10 = °C — currently set temperature target, read-only
  • H:10704 Required Power (read) — Int16, 0–100% — currently set fan power, read-only
  • H:10712 Forced Mode Status — Int16, 0–32 — shows if unit is in a forced mode (startup, rundown, defrost, D1–D4, etc.)
  • I:11401 Current Season — 0=Heating Season, 1=Non-Heating Season
  • H:11401 Season Control — R/W, 0=HS, 1=NHS, 2=T-ODA, 3=T-ODA+ — manual or automatic season switching
  • I:11600 Required Supply Volume Flow — 0–15000 m3/h
  • I:11601 Current Supply Volume Flow — 0–15000 m3/h
  • I:11602 Required Extract Volume Flow — 0–15000 m3/h
  • I:11603 Current Extract Volume Flow — 0–15000 m3/h
  • H:10910 Filter Replacement Period — R/W, 0–365 days
  • C:10005 Alarm Reset — Write 1 to reset all resetable alarms
  • C:10007 Filter Reset — Write 1 to reset filter change interval counter
  • H:10700 Power Control Routine — R/W, 0=Manual, 1=Schedule, 2=Temporary — BMS should use Manual (0)
  • H:10701 Mode Control Routine — R/W, 0=Manual, 1=Schedule, 2=Temporary
  • H:10702 Temperature Control Routine — R/W, 0=Manual, 1=Schedule, 2=Temporary
  • H:10703 Zone Control Routine — R/W, 0=Manual, 1=Schedule, 2=Temporary
  • H:10707 Required Zone — R/W, 0=Both, 1=Zone 1, 2=Zone 2 — requires SZ1/SZ2 function enabled
  • I:11420 Average Outdoor Temperature — Int16, averaged T-ODA over configurable time window

Sources