Väg 1: Modbus TCP
- Ange OBIS-koden för de önskade registren i M-Center. Förbrukning tariff 1 (1-0:1.8.1) ligger då i register 1030.
- Lägg till en nod «Modbus Read» i Node-RED. Server: IP för M-Center, port 502, typ TCP.
- Unit-ID: mätarens Modbus-enhetsadress i M-Center.
- FC 3 (Read Holding Registers), adress 1029 för register 1030, antal 2, pollintervall t.ex. 15 minuter.
- Koppla på en function-nod som sätter ihop de två registren till ett flyttal.
// Två 16-bitarsregister (big endian, högre ordet 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 = "lagenhet1/forbrukning_t1";
return msg;
Manualen räknar register från 1, node-red-contrib-modbus förväntar sig adressen från 0. Därför 1029 för register 1030. Jämför det första värdet med mätarställningen i M-Center.
För flera mätare skapar du en läsnod per mätare med eget Unit-ID. Adresserna förblir desamma så länge OBIS-koderna är angivna.
Väg 2: MQTT
Med MQTT-licensen publicerar M-Center varje värde under ett eget topic. En «mqtt in»-nod med wildcard-prenumeration tar emot alla värden från ett M-Center:
<prefix>/emu/mcenter/<MAC>/meterreading/#
Koppla först på en debug-nod och titta på topics och meddelandeinnehåll. Dela sedan upp värdena per topic med en switch-nod, t.ex. enligt OBIS-koden i slutet av sökvägen.
Vilken väg?
| Modbus TCP | MQTT | |
|---|---|---|
| Adresser | fasta, dokumenterade i manualen | topic per mätare och register |
| Förfrågan | Node-RED frågar aktivt | M-Center skickar självt |
| Fler system | egen förfrågan per system | valfritt antal prenumeranter i brokern |
| Licens | 210.300.04 | 210.300.03 |