Vei 1: Modbus TCP
- Angi OBIS-koden for de ønskede registrene i M-Center. Forbruk tariff 1 (1-0:1.8.1) ligger da i register 1030.
- Legg til en node «Modbus Read» i Node-RED. Server: IP for M-Center, port 502, type TCP.
- Unit-ID: målerens Modbus-enhetsadresse i M-Center.
- FC 3 (Read Holding Registers), adresse 1029 for register 1030, antall 2, pollintervall f.eks. 15 minutter.
- Koble på en function-node som setter sammen de to registrene til et flyttall.
// To 16-bits registre (big endian, høye 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 = "leilighet1/forbruk_t1";
return msg;
Bruksanvisningen teller registre fra 1, node-red-contrib-modbus forventer adressen fra 0. Derfor 1029 for register 1030. Sammenlign den første verdien med målerstanden i M-Center.
For flere målere oppretter du én lesenode per måler med eget Unit-ID. Adressene forblir de samme så lenge OBIS-kodene er angitt.
Vei 2: MQTT
Med MQTT-lisensen publiserer M-Center hver verdi under eget topic. En «mqtt in»-node med wildcard-abonnement mottar alle verdier fra ett M-Center:
<prefiks>/emu/mcenter/<MAC>/meterreading/#
Koble først på en debug-node og se på topics og meldingsinnhold. Del deretter opp verdiene per topic med en switch-node, f.eks. etter OBIS-koden på slutten av stien.
Hvilken vei?
| Modbus TCP | MQTT | |
|---|---|---|
| Adresser | faste, dokumentert i bruksanvisningen | topic per måler og register |
| Forespørsel | Node-RED spør aktivt | M-Center sender selv |
| Flere systemer | egen forespørsel per system | så mange abonnenter du vil i brokeren |
| Lisens | 210.300.04 | 210.300.03 |