TapHome

Geminox THRi

Modbus RTU
Submitted by
Last updated: 03. 2026

Richiede gateway esterno

Amit DM-OT2

Il Geminox THRi è una caldaia a condensazione a gas collegata a TapHome tramite il gateway Amit DM-OT2 (OpenTherm-Modbus RTU). Il DM-OT2 traduce il protocollo OpenTherm della caldaia in holding register Modbus RTU, dando a TapHome accesso a sensori di temperatura, termostati riscaldamento e ACS, stato del bruciatore e monitoraggio della potenza della sorgente termica.

Il template utilizza registri bitmask per stato e controllo (H:100 e H:200), registri Float per temperature e pressione e un meccanismo ciclico di lettura extra OT per recuperare i valori min/max dai data-ID OpenTherm non mappati sui registri standard.

Collegamento hardware

Panoramica del gateway

L’Amit DM-OT2 è un convertitore montabile su guida DIN con interfaccia RS-485 isolata galvanicamente e interfaccia OpenTherm/+. Funziona come master OpenTherm comunicando con la caldaia e come slave Modbus RTU sul bus RS-485.

Specifiche tecniche
  • Alimentazione: 20–30 V DC, max 30 mA
  • Temperatura di esercizio: -40 °C a +70 °C
  • Protocollo: Modbus RTU Slave, RS-485
  • Baud rate: 9600, nessuna parità, 2 stop bit
  • Max convertitori: 63 su una singola rete RS-485
  • Isolamento RS-485: Galvanico, 500 V AC
  • Montaggio: Guida DIN 35 mm
Connessioni dei morsetti
MorsettoSegnaleDescrizione
1G485Massa RS-485
2BSegnale RS-485 B (-)
3ASegnale RS-485 A (+)
4GNDMassa alimentazione
5+24VAlimentazione +24 V DC
6RC1Interfaccia OpenTherm/+
7RC2Interfaccia OpenTherm/+
Cablaggio RS-485 verso TapHome

Collegare con una connessione RS-485 a 3 fili:

  • A (morsetto 3) → A+/D+ su TapHome RS-485
  • B (morsetto 2) → B-/D- su TapHome RS-485
  • G485 (morsetto 1) → GND sull’alimentatore TapHome (obbligatorio)

Importante — Messa a terra

Il filo di massa G485 deve essere collegato tra il DM-OT2 e l’alimentatore TapHome. Senza una corretta messa a terra possono verificarsi errori di comunicazione.

Terminazione del bus

Il DM-OT2 dispone di jumper per la terminazione RS-485:

  • Jumper inseriti — stazione terminale (stati idle e terminazioni attivi). Usare sull’ultimo dispositivo del bus.
  • Jumper rimossi — stazione intermedia. Usare su tutti gli altri dispositivi.

Entrambi i jumper devono essere sempre impostati simultaneamente.

Configurazione

Indirizzamento DIP switch

I DIP switch ADR0–ADR5 (switch 1–6) impostano l’indirizzo slave Modbus (intervallo 1–63). L’indirizzo 0 non è consentito.

Calcolo dell’indirizzo: Ogni switch rappresenta un valore binario — ADR0=1, ADR1=2, ADR2=4, ADR3=8, ADR4=16, ADR5=32. Sommare i valori degli switch in posizione ON.

Esempi di indirizzo:

IndirizzoSwitch ON
1ADR0
2ADR1
3ADR0 + ADR1
5ADR0 + ADR2
10ADR1 + ADR3

Consigliato: Indirizzo 1 (ADR0=ON, tutti gli altri OFF).

Velocità di comunicazione

I DIP switch COMM0–COMM3 (switch 7–10) configurano il baud rate e la parità. Per TapHome impostare:

  • COMM0: OFF, COMM1: OFF, COMM2: ON — seleziona 9600 baud, nessuna parità

Senza parità selezionata, il DM-OT2 utilizza automaticamente 2 stop bit. Le modifiche hanno effetto immediato.

Selezione del protocollo

Il DIP switch MODE (switch 11) seleziona il protocollo:

  • Non inserito (OFF) — Modbus RTU (richiesto per TapHome)
  • Inserito (ON) — protocollo ARION

La modifica ha effetto dopo un riavvio.

Funzionalità del dispositivo

Monitoraggio dello stato

Tre sensori di stato binari leggono i singoli bit dal registro di stato (H:100):

  • Bruciatore (bit 4) — indica se la fiamma del bruciatore è attiva
  • Riscaldamento (bit 2) — indica se il riscaldamento centralizzato è attivo
  • Riscaldamento ACS (bit 3) — indica se il riscaldamento dell’acqua calda sanitaria è attivo

Questi sensori si aggiornano ogni 2500 ms e forniscono visibilità in tempo reale sullo stato operativo della caldaia.

Controllo riscaldamento e ACS

Due interruttori di abilitazione controllano riscaldamento e ACS tramite il registro di controllo (H:200):

  • Abilitazione riscaldamento (bit 5) — abilita o disabilita il riscaldamento centralizzato
  • Abilitazione ACS (bit 6) — abilita o disabilita il riscaldamento dell’acqua calda sanitaria

Entrambi gli interruttori utilizzano un pattern read-modify-write: il template legge l’intero registro H:200, maschera il bit target, imposta il nuovo valore e riscrive. Un debounce basato su contatore (cnt=5 cicli di polling) garantisce che l’interruttore mostri lo stato scritto immediatamente dopo la commutazione, prevenendo lo sfarfallio mentre la caldaia elabora il comando.

Termostati di temperatura

Due dispositivi termostato forniscono sia la lettura della temperatura attuale che il controllo del setpoint:

  • Temperatura circuito di riscaldamento — legge la temperatura di mandata attuale da H:102 (Float) e legge/scrive la temperatura desiderata su H:201 (Float). Un attributo di servizio mostra l’intervallo min/max del setpoint dall’OpenTherm data-ID 49.
  • Termostato ACS — legge la temperatura ACS attuale da H:106 (Float) e legge/scrive la temperatura desiderata su H:205 (Float). Un attributo di servizio mostra l’intervallo min/max del setpoint dall’OpenTherm data-ID 48.
Sensori di temperatura

Tre sensori di temperatura in sola lettura forniscono un monitoraggio aggiuntivo:

  • Temperatura fumi (H:118) — temperatura dei gas di scarico dalla caldaia, utile per monitorare l’efficienza di combustione
  • Temperatura acqua di ritorno (H:108) — temperatura dell’acqua di ritorno dal circuito di riscaldamento
  • Temperatura esterna (H:110) — temperatura esterna dal sensore della caldaia, utilizzata per le curve di riscaldamento compensate dal clima

Tutti i registri di temperatura utilizzano il formato Float a 32 bit (2 holding register consecutivi).

Monitoraggio della pressione
  • Pressione circuito di riscaldamento (H:114) — pressione dell’acqua nel circuito di riscaldamento in bar. Una pressione bassa può indicare una perdita d’acqua o la necessità di rabbocco del sistema.
Potenza sorgente termica
  • Potenza sorgente termica — un modello dimmer che rappresenta il livello di modulazione della caldaia. Due attributi di servizio dall’OpenTherm data-ID 15 mostrano la percentuale minima di modulazione e la potenza massima della caldaia in kW.

Lettura registri OpenTherm aggiuntivi

Il template include un meccanismo ciclico per la lettura dei data-ID OpenTherm non direttamente mappati sui registri Modbus standard. Viene utilizzato per recuperare gli intervalli min/max delle temperature e i dati sulla capacità della caldaia.

Come funziona:

  1. Il modulo ReadScript abilita la lettura extra dei registri OT impostando il bit 10 di H:200
  2. Scrive il data-ID OpenTherm desiderato su H:216 e avvia la lettura tramite H:217
  3. La risposta appare in H:120, con lo stato in H:121 (1=successo, 3=errore)
  4. Lo script cicla attraverso tre data-ID: 48 (ACS min/max), 49 (riscaldamento min/max) e 15 (capacità caldaia)

I valori recuperati vengono memorizzati in variabili interne (TUV_MM, Top_MM, Kotol_MM) e resi disponibili come attributi di servizio sui dispositivi corrispondenti.

Diagnostica di servizio

Il modulo espone nove attributi di servizio per il monitoraggio:

  • Gateway ID (H:0) — conferma il tipo di gateway (197 = DM-OT2)
  • Versione firmware (H:1) — versione attuale del firmware del gateway
  • Tempo (H:2) — contatore del tempo di funzionamento del gateway
  • Guard Time (H:4) — timeout di valutazione degli errori di comunicazione Modbus in millisecondi
  • Contatore riavvii (H:8) — numero di riavvii del gateway (azzerabile tramite azione di servizio)
  • Contatore messaggi Modbus (H:9) — messaggi Modbus totali elaborati (azzerabile tramite azione di servizio)
  • ACS presente (H:100, bit 6) — se il riscaldamento dell’acqua calda sanitaria è disponibile
  • TV2 presente (H:100, bit 7) — se è disponibile un circuito di riscaldamento secondario
  • Potenza sorgente termica [%] (H:112) — modulazione attuale della caldaia in percentuale

Due azioni di servizio consentono l’azzeramento dei contatori del gateway:

  • Azzera contatore riavvii — cancella il contatore dei riavvii del gateway (H:8)
  • Azzera contatore messaggi Modbus — cancella il contatore dei messaggi Modbus (H:9)

Il modulo ReadScript monitora anche lo stato della comunicazione OpenTherm (H:100 bit 0) e gli errori del dispositivo (H:100 bit 1, H:101), segnalandoli come errori e avvisi in TapHome.

Indicatori LED

LEDFunzione
PWRIl convertitore è alimentato
RxDRicezione dati su RS-485
TxDTrasmissione dati su RS-485
RxOTRicezione dati su OpenTherm
TxOTTrasmissione dati su OpenTherm

Stato normale: PWR acceso, RxD/TxD lampeggiano durante la comunicazione Modbus, RxOT/TxOT lampeggiano durante la comunicazione OpenTherm.

Risoluzione dei problemi

Nessuna comunicazione Modbus (LED RxD/TxD non lampeggiano)
  1. Controllare i cavi RS-485:
    • A (morsetto 3) correttamente collegato ad A+/D+ su TapHome
    • B (morsetto 2) correttamente collegato a B-/D- su TapHome
    • G485 (morsetto 1) collegato alla massa dell’alimentatore TapHome — problema più comune
  2. Verificare l’indirizzo slave Modbus sui DIP switch ADR0–ADR5
  3. Confermare che il DIP switch MODE sia su OFF (Modbus RTU selezionato)
  4. Controllare le impostazioni della velocità di comunicazione (COMM0=OFF, COMM1=OFF, COMM2=ON per 9600 baud)
  5. Confermare che TapHome sia impostato su: 9600 baud, nessuna parità, 2 stop bit
Nessuna comunicazione OpenTherm (LED RxOT/TxOT non lampeggiano)
  1. Controllare il cablaggio tra i morsetti RC1/RC2 e il connettore OpenTherm della caldaia
  2. Verificare che la caldaia supporti OpenTherm (non tutti i modelli Geminox hanno un’interfaccia OT)
  3. Verificare che il DM-OT2 abbia un’alimentazione corretta (20–30 V DC)
Errore di comunicazione OT in TapHome

Se TapHome segnala “OT communication error” (Status bit 0 = 0):

  1. Controllare il cablaggio OpenTherm tra DM-OT2 e caldaia
  2. Riavviare il DM-OT2 spegnendo e riaccendendo l’alimentazione
  3. Controllare l’attributo di servizio Guard Time — se impostato a 0, la connessione è permanentemente contrassegnata come disconnessa
Errore dispositivo in TapHome

Se TapHome segnala “Device error” (Status bit 1 = 1):

  1. Leggere il valore del registro Last Error dagli avvisi di TapHome
  2. Consultare il manuale di servizio della caldaia per il codice di errore specifico
  3. L’errore proviene dalla caldaia stessa, non dal gateway
Funzionalità aggiuntive

Il gateway DM-OT2 espone anche registri per la temperatura dell’acqua di mandata della caldaia (H:116), la temperatura ACS diretta (H:104) e ulteriori bit di controllo su H:200 per l’abilitazione della comunicazione OT e la conferma degli errori. Questi possono essere aggiunti in un futuro aggiornamento del template.

Dispositivi disponibili

Geminox THRi (via Amit DM-OT2) Modulo
Attributi di servizio
ID gatewayreads H:0 (UInt16); switch: 197=\'DM-OT2\', other=\'Unknown\'; identifies the Amit DM-OT2 gateway
Versione firmwarereads H:1 (UInt16); gateway firmware version number
Temporeads H:2 (UInt32); gateway uptime or system time counter
Tempo di guardia [ms]reads H:4 (UInt16); Modbus guard time in milliseconds
Contatore resetreads H:8 (UInt16); number of gateway resets since last clear
Contatore messaggi Modbusreads H:9 (UInt16); total Modbus messages processed since last clear
ACS presentereads bit 6 of Status (H:100); \'Yes\' if DHW heating is available, \'No\' otherwise
TV2 presentereads bit 7 of Status (H:100); \'Yes\' if secondary heating circuit (TV2) is available, \'No\' otherwise
Potenza sorgente termica [%]reads H:112 (Float); current boiler modulation/power output as percentage
Azioni di servizio
Azzerare contatore resetwrites H:8 (UInt16) = 0; clears the gateway reset counter
Azzerare contatore messaggi Modbuswrites H:9 (UInt16) = 0; clears the Modbus message counter

Geminox THRi (cez Amit DM-OT2)

Lettura (modulo)
Status := modbusr(H, 100, Uint16);
if(getbit(Status, 0) = 0, adderror("Chyba komunikacie OT"));
if(getbit(Status, 1) = 1, adderror("Chyba zariadenia OT"));

var lastError := modbusr(H, 101, Uint16);
if(lastError != 0, addwarning("Chyba zariadenia " + lastError));

# povol citanie extra OT registrov
var ret := modbusr(H, 200, Uint16);
if getbit(ret, 10) = 0
    modbusw(H, 200, Uint16, ret + (1 << 10));
end

# citanie extra OT registrov
var reg := modbusr(H,216,Uint16);
var stat := modbusr(H,121,Uint16);
var out := 0;
if reg = 48
    #TUV Min/Max
    if  stat = 1
        out := modbusr(H,120,Uint16);
        TUV_MM := out;
        modbusw(H, 216, Uint16, 49);
        modbusw(H, 217, Uint16, 1);
    end
elseif reg = 49
    #kurenie Min/Max
    if stat = 1
        out := modbusr(H,120,Uint16);
        Top_MM := out;
        modbusw(H, 216, Uint16, 15);
        modbusw(H, 217, Uint16, 0);
    end
elseif reg = 15
    #kotol Min/Max
    if stat = 1
        out := modbusr(H,120,Uint16);
        Kotol_MM := out;
        modbusw(H, 216, Uint16, 48);
        modbusw(H, 217, Uint16, 1);
    end 
else
    #zaciname s TUV Min/Max
    modbusw(H, 216, Uint16, 48);
    modbusw(H, 217, Uint16, 1);
end

if modbusr(H,121,Uint16) = 3
    #ak chyba zaciname odznova s TUV Min/Max
    modbusw(H, 216, Uint16, 48);
    modbusw(H, 217, Uint16, 1);
end
Attributi di servizio
ID
switch(modbusr(H, 0, Uint16),
197, "DM-OT2",
"Unknown")
Verze firmware
modbusr(H, 1, Uint16)
Čas
modbusr(H, 2, Uint32)
GuardTime [ms]
modbusr(H, 4, Uint16)
Počítadlo resetů
modbusr(H, 8, Uint16)
Počítadlo MODBUS zpráv
modbusr(H, 9, Uint16)
Ohřev TUV přítomen
if(getbit(Status, 6), "Ano", "Ne")
TV2 přítomna
if(getbit(Status, 7), "Ano", "Ne")
Výkon topného zdroje [%]
modbusr(H, 112, Float)
Azioni di servizio
Nulovat Počítadlo resetů
modbusw(H, 8, Uint16, 0)
Nulovat Počítadlo MODBUS zpráv
modbusw(H, 9, Uint16, 0)
Bruciatore Contatto reed Solo lettura

Stato fiamma bruciatore — attivo quando il bruciatore della caldaia è in funzione

Registro: H:100 UInt16 bitmask

Bruciatore

Lettura
getbit(Status, 4)
Riscaldamento Contatto reed Solo lettura

Stato riscaldamento centralizzato — attivo quando il circuito di riscaldamento è in funzione

Registro: H:100 UInt16 bitmask

Riscaldamento

Lettura
getbit(Status, 2)
Riscaldamento ACS Contatto reed Solo lettura

Stato riscaldamento acqua calda sanitaria — attivo quando il circuito ACS è in funzione

Registro: H:100 UInt16 bitmask

Riscaldamento ACS

Lettura
getbit(Status, 3)
Abilitazione riscaldamento Interruttore

Abilita o disabilita il riscaldamento centralizzato tramite read-modify-write sul registro di controllo

Registro: H:200 UInt16 bitmask

Abilitazione riscaldamento

Lettura stato interruttore
if cnt = 0
    var ret := getbit(modbusr(H,200,Uint16), 5);
    return (ret);
else
    cnt := cnt -1;
    return (St);
end
Scrittura stato interruttore
var ret := modbusr(H,200,Uint16);
var x := (ret & 0xffdf) + (St << 5);
modbusw(H, 200, Uint16, x);
cnt := 5;
Abilitazione ACS Interruttore

Abilita o disabilita il riscaldamento dell'acqua calda sanitaria tramite read-modify-write sul registro di controllo

Registro: H:200 UInt16 bitmask

Abilitazione ACS

Lettura stato interruttore
if cnt = 0
    var ret := getbit(modbusr(H,200,Uint16), 6);
    return (ret);
else
    cnt := cnt -1;
    return (St);
end
Scrittura stato interruttore
var ret := modbusr(H,200,Uint16);
var x := (ret & 0xffbf) + (St << 6);
modbusw(H, 200, Uint16, x);
cnt := 5;
Temperatura fumi Sensore di temperatura Solo lettura

Temperatura dei gas di scarico dalla camera di combustione della caldaia

Registro: H:118 Float Unità: °C numeric

Temperatura fumi

Lettura temperatura
MODBUSR(H, 118, Float)
Temperatura acqua di ritorno Sensore di temperatura Solo lettura

Temperatura dell'acqua di ritorno dal circuito di riscaldamento

Registro: H:108 Float Unità: °C numeric

Temperatura acqua di ritorno

Lettura temperatura
MODBUSR(H, 108, Float)
Temperatura circuito di riscaldamento Termostato

Temperatura di mandata del circuito di riscaldamento con setpoint regolabile e intervallo min/max da OpenTherm

Registro: H:102H:201 Float Unità: °C numeric
Attributi di servizio
Temperatura circuito di riscaldamento min / max

Temperatura circuito di riscaldamento

Lettura temperatura
MODBUSR(H, 102, Float)
Lettura temperatura desiderata
MODBUSR(H, 201, Float)
Scrittura temperatura desiderata
MODBUSW(H, 201, Float, Se)
Attributi di servizio
Min / Max Teplota Vykurovacieho okruhu
getbyte(Top_MM, 1) + "/" + getbyte(Top_MM, 0)
Pressione circuito di riscaldamento Variabile Solo lettura

Pressione dell'acqua nel circuito di riscaldamento

Registro: H:114 Float Unità: bar numeric

Pressione circuito di riscaldamento

Lettura
MODBUSR(H, 114, Float)
Termostato ACS Termostato

Temperatura acqua calda sanitaria con setpoint regolabile e intervallo min/max da OpenTherm

Registro: H:106H:205 Float Unità: °C numeric
Attributi di servizio
Temperatura ACS min / max

Termostato ACS

Lettura temperatura
MODBUSR(H, 106, Float)
Lettura temperatura desiderata
MODBUSR(H, 205, Float)
Scrittura temperatura desiderata
MODBUSW(H, 205, Float, Se)
Attributi di servizio
Min / Max Teplota TUV
getbyte(TUV_MM, 1) + "/" + getbyte(TUV_MM, 0)
Temperatura esterna Sensore di temperatura Solo lettura

Temperatura esterna dal sensore della caldaia

Registro: H:110 Float Unità: °C numeric

Temperatura esterna

Lettura temperatura
MODBUSR(H, 110, Float)
Potenza sorgente termica Dimmer Solo lettura

Livello di modulazione della caldaia con attributi di servizio per percentuale minima di modulazione e potenza massima

Attributi di servizio
Modulazione min [%]
Potenza max [kW]

Potenza sorgente termica

Lettura livello
MODBUSR(H, 112, Float) / 100
Attributi di servizio
Minimalna modulacia [%]
getbyte(Kotol_MM, 1)
Max vykon [kW]
getbyte(Kotol_MM, 0)
Connessione: Modbus RTU • 9600 baud• 8N2 • Slave ID: $[SlaveId]
Possibili miglioramenti (5)
  • H:104 DHW Temperature (direct) — H:104 Float — likely DHW flow temperature; not exposed as separate device (DHW Thermostat uses H:106 for current)
  • H:116 Boiler Water Temperature — H:116 Float — boiler flow/supply water temperature; could complement return water temp
  • H:200 bit 0 OT Communication Enable — Bit 0 of H:100 indicates OT comm status; corresponding control bit on H:200 could enable/disable OT communication
  • H:200 bit 1 Device Error Acknowledge — Bit 1 of H:100 indicates device error; potential error acknowledgment via H:200
  • H:203 Heating Circuit Desired Temperature (alternative) — Potential alternative setpoint register; template uses H:201 for heating circuit desired temp

Fonti