TapHome

solvimus MBUS-GEM – M-Bus-Wasserzähler

Modbus TCP
Eingereicht von
Zuletzt aktualisiert: 11. 2026
solvimus MBUS-GEM – M-Bus-Wasserzähler

TapHome hat keine eigene M-Bus-Schnittstelle. Ein drahtgebundener M-Bus-Wasserzähler wird über ein Gateway von M-Bus auf Modbus angeschlossen, und TapHome liest ihn als Modbus-TCP-Gerät. Diese Vorlage nutzt das Gateway solvimus MBUS-GEM (MBUS-GE20M, MBUS-GE80M, MBUS-GE125M, MBUS-GE250M, MBUS-GE500M): Das Gateway liest die Zähler an seinem M-Bus und stellt ihre Daten als Modbus-TCP-Server an Port 502 bereit. Ein importiertes Modul entspricht einem Wasserzähler; für weitere Zähler wird die Vorlage erneut importiert.

Die Vorlage liest das Wasservolumen in m³, den Durchfluss, den der Zähler selbst meldet, und den mittleren Durchfluss zwischen zwei Auslesungen des Gateways in l/h. Der mittlere Durchfluss dient der Leckerkennung: smart rules in TapHome können ihn mit Grenzwerten vergleichen, zum Beispiel um Alarm auszulösen, wenn nachts weiter Wasser fließt.

Community-Vorlage — noch nicht auf Hardware getestet. Die Vorlage wurde im TapHome-Portal aus dem Benutzerhandbuch des solvimus MBUS-GEM (Version 1.31) erstellt. Sie lief weder an einem echten Gateway mit Zähler noch an einem Simulator. Ihre Registernummern (RegMeter, RegVolume, RegFlow) sind Platzhalter: Nach dem Import setzt der Installateur sie anhand der Spalte Register im Reiter Meter des Gateways. Prüfen Sie die Verbindung mit dem Testmodus des Gateways (siehe Konfiguration), bevor Sie sich auf die Werte verlassen; Erfahrungen aus der Praxis sind willkommen. Laden Sie das XML auf dieser Seite herunter oder holen Sie es aus dem TapHome-Portal: solvimus MBUS-GEM – M-Bus-Wasserzähler — Community-Vorlage, und importieren Sie es als neues Modul.

Was Sie brauchen

  • Ein Gateway solvimus MBUS-GEM für drahtgebundenen M-Bus mit Modbus TCP: MBUS-GE20M, MBUS-GE80M, MBUS-GE125M, MBUS-GE250M oder MBUS-GE500M. Das MBUS-GEWM ist die Variante für Funk-M-Bus und wird von dieser Vorlage nicht abgedeckt.
  • Einen drahtgebundenen M-Bus-Wasserzähler (EN 13757), den das Gateway auslesen kann. Ultraschall-Wasserzähler melden in der Regel auch den Durchfluss.
  • Gateway und Steuereinheit Core im selben lokalen Netzwerk.

Hardware-Anschluss

Das MBUS-GEM wird auf eine 35-mm-Hutschiene montiert und hat Schraubklemmen für den M-Bus und die Stromversorgung sowie einen Ethernet-Anschluss RJ45 (10/100 Mbit/s).

ModellM-Bus-LastenBreiteStromversorgungM-Bus-Baudrate
MBUS-GE20M202 Teilungseinheiten21,6–24,5 VDCmax. 19200 bps
MBUS-GE80M802 Teilungseinheiten21,6–24,5 VDCmax. 19200 bps
MBUS-GE125M1253 Teilungseinheiten12–36 VDCmax. 9600 bps
MBUS-GE250M2503 Teilungseinheiten12–36 VDCmax. 9600 bps
MBUS-GE500M5003 Teilungseinheiten12–36 VDCmax. 9600 bps

Eine M-Bus-Last (UL, unit load) entspricht meist einem Zähler.

  1. Schließen Sie die M-Bus-Leitung des Wasserzählers an die M-Bus-Klemmen des Gateways an.
  2. Verbinden Sie das Gateway mit einem Ethernet-Kabel mit dem lokalen Netzwerk.
  3. Schließen Sie eine externe Stromversorgung mit 24 VDC an. Das Gateway startet von selbst.

Konfiguration

Netzwerk und Zählerliste

Das Gateway wird mit der statischen IP-Adresse 192.168.1.101 ausgeliefert (Subnetzmaske 255.255.255.0, Standardgateway 192.168.1.254); seine Weboberfläche öffnet sich unter http://192.168.1.101/. Bei der ersten Anmeldung muss der Administrator das Passwort ändern. Das solvimus-Werkzeug Netdiscover findet das Gateway im Netzwerk und kann es auf eine andere statische Adresse oder auf DHCP umstellen; mit DHCP finden Sie die zugewiesene Adresse im DHCP-Server anhand der MAC-Adresse des Gateways. Ohne DHCP-Server wählt das Gateway eine Adresse aus 169.254.x.x. Die Vorlage spricht das Gateway über die IP-Adresse an, geben Sie ihm daher eine feste Adresse oder eine DHCP-Reservierung.

Suchen Sie in der Weboberfläche die Zähler am M-Bus, damit der Wasserzähler in der Zählerliste im Reiter Meter erscheint, zusammen mit seinen Werten (Volumen und, falls der Zähler ihn meldet, Durchfluss).

Modbus-Einstellungen im Reiter Server

  1. Stellen Sie Modbus mode auf Modbus TCP und lassen Sie Modbus port auf 502.
  2. Lassen Sie Modbus float only aus. Dieser Modus entfernt die Typ- und Einheitenfelder, die die Vorlage prüft.
  3. Lassen Sie Modbus swap aus. Die Vorlage erwartet die Standard-Wortreihenfolge (höchstwertiges Wort zuerst).
  4. Modbus multi slave einzuschalten wird empfohlen. Jeder Zähler wird dann ein eigener virtueller Modbus-Slave mit eigener Adresse (1–247), und die Registernummerierung beginnt bei jedem Zähler neu, sodass Zähler desselben Typs dieselben Registernummern haben.

Nach dem Ein- oder Ausschalten von multi slave müssen die Adressen im Reiter Meter neu vergeben werden (Kontextmenü Allocate).

Auslesezyklus

Das Gateway liest die Zähler unabhängig von den Modbus-Anfragen: im Readout cycle im Reiter Configuration oder im Cycle (in Sekunden) des einzelnen Zählers im Reiter Meter. Diese Einstellungen bestimmen, wie aktuell die Werte in TapHome sind. Manche batteriebetriebene M-Bus-Zähler erlauben nur eine begrenzte Zahl von Auslesungen pro Tag; prüfen Sie das Datenblatt des Zählers, bevor Sie einen kurzen Zyklus wählen.

Einstellungen der Vorlage nach dem Import

Das Gateway hat keine feste Registertabelle. Jeder Zählereintrag und jeder Zählerwert erhält einen eigenen Block aus 10 Holding-Registern, und den Anfang jedes Blocks zeigt die Spalte Register im Reiter Meter. Die Reihenfolge der Werte folgt der Reihenfolge, in der der Zähler seine M-Bus-Datensätze sendet, und unterscheidet sich daher zwischen Zählermodellen. Die Vorlage hält deshalb den Anfang jedes Blocks in einer Modulvariablen und berechnet jede Registeradresse daraus.

EinstellungWoWert
IP-AdresseImportparameterAdresse des Gateways (der Importdialog schlägt 192.168.1.100 vor; das Gateway wird mit 192.168.1.101 ausgeliefert)
SlaveIdImportparameter (Standard 1)Mit multi slave: die Zahl in der Spalte Register in der Zeile des Zählers. Ohne multi slave: 255
RegMeterModulvariable (Standard 10)Mit multi slave: 10 (der Zählereintrag beginnt in jedem virtuellen Slave bei 10). Ohne multi slave: die Zahl in der Spalte Register in der Zeile des Zählers
RegVolumeModulvariable (Standard 20)Die Zahl in der Spalte Register in der Zeile des Volumens (Einheit m³)
RegFlowModulvariable (Standard 30)Die Zahl in der Spalte Register in der Zeile des Durchflusses (Einheit m³/h, m³/min oder m³/s)

Die Standardwerte 10, 20 und 30 entsprechen nur dem Aufbau des Testmodus des Gateways; überschreiben Sie sie mit den Nummern des echten Zählers.

Jedes Gerät prüft den Eintragstyp und die Einheit seines Blocks. Eine falsche Nummer zeigt am Gerät einen Fehler, der die Modulvariable nennt, zum Beispiel RegVolume does not point to a volume value in m³ … copy the Register number of this value from the gateway Meter tab.

Verbindungstest mit Modbus test

Ist Modbus test im Reiter Server eingeschaltet, liefert das Gateway statische Testdaten: einen Zählereintrag an Register 10 und einen Energiewert (Einheit Wh, 1234,5678 Wh) an Register 20. Mit den Standardwerten der Modulvariablen akzeptiert Wasservolumen dann Register 10 als Zählereintrag (mit einer Warnung, dass das Medium des Testzählers, Code 2, kein Wasser ist) und meldet, dass Register 20 kein Volumenwert ist (Einheitencode 5). Sehen Sie genau diese Meldungen, erreichen IP-Adresse, Port, Slave-Adresse und Registernummern das Gateway wie erwartet. Schalten Sie den Testmodus danach aus und setzen Sie die Modulvariablen für den echten Zähler.

Gerätefunktionen

Alle drei Geräte sind nur lesend und werden alle 15 s gelesen. Ihre Werte ändern sich nur, wenn das Gateway den Zähler ausliest, in seinem Auslesezyklus.

Wasservolumen

Wasservolumen ist der Zählerstand in m³ mit drei Nachkommastellen, gelesen als skalierter Gleitkommawert des Volumenblocks. Das Gerät prüft auch den Zählereintrag:

MeldungArtBedeutung
RegMeter does not point to a meter entry …FehlerRegMeter zeigt auf einen Block, der kein Zählereintrag ist
RegMeter points to a meter with medium code …, which is not a water meter …WarnungDer Zähler ist kein Wasserzähler (akzeptierte Mediencodes: Wasser, Kaltwasser, Warmwasser, Heißwasser und Wasser mit Doppelregister) — prüfen Sie RegMeter und SlaveId
The gateway could not read the meter in its last readout …FehlerPrüfen Sie die M-Bus-Verdrahtung, die Zähleradresse und die Zählerliste des Gateways
Not all meter values were updated in the last gateway readoutWarnungDie letzte Auslesung war unvollständig

Das Serviceattribut Seriennummer des Zählers zeigt die Seriennummer des M-Bus-Zählers und hilft zu bestätigen, dass die Vorlage den richtigen Zähler liest. Eine Seriennummer mit Buchstaben wird als 0 angezeigt.

Mittlerer Wasserdurchfluss

Mittlerer Wasserdurchfluss ist der Volumenzuwachs zwischen den zwei letzten Auslesungen des Gateways, geteilt durch die Zeit zwischen ihren Zeitstempeln, in l/h. Er wird nur neu berechnet, wenn sich der Auslesezeitstempel des Zählers ändert, ist also der Mittelwert über einen Auslesezyklus.

  • Nach der ersten Auslesung, nach einem Neustart der Steuereinheit Core und nach einem Zählerreset (Volumen niedriger als vorher) ist der Wert bis zur nächsten Auslesung 0.
  • Liest das Gateway den Zähler nicht mehr aus, bleibt der letzte Mittelwert stehen; Wasservolumen zeigt dann den Auslesefehler.

Das Gerät liest denselben Volumenblock wie Wasservolumen. Die Leckerkennung selbst — Grenzwerte, Öffnungszeiten, Alarme — richten Sie mit smart rules in TapHome ein; die Vorlage liefert den Wert.

Wasserdurchfluss

Wasserdurchfluss ist der Durchfluss, den der Zähler selbst meldet, umgerechnet in m³/h (aus m³/h, m³/min oder m³/s). Nicht jeder M-Bus-Wasserzähler meldet einen Durchfluss; Ultraschallzähler tun es in der Regel.

Fehlerbehebung

Keine Kommunikation

  • Prüfen Sie, ob Gateway und Steuereinheit Core im selben Netzwerk sind und das Gateway auf einen Ping antwortet.
  • Prüfen Sie, ob Modbus im Reiter Server eingeschaltet ist, der Port 502 ist und keine Firewall ihn blockiert.
  • Nutzen Sie den oben beschriebenen Testmodus.
  • Das Gateway nimmt in der Standardkonfiguration bis zu fünf Modbus-TCP-Verbindungen gleichzeitig an; über dieser Grenze schließt eine neue Verbindung die älteste.

Ein Fehler nennt eine Modulvariable

Die Nummer in dieser Variablen zeigt auf einen Block eines anderen Typs oder einer anderen Einheit. Übernehmen Sie die Nummer erneut aus der Spalte Register im Reiter Meter; mit multi slave prüfen Sie auch SlaveId. Nach dem Ein- oder Ausschalten von multi slave vergeben Sie die Adressen neu (Allocate) und übernehmen die neuen Nummern.

Werte ändern sich nicht

Prüfen Sie den Auslesezyklus des Gateways und das Auslese-Limit des Zählers. Die Systemzeit des Gateways muss stimmen (manuell oder per SNTP gesetzt), sonst sind die Auslesezeitstempel und der mittlere Durchfluss falsch.

Kleine Abweichung von der Website des Gateways

Der Gleitkommawert hat etwa 7 signifikante Stellen, daher können die letzten Stellen leicht vom Wert in der Weboberfläche des Gateways abweichen.

Verfügbare Geräte

solvimus MBUS-GEM – Wasserzähler Modul
Benutzerdefinierte Variablen
RegMeter (numeric) = 10Beginn des Zählereintrags (Seriennummer, Auslesezeit, Auslesestatus) — mit Modbus multi slave 10, sonst die Zahl aus der Spalte Register in der Zeile des Zählers im Reiter Meter
RegVolume (numeric) = 20Beginn des Volumenwerts (Einheit m³) — die Zahl aus der Spalte Register in der Zeile des Volumens im Reiter Meter
RegFlow (numeric) = 30Beginn des Durchflusswerts (Einheit m³/h, m³/min oder m³/s) — die Zahl aus der Spalte Register in der Zeile des Durchflusses im Reiter Meter
Wasservolumen Variable Nur lesen

Zählerstand in m³ mit drei Nachkommastellen; zeigt einen Fehler, wenn das Gateway den Zähler nicht auslesen konnte

Register: H:RegVolume+4 Float Einheit: m³ numeric
Serviceattribute
Seriennummer des ZählersSeriennummer des M-Bus-Zählers — bestätigt, dass die Vorlage den richtigen Zähler liest

Wasservolumen

Lesen
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);
Lesen (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 != 6 AND medium != 7 AND medium != 21 AND medium != 22 AND medium != 23
        ADDWARNING(2, "RegMeter points to a meter with medium code " + TOSTRING(medium) + ", which is not a water meter – check that RegMeter and SlaveId belong to the water 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
Serviceattribute
Meter serial number
TOSTRING(MODBUSR(H, RegMeter+0, UInt32))
Mittlerer Wasserdurchfluss Variable Nur lesen

Mittlerer Durchfluss zwischen den zwei letzten Auslesungen des Gateways in l/h — zur Leckerkennung, zum Beispiel wenn nachts Wasser fließt

Register: H:RegVolume+4, H:RegMeter+4 Float, UInt32 Einheit: l/h numeric

Mittlerer Wasserdurchfluss

Lesen
VAR info := MODBUSR(H, RegVolume+7, UInt16);
VAR ts := 0;
VAR vol := 0;
IF GETBITS(info, 8, 8) != 0 OR GETBITS(info, 0, 8) != 7
    ADDERROR(1, "RegVolume does not point to a volume value in m³ (entry type " + TOSTRING(GETBITS(info, 8, 8)) + ", unit code " + TOSTRING(GETBITS(info, 0, 8)) + ") – copy the Register number of the volume value from the gateway Meter tab");
    RETURN(NaN);
END
ts := MODBUSR(H, RegMeter+4, UInt32);
IF ts = 0
    RETURN(NaN);
END
IF ts != PrevTime
    vol := MODBUSR(H, RegVolume+4, Float);
    IF PrevTime > 0 AND ts > PrevTime AND vol >= PrevVolume
        AvgFlow := (vol - PrevVolume) * 1000 * 3600 / (ts - PrevTime);
    ELSE
        AvgFlow := 0;
    END
    PrevVolume := vol;
    PrevTime := ts;
END
RETURN(AvgFlow);
Wasserdurchfluss Variable Nur lesen

Vom Zähler selbst gemeldeter Durchfluss in m³/h; er ändert sich nur bei jeder Auslesung durch das Gateway

Register: H:RegFlow+4 Float Einheit: m³/h numeric

Wasserdurchfluss

Lesen
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);
Verbindung: Modbus TCP • Slave ID: $[SlaveId]
Mögliche Verbesserungen (3)
  • H:RegVolume+0 Unscaled meter value (64-bit integer) with scaling factor — Int64 at offset 0–3 with the power-of-ten scaling factor at offset 6; preferred by the manual for exact billing, 0 when the meter sends a floating-point value. The template reads the scaled Float at offset 4.
  • H:RegVolume+8 Timestamp of the value from the meter — UNIX time provided by the meter for the value, 0 if the meter provides none. The template uses the readout time of the meter entry (H:RegMeter+4) instead.
  • H:RegMeter+2 Manufacturer code of the meter — Three letters encoded in 5-bit groups.

Quellen

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

Haben Sie ein Problem mit dieser Gerätevorlage gefunden?

Sagen Sie uns, was nicht funktioniert, was fehlt oder wie sich die Vorlage verhalten sollte. Ihr Feedback hilft uns, den Katalog genau zu halten.

Community — ungeprüft

Möchtest du das in deinem TapHome Core verwenden?

Öffne diese Vorlage im Kundenportal, um sie auf eine deiner Wohnungen anzuwenden, oder entwirf eine Anpassung und reiche sie an den Katalog ein.

Im Portal öffnen