Integración del inversor solar Fronius en domoticz mediante Node Red

Dividimos esta guía en varios apartados

Inversor solar FRONIUS

Este sistema está testado en varios Fronius Primo 6kW. Es extensible a otras versiones seleccionándolo en su configuración (indicado en los siguientes pasos).

Requisitos inciales

Para poder seguir este tutorial es necesario tener instalado Node Red en nuestra Raspberry, además de Domoticz, MQTT y demás.

También es fundamental, lógicamente, disponer de un inversor Fronius en nuestro poder.

Os dejamos el listado de tutoriales para poder instalar lo que necesitéis antes de empezar esta guía:

  1. Material necesario para poner en marcha domoticz
  2. Instalación de domoticz desde cero
  3. Instalación de Mosquitto MQTT Broker en Raspberry Pi 
  4. Configurar MQTT con usuario y contraseña (opcional)
  5. Cargamos MQTT en nuestro domoticz
  6. Instalar Watchdog en domoticz
  7. Crear usuario y contraseña para domoticz (opcional)
  8. Cómo instalar node red en nuestra raspberry pi

Descarga del software necesario

Damos por hecho que ya tenemos el software necesario a consecuencia del seguimiento de los tutoriales anteriores para instalar Node red y pasar, como consecuencia, a introducir el inversor solar Fronius en nuesrtro domoticz.

OJO a los que tenéis USER y PASS en MQTT de la raspberry y en MQTT de domoticz. Debéis tenerlo en cuenta a la hora de seguir el tutorial.

Creamos los Dummys (sensores) en domoticz

Iniciamos domoticz, y vamos a:

Domoticz > Setup > Hardware

Creamos uno por uno varios sensores, en total 5, clicando sobre Create Virtual Sensors:

Serán los siguientes:

  • 3 dummys tipo Usage (electric)
  • Un dummy tipo Electric (instant+counter)
  • Y un dummy tipo Voltage.

Los tres dunmys que crearemos tipo Usage (Electric) los llamaremos:

  • Consumo_Casa
  • Consumo_Red
  • Fronius_Inyeccion

Este dummy tipo Electric (Instant+Counter) lo llamaremos:

  • Fronius_Produccion

Y este dummy tipo Voltage lo llamaremos:

  • Fronius_VDC_Paneles

Nos vamos a:

Domoticz > Setup > Devices

Nos aparecen los dummys que acabamos de crear:

Anotamos los IDX y los nombres. Nos harán falta posteriormente.

Configuramos Node Red

Abrimos node red (Recuerda que accedemos a ella introduciendo la IP de nuestra raspberry seguido de :1880) y empezamos instalando dos plugins, el del fronius y el de Node Red Dashboard. Sigue las indicaciones de las imágenes:

Buscamos el primer plugin a cargar en node red: Fronius, y lo instalamos.

Buscamos el segundo plugin a cargar en node red: dashboard, y lo instalamos.

A continuación cargamos el flow que os adjuntamos de la siguiente manera:

Introducimos en el recuadro siguiente texto (lo copiamos con control +c) y lo pegamos en el recuadro (con control + v):

[{"id":"e75b92ec.aea0d","type":"tab","label":"Fronius","disabled":false,"info":""},{"id":"e81b2831.6c91c8","type":"fronius-control","z":"e75b92ec.aea0d","name":"","deviceid":"1","inverter":"","querytype":"powerflow","x":290,"y":360,"wires":[["2b66e41f.fe2e0c","160481e3.ffffce","4b3259c2.afc778","3d724597.d9ba2a","96b2af69.b52c2"]]},{"id":"cce9141b.0f64b8","type":"inject","z":"e75b92ec.aea0d","name":"PowerFlow","topic":"","payload":"","payloadType":"date","repeat":"2","crontab":"","once":true,"onceDelay":"0,5","x":90,"y":360,"wires":[["e81b2831.6c91c8"]]},{"id":"2b66e41f.fe2e0c","type":"debug","z":"e75b92ec.aea0d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":610,"y":360,"wires":[]},{"id":"160481e3.ffffce","type":"function","z":"e75b92ec.aea0d","name":"Consumo CASA - 2","func":"//Get progess 0-99\nvar local = msg.payload.Site.P_Load;\nvar value = local;\n\n//Clear msg buffer\n\nmsg.payload = {};\n//Set dummy idx number here:\nmsg.payload.idx = 2;\nvalue = value * -1; //no podemos / debemos envíar negativos\nmsg.payload.svalue = value.toString();\n\nreturn msg;","outputs":1,"noerr":0,"x":570,"y":220,"wires":[["bdcbf101.9548a"]]},{"id":"bdcbf101.9548a","type":"mqtt out","z":"e75b92ec.aea0d","name":"domoticz/in","topic":"domoticz/in","qos":"","retain":"","broker":"90eaa2ac.9e0ee","x":890,"y":360,"wires":[]},{"id":"4b3259c2.afc778","type":"function","z":"e75b92ec.aea0d","name":"Producción Total FV - 5","func":"//Get progess 0-99\nvar produccionInstantanea = msg.payload.Site.P_PV;\nvar produccionTotalDia = msg.payload.Site.E_Day;\n\n//Clear msg buffer\n\n\nmsg.payload = {};\n//Set dummy idx number here:\nmsg.payload.idx = 5;\n\nmsg.payload.svalue = produccionInstantanea.toString() + \";\"+produccionTotalDia.toString();\n\nreturn msg;","outputs":1,"noerr":0,"x":590,"y":500,"wires":[["bdcbf101.9548a"]]},{"id":"3d724597.d9ba2a","type":"function","z":"e75b92ec.aea0d","name":"Inyección - 4","func":"//Get progess 0-99\nvar local = msg.payload.Site.P_Grid;\nvar value = local;\n\n//Clear msg buffer\n\nmsg.payload = {};\n//Set dummy idx number here:\nmsg.payload.idx = 4;\nif(value>0){\n value = 0;\n}else{\n value = value * -1; //no podemos / debemos envíar negativos\n}\nmsg.payload.svalue = value.toString();\n\nreturn msg;","outputs":1,"noerr":0,"x":570,"y":440,"wires":[["bdcbf101.9548a"]]},{"id":"cedd1b71.6b9af8","type":"fronius-control","z":"e75b92ec.aea0d","name":"","deviceid":"1","inverter":"","querytype":"inverter","x":450,"y":40,"wires":[["632fe464.8fc11c","4138b57c.f7c7dc"]]},{"id":"9c0baedf.ad08","type":"inject","z":"e75b92ec.aea0d","name":"InvertData","topic":"","payload":"","payloadType":"date","repeat":"45","crontab":"","once":true,"onceDelay":0.1,"x":110,"y":40,"wires":[["cedd1b71.6b9af8"]]},{"id":"632fe464.8fc11c","type":"debug","z":"e75b92ec.aea0d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":870,"y":40,"wires":[]},{"id":"4138b57c.f7c7dc","type":"function","z":"e75b92ec.aea0d","name":"Voltaje DC - 1","func":"//Get progess 0-99\nvar local = msg.payload.UDC.Value;\nvar value = local;\n\n//Clear msg buffer\n\nmsg.payload = {};\n//Set dummy idx number here:\nmsg.payload.idx = 1;\n//value = value * -1; //no podemos / debemos envíar negativos\nmsg.payload.svalue = value.toString();\n\nreturn msg;","outputs":1,"noerr":0,"x":680,"y":100,"wires":[["632fe464.8fc11c","bdcbf101.9548a"]]},{"id":"96b2af69.b52c2","type":"function","z":"e75b92ec.aea0d","name":"Consumo_Red - 3","func":"//Get progess 0-99\nvar local = msg.payload.Site.P_Load; //consumo casa\nvar value = local;\n\nvar Produccion_Instantanea = msg.payload.Site.P_PV; //Produccion solar instantanea\n\n\n//Clear msg buffer\n\nmsg.payload = {};\n//Set dummy idx number here:\nmsg.payload.idx = 3; //usage/electric\nvalue = value * -1;\nif( value > Produccion_Instantanea ){\n value = value - Produccion_Instantanea;\n \n}\n else{\n value = 0;\n }\n\n \nmsg.payload.svalue = value.toString() //+ \";\"+value.toString();\n\nreturn msg;","outputs":1,"noerr":0,"x":590,"y":280,"wires":[["bdcbf101.9548a"]]},{"id":"90eaa2ac.9e0ee","type":"mqtt-broker","z":"","name":"MQTT - Raspberry","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]

Y tras pegar el texto clicamos sobre IMPORT:

Veremos que se nos carga una pestaña nueva denominada Fronius. Clicamos sobre ella:

Y veremos que se nos carga el flow completo. Vamos a configurarlo con nuestros datos:

Efectuamos doble click en fronius control in:

Clicamos en el lapiz:

Introducimos la IP de nuestro Fronius y aceptamos con Add:

Nos aparecerá la IP correctamente cargada seguida del :80#API1 y clicaremos sobre Done:

Repetiremos el proceso para el otro fronius control in:

Buscaremos en el desplegable si aparece la IP de nuestro Fronius (que hemos introducido anteirormente) y lo seleccionamos:

Si no aparece clicamos sobre el lápiz y lo introducimos manualmente:

Introducimos la IP de nuestro Fronius y aceptamos con Add:

Nos aparecerá la IP correctamente cargada seguida del :80#API1 y clicaremos sobre Done:

Volvemos a tener la pantalla inicial. Ahora configuramos los IDX de nuestros dummys creados anteriormente en domoticz. Hacemos doble click en el primero:

Cambiamos el IDX número 1 (que tiene por defecto) tanto en la línea 9 como en el Name del Node por el IDX de nuestro Dummy de voltaje (que en nuestro ejemplo es el número 8), y clicamos Done:

Veremos que se modifica el nombre de la funcion de Voltaje con nuestros datos. Continuamos con el siguiente, hacemos lo mismo (modificamos el IDX del título de la función y el número 2, 3, 4 y 5 de cada función por nuestros IDX creados con anterioridad en domoticz):

Para el dummy Consumo_Casa (para nuestro ejemplo IDX 4):

Para el dummy Consumo_Red (para nuestro ejemplo IDX 5):

Para el dummy Fronius_Inyeccion (para nuestro ejemplo IDX 6):

Para el dummy Fronius_Produccion (para nuestro ejemplo IDX 7):

Y nos queda la siguiente pantalla:

Nos queda introducir los datos de nuestro domoticz y MQTT. Para ello hacemos doble click aqui:

Creamos un nuevo Server si en el desplegable no aparece la IP de nuestra raspberry de otro flow que tengamos activo:

Introducimos nuestros datos:

Si tenemos USER y PASS en nuestro MQTT lo debemos introducir a continuación:

Guardamos:

A continuación nos pide el TOPIC:

Guardamos clicando en Done y volvemos a la pantalla incial del flow:

Vamos a comprobar fácilmente si hemos introducido bien los datos. Para ello, clicamos sobre DEPLOY a la derecha:

Pueden ocurrir dos cosas, que nos cargue correctamente (lo ideal) o que nos aparezca desconectado. Si aparece desconectado revisa el server. Asegúrate de que has introducido correctamente la IP de tu raspberry- Y recuerda el USER y PASS de MQTT, tienes?  Lo has introducido correctamente?

Correcto

Incorrecto

Comprobamos el funcionamiento en domoticz

Una vez hemos clicado en DEPLOY y nos aparece domoticz/in como connected, nos vamos a domoticz y comprobamos que está funcionando correctamente:

Cómo localizar errores en node red

Os damos un truquito para vuestra información. Tenemos un node en el listado de la izquierda que se llama DEBUG. Cuando lo llevamos a la pantalla principal, lo conectamos a un node y lo activamos, nos dá mucha información (como un LOG) en la columna de la derecha del todo. Os explicamos con unas cuantas imágenes cómo conseguirlo:

Mantén el cursor pulsando la bola del final del recuadro del mqtt/in y arrástrala hasta la bola del inicio del recuadro del debug:

Clicamos sobre deploy:

Activamos la cucaracha y a la derecha nos aparecerá el debug con info de errores /( y así podremos analizar qué estamos haciendo mal) o info correcta:

Inicio automático de Node RED con Raspberry Pi

Recordar que por defecto Node RED está apagado. Podemos iniciarlo de dos formas diferentes: manual o automático.

Para inicio manual introducimos en puTTY:

node-red-start

Para que Node Red inicie de forma automática (tras caídas de red, o tras apagar y encender la raspberry) lanzamos el siguiente comando en puTTY:

sudo systemctl enable nodered.service

Sacar el máximo partido al inversor

Tienes a tu disposición dos tutoriales para incluir también en domoticz dos derivadores de excedentes solares para sacar el máximo partido a la producción solar aunque tengas activado el veritido o inyección cero. Te los dejamos a continuación para que les eches un vistazo:

Para cualquier duda o consulta tienes disponible el grupo de telegram «Domoticz a lo Spain» para entrar, ponerte cómodo y participar cuanto quieras.

Clica aquí para entrar en él

Cualquier duda, sugerencia o comentario será bien recibida en la web!