TapHome

Atrea aMotion

Modbus TCP
Submitted by
Last updated: 03. 2026
Atrea aMotion

Atrea aMotion is the new-generation control system for Atrea DUPLEX heat recovery ventilation (MVHR) units, replacing the older RD5 controller. The aMotion system is available with aDot and aTouch user interface panels. TapHome connects directly to the aMotion controller via Modbus TCP over Ethernet on port 502 — no additional gateway is required.

The template provides full operating mode control (8 modes), thermostat with temperature setpoint, fan power adjustment (0–100%), bypass damper and zone control, circulation ratio setting, pressure level selection, two temperature sensors (outdoor and indoor), and comprehensive diagnostics monitoring 50+ alarm, warning and info registers.

Network connection

The aMotion 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 via aTool)
  • Data encoding: Int16, temperature values divided by 10, airflow values multiplied by 10

When reading or writing multiple registers in one batch, maintain at least a 5-second interval between requests. Shorter intervals may cause communication timeouts.

Enabling Modbus communication

Modbus TCP must be explicitly enabled using the aTool service software before TapHome can communicate with the unit.

  1. Open the aTool application and connect to the aMotion unit
  2. Navigate to section Komunikace (Communication)
  3. Enable Modbus
  4. Configure the desired Slave Address (default: 1)

If Modbus is not enabled in aTool, the aMotion controller will not respond to any Modbus TCP requests on port 502.

The HTTP/XML API used by older Atrea RD5 integrations (e.g., pyatrea library) is not compatible with aMotion units. Direct Modbus TCP is the recommended and supported integration method.

Configuration

When importing the template in TapHome, provide:

  • IP Address — the aMotion controller’s IP on the local network
  • Slave ID — Modbus slave address (default: 1, configurable 1–255 via aTool)

Assign a static IP address or DHCP reservation to the aMotion controller in the router settings to prevent the address from changing after a power cycle.

Device capabilities

The template exposes the following devices:

Operating mode and zone control
  • Mode Control — multi-value switch for selecting the operating mode via registers H:1001 (write) / I:1001 (read). Available modes: Off, Auto, Ventilation, Circulation + Ventilation, Circulation, Night Cooling, Disbalance, Overpressure.
  • Zone Control — multi-value switch for selecting the active zone via registers H:1003 (write) / I:1003 (read). Options: Zones 1+2 (both), Zone 1 only, Zone 2 only.
  • Pressure Level — multi-value switch for pressure level setting via registers H:1007 (write) / I:1007 (read). Options: Off, Low, Normal.
Thermostat and temperature monitoring
  • Thermostat — room temperature control reading the current indoor temperature from I:1104 (T-IDA) and setting the desired temperature via H:1002. Temperature range -30.0 to 90.0 °C with 0.1 °C resolution.
  • Outdoor Air Temperature (T-ODA) — reads outdoor air temperature from I:1101 (value / 10 = °C).
  • Indoor Air Temperature (T-IDA) — reads indoor air temperature from I:1104 (value / 10 = °C).
Fan and airflow control
  • Fan Power — dimmer controlling fan power from 0% to 100% via register H:1004. Adjusts the ventilation intensity for both supply (M-SUP) and exhaust (M-ETA) fans simultaneously.
  • Circulation Ratio — dimmer controlling the mixing proportion between recirculated and fresh air from 0% to 100% via register H:1008.
  • Bypass Damper Command — multi-value switch for bypass damper position via registers H:1008 (write) / I:1009 (read). Options: Auto, Open, Closed.
Module-level monitoring

The template includes 27 service attributes providing detailed real-time status information:

CategoryMonitored values
Fan commandsSupply fan M-SUP (%), exhaust fan M-ETA (%)
AirflowSupply fan (m³/h), exhaust fan (m³/h), fresh air (m³/h), ventilation setpoint (m³/h), circulation setpoint (m³/h)
TemperaturesSupply air T-SUP (°C), extract air T-ETA (°C), exhaust air T-EHA (°C), average outdoor (°C)
Actuator commandsCirculation damper (%), preheater (%), heater A (%), heater B (%), cooler (%), bypass transition time (ms)
Equipment statusFan status, dampers open/closed, preheater, heating, heater A/B, cooler A, pumps (heater A/B, cooler A)
Module-level diagnostics

The aMotion template monitors 50+ discrete registers (D:6003–D:6111) for errors, warnings, and informational messages, including:

  • Alarms: Frost protection (1st/2nd), stop signal, unit overheating, unbalanced airflow, manometer faults, heater A/B faults, cooler A fault, internal/external bus faults, Ethernet communication fault, temperature sensor faults (T-EHA/T-ETA/T-ODA/T-IDA/T-SUP), confirmed stop signal, anti-freeze capillary, device not ready, airflow sensor faults (SUP/ETA/ODA)
  • Warnings: Insufficient airflow/preheating, heat pump defrost, heater/cooler overload, heat exchanger freeze, airflow learning, UVC lamp change, trial operation end, clogged filters, cooling blocked
  • Info: Heat exchanger defrost, HDO higher tariff, learning process, filter PF1/PF2/PF3 clogged, max heater A/B power, fault inputs IN1/IN2/IN3, anti-freeze DI1–DI4, airflow increase for heating, device inspection interval, filter replacement interval
Additional capabilities

The aMotion units also expose Modbus registers for current season indicator, detailed operation mode (17 internal states from Off through Manual control), fan control method, maximum/minimum configurable airflow, airflow measurement source, circulation and bypass damper control methods, external temperature inputs from BMS (T-IDA and T-ODA), alarm/filter/UVC lamp reset commands, and scene trigger addresses. These can be added to the TapHome template in a future update.

Troubleshooting

No Modbus communication
  1. Verify that Modbus is enabled in aTool — section Komunikace (Communication)
  2. Confirm the aMotion controller’s IP address — check the router’s DHCP lease table or the unit’s display
  3. Ensure TapHome Core and the aMotion controller are on the same network/subnet
  4. Check that no firewall is blocking port 502
  5. Verify the Slave ID matches between TapHome and the unit configuration
Temperature values appear incorrect

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

Airflow values appear incorrect

Airflow registers use Int16 encoding with the value multiplied by 10. For example, a register value of 35 represents 350 m³/h.

Communication timeouts

The manufacturer recommends a minimum 5-second interval between batch register reads. If TapHome reports frequent communication errors, ensure no other Modbus client (e.g., Home Assistant, BMS) is polling the same unit simultaneously with short intervals.

Available devices

Atrea aMotion Module
Service Attributes
Supply Fan Command M-SUP [%]
Exhaust Fan Command M-ETA [%]
Supply Fan Airflow M-SUP [m³/h]
Exhaust Fan Airflow M-ETA [m³/h]
Fresh Air Airflow [m³/h]
Bypass Damper Transition Time [ms]
Circulation Damper Command [%]
Preheater Command [%]
Heater A Command [%]
Heater B Command [%]
Cooler Command [%]
Cooler A Pump
Heater A Pump
Heater B Pump
Average Outdoor Temperature
Cooler A Status
Heating Status
Heater A Status
Heater B Status
Preheater Status
Fan Status (SUP or ETA or both)
Exhaust Air Temperature (T-EHA)
Extract Air Temperature (T-ETA)
Supply Air Temperature (T-SUP)
Input and Output Dampers
Circulation Airflow [m³/h]
Ventilation Airflow [m³/h]

Atrea aMotion

Read (module)
if modbusr(D,6003,bool) = 1
    addwarning("1. mrazová ochrana ");
end
if modbusr(D,6004,bool) = 1
    addwarning("2. mrazová ochrana ");
end
if modbusr(D,6005,bool) = 1
    addwarning("Stop signál ");
end
if modbusr(D,6006,bool) = 1
    addinfo("Odmrazování rekuperátoru ");
end
if modbusr(D,6012,bool) = 1
    addwarning("Přehřátí jednotky ");
end
if modbusr(D,6013,bool) = 1
    addinfo("HDO - vyšší tarif ");
end
if modbusr(D,6014,bool) = 1
    addwarning("Nevyrovnaný průtok ");
end
if modbusr(D,6015,bool) = 1
    addwarning("Nedostatečný průtok ");
end
if modbusr(D,6017,bool) = 1
    addwarning("Nedostatečné předehřátí ");
end
if modbusr(D,6018,bool) = 1
    addwarning("Odmražování TČ ");
end
if modbusr(D,6021,bool) = 1
    addinfo("Učící proces ");
end
if modbusr(D,6044,bool) = 1
    addinfo("Aktivace PF1 - zanesení filtru ");
end
if modbusr(D,6045,bool) = 1
    addinfo("Aktivace PF2 - zanesení filtru ");
end
if modbusr(D,6046,bool) = 1
    addinfo("Aktivace PF3 - zanesení filtru ");
end
if modbusr(D,6051,bool) = 1
    addinfo("Maximální výkon ohřívače A ");
end
if modbusr(D,6052,bool) = 1
    addinfo("Maximální výkon ohřívače B ");
end
if modbusr(D,6055,bool) = 1
    addwarning("Porucha manometru v přívodním potrubí ");
end
if modbusr(D,6056,bool) = 1
    addwarning("Porucha manometru v odtahovém potrubí ");
end
if modbusr(D,6058,bool) = 1
    addinfo("Aktivace poruchového vstupu IN1 ");
end
if modbusr(D,6059,bool) = 1
    addinfo("Aktivace poruchového vstupu IN2 ");
end
if modbusr(D,6060,bool) = 1
    addinfo("Aktivace poruchového vstupu IN3 ");
end
if modbusr(D,6062,bool) = 1
    addinfo("Protimrazová ochrana - vstup DI1 ");
end
if modbusr(D,6063,bool) = 1
    addinfo("Protimrazová ochrana - vstup DI2 ");
end
if modbusr(D,6064,bool) = 1
    addinfo("Protimrazová ochrana - vstup DI3 ");
end
if modbusr(D,6065,bool) = 1
    addinfo("Protimrazová ochrana - vstup DI4 ");
end
if modbusr(D,6066,bool) = 1
    addwarning("Porucha ohřívače A ");
end
if modbusr(D,6067,bool) = 1
    addwarning("Porucha ohřívače B ");
end
if modbusr(D,6070,bool) = 1
    addwarning("Porucha chladiče A ");
end
if modbusr(D,6071,bool) = 1
    addwarning("Porucha interní sběrnice ");
end
if modbusr(D,6072,bool) = 1
    addwarning("Porucha externí sběrnice ");
end
if modbusr(D,6073,bool) = 1
    addwarning("Porucha komunikace na Ethernetu ");
end
if modbusr(D,6074,bool) = 1
    addwarning("Porucha snímání teploty T-EHA ");
end
if modbusr(D,6075,bool) = 1
    addwarning("Porucha snímání teploty T-ETA ");
end
if modbusr(D,6076,bool) = 1
    addwarning("Porucha snímání teploty T-ODA ");
end
if modbusr(D,6077,bool) = 1
    addwarning("Porucha snímání teploty T-IDA ");
end
if modbusr(D,6078,bool) = 1
    addwarning("Porucha snímání teploty T-SUP ");
end
if modbusr(D,6081,bool) = 1
    addwarning("Potvrzovaný stop signál ");
end
if modbusr(D,6082,bool) = 1
    addwarning("Protimrazová ochrana - kapilára ");
end
if modbusr(D,6084,bool) = 1
    addwarning("Zámraz rekuperátoru ");
end
if modbusr(D,6085,bool) = 1
    addwarning("Zařízení není připraveno ");
end
if modbusr(D,6086,bool) = 1
    addwarning("Přetížení ohřívačů ");
end
if modbusr(D,6087,bool) = 1
    addwarning("Učicí proces průtoků ");
end
if modbusr(D,6088,bool) = 1
    addinfo("Zvýšení průtoku pro topení ");
end
if modbusr(D,6089,bool) = 1
    addwarning("UVC lamps change interval ");
end
if modbusr(D,6090,bool) = 1
    addinfo("Interval kontroly zařízení ");
end
if modbusr(D,6091,bool) = 1
    addwarning("ukončení zkušebního provozu ");
end
if modbusr(D,6099,bool) = 1
    addwarning("Přetížení chladičů ");
end
if modbusr(D,6104,bool) = 1
    addwarning("Zanesené filtry ");
end
if modbusr(D,6105,bool) = 1
    addinfo("Interval výměny filtrů ");
end
if modbusr(D,6106,bool) = 1
    addwarning("Aktivní vstup přehřátí jednotky ");
end
if modbusr(D,6107,bool) = 1
    addwarning("Chod chlazení je blokován ");
end
if modbusr(D,6108,bool) = 1
    addinfo("Zvýšení průtoku po odmražení rekuperátoru ");
end
if modbusr(D,6109,bool) = 1
    addwarning("Porucha čidla průtoku přívodu(SUP) ");
end
if modbusr(D,6110,bool) = 1
    addwarning("Porucha čidla průtoku odtahu (ETA) ");
end
if modbusr(D,6111,bool) = 1
    addwarning("Porucha čidla průtoku čerstvého vzd. (ODA) ");
end
Service Attributes
Povel řízení přívodního ventilátoru M-SUP [%]
modbusr(H,1107,int16)
Povel řízení odtahového ventilátoru M-ETA [%]
modbusr(H,1108,int16)
Aktuální průtok na ventilátoru M-SUP [m3/h]
modbusr(H,1109,int16)*10
Aktuální průtok na ventilátoru M-ETA [m3/h]
modbusr(H,1110,int16) * 10
Aktuální průtok čerstvého vzduchu [m3/h]
modbusr(H, 1111, int16)*10
Doba přejezdu klapky bypassu [ms]
modbusr(H,1112,int16)
Povel řízení klapky cirkulace [%]
modbusr(H,1113,int16)
Povel řízení předehřívače [%]
modbusr(H,1114,int16)
Povel řízení ohřívače A [%]
modbusr(H,1115,int16)
Povel řízení ohřívače B [%]
modbusr(H,1116,int16)
Povel řízení chladiče [%]
modbusr(H,1118,int16)
Čerpadlo chladiče A
MODBUSR(D, 2341, Bool)
Čerpadlo ohřívače A
MODBUSR(D, 2321, Bool)
Čerpadlo ohřívaće B
MODBUSR(D, 2322, Bool)
Prúmněrná teplota venkovního vzduchu
MODBUSR(A, 1106, int16) / 10
Stav chladiče A
MODBUSR(D, 2330, Bool)
Stav ohřevu
MODBUSR(D, 2310, Bool)
Stav ohřívače A
MODBUSR(D, 2311, Bool)
Stav ohřívače B
MODBUSR(D, 2312, Bool)
Stav předhřívaće
MODBUSR(D, 2303, Bool)
Stav ventilaturu (SUP nebo ETA nebo oba)
MODBUSR(D, 2301, Bool)
Teplota odpadniho vzduchu
MODBUSR(A, 1105, int16) / 10
Teplota odvadeneho vzduchu
MODBUSR(A, 1103, int16) / 10
Teplota privodního vzduchu
MODBUSR(A, 1102, int16) / 10
Vstupni a vystupni klapky
MODBUSR(D, 2302, Bool)
Prutok cirkulace [m3/h]
MODBUSR(H, 1006, int16)
Prutok vetrani [m3/h]
MODBUSR(H, 1005, int16) * 10
Circulation Ratio Dimmer

Mixing proportion between recirculated and fresh air (0–100 %)

Register: H:1008 (read/write) Int16 Unit: % numeric (0–100 = %)

Circulation Ratio

Read level
MODBUSR(A, 1008, Int16) / 100
Write level
MODBUSW(H, 1008, Int16, Le * 100)
Bypass Damper Command Multi-value Switch

Bypass damper position — Auto, Open, or Closed

Register: I:1009 (read), H:1008 (write) Int16 numeric
Values / States: Auto · Otevřeno · Zavřeno

Bypass Damper Command

Read switch state
MODBUSR(A, 1009, Int16)
Write switch state
MODBUSW(H, 1008, Int16, Mu)
Thermostat Thermostat

Room temperature control — setpoint and current indoor air temperature (T-IDA)

Register: I:1104 (read current), H:1002 (read/write desired) Int16 Unit: °C numeric (value / 10 = °C)

Thermostat

Read temperature
MODBUSR(A, 1104, Int16) / 10
Read desired temperature
MODBUSR(A, 1002, Int16) / 10
Write desired temperature
MODBUSW(H, 1002, Int16, Se * 10)
Zone Control Multi-value Switch

Active zone selection — Zones 1+2, Zone 1 only, or Zone 2 only

Register: I:1003 (read), H:1003 (write) Int16 numeric
Values / States: Zones 1+2 · Zone 1 · Zone 2

Zone Control

Read switch state
MODBUSR(A, 1003, Int16)
Write switch state
MODBUSW(H, 1003, Int16, Mu)
Mode Control Multi-value Switch

Active operating mode — Off, Auto, Ventilation, Circ+Vent, Circulation, Night Cooling, Disbalance, or Overpressure

Register: I:1001 (read), H:1001 (write) Int16 numeric
Values / States: OFF · Auto · Ventilation · Circulation + Ventilation · Circulation · Night Cooling · Disbalance · Overpressure

Mode Control

Read switch state
MODBUSR(A, 1001, Int16)
Write switch state
MODBUSW(H, 1001, Int16, Mu)
Outdoor Air Temperature (T-ODA) Temperature Sensor Read-only
Register: I:1101 Int16 Unit: °C numeric (value / 10 = °C)

Outdoor Air Temperature (T-ODA)

Read temperature
MODBUSR(A, 1101, Int16) / 10
Indoor Air Temperature (T-IDA) Temperature Sensor Read-only
Register: I:1104 Int16 Unit: °C numeric (value / 10 = °C)

Indoor Air Temperature (T-IDA)

Read temperature
MODBUSR(A, 1104, Int16) / 10
Pressure Level Multi-value Switch

Pressure level setting — Off, Low, or Normal

Register: I:1007 (read), H:1007 (write) Int16 numeric
Values / States: OFF · Low · Normal

Pressure Level

Read switch state
MODBUSR(A, 1007, Int16)
Write switch state
MODBUSW(H, 1007, Int16, Mu)
Fan Power Dimmer

Fan power control — adjusts ventilation intensity for both supply (M-SUP) and exhaust (M-ETA) fans

Register: H:1004 (read/write) Int16 Unit: % numeric (0–100 = %)

Fan Power

Read level
MODBUSR(A, 1004, Int16) / 100
Write level
MODBUSW(H, 1004, Int16, Le * 100)
Connection: Modbus TCP • Slave ID: $[SlaveId]
Possible improvements (17)
  • I:1010 Current Season — Int16, read-only — current season indicator
  • I:1119 Current Operation Mode — Int16, 0–16 (Off, Evaporation, Run-down, Normal, Filter test, ..., Manual control)
  • I:1201 Fan Control Method — Int16, 0=Power, 1=Const pressure, 2=Const flow, 3=External — read-only
  • I:1202 Maximum Configurable Airflow — Int16, ×10 m³/h, read-only
  • I:1203 Minimum Configurable Airflow — Int16, ×10 m³/h, read-only
  • I:1204 Airflow Measurement Source — Int16, 0=None, 1=Direct flow, 2=Diff pressure, 3=Voltage output — read-only
  • I:1205 Circulation Damper Control Method — Int16, 0=None, 1=ON/OFF, 2=Eco, 3=Comfort, 4=Adjustable position — read-only
  • I:1206 Bypass Damper Control Method — Int16, 0=None, 1=User-defined, 2=Automatic — read-only
  • H:1005 Ventilation Airflow Setpoint — Int16, ×10 m³/h, R/W, 0–65000 m³/h
  • H:1006 Circulation Airflow Setpoint — Int16, ×10 m³/h, R/W, 0–65000 m³/h
  • H:1500 External T-IDA (from BMS) — Int16, ×0.1 °C, write-only — provide indoor temperature from external source
  • H:1501 External T-ODA (from BMS) — Int16, ×0.1 °C, write-only — provide outdoor temperature from external source
  • C:8001 Alarm Reset — Write 1 to acknowledge (reset) all inactive alarms
  • C:8002 Filter Replacement Interval Reset — Write 1 to reset filter operation counter after filter change
  • C:8003 UVC Lamp Replacement Interval Reset — Write 1 to reset UVC lamp operation counter after lamp change
  • C:7000-7500 Scene Triggers — Reserved range for triggering pre-programmed scenes
  • D:6024 Evaporation Status — Bool, 0=inactive, 1=active — not included in readscript but documented

Sources