Emula un Carlo Gavazzi EM24 con Node-Red y Modbus TCP

Carlo Gavazzi es una marca de componentes electrónicos de alta calidad. Entre esos componentes tienen unos medidores de red eléctrica que son usado por multitud de otros dispositivos como inversores solares Victron, cargadores de vehículo eléctrico Wallbox, …

Uno de esos medidores es el EM24, el cual tiene la opción de que además de disponer de conexión modbus por rs485, uno de sus modelos permite la conectividad por Modbus TCP.

¿Que es ModBus?

Modbus es un protocolo de comunicaciones muy extendido a nivel industrial y que permite que máquinas de distintos fabricantes o características se comuniquen e interactúen entre ellas. Esta interactuación permite que se puedan ejecutar o programar automatizaciones en base a estos estados o resultados.

En la comunicación modbus, tenemos dos tipos de dispositivos:

  • Maestros: Son los dispositivos que preguntan por la información. Sólo puede haber 1.
  • Esclavos: Son los que responden a las peguntas de esos maestros y facilitan la información. Puede haber 247 y cada uno tiene una dirección del 1 al 247.

La comunicación entre estos dispositivos, también puede darse de distintas formas:

  • Puerto Serie, mediante protocolo RS232/RS485/RS422 para la cual la transmisión de estos datos se hace por Modbus RTU o Modbus ASCII.
  • Ethernet, con dispositivos conectados a una red de datos, este tipo de transmisión se realiza mediante Modbus TCP.

Emulación

Para la emulación, vamos a usar Node-Red. Como ya hemos visto, NodeRed nos permite infinidad de opciones de automatización e interacción, pero en esta ocasión el propio NodeRed será el servidor modbus tcp. Será el que haga de Esclavo para los demás le pregunten.

Lógicamente los datos, para ser más reales, los sacaremos de algún sitio, ya que si nos los inventamos, no nos servirá de mucho. Para obtener los datos, usaremos el medidor Shelly EM, el cual nos dará casi todos los datos reales, aunque tendremos que trabajarlos y adaptarlo al formato que usa nativamente el Carlo Gavazzi.

Mi recomendación siempre es que para un uso en un entorno real, se use un dispositivo real, pero para pruebas nos puede servir.

Para comprobar que nuestra emulación es correcta, vamos a utilizar un Victron Venus OS, el cual soporta éste dispositivo. También podemos usar el propio software de Carlo Gavazzi para configurar el dispositivo, el cual detectará como un dispositivo real sin problemas.

Flow en Node-RED

En el post anterior ya mostré cómo instalar Node-RED fácil gracias a Docker y su imagen oficial, así que no vamos a pararnos a explicar que es o como usarlo, porque si estás en éste punto intentando emular un Carlo Gavazzi es porque ya lo tienes dominado.

Había pensado en poner para importar directamente, pero al ser tan grande, he pensado que es mejor dejar el fichero y que se importe directamente:

Importar el Flow

Para importarlo, podemos usar la combinación de teclas CTRL + i o pinchamos en el icono superior derecho y escogemos Import.

Carlo Gavazzi import flow

Hay que seleccionar el fichero Json que hemos descargado y asegurarnos que tenemos marcada la opción «import to new flow».

Configuración IP del Servidor Modbus

En caso de que no usemos nodered con docker y que tengamos más IPs en nuestro equipo, podemos especificar por que IP queremos que responda nuestro Carlo Gavazzi emulado.

Para ello, basta con ir al apartado de «Servidor Modbus Local» y editar las propiedades del servidor, cambiando la dirección 0.0.0.0 por la que nosotros queramos.

En caso de usarlo con docker, no tendremos que hacer el apartado anteriore, y sólo debemos editar el fichero de arranque del docker y añadir lo siguiente:

-p 502:502

De esta forma, abriremos también el puerto para nuestro servidor modbus sea alcanzable.

Configuración datos Shelly EM

Shelly será el origen de nuestros datos para que nuestro emulador sea real, pero se puede utilizar cualquier dispositivo que de los datos reales de medición, sólo tendrás que adaptar esos datos a la forma que usa el EM24.

Para especificar dónde tenemos nuestro Shelly EM, tendremos que ir hasta el apartado «Tomamos datos de Shelly cada 5 seg» y editar el nodo «Shelly EM», especificando la dirección IP del nuestro y a partir de ese momento empezará a enviar datos.

Hay un parámetro que no nos a nuestro Shelly y es la frecuencia en Hz de nuestra electricidad, así que la he forzado a 50Hz que es el estándar en España. Si tenemos algún otro dispositivo que si nos de esa frecuencia, como puede ser un inversor fotovoltáico o un cargador de vehículo eléctrico, podemos adaptarlo y usarla para obtener esos datos más reales.

Con esto ya tendremos nuestra emulación finalizada:

Emulación Carlo Gavazzi
Flow Carlo Gavazzi EM24

Probando su funcionamiento

Software de configuración

Lo primero que vamos a probar es si el software de configuración nos detecta nuestra emulación y nos muestra datos reales.

Para ello una vez descargado, instalado sobre un equipo windows y ejecutado, nos tiene que detectar en nuestra red un nuevo equipo de medida:

Universal Software

Si el propio software del fabricante nos lo detecta, es señal de que ya podemos empezar a usarlo.

Integración en el ecosistema Victron

Victron es una marca Holandesa de inversores y cargadores de muy alta calidad, que permite la integración de otros fabricantes en su ecosistema, dotándolo de un mayor control o «potencia» mediante esos dispositivos y comunicación con sus equipos.

Lógicamente si estás usando esto es porque tienes una instalación, con lo que tampoco es necesario que te cuente que es o que hacen.

Lo primero es entrar en la configuración del Cerbo GX, o VenusOS e ir a Dispositivos Modbus TCP

Victron Modbus TCP

Escaneamos y nos debe detectar nuestro dispositivo:

VictronModbusTCPDispositivos

Con esto ya tenemos que tener nuestro dispositivo listo para usar y dando datos:

VictronMedidorVirtual