TapHome

Alnor HRU-PremAIR

Modbus RTU
Submitted by
Last updated: 03. 2026
Alnor HRU-PremAIR

The Alnor HRU-PremAIR is a heat recovery ventilation unit that communicates with TapHome via Modbus RTU over RS-485. The connection requires the BRDG-02R13 communication module, which plugs into the VMD control board (VMD-02RPS54, VMD-02RPS66 or VMD-02RPS78) inside the recuperator.

The template covers ventilation speed control, four temperature sensors (indoor, outdoor, supply, exhaust), bypass monitoring and control, pre-heater status and setpoint, indoor humidity, and fault reporting. The same Modbus protocol applies to HRU-MinistAIR, HRU-SlimAIR and HRU-FlatAIR series units.

Hardware connection

RS-485 wiring

Connect the BRDG-02R13 module to the TapHome Core RS-485 bus using a twisted pair cable. Multiple devices can share the same RS-485 bus — ensure each device has a unique Slave ID.

If the bus line is long or communication problems occur, install a 120 Ohm termination resistor on both ends of the line as shown in the diagram below.

Alnor HRQ-Modbus RS-485 termination resistor mounting diagram

RS-485 termination — For long cable runs or buses with multiple devices, mount 120 Ohm resistors at both ends of the RS-485 line. TapHome Core has a built-in termination resistor on its BUS terminals, so only the far end of the line needs an external resistor.

Technical specifications
  • Communication module: BRDG-02R13 (plugs into VMD control board)
  • Protocol: Modbus RTU Slave
  • Physical layer: RS-485
  • Baud rate: 19200 (default)
  • Parity: Even
  • Data bits: 8
  • Stop bit: 1
  • Default Slave ID: 2
  • Modbus functions: 03 (Read Holding Registers), 16 (Write Multiple Registers)

Configuration

Pairing the BRDG-02R13 module

Before the communication module can be used, it must be paired with the recuperator. The pairing procedure uses Modbus address 207:

  1. Power off the recuperator, then power it on — the unit enters binding mode for 10 minutes
  2. Write value 0xC84F0001 to registers 43000–43001
  3. Write value 0x0203 to register 43004
  4. Read register 43900 — value should be 2
  5. Read register 43901 — value should be 1

After successful pairing, power off the recuperator and restart it. Data will be read automatically once the fans start up.

The pairing procedure requires a Modbus master tool (e.g., Modbus Poll) to write the pairing registers. After pairing is complete, TapHome can communicate with the module at the standard address.

Slave ID and communication parameters

The default Slave ID is 2 and the default baud rate is 19200 with Even parity and 1 stop bit.

Slave ID mismatch — The TapHome XML template defaults to Slave ID 1 during import. The official Alnor manual states the default Slave ID is 2. When importing the template in TapHome, change the Slave ID parameter to 2 (or to match your configuration).

Communication parameters can be changed via the pairing address (207):

ParameterRegisterDefaultOptions
Slave address42001207 (RS-485)1–207
Baud rate420006 (19200)0=300 … 5=9600, 6=19200, 7=38400 … 9=115200
Parity419982 (Even)0=None, 1=Odd, 2=Even
Stop bits419990 (1 stop bit)0=1, 1=2

Device capabilities

Ventilation speed control

Ventilation Speed (H:41500) is the primary control device — a multi-value switch with seven modes:

  • Off (0) — ventilation stopped
  • Away (1) — minimum speed for unoccupied rooms
  • Low (2) — speed 1
  • Nominal (3) — speed 2, standard operation
  • High (4) — speed 3
  • Auto (5) — automatic speed based on sensor readings
  • Boost (7) — maximum speed for rapid air exchange

The read value reflects the BRDG internal state, which may differ from the actual fan value during speed transitions.

Fan speed monitoring

Two read-only sensors show the actual fan output as a percentage:

  • Exhaust Fan Speed (H:41001) — exhaust fan output, reported on a 0–200 scale (divided by 200 to get percentage)
  • Inlet Fan Speed (H:41002) — supply fan output, same 0–200 scale

A value of 0xFF indicates the sensor is not available.

Temperature monitoring

The template provides four temperature sensors, all using LittleEndianFloat across two registers:

  • Indoor Temperature (H:41005) — room temperature measured by the recuperator’s indoor sensor; also reads Indoor Humidity from H:42001, with error codes above 100% clamped to 0
  • Outdoor Temperature (H:41007) — outside air temperature
  • Supply Temperature (H:41011) — fresh air temperature after heat exchange, supplied to rooms
  • Exhaust Temperature (H:41009) — air temperature leaving the heat exchanger

A value of NaN indicates no temperature available. Values below -273°C indicate a sensor problem.

Pre-heater control
  • Pre-heater (H:41013) — read-only percentage showing current pre-heater output (0% = off, 100% = maximum)
  • Pre-heater Setpoint (H:41011 read / H:42011 write) — thermostat device that reads the current supply temperature and allows setting the room temperature heating setpoint (0–30°C)
Bypass monitoring and control
  • Bypass Position (H:41016) — read-only percentage showing the bypass damper position (0% = closed, 100% = open). Values above 120% indicate an error.
  • Bypass Auto (H:41550) — switch showing the bypass automatic mode state. The module-level write script controls bypass operation: when set to ON, writes 0xFF (auto mode); when set to OFF, writes the manual level value.
  • Bypass Speed — dimmer device for manual bypass speed override (placeholder in current template)
Fault monitoring

Fault Status (H:40103) reports the fan health: 0 = fan OK, 1 = fan failure. This appears as a binary contact sensor in TapHome.

Service diagnostics

The module exposes additional service attributes for monitoring:

  • RF Communication Status (H:40101) — 0 = no error, 1 = no communication for 30+ minutes
  • Battery Status (H:40102) — 0xFFFF indicates no battery
  • Actual Ventilation Speed (H:41000) — raw ventilation speed value including override states (11–13 = temporary override, 22 = away, 23 = boost, 24 = auto)
  • Error Code (H:41003) — detailed error code (0 = no fault, 1–8 = specific errors, 254 = binding mode, 255 = identification)
  • Override Time Remaining (H:41004) — minutes remaining for temporary speed override
  • Filter Dirty (H:41014) — 0 = filter OK, 1 = filter needs replacement
  • Defrost (H:41015) — 0 = inactive, 1 = defrost cycle active

The module also provides a Reset Air Filter Timer service action that writes value 0 to register H:42000 to reset the filter maintenance countdown.

Additional capabilities

The HRU-PremAIR also exposes registers for individual fan speed configuration (supply and exhaust percentages for each speed level), frost protection pre-heater setpoint, room temperature cooling offset, fireplace demand duration, and post heater/cooler settings on the VMD-02RPS66 and VMD-02RPS78 models. The advanced models also support full time schedule programming via registers 49000–49062 with switch points, day-of-week scheduling, and sensor-based auto control (RH, CO2, VOC, temperature). These can be added in a future template update.

The community alnor-sdk Python SDK defines additional registers not in the official manual — supply/exhaust flow in m3/h (41019/41021), filter days remaining (41040), pre-heater availability (41027), and bypass mode status (41050). These may work on newer firmware versions and could be added as custom Modbus devices in TapHome.

Troubleshooting

No Modbus communication
  1. Check the Slave ID — the default is 2, not 1. Verify the TapHome module is configured with the correct Slave ID
  2. Confirm TapHome RS-485 settings: 19200 baud, Even parity, 8 data bits, 1 stop bit
  3. Verify the BRDG-02R13 module is properly paired (see pairing procedure above)
  4. Check RS-485 cable connections — ensure A/B polarity is correct
  5. For long cable runs, verify 120 Ohm termination resistors are installed
Communication errors after power cycle

After a power cycle, the recuperator enters binding mode for 10 minutes. During this time, normal Modbus communication may not work at the standard address. Wait for the binding mode to expire.

Humidity reading shows 0%

The Indoor Humidity register (H:42001) returns error codes above 100% (0xEF–0xFF) when the sensor is unavailable, shorted, or out of range. The template clamps these error values to 0. Check the physical humidity sensor connection if readings are consistently 0%.

Filter alarm

When the Filter Dirty service attribute shows 1, the air filters need replacement. After replacing the filters, use the Reset Air Filter Timer service action in TapHome to clear the alarm and reset the maintenance countdown.

Available devices

Alnor HRU-PremAIR Module

VMD-02RPS54, 66/78

Write (module)
IF(St = 1, MODBUSWNE(H, 41550, Int16, 0xFF), MODBUSWNE(H, 41550, Int16, Le));
Exhaust Fan Speed Variable Read-only

Exhaust fan output as percentage — 0% stopped, 100% maximum speed

Register: H:41001 Int16 Unit: % numeric

Exhaust Fan Speed

Read
MODBUSR(H, 41001, Int16) / 200
Inlet Fan Speed Variable Read-only

Supply fan output as percentage — 0% stopped, 100% maximum speed

Register: H:41002 Int16 Unit: % numeric

Inlet Fan Speed

Read
MODBUSR(H, 41002, Int16) / 200
Bypass Auto Switch Read-only

Bypass automatic mode — ON enables automatic bypass control, OFF allows manual override

Register: H:41550 Int16 boolean-threshold

Bypass Auto

Read switch state
MODBUSR(H, 41550, Int16) > 128
Bypass Position Variable Read-only

Bypass damper position — 0% closed, 100% open; values above 120% indicate error

Register: H:41016 Int16 Unit: % numeric

Bypass Position

Read
MODBUSR(H, 41016, Int16)
Bypass Speed Dimmer

Bypass Speed

Read level
MODBUSR(H, 41550, Int16)
Exhaust Temperature Temperature Sensor Read-only
Register: H:41009 LittleEndianFloat Unit: °C numeric

Exhaust Temperature

Read temperature
MODBUSR(H, 41009, LittleEndianFloat)
Fault Status Reed Contact Read-only

Fan health indicator — 0 means OK, 1 means fan failure

Register: H:40103 Bool

Fault Status

Read
MODBUSR(H, 40103, Bool)
Indoor Temperature Temperature Sensor Read-only
Register: H:41005 LittleEndianFloat Unit: °C numeric

Indoor Temperature

Read humidity
IF(MODBUSR(H, 42001, Int16) > 100, 0, MODBUSR(H, 42001, Int16))
Read temperature
MODBUSR(H, 41005, LittleEndianFloat)
Outdoor Temperature Temperature Sensor Read-only
Register: H:41007 LittleEndianFloat Unit: °C numeric

Outdoor Temperature

Read temperature
MODBUSR(H, 41007, LittleEndianFloat)
Pre-heater Variable Read-only

Pre-heater output level — 0% off, 100% maximum heating

Register: H:41013 Int16 Unit: % numeric

Pre-heater

Read
MODBUSR(H, 41013, Int16)
Pre-heater Setpoint Thermostat

Room temperature heating thermostat — reads supply temperature, writes heating setpoint (0–30°C)

Register: H:41011H:42011 LittleEndianFloat Unit: °C numeric

Pre-heater Setpoint

Read temperature
MODBUSR(H, 41011, LittleEndianFloat)
Read desired temperature
MODBUSR(H, 42011, LittleEndianFloat)
Write desired temperature
MODBUSWNE(H, 42011, LittleEndianFloat, Se)
Supply Temperature Temperature Sensor Read-only

Fresh air temperature after heat exchange, supplied to rooms

Register: H:41011 LittleEndianFloat Unit: °C numeric

Supply Temperature

Read temperature
MODBUSR(H, 41011, LittleEndianFloat)
Ventilation Speed Multi-value Switch

Ventilation speed selector — Off, Away, Low, Nominal, High, Auto, Boost

Register: H:41500 Int16 multi-value
Values / States: Off · Away · Low · Nominal · High · Auto · Boost

Ventilation Speed

Read switch state
MODBUSR(H, 41500, Int16)
Write switch state
MODBUSW(SH, 41500, Int16, Mu)
Connection: Modbus RTU • 19200 baud• 8E1 • Slave ID: $[SlaveId]
Possible improvements (23)
  • H:42002 Standby Speed Supply — RW, 0–40%, fan standby speed setting
  • H:42003 Low Speed Supply — RW, 0–80%, low speed supply fan setting
  • H:42004 Low Speed Exhaust — RW, 0–80%, low speed exhaust fan setting
  • H:42005 Medium Speed Supply — RW, 0–100%, medium speed supply fan setting
  • H:42006 Medium Speed Exhaust — RW, 10–100%, medium speed exhaust fan setting
  • H:42007 High Speed Supply — RW, 0–100%, high speed supply fan setting
  • H:42008 High Speed Exhaust — RW, 10–100%, high speed exhaust fan setting
  • H:42009 Frost Protection Pre-heater Setpoint — RW, FLOAT, -20–50°C, frost protection threshold
  • H:42013 Room Temperature Heating Setpoint (duplicate) — RW, FLOAT, 0–30°C, same as 42011 but second instance
  • H:42015 Room Temperature Cooling Offset — RW, FLOAT, 1–10 K, cooling hysteresis
  • H:42017 Post Heater/Cooler Supply Heating Setpoint — RW, SINT8, -20–50°C, VMD-02RPS66/78 only
  • H:42018 Post Heater/Cooler Supply Cooling Offset — RW, UINT8, 0–10 K, VMD-02RPS66/78 only
  • H:42019 Maximum Constant Pressure — RW, UINT16, 0–500 Pa, VMD-02RPS66/78 only
  • H:42020 Fireplace Demand Duration — RW, UINT16, 0–60000 sec
  • H:41501 Override Time Speed 1 — W, UINT8, max 18h, triggers temporary speed 1 override
  • H:41502 Override Time Speed 2 — W, UINT16, max 18h, triggers temporary speed 2 override
  • H:41503 Override Time Speed 3 — W, UINT16, max 18h, triggers temporary speed 3 override
  • H:49000–49062 Time Schedule Registers — Full time schedule programming — VMD-02RPS66/78 only; includes switch points, day-of-week, modes
  • H:41019 Supply Fan Speed (m3/h) — Flow rate in m3/h — SDK-only register, may require newer firmware
  • H:41021 Exhaust Fan Speed (m3/h) — Flow rate in m3/h — SDK-only register, may require newer firmware
  • H:41027 Preheater Available — Pre-heater presence flag — SDK-only register
  • H:41040 Air Filter Days Remaining — Filter maintenance countdown — SDK-only register
  • H:41050 Bypass Mode Status — Current bypass mode — SDK-only register

Sources

  • Alnor HRQ-Modbus User's Manual — Modbus Communication Protocol for HRU-PremAIR
    PDF
  • alnor-sdk — Python SDK for Alnor Ventilation Devices
    github.com 2026-03-21