Tapa 1: Modbus TCP
- Syötä M-Centerissä OBIS-koodi haluttuihin rekistereihin. Tariffin 1 kulutus (1-0:1.8.1) on silloin rekisterissä 1030.
- Lisää Node-RED:iin solmu «Modbus Read». Palvelin: M-Centerin IP, portti 502, tyyppi TCP.
- Unit-ID: mittarin Modbus-laiteosoite M-Centerissä.
- FC 3 (Read Holding Registers), osoite 1029 rekisterille 1030, määrä 2, kyselyväli esim. 15 minuuttia.
- Liitä perään function-solmu, joka yhdistää kaksi rekisteriä liukuluvuksi.
// Kaksi 16-bittistä rekisteriä (big endian, ylempi sana ensin) -> 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 = "asunto1/kulutus_t1";
return msg;
Käyttöohje laskee rekisterit yhdestä, node-red-contrib-modbus odottaa osoitetta nollasta. Siksi 1029 rekisterille 1030. Vertaa ensimmäistä arvoa M-Centerin mittarilukemaan.
Useille mittareille luodaan yksi lukusolmu mittaria kohden omalla Unit-ID:llä. Osoitteet pysyvät samoina, kunhan OBIS-koodit on syötetty.
Tapa 2: MQTT
MQTT-lisenssillä M-Center julkaisee jokaisen arvon omalla topicillaan. «mqtt in» -solmu jokerimerkkitilauksella vastaanottaa yhden M-Centerin kaikki arvot:
<etuliite>/emu/mcenter/<MAC>/meterreading/#
Liitä ensin debug-solmu ja tarkastele topiceja ja viestien sisältöä. Jaa sitten arvot topicin mukaan switch-solmulla, esim. polun lopussa olevan OBIS-koodin mukaan.
Kumpi tapa?
| Modbus TCP | MQTT | |
|---|---|---|
| Osoitteet | kiinteät, dokumentoitu käyttöohjeessa | topic mittaria ja rekisteriä kohden |
| Kysely | Node-RED kysyy aktiivisesti | M-Center lähettää itse |
| Muut järjestelmät | oma kysely jokaiselle järjestelmälle | vapaa määrä tilaajia välittäjässä |
| Lisenssi | 210.300.04 | 210.300.03 |