Weg 1: Modbus TCP
- In het M-Center bij de gewenste registers de OBIS-code vastleggen. De meterstand verbruik tarief 1 (1-0:1.8.1) staat dan op register 1030.
- In Node-RED een knooppunt «Modbus Read» toevoegen. Server: IP van het M-Center, poort 502, type TCP.
- Unit-ID: het Modbus-apparaatadres van de meter in het M-Center.
- FC 3 (Read Holding Registers), adres 1029 voor register 1030, aantal 2, opvraaginterval bijvoorbeeld 15 minuten.
- Een functieknooppunt toevoegen dat de twee registers samenvoegt tot een drijvendekommagetal.
// Twee 16-bit-registers (big endian, hoogste woord eerst) -> 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 = "woning1/verbruik_t1";
return msg;
De handleiding telt de registers vanaf 1, node-red-contrib-modbus verwacht het adres vanaf 0. Daarom 1029 voor register 1030. Vergelijk de eerste waarde met de meterstand in het M-Center.
Maak voor meerdere meters per meter een leesknooppunt met een eigen Unit-ID aan. De adressen blijven gelijk zolang de OBIS-codes zijn vastgelegd.
Weg 2: MQTT
Met MQTT-licentie publiceert het M-Center elke waarde onder een eigen topic. Een knooppunt «mqtt in» met een wildcard-abonnement ontvangt alle waarden van een M-Center:
<prefix>/emu/mcenter/<MAC>/meterreading/#
Hang eerst een debug-knooppunt aan en bekijk topics en inhoud van de berichten. Scheid daarna de waarden per topic met een switch-knooppunt, bijvoorbeeld op de OBIS-code aan het einde van het pad.
Welke weg?
| Modbus TCP | MQTT | |
|---|---|---|
| Adressen | vast, gedocumenteerd in de handleiding | topic per meter en register |
| Opvraging | Node-RED vraagt actief op | M-Center verstuurt zelf |
| Andere systemen | per systeem een eigen opvraging | onbeperkt aantal abonnees op de broker |
| Licentie | 210.300.04 | 210.300.03 |