TapHome

Olimpia Splendid Fan Coil (Bi2)

Modbus TCP
Submitted by
Last updated: 03. 2026
Olimpia Splendid Fan Coil (Bi2)

The Olimpia Splendid Bi2 series are fan coil units from the Italian HVAC manufacturer Olimpia Splendid. The physical device communicates via Modbus ASCII over RS-485 (9600 baud, 7E1). TapHome connects through a Modbus TCP-to-RTU gateway — no direct Ethernet port is available on the fan coil.

The template provides heating/cooling mode selection, fan speed control (Automatic, Low, Night, Maximum), temperature setpoint, ambient temperature feedback, standby and absence switches, and valve status monitoring.

Gateway requirement

The Bi2 fan coil uses RS-485 with Modbus ASCII framing. TapHome communicates via Modbus TCP, so a TCP-to-RTU gateway is required between TapHome Core and the fan coil.

  • Physical layer: RS-485 (2-wire: A, B)
  • Baud rate: 9600
  • Data format: 7 data bits, Even parity, 1 stop bit (7E1)
  • Protocol: Modbus ASCII (converted to Modbus TCP by the gateway)
  • Default slave address: 0 (range 0–31, configurable via register H:200)

Common gateway options include Waveshare and USR-TCP232 series converters. Configure the gateway’s serial side to 9600 baud, 7E1 to match the fan coil parameters.

Enabling remote mode

The fan coil must be in “remote enabled” mode to accept Modbus commands. Once Modbus communication is active:

  • Touch controls on the unit will stop working
  • IR remote control will stop working

This is a hardware limitation of the Bi2 series — the unit can only accept commands from one source at a time.

Enabling Modbus disables all local controls (touch panel and IR remote). The fan coil can only be operated through TapHome or another Modbus master while remote mode is active.

Configuration

When importing the template in TapHome, provide:

  • IP Address — the gateway’s IP on the local network (default: 192.168.0.1)
  • Slave ID — Modbus slave address of the fan coil (default: 1)

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

Device capabilities

The template exposes the following devices:

Heating/cooling mode
  • Mode — select from: Auto, Heating, Cooling, Heating+Cooling. Reads bits 13–14 of register H:101 and writes via the module-level write script.
Fan speed control
  • Fan Speed — multi-value switch with modes: Automatic, Low, Night, Maximum. Reads bits 0–2 of register H:101. The template defines values 0–9, but the documented speeds are 0–3 (Automatic, Low, Night, Maximum).
Power and absence
  • Standby — toggle switch reading bit 7 of register H:101. When set (1), the fan coil is off (standby). When cleared (0), the unit is running.
  • Absence (CP) — toggle switch reading bit 12 of register H:101. Activates the absence condition, reducing energy consumption when the room is unoccupied.
Temperature control
  • Setpoint Temperature — reads/writes register H:102 with ×10 scaling. Range 15.0–40.0 °C. A value of 215 in the register represents 21.5 °C.
  • Ambient Temperature — reads/writes register H:103 with ×10 scaling. Range 1.0–45.0 °C. TapHome periodically writes the current room temperature to this register, which the fan coil needs for correct auto-mode operation.

The ambient temperature register (H:103) must be written periodically for the fan coil to regulate correctly in auto mode. The TapHome template handles this automatically via the writestate script.

Valve status monitoring
  • Valve EV1 — read-only binary contact showing the state of the EV1 solenoid valve (heating/hot water circuit) from bit 14 of register H:9.
  • Valve EV2 — read-only binary contact showing the state of the EV2 solenoid valve (cooling/chilled water circuit) from bit 11 of register H:9.
Register 101 — shared control word

All control devices (Fan Speed, Standby, Absence, Mode) share a single holding register H:101 with bitmask encoding. The template uses a module-level write script that combines all values into one 16-bit write:

BitsByteFieldDevice
0–2LowFan speedFan Speed
7LowStandbyStandby
12HighAbsenceAbsence (CP)
13–14HighModeMode

The write script assembles: (Absence << 12) | (Mode << 13) | (Standby << 7) | FanSpeed and writes the combined value to H:101 in a single operation.

Additional capabilities not in template

The Bi2 fan coils also expose registers for water temperature (H:1), fault status (H:104), swing/oscillation control (H:224), actual fan speed (H:16), and a mode indicator register (H:233). These can be added to the TapHome template in a future update.

Troubleshooting

No Modbus communication
  1. Verify the RS-485 wiring between the gateway and the fan coil (A to A, B to B)
  2. Confirm the gateway is configured for 9600 baud, 7E1, Modbus ASCII
  3. Check the slave address — the default is 0, not 1
  4. Ensure TapHome Core and the gateway are on the same network/subnet
Touch controls and IR remote not working

This is expected when Modbus communication is active. The Bi2 series disables local controls once a Modbus master is connected. To restore local controls, disconnect Modbus communication.

Auto mode not regulating correctly

The fan coil requires the ambient temperature to be written periodically to register H:103. Verify that the Ambient Temperature device in TapHome has a valid room temperature value. If the value is stale or zero, auto mode cannot calculate the correct fan speed.

Available devices

Olimpia Splendid Fan Coil Module

OlimpiaSplendidFanCoil

Write (module)
MODBUSWNE(SH, 101, Int16, (St4 << 12) | (Mu5 << 13) | (St3 << 7 ) | Mu2)
Fan Speed Multi-value Switch

Fan speed level — Automatic, Low, Night, Maximum

Register: H:101 Int16 bitmask
Values / States: Automatic · Low · Night · Maximum

Fan Speed

Read switch state
MODBUSR(SH, 101, Int16) & 7
Standby Switch

Power off toggle — 1 = standby (off), 0 = running

Register: H:101 Int16 bitmask

Standby

Read switch state
(MODBUSR(SH, 101, Int16) & 128) >> 7
Absence (CP) Switch

Absence condition — reduces energy consumption when room is unoccupied

Register: H:101 Int16 bitmask

Absence (CP)

Read switch state
(MODBUSR(SH, 101, Int16) & 4096) >> 12
Mode Multi-value Switch

Heating/cooling mode selector — Auto, Heating, Cooling, Heating+Cooling

Register: H:101 Int16 bitmask
Values / States: Auto · Heating · Cooling · Heating&#43;Cooling

Mode

Read switch state
(MODBUSR(SH, 101, Int16) & 24576) >> 13
Valve EV1 Reed Contact Read-only

EV1 solenoid valve state — heating/hot water circuit

Register: H:9 Int16 bitmask

Valve EV1

Read
(MODBUSR(SH, 9, Int16) & 16384) >> 12
Valve EV2 Reed Contact Read-only

EV2 solenoid valve state — cooling/chilled water circuit

Register: H:9 Int16 bitmask

Valve EV2

Read
(MODBUSR(SH, 9, Int16) & 2048) >> 12
Setpoint Temperature Variable

Temperature setpoint (15.0–40.0 °C, ×10 scaling)

Register: H:102 Int16 Unit: °C numeric

Setpoint Temperature

Read
MODBUSR(SH, 102, Int16) /10
Write
MODBUSWNE(SH, 102, Int16, Va * 10)
Ambient Temperature Variable

Room temperature — must be written periodically for auto mode to function

Register: H:103 Int16 Unit: °C numeric

Ambient Temperature

Read
MODBUSR(SH, 103, Int16) / 10
Write
MODBUSWNE(SH, 103, Int16, Va * 10)
Connection: Modbus TCP • Slave ID: $[SlaveId]
Possible improvements (8)
  • H:0 Ambient Temperature (register 0) — Int16, /10, °C — alternate ambient reading, some devices only
  • H:1 Water Temperature — Int16, /10, °C — water circuit temperature, read-only
  • H:15 Fan Speed Target — Int16, read-only — target fan speed value
  • H:16 Actual Fan Speed — Int16, read-only — current actual fan speed value
  • H:104 Fault Status — Int16, read-only — fault/error status register
  • H:200 Device Address — Int16, R/W — Modbus slave address (0-31)
  • H:224 Swing Control — Int16, R/W — louver swing/oscillation toggle (XOR bit 1)
  • H:233 Mode Indicator — Int16, read-only — 0=auto, 3=heating, 5=cooling, 7=fan-only

Sources