Wissen/Integration/Node-RED

AnleitungM-Center

M-Bus-Zähler mit dem M-Center in Node-RED

Node-RED eignet sich, um Zählerwerte umzurechnen, zu filtern und an weitere Systeme zu verteilen. Die Werte holt es sich vom EMU M-Center, entweder per Modbus TCP oder per MQTT.

Das brauchen Sie

  • Ein eingerichtetes M-Center mit Modbus-TCP-Server-Lizenz (210.300.04) oder MQTT-Lizenz (210.300.03).
  • Für Modbus das Paket node-red-contrib-modbus, installierbar über «Palette verwalten».
  • Für MQTT einen Broker, den M-Center und Node-RED erreichen.

Weg 1: Modbus TCP

  1. Im M-Center bei den gewünschten Registern den OBIS-Code hinterlegen. Der Zählerstand Bezug Tarif 1 (1-0:1.8.1) liegt dann bei Register 1030.
  2. In Node-RED einen Knoten «Modbus Read» einfügen. Server: IP des M-Centers, Port 502, Typ TCP.
  3. Unit-ID: die Modbus-Geräteadresse des Zählers im M-Center.
  4. FC 3 (Read Holding Registers), Adresse 1029 für Register 1030, Anzahl 2, Abfrageintervall zum Beispiel 15 Minuten.
  5. Einen Funktionsknoten anhängen, der die zwei Register zu einer Fliesskommazahl zusammensetzt.
// Zwei 16-Bit-Register (Big Endian, höheres Wort zuerst) -> float32
const buf = Buffer.alloc(4);
buf.writeUInt16BE(msg.payload[0], 0);
buf.writeUInt16BE(msg.payload[1], 2);
msg.payload = buf.readFloatBE(0);
msg.topic = "wohnung1/bezug_t1";
return msg;

Das Handbuch zählt die Register ab 1, node-red-contrib-modbus erwartet die Adresse ab 0. Deshalb 1029 für Register 1030. Vergleichen Sie den ersten Wert mit dem Zählerstand im M-Center.

Für mehrere Zähler legen Sie pro Zähler einen Lese-Knoten mit eigener Unit-ID an. Die Adressen bleiben gleich, solange die OBIS-Codes hinterlegt sind.

Weg 2: MQTT

Mit MQTT-Lizenz publiziert das M-Center jeden Wert unter einem eigenen Topic. Ein Knoten «mqtt in» mit einem Platzhalter-Abo empfängt alle Werte eines M-Centers:

<Präfix>/emu/mcenter/<MAC>/meterreading/#

Hängen Sie zuerst einen Debug-Knoten an und sehen Sie sich Topics und Inhalt der Nachrichten an. Danach trennen Sie die Werte mit einem Switch-Knoten nach Topic, zum Beispiel nach dem OBIS-Code am Ende des Pfads.

Welcher Weg?

Modbus TCPMQTT
Adressenfest, im Handbuch dokumentiertTopic je Zähler und Register
AbfrageNode-RED fragt aktiv abM-Center sendet von selbst
Weitere Systemeje System eine eigene Abfragebeliebig viele Abonnenten am Broker
Lizenz210.300.04210.300.03

Häufige Fragen


Kann Node-RED die Statusregister lesen?

Ja. Ab Register 11910 (float32) bzw. 11912 (uint64) steht der Statuscode der letzten Auslesung: 1 erfolgreich, 2 nicht erfolgreich, 3 erfolgreich mit Meldung vom Zähler. Lesen Sie Statusregister als uint64.

Wie lese ich uint64?

Vier Register ab der uint64-Adresse lesen, zum Beispiel ab 1031 für Register 1032, und im Funktionsknoten mit buf.readBigUInt64BE(0) auswerten.

Weiterlesen


SEITEM-Bus zu Modbus TCPRegistertabelle SEITEM-Bus zu MQTTTopic-Struktur SEITEZählerdaten in GrafanaAnleitung SEITEWeitere IntegrationenÜbersicht

Fragen zur Einbindung?


Schicken Sie uns Ihre Zählerliste. Wir helfen bei Adressen, OBIS-Codes und Lizenzen.

Telefon
+41 (0)41 545 03 00

Technischer Support
helpdesk [at] emuag.ch
Supportformular →