TapHome

Geminox THRi

Modbus RTU
Submitted by
Last updated: 03. 2026

Wymaga zewnętrznej bramki

Amit DM-OT2

Geminox THRi to gazowy kocioł kondensacyjny podłączony do TapHome przez bramkę Amit DM-OT2 (OpenTherm na Modbus RTU). DM-OT2 tłumaczy protokół OpenTherm kotła na rejestry holding Modbus RTU, dając TapHome dostęp do czujników temperatury, termostatów ogrzewania i CWU, stanu palnika oraz monitorowania mocy źródła ciepła.

Szablon wykorzystuje rejestry bitmaskowe do statusu i sterowania (H:100 i H:200), rejestry Float do temperatur i ciśnienia oraz cykliczny mechanizm odczytu dodatkowych rejestrów OT do pobierania wartości min/max z data-ID OpenTherm, które nie są zmapowane na standardowe rejestry.

Podłączenie sprzętowe

Przegląd bramki

Amit DM-OT2 to konwerter montowany na szynie DIN z galwanicznie izolowanym interfejsem RS-485 i interfejsem OpenTherm/+. Działa jako master OpenTherm komunikujący się z kotłem oraz jako slave Modbus RTU na magistrali RS-485.

Dane techniczne
  • Zasilanie: 20–30 V DC, max 30 mA
  • Temperatura pracy: -40 °C do +70 °C
  • Protokół: Modbus RTU Slave, RS-485
  • Prędkość transmisji: 9600, bez parzystości, 2 bity stopu
  • Max konwerterów: 63 w jednej sieci RS-485
  • Izolacja RS-485: Galwaniczna, 500 V AC
  • Montaż: Szyna DIN 35 mm
Podłączenia zacisków
ZaciskSygnałOpis
1G485Masa RS-485
2BSygnał RS-485 B (-)
3ASygnał RS-485 A (+)
4GNDMasa zasilania
5+24VZasilanie +24 V DC
6RC1Interfejs OpenTherm/+
7RC2Interfejs OpenTherm/+
Okablowanie RS-485 do TapHome

Podłącz za pomocą 3-przewodowego połączenia RS-485:

  • A (zacisk 3) → A+/D+ na TapHome RS-485
  • B (zacisk 2) → B-/D- na TapHome RS-485
  • G485 (zacisk 1) → GND na zasilaczu TapHome (obowiązkowe)

Ważne — Uziemienie

Przewód masy G485 musi być połączony między DM-OT2 a zasilaczem TapHome. Bez prawidłowego uziemienia mogą wystąpić błędy komunikacji.

Terminacja magistrali

DM-OT2 posiada zworki do terminacji RS-485:

  • Zworki założone — stacja końcowa (stany idle i terminacje aktywne). Użyj na ostatnim urządzeniu na magistrali.
  • Zworki zdjęte — stacja pośrednia. Użyj na wszystkich pozostałych urządzeniach.

Obie zworki muszą być zawsze ustawione jednocześnie.

Konfiguracja

Adresowanie przełącznikami DIP

Przełączniki DIP ADR0–ADR5 (przełączniki 1–6) ustawiają adres slave Modbus (zakres 1–63). Adres 0 jest niedozwolony.

Obliczanie adresu: Każdy przełącznik reprezentuje wartość binarną — ADR0=1, ADR1=2, ADR2=4, ADR3=8, ADR4=16, ADR5=32. Zsumuj wartości przełączników w pozycji ON.

Przykłady adresów:

AdresPrzełączniki ON
1ADR0
2ADR1
3ADR0 + ADR1
5ADR0 + ADR2
10ADR1 + ADR3

Zalecane: Adres 1 (ADR0=ON, wszystkie pozostałe OFF).

Prędkość komunikacji

Przełączniki DIP COMM0–COMM3 (przełączniki 7–10) konfigurują prędkość transmisji i parzystość. Dla TapHome ustaw:

  • COMM0: OFF, COMM1: OFF, COMM2: ON — wybiera 9600 baud, bez parzystości

Bez wybranej parzystości DM-OT2 automatycznie używa 2 bitów stopu. Zmiany obowiązują natychmiast.

Wybór protokołu

Przełącznik DIP MODE (przełącznik 11) wybiera protokół:

  • Niezałożony (OFF) — Modbus RTU (wymagany dla TapHome)
  • Założony (ON) — protokół ARION

Zmiana obowiązuje po restarcie.

Funkcje urządzenia

Monitorowanie stanu

Trzy binarne czujniki stanu odczytują poszczególne bity z rejestru stanu (H:100):

  • Palnik (bit 4) — wskazuje, czy płomień palnika jest aktywny
  • Ogrzewanie (bit 2) — wskazuje, czy ogrzewanie centralne jest aktywne
  • Ogrzewanie CWU (bit 3) — wskazuje, czy ogrzewanie ciepłej wody użytkowej jest aktywne

Czujniki te aktualizują się co 2500 ms i zapewniają wgląd w stan pracy kotła w czasie rzeczywistym.

Sterowanie ogrzewaniem i CWU

Dwa przełączniki sterują ogrzewaniem i CWU przez rejestr sterujący (H:200):

  • Włączenie ogrzewania (bit 5) — włącza lub wyłącza ogrzewanie centralne
  • Włączenie CWU (bit 6) — włącza lub wyłącza ogrzewanie ciepłej wody użytkowej

Oba przełączniki wykorzystują wzorzec read-modify-write: szablon odczytuje cały rejestr H:200, maskuje docelowy bit, ustawia nową wartość i zapisuje. Debounce oparty na liczniku (cnt=5 cykli odpytywania) zapewnia, że przełącznik wyświetla zapisany stan natychmiast po przełączeniu, zapobiegając migotaniu podczas przetwarzania polecenia przez kocioł.

Termostaty temperatury

Dwa urządzenia termostatyczne zapewniają zarówno odczyt aktualnej temperatury, jak i sterowanie wartością zadaną:

  • Temperatura obwodu grzewczego — odczytuje aktualną temperaturę zasilania z H:102 (Float) i odczytuje/zapisuje temperaturę zadaną do H:201 (Float). Atrybut serwisowy pokazuje zakres min/max z OpenTherm data-ID 49.
  • Termostat CWU — odczytuje aktualną temperaturę CWU z H:106 (Float) i odczytuje/zapisuje temperaturę zadaną do H:205 (Float). Atrybut serwisowy pokazuje zakres min/max z OpenTherm data-ID 48.
Czujniki temperatury

Trzy czujniki temperatury tylko do odczytu zapewniają dodatkowe monitorowanie:

  • Temperatura spalin (H:118) — temperatura gazów spalinowych z kotła, przydatna do monitorowania sprawności spalania
  • Temperatura wody powrotnej (H:108) — temperatura wody powrotnej z obwodu grzewczego
  • Temperatura zewnętrzna (H:110) — temperatura zewnętrzna z czujnika kotła, wykorzystywana do pogodowych krzywych grzewczych

Wszystkie rejestry temperatury używają 32-bitowego formatu Float (2 kolejne rejestry holding).

Monitorowanie ciśnienia
  • Ciśnienie obwodu grzewczego (H:114) — ciśnienie wody w obwodzie grzewczym w barach. Niskie ciśnienie może wskazywać na wyciek wody lub konieczność uzupełnienia instalacji.
Moc źródła ciepła
  • Moc źródła ciepła — model dimmer reprezentujący poziom modulacji kotła. Dwa atrybuty serwisowe z OpenTherm data-ID 15 pokazują minimalny procent modulacji i maksymalną moc kotła w kW.

Odczyt dodatkowych rejestrów OpenTherm

Szablon zawiera cykliczny mechanizm do odczytu data-ID OpenTherm, które nie są bezpośrednio zmapowane na standardowe rejestry Modbus. Służy do pobierania zakresów min/max temperatur i danych o wydajności kotła.

Jak to działa:

  1. Moduł ReadScript aktywuje odczyt dodatkowych rejestrów OT ustawiając bit 10 w H:200
  2. Zapisuje żądane data-ID OpenTherm do H:216 i wyzwala odczyt przez H:217
  3. Odpowiedź pojawia się w H:120, status w H:121 (1=sukces, 3=błąd)
  4. Skrypt cyklicznie przechodzi przez trzy data-ID: 48 (CWU min/max), 49 (ogrzewanie min/max) i 15 (wydajność kotła)

Pobrane wartości są przechowywane w wewnętrznych zmiennych (TUV_MM, Top_MM, Kotol_MM) i udostępniane jako atrybuty serwisowe na odpowiednich urządzeniach.

Diagnostyka serwisowa

Moduł udostępnia dziewięć atrybutów serwisowych do monitorowania:

  • Gateway ID (H:0) — potwierdza typ bramki (197 = DM-OT2)
  • Wersja firmware (H:1) — aktualna wersja firmware bramki
  • Czas (H:2) — licznik czasu pracy bramki
  • Guard Time (H:4) — limit czasu oceny awarii komunikacji Modbus w milisekundach
  • Licznik restartów (H:8) — liczba restartów bramki (resetowalny akcją serwisową)
  • Licznik komunikatów Modbus (H:9) — łączna liczba przetworzonych komunikatów Modbus (resetowalny akcją serwisową)
  • CWU dostępne (H:100, bit 6) — czy ogrzewanie ciepłej wody użytkowej jest dostępne
  • TV2 dostępny (H:100, bit 7) — czy dostępny jest wtórny obwód grzewczy
  • Moc źródła ciepła [%] (H:112) — aktualna modulacja kotła w procentach

Dwie akcje serwisowe umożliwiają resetowanie liczników bramki:

  • Reset licznika restartów — zeruje licznik restartów bramki (H:8)
  • Reset licznika komunikatów Modbus — zeruje licznik komunikatów Modbus (H:9)

Moduł ReadScript monitoruje również stan komunikacji OpenTherm (H:100 bit 0) i błędy urządzenia (H:100 bit 1, H:101), raportując je jako błędy i ostrzeżenia w TapHome.

Wskaźniki LED

LEDFunkcja
PWRKonwerter jest zasilany
RxDOdbiór danych na RS-485
TxDNadawanie danych na RS-485
RxOTOdbiór danych na OpenTherm
TxOTNadawanie danych na OpenTherm

Stan normalny: PWR świeci, RxD/TxD migają podczas komunikacji Modbus, RxOT/TxOT migają podczas komunikacji OpenTherm.

Rozwiązywanie problemów

Brak komunikacji Modbus (diody RxD/TxD nie migają)
  1. Sprawdź kable RS-485:
    • A (zacisk 3) prawidłowo podłączony do A+/D+ na TapHome
    • B (zacisk 2) prawidłowo podłączony do B-/D- na TapHome
    • G485 (zacisk 1) podłączony do masy zasilacza TapHome — najczęstszy problem
  2. Zweryfikuj adres slave Modbus na przełącznikach DIP ADR0–ADR5
  3. Potwierdź, że przełącznik DIP MODE jest w pozycji OFF (wybrany Modbus RTU)
  4. Sprawdź ustawienia prędkości komunikacji (COMM0=OFF, COMM1=OFF, COMM2=ON dla 9600 baud)
  5. Potwierdź, że TapHome jest ustawiony na: 9600 baud, bez parzystości, 2 bity stopu
Brak komunikacji OpenTherm (diody RxOT/TxOT nie migają)
  1. Sprawdź okablowanie między zaciskami RC1/RC2 a złączem OpenTherm kotła
  2. Zweryfikuj, czy kocioł obsługuje OpenTherm (nie wszystkie modele Geminox mają interfejs OT)
  3. Sprawdź, czy DM-OT2 ma prawidłowe zasilanie (20–30 V DC)
Błąd komunikacji OT w TapHome

Jeśli TapHome zgłasza „OT communication error" (Status bit 0 = 0):

  1. Sprawdź okablowanie OpenTherm między DM-OT2 a kotłem
  2. Zrestartuj DM-OT2 odłączając i ponownie podłączając zasilanie
  3. Sprawdź atrybut serwisowy Guard Time — jeśli ustawiony na 0, połączenie jest trwale oznaczone jako rozłączone
Błąd urządzenia w TapHome

Jeśli TapHome zgłasza „Device error" (Status bit 1 = 1):

  1. Odczytaj wartość rejestru Last Error z ostrzeżeń TapHome
  2. Sprawdź w instrukcji serwisowej kotła konkretny kod błędu
  3. Błąd pochodzi z samego kotła, nie z bramki
Dodatkowe możliwości

Bramka DM-OT2 udostępnia również rejestry temperatury wody zasilającej kotła (H:116), bezpośredniej temperatury CWU (H:104) oraz dodatkowe bity sterujące na H:200 do włączania komunikacji OT i potwierdzania błędów. Mogą one zostać dodane w przyszłej aktualizacji szablonu.

Dostępne urządzenia

Geminox THRi (via Amit DM-OT2) Moduł
Atrybuty serwisowe
ID bramyreads H:0 (UInt16); switch: 197=\'DM-OT2\', other=\'Unknown\'; identifies the Amit DM-OT2 gateway
Wersja firmwarereads H:1 (UInt16); gateway firmware version number
Czasreads H:2 (UInt32); gateway uptime or system time counter
Czas ochronny [ms]reads H:4 (UInt16); Modbus guard time in milliseconds
Licznik resetówreads H:8 (UInt16); number of gateway resets since last clear
Licznik wiadomości Modbusreads H:9 (UInt16); total Modbus messages processed since last clear
CWU dostępnereads bit 6 of Status (H:100); \'Yes\' if DHW heating is available, \'No\' otherwise
TV2 dostępnereads bit 7 of Status (H:100); \'Yes\' if secondary heating circuit (TV2) is available, \'No\' otherwise
Moc źródła ciepła [%]reads H:112 (Float); current boiler modulation/power output as percentage
Akcje serwisowe
Resetuj licznik resetówwrites H:8 (UInt16) = 0; clears the gateway reset counter
Resetuj licznik wiadomości Modbuswrites H:9 (UInt16) = 0; clears the Modbus message counter

Geminox THRi (cez Amit DM-OT2)

Odczyt (moduł)
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
Atrybuty serwisowe
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)
Akcje serwisowe
Nulovat Počítadlo resetů
modbusw(H, 8, Uint16, 0)
Nulovat Počítadlo MODBUS zpráv
modbusw(H, 9, Uint16, 0)
Palnik Kontakt reed Tylko do odczytu

Stan płomienia palnika — aktywny, gdy palnik kotła jest włączony

Rejestr: H:100 UInt16 bitmask

Palnik

Odczyt
getbit(Status, 4)
Ogrzewanie Kontakt reed Tylko do odczytu

Stan ogrzewania centralnego — aktywny, gdy obwód grzewczy działa

Rejestr: H:100 UInt16 bitmask

Ogrzewanie

Odczyt
getbit(Status, 2)
Ogrzewanie CWU Kontakt reed Tylko do odczytu

Stan ogrzewania ciepłej wody użytkowej — aktywny, gdy obwód CWU działa

Rejestr: H:100 UInt16 bitmask

Ogrzewanie CWU

Odczyt
getbit(Status, 3)
Włączenie ogrzewania Przełącznik

Włącza lub wyłącza ogrzewanie centralne przez read-modify-write na rejestrze sterującym

Rejestr: H:200 UInt16 bitmask

Włączenie ogrzewania

Odczyt stanu przełącznika
if cnt = 0
    var ret := getbit(modbusr(H,200,Uint16), 5);
    return (ret);
else
    cnt := cnt -1;
    return (St);
end
Zapis stanu przełącznika
var ret := modbusr(H,200,Uint16);
var x := (ret & 0xffdf) + (St << 5);
modbusw(H, 200, Uint16, x);
cnt := 5;
Włączenie CWU Przełącznik

Włącza lub wyłącza ogrzewanie ciepłej wody użytkowej przez read-modify-write na rejestrze sterującym

Rejestr: H:200 UInt16 bitmask

Włączenie CWU

Odczyt stanu przełącznika
if cnt = 0
    var ret := getbit(modbusr(H,200,Uint16), 6);
    return (ret);
else
    cnt := cnt -1;
    return (St);
end
Zapis stanu przełącznika
var ret := modbusr(H,200,Uint16);
var x := (ret & 0xffbf) + (St << 6);
modbusw(H, 200, Uint16, x);
cnt := 5;
Temperatura spalin Czujnik temperatury Tylko do odczytu

Temperatura gazów spalinowych z komory spalania kotła

Rejestr: H:118 Float Jednostka: °C numeric

Temperatura spalin

Odczyt temperatury
MODBUSR(H, 118, Float)
Temperatura wody powrotnej Czujnik temperatury Tylko do odczytu

Temperatura wody powrotnej z obwodu grzewczego

Rejestr: H:108 Float Jednostka: °C numeric

Temperatura wody powrotnej

Odczyt temperatury
MODBUSR(H, 108, Float)
Temperatura obwodu grzewczego Termostat

Temperatura zasilania obwodu grzewczego z regulowaną wartością zadaną i zakresem min/max z OpenTherm

Rejestr: H:102H:201 Float Jednostka: °C numeric
Atrybuty serwisowe
Temperatura obwodu grzewczego min / max

Temperatura obwodu grzewczego

Odczyt temperatury
MODBUSR(H, 102, Float)
Odczyt temperatury zadanej
MODBUSR(H, 201, Float)
Zapis temperatury zadanej
MODBUSW(H, 201, Float, Se)
Atrybuty serwisowe
Min / Max Teplota Vykurovacieho okruhu
getbyte(Top_MM, 1) + "/" + getbyte(Top_MM, 0)
Ciśnienie obwodu grzewczego Zmienna Tylko do odczytu

Ciśnienie wody w obwodzie grzewczym

Rejestr: H:114 Float Jednostka: bar numeric

Ciśnienie obwodu grzewczego

Odczyt
MODBUSR(H, 114, Float)
Termostat CWU Termostat

Temperatura ciepłej wody użytkowej z regulowaną wartością zadaną i zakresem min/max z OpenTherm

Rejestr: H:106H:205 Float Jednostka: °C numeric
Atrybuty serwisowe
Temperatura CWU min / max

Termostat CWU

Odczyt temperatury
MODBUSR(H, 106, Float)
Odczyt temperatury zadanej
MODBUSR(H, 205, Float)
Zapis temperatury zadanej
MODBUSW(H, 205, Float, Se)
Atrybuty serwisowe
Min / Max Teplota TUV
getbyte(TUV_MM, 1) + "/" + getbyte(TUV_MM, 0)
Temperatura zewnętrzna Czujnik temperatury Tylko do odczytu

Temperatura zewnętrzna z czujnika kotła

Rejestr: H:110 Float Jednostka: °C numeric

Temperatura zewnętrzna

Odczyt temperatury
MODBUSR(H, 110, Float)
Moc źródła ciepła Ściemniacz Tylko do odczytu

Poziom modulacji kotła z atrybutami serwisowymi minimalnego procentu modulacji i maksymalnej mocy

Atrybuty serwisowe
Min modulacja [%]
Max moc [kW]

Moc źródła ciepła

Odczyt poziomu
MODBUSR(H, 112, Float) / 100
Atrybuty serwisowe
Minimalna modulacia [%]
getbyte(Kotol_MM, 1)
Max vykon [kW]
getbyte(Kotol_MM, 0)
Połączenie: Modbus RTU • 9600 baud• 8N2 • Slave ID: $[SlaveId]
Możliwe ulepszenia (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

Źródła