Droga 1: Modbus TCP
- W M-Center wpisać kod OBIS przy wybranych rejestrach. Stan poboru w taryfie 1 (1-0:1.8.1) jest wtedy w rejestrze 1030.
- W Node-RED dodać węzeł «Modbus Read». Serwer: IP M-Center, port 502, typ TCP.
- Unit-ID: adres urządzenia Modbus licznika w M-Center.
- FC 3 (Read Holding Registers), adres 1029 dla rejestru 1030, liczba 2, interwał odpytywania np. 15 minut.
- Dołączyć węzeł funkcji, który składa dwa rejestry w liczbę zmiennoprzecinkową.
// Dwa rejestry 16-bitowe (big endian, starsze słowo najpierw) -> 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 = "mieszkanie1/pobor_t1";
return msg;
Instrukcja liczy rejestry od 1, node-red-contrib-modbus oczekuje adresu od 0. Dlatego 1029 dla rejestru 1030. Proszę porównać pierwszą wartość ze stanem licznika w M-Center.
Dla kilku liczników tworzy się po jednym węźle odczytu na licznik z własnym Unit-ID. Adresy pozostają takie same, dopóki kody OBIS są wpisane.
Droga 2: MQTT
Z licencją MQTT M-Center publikuje każdą wartość pod własnym tematem. Węzeł «mqtt in» z subskrypcją wieloznaczną odbiera wszystkie wartości jednego M-Center:
<prefiks>/emu/mcenter/<MAC>/meterreading/#
Najpierw proszę dołączyć węzeł debug i obejrzeć tematy oraz treść wiadomości. Następnie rozdzielić wartości według tematu węzłem switch, np. według kodu OBIS na końcu ścieżki.
Która droga?
| Modbus TCP | MQTT | |
|---|---|---|
| Adresy | stałe, udokumentowane w instrukcji | temat na licznik i rejestr |
| Odpytywanie | Node-RED odpytuje aktywnie | M-Center wysyła samodzielnie |
| Kolejne systemy | osobne odpytywanie dla każdego systemu | dowolna liczba subskrybentów w brokerze |
| Licencja | 210.300.04 | 210.300.03 |