The Geminox THRi is a gas condensing boiler connected to TapHome through the Amit DM-OT2 OpenTherm-to-Modbus RTU gateway. The DM-OT2 translates the boiler’s OpenTherm protocol into Modbus RTU holding registers, giving TapHome access to temperature sensors, heating and DHW thermostats, burner status, and heat source power monitoring.
The template uses bitmask registers for status and control (H:100 and H:200), Float registers for temperatures and pressure, and a cyclic extra OT register reading mechanism to retrieve min/max values from OpenTherm data-IDs that are not mapped to standard registers.
Hardware connection
Gateway overview
The Amit DM-OT2 is a DIN-rail mounted converter with a galvanically isolated RS-485 interface and an OpenTherm/+ interface. It acts as an OpenTherm master, communicating with the boiler, and as a Modbus RTU slave on the RS-485 bus.
Technical specifications
- Power supply: 20–30 V DC, max 30 mA
- Operating temperature: -40°C to +70°C
- Protocol: Modbus RTU Slave, RS-485
- Baud rate: 9600, no parity, 2 stop bits
- Max converters: 63 on a single RS-485 network
- RS-485 isolation: Galvanic, 500 V AC
- Mounting: 35 mm DIN rail
Terminal connections
| Terminal | Signal | Description |
|---|---|---|
| 1 | G485 | RS-485 ground |
| 2 | B | RS-485 signal B (-) |
| 3 | A | RS-485 signal A (+) |
| 4 | GND | Power supply ground |
| 5 | +24V | Power supply +24 V DC |
| 6 | RC1 | OpenTherm/+ interface |
| 7 | RC2 | OpenTherm/+ interface |
RS-485 wiring to TapHome
Connect using a 3-wire RS-485 connection:
- A (terminal 3) → A+/D+ on TapHome RS-485
- B (terminal 2) → B-/D- on TapHome RS-485
- G485 (terminal 1) → GND on TapHome power supply (mandatory)
Important — Grounding
The G485 ground wire must be connected between the DM-OT2 and the TapHome power supply. Without proper grounding, communication errors may occur.
Bus termination
The DM-OT2 has jumpers for RS-485 termination:
- Jumpers fitted — terminal station (idle states and terminations active). Use on the last device on the bus.
- Jumpers not fitted — intermediate station. Use on all other devices.
Both jumpers must always be set simultaneously.
Configuration
DIP switch addressing
DIP switches ADR0–ADR5 (switches 1–6) set the Modbus slave address (range 1–63). Address 0 is not permitted.
Address calculation: Each switch represents a binary value — ADR0=1, ADR1=2, ADR2=4, ADR3=8, ADR4=16, ADR5=32. Sum the values of switches in the ON position.
Address examples:
| Address | Switches ON |
|---|---|
| 1 | ADR0 |
| 2 | ADR1 |
| 3 | ADR0 + ADR1 |
| 5 | ADR0 + ADR2 |
| 10 | ADR1 + ADR3 |
Recommended: Address 1 (ADR0=ON, all others OFF).
Communication speed
DIP switches COMM0–COMM3 (switches 7–10) configure the baud rate and parity. For TapHome, set:
- COMM0: OFF, COMM1: OFF, COMM2: ON — this selects 9600 baud, no parity
With no parity selected, the DM-OT2 automatically uses 2 stop bits. Changes take effect immediately.
Protocol selection
DIP switch MODE (switch 11) selects the protocol:
- Not fitted (OFF) — Modbus RTU (required for TapHome)
- Fitted (ON) — ARION protocol
A change takes effect after a restart.
Device capabilities
Status monitoring
Three binary status sensors read individual bits from the Status register (H:100):
- Burner (bit 4) — indicates whether the burner flame is active
- Heating (bit 2) — indicates whether central heating is active
- DHW Heating (bit 3) — indicates whether domestic hot water heating is active
These sensors update every 2500 ms and provide real-time visibility into the boiler’s operating state.
Heating and DHW control
Two enable switches control heating and DHW via the Control register (H:200):
- Heating Enable (bit 5) — enables or disables central heating
- DHW Enable (bit 6) — enables or disables domestic hot water heating
Both switches use a read-modify-write pattern: the template reads the full H:200 register, masks out the target bit, sets the new value, and writes back. A counter-based debounce (cnt=5 polling cycles) ensures the switch shows the written state immediately after toggling, preventing flickering while the boiler processes the command.
Temperature thermostats
Two thermostat devices provide both current temperature reading and setpoint control:
- Heating Circuit Temperature — reads the current flow temperature from H:102 (Float) and reads/writes the desired temperature to H:201 (Float). A service attribute shows the min/max setpoint range from OpenTherm data-ID 49.
- DHW Thermostat — reads the current DHW temperature from H:106 (Float) and reads/writes the desired temperature to H:205 (Float). A service attribute shows the min/max setpoint range from OpenTherm data-ID 48.
Temperature sensors
Three read-only temperature sensors provide additional monitoring:
- Flue Gas Temperature (H:118) — exhaust gas temperature from the boiler, useful for monitoring combustion efficiency
- Return Water Temperature (H:108) — return water temperature from the heating circuit
- Outdoor Temperature (H:110) — outdoor ambient temperature from the boiler’s sensor, used for weather-compensated heating curves
All temperature registers use 32-bit Float format (2 consecutive holding registers).
Pressure monitoring
- Heating Circuit Pressure (H:114) — water pressure in the heating circuit in bar. Low pressure may indicate a water leak or the need to refill the system.
Heat source power
- Heat Source Power — a dimmer model representing the boiler’s modulation level. Two service attributes from OpenTherm data-ID 15 show the minimum modulation percentage and the maximum boiler power in kW.
Extra OpenTherm register reading
The template includes a cyclic mechanism for reading OpenTherm data-IDs that are not directly mapped to standard Modbus registers. This is used to retrieve min/max temperature ranges and boiler capacity data.
How it works:
- The module ReadScript enables extra OT register reading by setting bit 10 of H:200
- It writes the desired OpenTherm data-ID to H:216 and triggers a read via H:217
- The response appears in H:120, with status in H:121 (1=success, 3=error)
- The script cycles through three data-IDs: 48 (DHW min/max), 49 (heating min/max), and 15 (boiler capacity)
The retrieved values are stored in internal variables (TUV_MM, Top_MM, Kotol_MM) and made available as service attributes on the corresponding devices.
Service diagnostics
The module exposes nine service attributes for monitoring:
- Gateway ID (H:0) — confirms the gateway type (197 = DM-OT2)
- Firmware Version (H:1) — current gateway firmware version
- Time (H:2) — gateway uptime counter
- Guard Time (H:4) — Modbus communication failure evaluation timeout in milliseconds
- Reset Counter (H:8) — number of gateway resets (resettable via service action)
- Modbus Message Counter (H:9) — total Modbus messages processed (resettable via service action)
- DHW Present (H:100, bit 6) — whether DHW heating capability is available
- TV2 Present (H:100, bit 7) — whether a secondary heating circuit is available
- Heat Source Power [%] (H:112) — current boiler modulation as a percentage
Two service actions allow resetting the gateway counters:
- Reset Reset Counter — clears the gateway reset counter (H:8)
- Reset Modbus Message Counter — clears the Modbus message counter (H:9)
The module ReadScript also monitors OpenTherm communication status (H:100 bit 0) and device errors (H:100 bit 1, H:101), reporting them as errors and warnings in TapHome.
LED indicators
| LED | Function |
|---|---|
| PWR | Converter is powered |
| RxD | Receiving data on RS-485 |
| TxD | Transmitting data on RS-485 |
| RxOT | Receiving data on OpenTherm |
| TxOT | Transmitting data on OpenTherm |
Normal state: PWR on, RxD/TxD blink during Modbus communication, RxOT/TxOT blink during OpenTherm communication.
Troubleshooting
No Modbus communication (RxD/TxD LEDs not blinking)
- Check RS-485 cables:
- A (terminal 3) correctly connected to A+/D+ on TapHome
- B (terminal 2) correctly connected to B-/D- on TapHome
- G485 (terminal 1) connected to TapHome power supply ground — most common issue
- Verify the Modbus slave address on DIP switches ADR0–ADR5
- Confirm DIP switch MODE is OFF (Modbus RTU selected)
- Check the communication speed settings (COMM0=OFF, COMM1=OFF, COMM2=ON for 9600 baud)
- Confirm TapHome is set to: 9600 baud, no parity, 2 stop bits
No OpenTherm communication (RxOT/TxOT LEDs not blinking)
- Check the wiring between RC1/RC2 terminals and the boiler’s OpenTherm connector
- Verify the boiler supports OpenTherm (not all Geminox models have an OT interface)
- Check that the DM-OT2 has correct power supply (20–30 V DC)
OT communication error in TapHome
If TapHome reports “OT communication error” (Status bit 0 = 0):
- Check the OpenTherm wiring between the DM-OT2 and the boiler
- Restart the DM-OT2 by cycling power
- Check the Guard Time service attribute — if set to 0, the connection is permanently marked as disconnected
Device error in TapHome
If TapHome reports “Device error” (Status bit 1 = 1):
- Read the Last Error register value from TapHome warnings
- Consult the boiler’s service manual for the specific error code
- The error originates from the boiler itself, not the gateway
Additional capabilities
The DM-OT2 gateway also exposes registers for boiler supply water temperature (H:116), direct DHW temperature (H:104), and additional control bits on H:200 for OT communication enable and error acknowledgment. These can be added in a future template update.
