Vía 1: Modbus TCP
- En el M-Center, introducir el código OBIS de los registros deseados. La lectura de energía importada tarifa 1 (1-0:1.8.1) queda entonces en el registro 1030.
- En Node-RED, añadir un nodo «Modbus Read». Servidor: IP del M-Center, puerto 502, tipo TCP.
- Unit-ID: la dirección de dispositivo Modbus del contador en el M-Center.
- FC 3 (Read Holding Registers), dirección 1029 para el registro 1030, cantidad 2, intervalo de consulta por ejemplo 15 minutos.
- Añadir un nodo de función que una los dos registros en un número de coma flotante.
// Dos registros de 16 bits (big endian, palabra alta primero) -> 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 = "vivienda1/importada_t1";
return msg;
El manual cuenta los registros desde 1, node-red-contrib-modbus espera la dirección desde 0. Por eso 1029 para el registro 1030. Compare el primer valor con la lectura en el M-Center.
Para varios contadores, cree un nodo de lectura por contador con su propio Unit-ID. Las direcciones no cambian mientras los códigos OBIS estén introducidos.
Vía 2: MQTT
Con la licencia MQTT, el M-Center publica cada valor con su propio topic. Un nodo «mqtt in» con una suscripción comodín recibe todos los valores de un M-Center:
<prefijo>/emu/mcenter/<MAC>/meterreading/#
Conecte primero un nodo debug y observe los topics y el contenido de los mensajes. Después separe los valores por topic con un nodo switch, por ejemplo según el código OBIS al final de la ruta.
¿Qué vía?
| Modbus TCP | MQTT | |
|---|---|---|
| Direcciones | fijas, documentadas en el manual | topic por contador y registro |
| Consulta | Node-RED consulta activamente | el M-Center envía por sí mismo |
| Otros sistemas | una consulta propia por sistema | tantos suscriptores como se quiera en el broker |
| Licencia | 210.300.04 | 210.300.03 |