TapHome

Domat ECIO2

Modbus TCP
Submitted by
Last updated: 03. 2026
Domat ECIO2

The Domat ECIO2 is a compact multi I/O module designed for HVAC and building automation. It provides 8 digital outputs (relays), 6 analogue outputs (0–10 V), 8 analogue inputs (configurable for voltage, current, resistance or Pt1000) and 8 digital inputs (24 V AC/DC). TapHome connects to the module directly via Modbus TCP over Ethernet – no additional gateway is required.

The ECIO2 is a legacy product; its successor is the Domat MCIO2 with an identical I/O configuration.

Network connection

The module has an RJ45 Ethernet port on the bottom right of the housing. Connect it to the same local network as TapHome Core using a standard Ethernet cable.

  • Protocol: Modbus TCP
  • Port: 502
  • Slave ID: 2 (fixed, not configurable)
  • Default IP address: 192.168.1.99

The Modbus address is permanently fixed to 2 and cannot be changed. When importing the template in TapHome, set the Slave ID to 2.

The RS485 port (terminals K+, K-) is used for optional Modbus RTU extension modules, not for direct TapHome communication.

Changing the IP address

The IP address and other network parameters can be changed via the built-in web server. Open the current module IP in a web browser to access the configuration page.

To reset the network settings to factory defaults, set the INIT ETH DIP switch to ON before powering up the module. This restores the default IP address 192.168.1.99.

Assign a static IP address or a DHCP reservation in the router to prevent the address from changing after a power cycle. Note the assigned IP on the module label for future reference.

Configuration

When importing the template in TapHome, provide:

  • IP Address – the module’s IP on the local network (default: 192.168.1.99)
  • Slave ID – must be set to 2 (fixed)
Analogue input mode

The TapHome template initializes all 8 analogue inputs to voltage mode (0–10 V) by writing 0x2222 to configuration registers H:4 and H:5. Each AI channel supports the following modes, configurable via those registers:

ModeRangeScaling
Pt1000-50 to 150 °Craw / 100
Voltage0–10 Vraw / 1000
Resistance0–1600 Ohmraw / 10
Current0–20 mAraw / 1000
Resistance (ext.)0–5000 Ohmraw / 10

To use AI1–AI4 as 0–20 mA current inputs, set the corresponding DIP switches (left DIP switch pack, switches 1–4) to ON. This connects an internal shunt resistor – no external resistors are required. AI5–AI8 do not have DIP switches for current mode.

DIP switches

The module has two DIP switch packs:

Left pack (AI1–AI4 current mode):

SwitchFunction
1–4AI1–AI4: ON = 0–20 mA current input, OFF = voltage/Pt1000/resistance

Right pack (system):

SwitchFunction
INITON at power-up = RS485 init mode (address 1, 9600 bps)
INIT ETHON at power-up = Ethernet init mode (IP reset to 192.168.1.99)
BUS END (3)ON = RS485 bus termination enabled
BUS END (4)ON = RS485 bus termination enabled (set together with switch 3)

Device capabilities

The template exposes 30 devices across four I/O groups.

Digital outputs (DO1–DO8)

Eight relay outputs controlled via a single bitmask register H:9. Each output appears as an individual ON/OFF switch in TapHome.

  • DO1–DO6 – normally open (NO) relay contacts, rated 3 A / 250 VAC
  • DO7–DO8 – changeover relay contacts, rated 8 A / 250 VAC

DO7 and DO8 have significantly higher current ratings than DO1–DO6 and use changeover (SPDT) contacts. Assign high-power loads such as heating elements or motorized valves to DO7–DO8.

All eight outputs share register H:9 with bitmask encoding. The TapHome write script combines all DO states into a single register write to prevent race conditions.

Analogue outputs (AO1–AO6)

Six 0–10 V analogue outputs, each mapped to its own register (H:10 through H:15). The outputs use a 12-bit DAC with a raw value range of 0–4095, where 0 = 0 V and 4095 = 10 V.

The analogue output section is galvanically separated from the rest of the module with 1 kV isolation. Output impedance is less than 16 Ohm, with a minimum load of 10 kOhm and short-circuit protection limiting current to 80 mA.

Typical applications include controlling valve actuators, damper actuators and fan speed controllers that accept a 0–10 V signal.

Analogue inputs (AI1–AI8)

Eight analogue inputs, each mapped to its own register (H:17 through H:24). The template configures all channels to voltage mode (0–10 V) by default. The raw value is divided by 1000 to produce the reading in volts.

Each channel can be independently reconfigured to Pt1000, resistance or current mode via registers H:4 and H:5 (4 bits per channel). See the Analogue input mode section above for available modes and DIP switch requirements.

Digital inputs (DI1–DI8)

Eight 24 V AC/DC digital inputs read from a single bitmask register H:16. Each input appears as an individual binary sensor in TapHome.

  • Input current: 4 mA
  • Logic 0: voltage below 8 V
  • Logic 1: voltage above 20 V

The digital inputs require 24 V AC/DC applied from the module power terminals. Dry contacts (potential-free contacts) cannot be connected directly – they must be wired in series with a 24 V source.

Additional capabilities

The ECIO2 also exposes registers for module identification, firmware version, module uptime, DI latch detection (edge capture) and communication failure safety for relay outputs (configurable timeout and fallback states). The module can additionally act as a Modbus TCP-to-RTU router, making RS485 extension modules accessible over Ethernet. These capabilities can be added to the TapHome template in a future update.

Troubleshooting

No Modbus communication
  1. Verify the Ethernet cable is connected to the RJ45 port, not the RS485 terminals (K+, K-)
  2. Confirm the module IP address – check the router’s DHCP lease table or reset to default via the INIT ETH DIP switch
  3. Ensure TapHome Core and the ECIO2 are on the same network and subnet
  4. Verify that the Slave ID in TapHome is set to 2 (the fixed address)
  5. Check that no firewall is blocking port 502
Analogue inputs show incorrect values
  1. Verify the AI mode configuration – the template defaults to voltage mode. If Pt1000 or current sensors are connected, the AI range registers (H:4, H:5) must be reconfigured accordingly
  2. For current mode on AI1–AI4, confirm the corresponding DIP switch is set to ON
  3. Check the physical wiring – analogue input and output grounds are galvanically separated. Use the correct ground terminal (AIGND for inputs, AOGND for outputs)
Relay outputs do not respond
  1. Verify that DO control is working by checking the green LEDs on the front panel – each LED indicates the state of the corresponding output
  2. If relays revert to a fixed state after a timeout, check the communication failure safety configuration (register H:7) – this feature resets relays to predefined states when Modbus communication is lost for a configurable period

Available devices

Domat ECIO2 Module

Domat ECIO2

Write (module)
MODBUSWNE(H, 9, Int16, St2 | (St3 << 1) | (St4 << 2) | (St5 << 3) | (St6 << 4) | (St7 << 5) | (St8 << 6) | (St9 << 7))
DO1 — Digital Output 1 Switch

Relay NO output, 3A/250VAC

Register: H:9H:9 Int16 bitmask
Values / States: ON · OFF

DO1 — Digital Output 1

Read switch state
MODBUSR(H, 9, Int16) & 1
DO2 — Digital Output 2 Switch

Relay NO output, 3A/250VAC

Register: H:9H:9 Int16 bitmask
Values / States: ON · OFF

DO2 — Digital Output 2

Read switch state
(MODBUSR(H, 9, Int16) & 2 )>>1
DO3 — Digital Output 3 Switch

Relay NO output, 3A/250VAC

Register: H:9H:9 Int16 bitmask
Values / States: ON · OFF

DO3 — Digital Output 3

Read switch state
(MODBUSR(H, 9, Int16) & 4)>>2
DO4 — Digital Output 4 Switch

Relay NO output, 3A/250VAC

Register: H:9H:9 Int16 bitmask
Values / States: ON · OFF

DO4 — Digital Output 4

Read switch state
(MODBUSR(H, 9, Int16) & 8)>>3
DO5 — Digital Output 5 Switch

Relay NO output, 3A/250VAC

Register: H:9H:9 Int16 bitmask
Values / States: ON · OFF

DO5 — Digital Output 5

Read switch state
(MODBUSR(H, 9, Int16) & 16)>>4
DO6 — Digital Output 6 Switch

Relay NO output, 3A/250VAC

Register: H:9H:9 Int16 bitmask
Values / States: ON · OFF

DO6 — Digital Output 6

Read switch state
(MODBUSR(H, 9, Int16) & 32)>>5
DO7 — Digital Output 7 Switch

Relay changeover output, 8A/250VAC

Register: H:9H:9 Int16 bitmask
Values / States: ON · OFF

DO7 — Digital Output 7

Read switch state
(MODBUSR(H, 9, Int16) & 64)>>6
DO8 — Digital Output 8 Switch

Relay changeover output, 8A/250VAC

Register: H:9H:9 Int16 bitmask
Values / States: ON · OFF

DO8 — Digital Output 8

Read switch state
(MODBUSR(H, 9, Int16) & 128)>>7
AO1 — Analogue Output 1 Dimmer

0–10V analogue output, 12-bit DAC, galvanically separated

Register: H:10H:10 Int16 Unit: V numeric

AO1 — Analogue Output 1

Read level
MODBUSR(H, 10, Int16)/4095
Write level
MODBUSWNE(H, 10, Int16, Le*4095)
AO2 — Analogue Output 2 Dimmer

0–10V analogue output, 12-bit DAC, galvanically separated

Register: H:11H:11 Int16 Unit: V numeric

AO2 — Analogue Output 2

Read level
MODBUSR(H, 11, Int16)/4095
Write level
MODBUSWNE(H, 11, Int16, Le*4095)
AO3 — Analogue Output 3 Dimmer

0–10V analogue output, 12-bit DAC, galvanically separated

Register: H:12H:12 Int16 Unit: V numeric

AO3 — Analogue Output 3

Read level
MODBUSR(H, 12, Int16)/4095
Write level
MODBUSWNE(H, 12, Int16, Le*4095)
AO4 — Analogue Output 4 Dimmer

0–10V analogue output, 12-bit DAC, galvanically separated

Register: H:13H:13 Int16 Unit: V numeric

AO4 — Analogue Output 4

Read level
MODBUSR(H, 13, Int16)/4095
Write level
MODBUSWNE(H, 13, Int16, Le*4095)
AO5 — Analogue Output 5 Dimmer

0–10V analogue output, 12-bit DAC, galvanically separated

Register: H:14H:14 Int16 Unit: V numeric

AO5 — Analogue Output 5

Read level
MODBUSR(H, 14, Int16)/4095
Write level
MODBUSWNE(H, 14, Int16, Le*4095)
AO6 — Analogue Output 6 Dimmer

0–10V analogue output, 12-bit DAC, galvanically separated

Register: H:15H:15 Int16 Unit: V numeric

AO6 — Analogue Output 6

Read level
MODBUSR(H, 15, Int16)/4095
Write level
MODBUSWNE(H, 15, Int16, Le*4095)
AI1 — Analogue Input 1 [V] Variable Read-only

0–10V voltage input (configurable: Pt1000, resistance, current)

Register: H:17 Int16 Unit: V numeric

AI1 — Analogue Input 1 [V]

Read
MODBUSR(H, 17, Int16)/1000
Initialize
MODBUSW(H, 4, Int16, 8738)
AI2 — Analogue Input 2 [V] Variable Read-only

0–10V voltage input (configurable: Pt1000, resistance, current)

Register: H:18 Int16 Unit: V numeric

AI2 — Analogue Input 2 [V]

Read
MODBUSR(H, 18, Int16)/1000
Initialize
MODBUSW(H, 4, Int16, 8738)
AI3 — Analogue Input 3 [V] Variable Read-only

0–10V voltage input (configurable: Pt1000, resistance, current)

Register: H:19 Int16 Unit: V numeric

AI3 — Analogue Input 3 [V]

Read
MODBUSR(H, 19, Int16)/1000
Initialize
MODBUSW(H, 4, Int16, 8738)
AI4 — Analogue Input 4 [V] Variable Read-only

0–10V voltage input (configurable: Pt1000, resistance, current)

Register: H:20 Int16 Unit: V numeric

AI4 — Analogue Input 4 [V]

Read
MODBUSR(H, 20, Int16)/1000
Initialize
MODBUSW(H, 4, Int16, 8738)
AI5 — Analogue Input 5 [V] Variable Read-only

0–10V voltage input (configurable: Pt1000, resistance, current)

Register: H:21 Int16 Unit: V numeric

AI5 — Analogue Input 5 [V]

Read
MODBUSR(H, 21, Int16)/1000
Initialize
MODBUSW(H, 5, Int16, 8738)
AI6 — Analogue Input 6 [V] Variable Read-only

0–10V voltage input (configurable: Pt1000, resistance, current)

Register: H:22 Int16 Unit: V numeric

AI6 — Analogue Input 6 [V]

Read
MODBUSR(H, 22, Int16)/1000
Initialize
MODBUSW(H, 5, Int16, 8738)
AI7 — Analogue Input 7 [V] Variable Read-only

0–10V voltage input (configurable: Pt1000, resistance, current)

Register: H:23 Int16 Unit: V numeric

AI7 — Analogue Input 7 [V]

Read
MODBUSR(H, 23, Int16)/1000
Initialize
MODBUSW(H, 5, Int16, 8738)
AI8 — Analogue Input 8 [V] Variable Read-only

0–10V voltage input (configurable: Pt1000, resistance, current)

Register: H:24 Int16 Unit: V numeric

AI8 — Analogue Input 8 [V]

Read
MODBUSR(H, 24, Int16)/1000
Initialize
MODBUSW(H, 5, Int16, 8738)
DI1 — Digital Input 1 Reed Contact Read-only

24V AC/DC binary input, 4 mA input current

Register: H:16 Int16 bitmask

DI1 — Digital Input 1

Read
MODBUSR(H, 16, Int16) & 1
DI2 — Digital Input 2 Reed Contact Read-only

24V AC/DC binary input, 4 mA input current

Register: H:16 Int16 bitmask

DI2 — Digital Input 2

Read
(MODBUSR(H, 16, Int16) & 2) >> 1
DI3 — Digital Input 3 Reed Contact Read-only

24V AC/DC binary input, 4 mA input current

Register: H:16 Int16 bitmask

DI3 — Digital Input 3

Read
(MODBUSR(H, 16, Int16) & 4) >> 2
DI4 — Digital Input 4 Reed Contact Read-only

24V AC/DC binary input, 4 mA input current

Register: H:16 Int16 bitmask

DI4 — Digital Input 4

Read
(MODBUSR(H, 16, Int16) & 8) >> 3
DI5 — Digital Input 5 Reed Contact Read-only

24V AC/DC binary input, 4 mA input current

Register: H:16 Int16 bitmask

DI5 — Digital Input 5

Read
(MODBUSR(H, 16, Int16) & 16) >> 4
DI6 — Digital Input 6 Reed Contact Read-only

24V AC/DC binary input, 4 mA input current

Register: H:16 Int16 bitmask

DI6 — Digital Input 6

Read
(MODBUSR(H, 16, Int16) & 32) >> 5
DI7 — Digital Input 7 Reed Contact Read-only

24V AC/DC binary input, 4 mA input current

Register: H:16 Int16 bitmask

DI7 — Digital Input 7

Read
(MODBUSR(H, 16, Int16) & 64) >> 6
DI8 — Digital Input 8 Reed Contact Read-only

24V AC/DC binary input, 4 mA input current

Register: H:16 Int16 bitmask

DI8 — Digital Input 8

Read
(MODBUSR(H, 16, Int16) & 128) >> 7
Connection: Modbus TCP • Slave ID: $[SlaveId]
Possible improvements (10)
  • H:0 Module ID — UInt16, R, module identification 0x2101
  • H:1 Firmware Version (NEC) — UInt16, R, NEC processor firmware
  • H:2 Status Register — UInt16, R/W, bit-mapped status/config (EEPROM init, calibration)
  • H:3 Firmware Version 2 (LPC/ETH) — UInt16, R, Ethernet interface processor firmware
  • H:6 DI Latch State / Relay Comm Fail Behavior — UInt16, R/W EEPROM, LSB=latch polarity, MSB=DO comm fail enable
  • H:7 DO Comm Fail State / Timeout — UInt16, R/W EEPROM, LSB=fail output states, MSB=timeout in seconds
  • H:8 DO Startup Enable / Startup States — UInt16, R/W EEPROM, LSB=startup enable bits, MSB=startup output states
  • H:25-26 Module Uptime — UInt32 (2 words), R, module uptime in seconds
  • n/a DI Latch Enable / Latched Values — H:9 MSB (latch enable, R/W) and H:16 MSB (latched values, R) — DI edge detection
  • n/a Modbus TCP/RTU Routing — ECIO2 can act as Modbus TCP-to-RTU gateway for RS485 extension modules

Sources