Vej 1: Modbus TCP
- Angiv OBIS-koden for de ønskede registre i M-Center. Forbrug tarif 1 (1-0:1.8.1) ligger så i register 1030.
- Tilføj en node «Modbus Read» i Node-RED. Server: IP for M-Center, port 502, type TCP.
- Unit-ID: målerens Modbus-enhedsadresse i M-Center.
- FC 3 (Read Holding Registers), adresse 1029 for register 1030, antal 2, pollinterval f.eks. 15 minutter.
- Tilkobl en function-node, der sætter de to registre sammen til et kommatal.
// To 16-bit-registre (big endian, høje ord først) -> 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 = "lejlighed1/forbrug_t1";
return msg;
Manualen tæller registre fra 1, node-red-contrib-modbus forventer adressen fra 0. Derfor 1029 for register 1030. Sammenlign den første værdi med målerstanden i M-Center.
Til flere målere opretter du én læsenode pr. måler med eget Unit-ID. Adresserne forbliver de samme, så længe OBIS-koderne er angivet.
Vej 2: MQTT
Med MQTT-licensen publicerer M-Center hver værdi under sit eget topic. En «mqtt in»-node med wildcard-abonnement modtager alle værdier fra ét M-Center:
<præfiks>/emu/mcenter/<MAC>/meterreading/#
Tilkobl først en debug-node, og se topics og beskedindhold igennem. Del derefter værdierne op pr. topic med en switch-node, f.eks. efter OBIS-koden i slutningen af stien.
Hvilken vej?
| Modbus TCP | MQTT | |
|---|---|---|
| Adresser | faste, dokumenteret i manualen | topic pr. måler og register |
| Forespørgsel | Node-RED spørger aktivt | M-Center sender selv |
| Flere systemer | egen forespørgsel pr. system | vilkårligt mange abonnenter i brokeren |
| Licens | 210.300.04 | 210.300.03 |