Lectura del inversor solar SOLAX mediante RS485 y su vinculación con domoticz

dafegod del grupo de telegram «Domoticz a lo spain» nos cuenta cómo leer el inversor solar SOLAX mediante un conversor RS485 y un ESP.

Distribuimos el tutorial en distintos apartados:

Material necesario

  • Un cable de datos RJ45
  • Un conversor RS485 to TTL
  • Una placa con chip ESP8266 (Wemos D1 mini, Lolin v3, Sonoff basic, etc.)

Software necesario

“Si todo esto te suena a chino, date una vuelta por Domotuto y empápate con los tutoriales de inicio, pues tenemos que tener una base sólida y en este tutorial vamos a dar por sentado que sabes hacer un montón de cosas, tales como flashear, usar Putty y demás cacharreo básico”

Flasheado y configuración

En el primer paso vamos a flashear nuestro ESP8266 con el firm Tasmota-Solax. Te recomiendo usar el programa Tasmotizer, vale cualquier otro, pero cuando uses Tasmotizer, tu vida nunca será igual.

Una vez flasheado el ESP te recomiendo que le pongas una IP fija, a través de tu router.

La primera vez que entres en el tasmota ve a la pestaña Configure Other y asegúrate que la opción Mqtt esté marcada, aprovechamos que estamos en esta pantalla y le ponemos un nombre descriptivo a nuestro ESP para diferenciarlo de otros Tasmotas que puedas tener en casa, en las casillas Device name y Friendly name. Una vez hechos los cambios, click en Save.

Entramos en la pestaña Configure Module, y ponemos todo tal cual, la captura:

Ahora te toca configurar en Tasmota-Solax, el periodo de Telemetría y el Mqtt según las imagenes siguientes, pinchamos en Configuration, buscamos Configure Logging.

En telemetry period, quitar el 300 y ponemos un 2.
A continuación click en Save.

Ahora pinchamos en Configure Mqtt:

Rellenamos con nuestros datos lo remarcado en rojo: en este caso solax/datos

Ponemos como Topic lo que queramos, puede ser lo que pone en la captura, o según la estructura de tu sistema MQTT, por ejemplo casa/fotovoltaica/solax/X1

Conexionado

Lo primero que haremos es quitar a un cable de datos la clavija RJ45, para quedarnos con los hilos solamente en una punta y en la otra obviamente le dejaremos la clavija para poder enchufarla en el inversor.

De los hilos vamos a usar dos pares, el par azul y el par marrón, como se muestra en la imagen inferior.

El par marrón es fácil de implementar pues hace la misma función que con el cable de datos antiguo, es decir, comunica el inversor con el meter.

Conectaremos el marrón a la borna 7 y el marrón-blanco en la borna 8 tanto si utilizamos el meter Chint, como si utilizamos el meter Hiking.

Tip: Si haces esta conexión cuando el inversor está apagado no tendrás datos extraños en las gráficas, aparte que no perderás ni un minuto de producción.

El par azul va conectado al conversor RS485 el azul al A+ y el azul-blanco al B+.

La salida TTL del conversor es muy fácil tambien de conectar al ESP8266.

RS485 | ESP8266:

  • 3v3 | 3v3
  • GND | GND
  • RX | RX
  • TX | TX

Comprobaciones

Si todo va como debiera, una vez realizado todo el conexionado, en el conversor deben encenderse los leds del tx y rx y empezaran a parpadear bastante rápido.

Si entramos en el entorno web mediante la dirección
192.168.1.XX (recuerdas que te aconsejé que le pusieras una IP fija?) y deberemos de ver algo como esto.

Por último, para ver los datos por MQTT que captura el Tasmota-Solax, abrimos nuestro “sniffer” de tráfico Mqtt favorito, por ejemplo MqttExplorer (multiplataforma) y veremos algo parecido a esto.

Si os dais cuenta, el topic mqtt que elegimos en la configuración de salida de Tasmota en esta parte del tutorial se ha transformado con un prefijo “tele” y varios sufijos, a nosotros nos interesa el sufijo “SENSOR”, por lo que el topic que nos va a dar los datos del inversor y que usaremos en el siguiente apartado quedará tal que así:

tele/el_topic_de_tu_elección/SENSOR

Trabajando en Node-Red

Una vez dentro de Node vamos a instalar dos nodos para empezar, si ya los tienes de otras historias, pues eso que te ahorras de trabajo.

Primero en las tres rayitas en la zona derecha.

Segundo, clicamos en Manage palette.

Primero, cambiamos a la pestaña Install

Segundo, en el cuadro de búsqueda ponemos telegram

Tercero, instalamos el node que se titula: “node-red-contrib-telegrambot-home”

Primero, cambiamos a la pestaña Install

Segundo, en el cuadro de búsqueda ponemos config

Tercero, instalamos el node que se titula “node-red-contrib-config”

Una vez instalados los dos nodos entramos en la terminal de la Raspberry (Putty, Konsole, etc) y tecleamos sin las comillas “sudo systemctl restart nodered”.

Ahora vamos a importar el flow creado por @pablozg que nos descargaremos de aquí.

Primero, click en tres flechas

Segundo, click en Import

Entramos en nurestro dispositivo mediante IP y seleccionamos Configuración > Configuración plantilla.

En la ventana que se abre, nos aseguramos que estamos en la pestaña Clipboard y pulsamos en New Flow.

  1. Select a file to import
  2. En la ventana que se abre, escogemos el archivo descargado de nuestra carpeta Descargas
  3. Click en Abrir
  4. Pulsamos en Import

El flow

El nuevo flow debe tener este aspecto y vamos a comenzar a configurar los nodos. Para configurar un nodo, doble click sobre él.

En el nodo MQTT (nodo morado) de la izquierda, como pone en su nombre, en el campo topic, pondremos el topic que pusimos en el tasmota-solax.

El campo QoS pondremos 2

Pondremos nuestro servidor mqtt clickando en el lapicito y rellenando los campos con nuestros datos como se ve en la siguiente captura.

En los nodos FUNCTION (naranjas), pinchamos en Description, dentro he puesto el tipo de dummy que tienes que crear en Domoticz.

Te vas a Domoticz, pinchas en Configuración-Hardware, en Crear Sensores Virtuales y creas el dummy que se adapte al dato que vas a importar (temperatura, voltaje, amperaje y/o potencia), despues te vas a Configuración-Dispositivos y pillas el IDX

Una vez creado el dummy, buscamos la línea donde pone el // IDX:0, // y ponemos el idx de nuestro dummy recién creado. MUY IMPORTANTE PONER LA COMA DESPUES DEL NÚMERO DE IDX

Una vez hechos los cambios, pincha en Done.

Cuando hayas configurado todos los nodos a tu gusto/necesidades, pincha en Deploy, arriba a la derecha.

Avisos de error en Telegram

Este es el último paso, si crees que no lo necesitas, no lo hagas, pero siempre está bien saber si el inversor se ha apagado por un error.

Recuerda que tienes también un tutorial específico para telegram: «Notificar con mensajes de Telegram desde domoticz«.

Configuración del bot de Telegram

Para usar estos nodos deberás configurar un bot de Telegram.

Sigue estas instrucciones
Crea el bot: Envía el mensaje a BotFather /newbot

Nombra el bot: Dale el nombreque quieras (así lo verás en Telegram)

Dale al bot un nombre de usuario: Debe ser único. No tiene por qué coincidir con el nombre del bot. (Yo suelo poner el mismo)

Coge el token: lo necesitarás para configurar los nodos.

Envía varios mensajes al bot para despertarlo.

Escribe en tu navegador:

 https://api.telegram.org/bot${TOKEN}/getUpdates 

Reemplaza ${TOKEN} con tu token de bot.

Obtendrás una respuesta JSON como la siguiente:

En este ejemplo, el Chat ID es 987654321

Si no obtienes una respuesta como la de la captura, intenta enviar al bot varios mensajes para despertarlo.

Si quieres enviar mensajes a varios chats, deberás repetir los pasos para obtener cada ID de chat individual.

No he probado el envío de mensajes a un grupo, pero debería ser similar a los pasos anteriores.

Luego usas el token y el chat ID para configurar el nodo que he marcado en rojo, el resto de nodos se dejan tal cual.

Doble click en el nodo de telegram marcado en rojo.

En Chat ID ponemos el númerode Chat ID conseguido anteriormente.

El Parse Mode se deja en Markdown.

Pinchamos en el lapicito marcado con la flecha, para configurar el nodo con los datos de nuestro bot y se abre una ventana como la captura siguiente.

Rellenamos los campos marcados en rojo con nuestros datos, clickamos en Add, volveremos a la captura superior, clickamos en Done.

Una vez en la pantalla principal de Node-Red, clickamos en Deploy, para guardar los cambios.

Para comprobar si lo hemos hecho correctamente, he puesto un nodo Inject con un “timestamp”.
Al pulsar en el cuadradito que tiene este nodo a la izquierda, “inject”amos una cadena de números, que nos tiene que llegar a nuestro Telegram.

En la captura se ve, que cuando se apaga el inversor por un error, nos lo comunica, incluso comunica cuando se apaga al atardecer si es un version2 o superior.

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!