---
title: "Vaillant aroVAIR pro WN fan coil (VA 3-025/035/045 WN)"
description: "Vaillant aroVAIR pro WN fan coil over Modbus RTU (RS-485, CN22): mode, setpoint, fan speed, room and water temperature, errors. Address on SW1 and ENC2."
url: "https://taphome.com/en/compatibility/vaillant-arovair-va-3-025-wn/"
language: en
lastmod: 2026-11-10
generator: hugo
ai:
  topics: ["modbus-rtu","rs485","air-conditioning","fan-coil","hvac","heating","cooling","hydronic"]
  questions: ["How to integrate a Vaillant aroVAIR pro WN fan coil with TapHome?","What does the Vaillant aroVAIR pro WN TapHome template control and read?","How to connect the Vaillant aroVAIR pro WN to TapHome via Modbus RTU and RS-485?","How to set the Modbus address of the aroVAIR pro WN with SW1 and ENC2?","Why is the Modbus Slave ID one higher than the switch address on the aroVAIR pro WN?","Which baud rate, parity and stop bits does the aroVAIR pro WN use?","Why does the aroVAIR pro WN stay in standby although TapHome switches it on?","Why does TapHome show a very high temperature for the aroVAIR pro WN?"]
---

# Vaillant aroVAIR pro WN fan coil (VA 3-025/035/045 WN)

Communication: Modbus RTU

## Integration guide

The Vaillant aroVAIR pro WN (VA 3-025 WN, VA 3-035 WN, VA 3-045 WN) is a wall-mounted fan coil unit for heating and cooling in hydronic systems, typically connected to the water circuit of a heat pump. TapHome communicates with the unit over Modbus RTU on an RS-485 bus, using the Modbus communication cable that ships with the fan coil. One template covers all three sizes — they share the same Modbus register map.

The template provides operating mode selection (Off, Ventilation, Cooling, Heating, Automatic), a thermostat with the setpoint and the measured room temperature, fan speed selection, the water temperature at the coil, and automatic reporting of the unit's error and protection flags.

## Hardware connection

> [!WARNING]
> Switch off the mains power before opening the control box. Terminal block XT1 carries 230 V AC. Electrical work on the unit may only be carried out by a qualified installer.

### Opening the control box

1. Lift the front flap of the casing.
2. Loosen the screw and remove the control box cover.

### Connecting the Modbus cable to CN22

1. Plug the supplied Modbus communication cable into connector **CN22** on the circuit board.
2. Close the control box.
3. Connect the RS-485 bus coming from TapHome to the wires **P**, **Q** and **E** of the Modbus communication cable.

| Terminal | Signal |
|----------|--------|
| P | RS-485 A (+) |
| Q | RS-485 B (−) |
| E | GND (optional shield) |

![Installation manual page: connecting the Modbus communication cable (P, Q, E) to connector CN22 on the main PCB, and setting the Modbus address with switch SW1 and rotary switch ENC2 (addresses 1-64), with serial line parameters.](https://taphome.com/images/compatibility/vaillant-arovair-va-3-025-wn/wiring-modbus-cn22-address_hu_6241246d08c3b0c5.jpg)

Several fan coils can share one RS-485 bus and one TapHome Core. Each unit needs its own Modbus address (see Configuration below).

### Wiring diagram

The manufacturer's connection diagram shows where the relevant connectors are: the Modbus cable connector CN22 with the P, Q, E wires (item 12), the address switches SW1 and ENC2 on the switch board (item 3), the mains supply XT1 (item 5) and the On/Off contact XT3 (item 6). The air temperature sensor T1 is plugged into CN32 and the water temperature sensor T2 into CN31.

![Manufacturer connection wiring diagram of the aroVAIR pro WN fan coil showing the interface, main and switch boards, connectors CN22, XT1, XT3, SW1, ENC2 and the P, Q, E terminals.](https://taphome.com/images/compatibility/vaillant-arovair-va-3-025-wn/wiring-connection-diagram_hu_f327b58c96d5fe2a.jpg)

### On/Off contact XT3 (optional)

Terminal block **XT3** (HA, HB) accepts an accessory with a dry On/Off contact, for example a system controller:

- **Contact closed** — the fan coil is in standby.
- **Contact open** — the fan coil is ready to operate.

The contact works independently of Modbus and can be used together with Modbus control. If the contact is wired, keep it open, otherwise the unit stays in standby whatever TapHome sends.

![Installation manual page: connecting an accessory with an On/Off dry contact to terminal block XT3 (HA, HB) and a wired controller, with the start of the Modbus client procedure.](https://taphome.com/images/compatibility/vaillant-arovair-va-3-025-wn/connect-xt3-onoff_hu_1a984315d208a127.jpg)

## Configuration

### Enabling Modbus communication

No menu activation is needed. Modbus is available as soon as the Modbus cable is connected to CN22 and the unit has an address set on SW1 and ENC2.

### Setting the Modbus address (SW1 and ENC2)

The address is set with two switches on the switch board on the control box cover:

- **SW1** (two DIP switches) selects a group of 16 addresses: 0–15, 16–31, 32–47 or 48–63.
- **ENC2** (rotary switch) selects one of the 16 addresses within that group.

The switch positions are shown in the table on the manual page above.

> [!NOTE]
> The switches set addresses **00 to 63**, which correspond to Modbus addresses **1 to 64**. The Modbus address — and therefore the **Modbus Slave ID** import parameter in TapHome — is the switch address plus one. Switch address 00 is Slave ID 1, switch address 05 is Slave ID 6.

When several fan coils are controlled over one bus, give each unit its own address with SW1 and ENC2.

### Serial line parameters

| Parameter | Options | Factory setting |
|-----------|---------|-----------------|
| Baud rate | 4800, 9600, 19200, 38400 bps | 9600 bps |
| Data bits | 8 | 8 |
| Stop bits | 1 or 2 | 1 |
| Parity | Odd, even or none | None |
| Transmission mode | Modbus RTU | — |
| Error check | CRC-16 | — |
| Address | 1–64 | — |

The template expects the factory settings: **9600 bps, 8 data bits, no parity, 1 stop bit**. The baud rate can be changed through register 1640; after a change the next communication must already use the new setting, otherwise the unit does not respond. The template does not write this register.

The unit supports Modbus function codes **03** (read multiple holding registers), **06** (write single holding register) and **16** (write multiple holding registers).

### Adding the fan coil in TapHome

Import the template on the TapHome Core RS-485 bus set to the same serial parameters and enter the Modbus Slave ID of the unit; for several fan coils, import the template once per unit with its own Slave ID.

## Device capabilities

### Operating mode

Register 1601 selects the operating mode. TapHome shows it as a multi-value switch:

| Value | Mode |
|-------|------|
| 0x00 | Off |
| 0x01 | Ventilation (fan only, no heating or cooling) |
| 0x02 | Cooling |
| 0x03 | Heating |
| 0x05 | Automatic |

The unit also has a dehumidification mode (0x04), which the template does not offer. If the fan speed is not written together with a new mode, the unit selects medium fan speed by itself.

### Temperature setpoint and room temperature

The thermostat writes the target temperature (Ts, register 1602) in the range **17–30 °C** and shows the measured room temperature T1 (register 1606) next to it. A setpoint outside 17–30 °C is rejected by the unit with an error code. The setpoint cannot be set in Ventilation mode.

### Fan speed

Register 1603 sets the fan speed:

| Value | Speed |
|-------|-------|
| 0x02 | Low |
| 0x03 | Medium |
| 0x04 | High |
| 0x05 | Automatic |

Values 0x00 and 0x01 are not valid; the unit answers them with an error code.

### Water temperature

The water temperature T2-C at the coil (register 1607) is read every 15 seconds. Both temperatures use the same encoding: the unit sends raw = (temperature + 5) × 2 + 30, which covers −20 °C to 100 °C (raw 0–240). TapHome decodes it as raw / 2 − 20.

### Errors and warnings

The template reads the error flags (register 1614) and the protection status registers (1615 and 1617) and shows them directly on the fan coil in TapHome:

| Condition | Severity |
|-----------|----------|
| Room temperature sensor error | Error |
| Water temperature sensor error | Error |
| EEPROM error | Error |
| Fan speed error | Error |
| Water level error | Error |
| P1 frost protection active | Warning |
| Frost protection active | Warning |
| Temperature outside operating range | Warning |
| Remote off active | Warning |
| Capacity outside range | Warning |

The Operating Mode device also carries three service attributes: the key lock of the remote control (register 1612, bit 0), the locked function — cooling locked or heating locked (register 1612, bits 1–2) — and the condensate pump state (register 1613, bit 0).

## Troubleshooting

### No communication

- Check that the Modbus cable sits firmly in CN22 and that P and Q are connected to A and B of the TapHome bus.
- Check the Slave ID: it is the switch address on SW1 and ENC2 **plus one**. Switches at 00 mean Slave ID 1.
- Check that the unit still uses 9600 bps, no parity and 1 stop bit. If the baud rate was changed through register 1640, set the TapHome bus to the same value.
- On a bus with several devices, check that the last device on the bus has its termination resistor fitted.

### Unrealistic temperature reading

When a temperature sensor fails, the unit returns 0x7FFF (32767) in register 1606 or 1607. The template does not filter this value, so TapHome then shows an implausibly high temperature (about 16 360 °C) together with a sensor error. Check the air sensor connector CN32 or the water sensor connector CN31 on the main board; for T1 the manual also names a fault of the room thermostat in the wired controller as a cause.

### Command rejected

- Operating mode: only 0x00, 0x01, 0x02, 0x03 and 0x05 are offered by the template.
- Setpoint: only 17–30 °C, and not in Ventilation mode.
- Fan speed: only 0x02–0x05.

### The unit does not start

If an accessory is wired to the On/Off contact XT3 and the contact is closed, the fan coil stays in standby regardless of the operating mode set in TapHome.

## Available devices 4

These devices appear in TapHome after import.

aroVAIR pro WN Module

Read (module)

```taphome
VAR errBits := MODBUSR(H, 1614, UInt16);
IF(GETBIT(errBits, 2), ADDERROR(2, "Room temperature sensor error"), );
IF(GETBIT(errBits, 3), ADDERROR(3, "Water temperature sensor error"), );
IF(GETBIT(errBits, 7), ADDERROR(7, "EEPROM error"), );
IF(GETBIT(errBits, 8), ADDERROR(8, "Fan speed error"), );
IF(GETBIT(errBits, 14), ADDERROR(14, "Water level error"), );
VAR prot1 := MODBUSR(H, 1615, UInt16);
IF(GETBIT(prot1, 1), ADDWARNING(1, "P1 frost protection active"), );
VAR prot2 := MODBUSR(H, 1617, UInt16);
IF(GETBIT(prot2, 0), ADDWARNING(10, "Frost protection active"), );
IF(GETBIT(prot2, 1), ADDWARNING(11, "Temperature outside operating range"), );
IF(GETBIT(prot2, 2), ADDWARNING(12, "Remote off active"), );
IF(GETBIT(prot2, 15), ADDWARNING(15, "Capacity outside range"), );
```

Operating Mode Multi-value Switch

Values / States: Off · Ventilation · Cooling · Heating · Automatic

Read switch state

```taphome
MODBUSR(H, 1601, UInt16)
```

Write switch state

```taphome
MODBUSW(H, 1601, UInt16, Mu)
```

Service Attributes

Key lock

```taphome
IF(GETBIT(MODBUSR(H, 1612, UInt16), 0), "Remote key lock active", "Not locked")
```

Locked function

```taphome
IF(GETBITS(MODBUSR(H, 1612, UInt16), 1, 2) = 0, "No lock", IF(GETBITS(MODBUSR(H, 1612, UInt16), 1, 2) = 1, "Cooling locked", "Heating locked"))
```

Condensate pump

```taphome
IF(GETBIT(MODBUSR(H, 1613, UInt16), 0), "Running", "Off")
```

Temperature Setpoint Thermostat

Read temperature

```taphome
MODBUSR(H, 1606, UInt16) / 2 - 20
```

Read desired temperature

```taphome
MODBUSR(H, 1602, UInt16)
```

Write desired temperature

```taphome
MODBUSWNE(H, 1602, UInt16, Se)
```

Fan Speed Multi-value Switch

Values / States: Low · Medium · High · Automatic

Read switch state

```taphome
MODBUSR(H, 1603, UInt16)
```

Write switch state

```taphome
MODBUSW(H, 1603, UInt16, Mu)
```

Water Temperature Temperature Sensor

Read temperature

```taphome
MODBUSR(H, 1607, UInt16) / 2 - 20
```

**Connection:** Modbus RTU • 9600 baud• 8N1 • Slave ID: $\[SlaveId]

## Import parameters

Enter these values when you import the XML.

| Asked in the app       | Default |
|------------------------|---------|
| Modbus Slave ID (1–64) | `1`     |

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

