TapHome

solvimus MBUS-GEM – měřič tepla M-Bus

Modbus TCP
Přidal
Poslední aktualizace: 11. 2026
solvimus MBUS-GEM – měřič tepla M-Bus

TapHome nemá vlastní rozhraní M-Bus. Měřiče tepla s drátovou sběrnicí M-Bus (EN 13757) se připojují přes bránu, která převádí M-Bus na Modbus, a TapHome je pak čte jako zařízení Modbus TCP. Tato komunitní šablona používá bránu solvimus MBUS-GEM (MBUS-GE20M, MBUS-GE80M, MBUS-GE125M, MBUS-GE250M, MBUS-GE500M): brána čte měřiče na své sběrnici M-Bus a jejich hodnoty poskytuje jako server Modbus TCP na portu 502.

Šablona čte jeden měřič tepla (nebo jeden kombinovaný měřič tepla a chladu): tepelnou energii v kWh, objem topné vody, tepelný výkon, průtok a teplotu přívodu i zpátečky. Jeden importovaný modul představuje jeden měřič; pro každý další měřič se šablona importuje znovu. Tepelná energie je obyčejná proměnná, ne elektroměr, takže ji TapHome nikdy nezapočítá do spotřeby elektřiny.

Komunitní šablona — s TapHome na bráně zatím nevyzkoušená. Šablona vznikla podle uživatelské příručky MBUS-GEM a neběžela proti bráně, měřiči tepla ani simulátoru. Její čísla registrů jsou zástupná a je třeba je nahradit čísly, která brána ukazuje pro váš měřič (viz Konfigurace). Zpětná vazba z praxe je vítána. Stáhněte XML na této stránce nebo jej získejte v portálu TapHome: solvimus MBUS-GEM – M-Bus heat meter — komunitní šablona, a importujte jej jako nový modul.

Co potřebujete

  • Bránu solvimus MBUS-GEM — MBUS-GE20M (20 jednotkových zátěží), MBUS-GE80M (80), MBUS-GE125M (125), MBUS-GE250M (250) nebo MBUS-GE500M (500). Jedna jednotková zátěž je většinou jeden měřič.
  • Měřič tepla s drátovou sběrnicí M-Bus (EN 13757) na M-Bus brány, nebo kombinovaný měřič tepla a chladu.
  • Bránu a TapHome Core ve stejné lokální síti.

Hardwarové připojení

MBUS-GEM se montuje na 35mm lištu DIN. Vedení M-Bus z měřičů vede na šroubové svorky M-Bus brány, síť do jejího ethernetového portu RJ45 (10/100 Mbit/s). Brána potřebuje externí stejnosměrné napájení: 21,6–24,5 V DC pro MBUS-GE20M a MBUS-GE80M, 12–36 V DC pro MBUS-GE125M, MBUS-GE250M a MBUS-GE500M. Po připojení napájení se spustí sama.

Konfigurace

Síťová adresa brány

MBUS-GEM se dodává se statickou IP adresou 192.168.1.101 (maska podsítě 255.255.255.0, výchozí brána 192.168.1.254). Její konfigurační webová stránka se otevře na http://192.168.1.101/; při prvním přihlášení musí administrátor změnit heslo. Nástroj solvimus Netdiscover najde bránu v síti a změní její IP adresu, masku podsítě a výchozí bránu, nebo ji přepne na DHCP. Při DHCP se adresa přidělená bráně najde v DHCP serveru podle její MAC adresy, kterou ukazuje i Netdiscover. Bez DHCP serveru si brána zvolí adresu z rozsahu 169.254.x.x.

Šablona oslovuje bránu její IP adresou, proto jí nastavte statickou adresu nebo její adresu rezervujte v DHCP serveru.

Nastavení brány

Na konfigurační webové stránce, karta Server:

  1. Nastavte Modbus mode na Modbus TCP a Modbus port ponechte na 502.
  2. Modbus float only ponechte vypnuté. Tento režim odstraní pole typu a jednotky, která šablona kontroluje.
  3. Modbus swap ponechte vypnuté. Šablona očekává výchozí pořadí slov (nejvýznamnější slovo první).
  4. Zapněte Modbus multi slave (doporučeno). Každý měřič se pak stane samostatným virtuálním Modbus slave s vlastní adresou (1–247) a číslování registrů začíná pro každý měřič znovu, takže měřiče stejného typu dostanou stejná čísla registrů.

Po zapnutí nebo vypnutí multi slave je třeba adresy na kartě Meter přidělit znovu (kontextová nabídka Allocate).

Seznam měřičů a cyklus odečtu

Měřič tepla musí být v seznamu měřičů brány (karta Meter), vyhledaný na M-Bus nebo vytvořený ručně. Brána čte měřiče nezávisle na požadavcích Modbus, v cyklu Readout cycle na kartě Configuration nebo v cyklu Cycle (v sekundách) pro jednotlivý měřič na kartě Meter. Tato nastavení určují, jak čerstvé jsou hodnoty v TapHome. Některé bateriové měřiče M-Bus dovolují jen omezený počet odečtů za den — před volbou krátkého cyklu si prohlédněte katalogový list měřiče.

Nastavení šablony po importu

Brána nemá pevnou tabulku registrů. Záznamu měřiče i každé hodnotě měřiče přidělí vlastní blok 10 holding registrů a začátek každého bloku ukáže ve sloupci Register na kartě Meter. Pořadí hodnot odpovídá pořadí, v jakém měřič posílá své záznamy M-Bus, takže závisí na modelu měřiče.

NastaveníCo zadat
IP adresaAdresa brány
SlaveIdS multi slave: číslo ze sloupce Register v řádku měřiče. Bez multi slave: 255
RegMeterS multi slave: 10 (záznam měřiče začíná v každém virtuálním slave na 10). Bez multi slave: číslo ze sloupce Register v řádku měřiče
RegEnergy, RegVolume, RegPower, RegFlow, RegFlowTemp, RegReturnTempČíslo ze sloupce Register v řádku příslušné hodnoty. Který řádek je který, ukazují sloupce Description a Unit na kartě Meter

Na IP adresu a SlaveId se šablona ptá při importu; sedm hodnot Reg… jsou proměnné modulu. Jejich výchozí hodnoty (10, 20, 30 … 70) jsou zástupné: 10 a 20 odpovídají testovacímu režimu brány, ostatní jen pokračují po 10. Vždy je přepište.

Každé zařízení před zobrazením hodnoty zkontroluje typ záznamu a jednotku svého bloku. Nesprávné číslo vyvolá na zařízení chybu, která jmenuje proměnnou modulu, například RegPower does not point to a power value … – copy the Register number of this value from the gateway Meter tab.

Kontrola spojení

Když je na kartě Server zapnutý Modbus test, brána poskytuje statická testovací data: záznam měřiče na registru 10 a hodnotu energie 1234,5678 Wh na registru 20. S výchozími proměnnými modulu pak Tepelná energie ukáže 1,2 kWh s varováním, že médium testovacího měřiče není teplo (testovací měřič je elektroměr). To dokazuje, že IP adresa, port, adresa slave, čísla registrů a pořadí slov jsou správné. Ostatní zařízení hlásí chyby, protože testovací data další hodnoty nemají. Testovací režim pak vypněte.

Možnosti zařízení

ZařízeníJednotkaCo ukazuje
Tepelná energiekWhCelková tepelná energie, přepočtená z Wh nebo J a zaokrouhlená na 0,1 kWh
Objem topné vodym³Celkový objem topné vody
Tepelný výkonkWOkamžitý tepelný výkon, přepočtený z W nebo J/h
Průtokm³/hOkamžitý průtok, přepočtený z m³/min nebo m³/s, když měřič posílá tyto jednotky
Teplota přívodu°CTeplota přívodu topného okruhu
Teplota zpátečky°CTeplota zpátečky topného okruhu

Stav měřiče

Tepelná energie sleduje i samotný měřič. Ukáže chybu, když RegMeter neukazuje na záznam měřiče nebo když brána při posledním odečtu měřič nepřečetla, a varování, když nebyly aktualizovány všechny hodnoty nebo když médium měřiče není teplo ani chlad. Má dva servisní atributy:

Servisní atributPopis
Výrobní číslo měřičeVýrobní číslo měřiče pro ověření, že modul čte správný měřič
Poslední odečet měřičePočet minut od posledního odečtu měřiče bránou

Všechny hodnoty se mění jen při každém odečtu brány; zařízení se brány ptají každých 15 s.

Řešení problémů

Žádná komunikace

Zkontrolujte, že je Modbus zapnutý na kartě Server, že port je na obou stranách 502 a že jej neblokuje firewall. TapHome a brána musí být ve stejné podsíti nebo mít funkční směrovací cestu; pomůže ping na bránu. Pak použijte kontrolu spojení popsanou výše.

Chyba, která jmenuje proměnnou modulu

Číslo v této proměnné ukazuje na blok jiného typu nebo jednotky. Číslo Register znovu zkopírujte z karty Meter; při multi slave zkontrolujte i SlaveId.

Hodnoty se nemění

Zkontrolujte cyklus odečtu brány a limit odečtů měřiče. Systémový čas brány musí být správný (nastavený ručně nebo přes SNTP), jinak je stáří posledního odečtu nesprávné.

Malá odchylka od hodnoty na webové stránce brány

Šablona čte hodnotu s plovoucí desetinnou čárkou, která má přibližně 7 platných číslic. Před porovnáním znovu načtěte kartu Meter brány.

Další klienti Modbus na stejné bráně

Brána obsluhuje současně nejvýše pět spojení Modbus TCP; při překročení limitu zavře nejstarší. Myslete na to, když stejnou bránu čte i systém řízení budovy nebo displej.

Dostupná zařízení

solvimus MBUS-GEM – heat meter Modul
Vlastní proměnné
RegMeter (numeric) = 10Začátek záznamu měřiče (výrobní číslo, čas odečtu, stav čtení) — 10 při Modbus multi slave, jinak číslo ze sloupce Register v řádku měřiče na kartě Meter brány
RegEnergy (numeric) = 20Začátek hodnoty energie (Wh nebo J) — číslo ze sloupce Register v jejím řádku na kartě Meter brány
RegVolume (numeric) = 30Začátek hodnoty objemu (m³) — číslo ze sloupce Register v jejím řádku na kartě Meter brány
RegPower (numeric) = 40Začátek hodnoty výkonu (W nebo J/h) — číslo ze sloupce Register v jejím řádku na kartě Meter brány
RegFlow (numeric) = 50Začátek hodnoty průtoku (m³/h, m³/min nebo m³/s) — číslo ze sloupce Register v jejím řádku na kartě Meter brány
RegFlowTemp (numeric) = 60Začátek hodnoty teploty přívodu (°C) — číslo ze sloupce Register v jejím řádku na kartě Meter brány
RegReturnTemp (numeric) = 70Začátek hodnoty teploty zpátečky (°C) — číslo ze sloupce Register v jejím řádku na kartě Meter brány
Tepelná energie Proměnná Pouze ke čtení

Celková tepelná energie měřiče v kWh; hlásí i to, když brána měřič nepřečetla nebo hodnoty nejsou aktuální

Registr: H:RegEnergy+4 Float Jednotka: kWh
Servisní atributy
Výrobní číslo měřičeVýrobní číslo měřiče pro ověření, že modul čte správný měřič
Poslední odečet měřičePočet minut od posledního odečtu měřiče bránou

Tepelná energie

Čtení
VAR info := MODBUSR(H, RegEnergy+7, UInt16);
VAR unit := GETBITS(info, 0, 8);
VAR factor := SWITCH(unit, 5, 1000, 6, 3600000, 0);
IF GETBITS(info, 8, 8) != 0 OR factor = 0
    ADDERROR(1, "RegEnergy does not point to an energy value (entry type " + TOSTRING(GETBITS(info, 8, 8)) + ", unit code " + TOSTRING(unit) + ") – copy the Register number of this value from the gateway Meter tab");
    RETURN(NaN);
END
RETURN(ROUND(MODBUSR(H, RegEnergy+4, Float) / factor * 10) / 10);
Čtení (modul)
VAR meterInfo := MODBUSR(H, RegMeter+7, UInt16);
VAR medium := 0;
VAR flags := 0;
IF GETBITS(meterInfo, 8, 8) != 2
    ADDERROR(1, "RegMeter does not point to a meter entry (entry type " + TOSTRING(GETBITS(meterInfo, 8, 8)) + ") – set RegMeter to the start of the meter entry (10 with Modbus multi slave, otherwise the Register number of the meter row in the gateway Meter tab)");
ELSE
    medium := GETBITS(MODBUSR(H, RegMeter+3, UInt16), 0, 8);
    IF medium != 4 AND medium != 10 AND medium != 11 AND medium != 12 AND medium != 13
        ADDWARNING(2, "RegMeter points to a meter with medium code " + TOSTRING(medium) + ", which is not a heat meter – check that RegMeter and SlaveId belong to the heat meter");
    END
    flags := MODBUSR(H, RegMeter+8, UInt16);
    IF GETBIT(flags, 0)
        ADDERROR(3, "The gateway could not read the meter in its last readout – check the M-Bus wiring, the meter address and the meter list of the gateway");
    ELSEIF GETBIT(flags, 1)
        ADDWARNING(4, "Not all meter values were updated in the last gateway readout");
    END
END
Servisní atributy
Meter serial number
TOSTRING(MODBUSR(H, RegMeter+0, UInt32))
Last meter readout
DATETIME t := NOW();
VAR ts := MODBUSR(H, RegMeter+4, UInt32);
IF(ts = 0, "No readout yet", TOSTRING(ROUND((t.UNIXTIME - ts) / 60)) + " min ago")
Objem topné vody Proměnná Pouze ke čtení

Celkový objem topné vody, která protekla měřičem, v m³

Registr: H:RegVolume+4 Float Jednotka: m³

Objem topné vody

Čtení
VAR info := MODBUSR(H, RegVolume+7, UInt16);
VAR unit := GETBITS(info, 0, 8);
VAR factor := SWITCH(unit, 7, 1, 0);
IF GETBITS(info, 8, 8) != 0 OR factor = 0
    ADDERROR(1, "RegVolume does not point to a volume value in m³ (entry type " + TOSTRING(GETBITS(info, 8, 8)) + ", unit code " + TOSTRING(unit) + ") – copy the Register number of this value from the gateway Meter tab");
    RETURN(NaN);
END
RETURN(ROUND(MODBUSR(H, RegVolume+4, Float) * factor * 1000) / 1000);
Tepelný výkon Proměnná Pouze ke čtení
Registr: H:RegPower+4 Float Jednotka: kW

Tepelný výkon

Čtení
VAR info := MODBUSR(H, RegPower+7, UInt16);
VAR unit := GETBITS(info, 0, 8);
VAR factor := SWITCH(unit, 13, 1000, 14, 3600000, 0);
IF GETBITS(info, 8, 8) != 0 OR factor = 0
    ADDERROR(1, "RegPower does not point to a power value (entry type " + TOSTRING(GETBITS(info, 8, 8)) + ", unit code " + TOSTRING(unit) + ") – copy the Register number of this value from the gateway Meter tab");
    RETURN(NaN);
END
RETURN(MODBUSR(H, RegPower+4, Float) / factor);
Průtok Proměnná Pouze ke čtení
Registr: H:RegFlow+4 Float Jednotka: m³/h

Průtok

Čtení
VAR info := MODBUSR(H, RegFlow+7, UInt16);
VAR unit := GETBITS(info, 0, 8);
VAR factor := SWITCH(unit, 15, 1, 16, 60, 17, 3600, 0);
IF GETBITS(info, 8, 8) != 0 OR factor = 0
    ADDERROR(1, "RegFlow does not point to a volume flow value (entry type " + TOSTRING(GETBITS(info, 8, 8)) + ", unit code " + TOSTRING(unit) + ") – copy the Register number of this value from the gateway Meter tab");
    RETURN(NaN);
END
RETURN(MODBUSR(H, RegFlow+4, Float) * factor);
Teplota přívodu Teplotní senzor Pouze ke čtení

Teplota přívodu topného okruhu měřená měřičem

Registr: H:RegFlowTemp+4 Float Jednotka: °C

Teplota přívodu

Čtení teploty
VAR info := MODBUSR(H, RegFlowTemp+7, UInt16);
VAR unit := GETBITS(info, 0, 8);
VAR factor := SWITCH(unit, 19, 1, 0);
IF GETBITS(info, 8, 8) != 0 OR factor = 0
    ADDERROR(1, "RegFlowTemp does not point to a temperature value in °C (entry type " + TOSTRING(GETBITS(info, 8, 8)) + ", unit code " + TOSTRING(unit) + ") – copy the Register number of this value from the gateway Meter tab");
    RETURN(NaN);
END
RETURN(MODBUSR(H, RegFlowTemp+4, Float) * factor);
Teplota zpátečky Teplotní senzor Pouze ke čtení

Teplota zpátečky topného okruhu měřená měřičem

Registr: H:RegReturnTemp+4 Float Jednotka: °C

Teplota zpátečky

Čtení teploty
VAR info := MODBUSR(H, RegReturnTemp+7, UInt16);
VAR unit := GETBITS(info, 0, 8);
VAR factor := SWITCH(unit, 19, 1, 0);
IF GETBITS(info, 8, 8) != 0 OR factor = 0
    ADDERROR(1, "RegReturnTemp does not point to a temperature value in °C (entry type " + TOSTRING(GETBITS(info, 8, 8)) + ", unit code " + TOSTRING(unit) + ") – copy the Register number of this value from the gateway Meter tab");
    RETURN(NaN);
END
RETURN(MODBUSR(H, RegReturnTemp+4, Float) * factor);
Připojení: Modbus TCP • Slave ID: $[SlaveId]
Možná vylepšení (6)
  • H:RegX+0 … H:RegX+3, H:RegX+6 Unscaled 64-bit meter value with scaling factor — The manual prefers the INT64 value with its power-of-ten scaling factor for exact billing; the template reads the FLOAT32 value (about 7 significant digits).
  • value block with unit K (code 20) Temperature difference — Many heat meters also send the temperature difference between flow and return; it would be one more value block.
  • second energy value block (combined heat/cooling meter, medium 13) Cooling energy — A combined heat/cooling meter sends a separate cooling energy value; the template reads one energy value.
  • value blocks with a storage number Historic meter values — Stored values such as the reading on the billing date appear as further value rows in the Meter tab.
  • H:RegX+8 Meter value timestamp — UNIX time the meter provides for each value (0 if none); the template uses the readout time of the meter entry instead.
  • H:0 … H:9 (slave 255) Gateway device entry — Serial number, software version and system time of the gateway itself.

Zdroje

  • solvimus MBUS-GEM User manual v1.31 (Modbus TCP server, network configuration)
  • solvimus MBUS-GEM datasheets (MBUS-GE20M/80M and MBUS-GE125M/250M/500M)

Našli jste problém s touto šablonou zařízení?

Napište nám, co nefunguje, co chybí, nebo jak by se měla šablona chovat. Vaše zpětná vazba nám pomáhá udržet katalog přesný.

Komunita — neověřeno

Chcete to použít ve svém TapHome jádře?

Otevřete tuto šablonu v zákaznickém portálu a použijte ji ve svém domově, nebo navrhněte úpravu a odešlete ji zpět do katalogu.

Otevřít v portálu