Cómo Integrar un Inversor Solar Growatt en Home Assistant con Modbus RTU: Guía Paso a Paso
Escrito por: Alex R.La integración de un inversor solar Growatt en Home Assistant mediante Modbus RTU se ha convertido en una de las prácticas más demandadas por los entusiastas de la domótica y la eficiencia energética. A diferencia de las soluciones en la nube propietarias, el protocolo Modbus RTU ofrece un control local, rápido y sin dependencias externas, permitiendo monitorizar en tiempo real la generación fotovoltaica, el consumo del hogar y el estado de la batería. En esta guía paso a paso, exploraremos desde los conceptos fundamentales del protocolo hasta la configuración avanzada en Home Assistant, incluyendo ejemplos prácticos, soluciones a errores comunes y una comparativa de los métodos de conexión más utilizados. Si posees un inversor Growatt y deseas exprimir al máximo su potencial energético, esta guía te proporcionará todos los conocimientos necesarios para lograrlo.
Introducción a Modbus RTU y su relevancia en la monitorización solar
Modbus es un protocolo de comunicación industrial creado en 1979 por Modicon, que se ha mantenido vigente gracias a su simplicidad y robustez. En su variante RTU (Remote Terminal Unit), los datos se transmiten de forma binaria sobre una interfaz serie, típicamente RS485, lo que permite largas distancias de cableado y una alta inmunidad al ruido eléctrico. Los inversores Growatt, al igual que muchos otros fabricantes, incorporan una interfaz Modbus RTU que expone registros internos con información crítica: potencia instantánea, energía acumulada, voltajes de string, temperatura, estado de carga de batería, etc. Acceder a estos registros localmente evita la latencia y las limitaciones de las API en la nube, y garantiza la privacidad de los datos. Home Assistant, con su integración nativa de Modbus, se convierte en la herramienta ideal para leer y automatizar en función de estos valores. A lo largo de esta guía, detallaremos cómo establecer la comunicación física, configurar los registros y crear paneles de control personalizados.
¿Por qué elegir Modbus RTU en lugar de otras alternativas?
Existen múltiples formas de monitorizar un inversor Growatt: desde la aplicación ShinePhone del fabricante hasta integraciones no oficiales basadas en scraping web. Sin embargo, Modbus RTU destaca por su fiabilidad y su capacidad de proporcionar datos en bruto sin procesar. Mientras que las soluciones cloud pueden sufrir cortes de servicio, retrasos en la actualización o límites en la frecuencia de consulta, Modbus RTU permite lecturas cada pocos segundos directamente desde el inversor. Además, al ser un protocolo estándar, es compatible con una amplia variedad de dispositivos y software, lo que facilita la integración en sistemas domóticos como Home Assistant, OpenHAB o Node-RED. Para instalaciones con baterías, el acceso local a los registros de estado permite implementar estrategias de gestión energética avanzadas, como el autoconsumo con excedentes o la carga programada en horas valle.
Análisis técnico: Fundamentos de Modbus RTU en inversores Growatt
Para comprender a fondo la integración, es esencial familiarizarse con los conceptos básicos de Modbus RTU y cómo se aplican específicamente a los inversores Growatt. Modbus RTU opera en un modelo maestro-esclavo: Home Assistant actúa como maestro, enviando peticiones de lectura a los registros del inversor (esclavo). Cada registro tiene una dirección única y un tamaño (16 bits, a menudo combinados para formar valores de 32 bits). Los inversores Growatt suelen utilizar direcciones de registro que van desde 0 hasta 3000, dependiendo del modelo y la versión de firmware. La velocidad de transmisión (baudrate) típica es de 9600 bps, con 8 bits de datos, sin paridad y 1 bit de parada (8N1). Es crucial configurar correctamente estos parámetros, ya que una discrepancia impedirá la comunicación.
Mapa de registros Growatt: Los datos más relevantes
Cada modelo de Growatt puede tener un mapa de registros ligeramente diferente, pero los más comunes (series MIN, MOD, SPH, TL-X) comparten una estructura similar. A continuación, se presenta una tabla con los registros más útiles para monitorizar una instalación típica. Es importante consultar la documentación específica de tu modelo, ya que algunos registros pueden variar en dirección o factor de escala.
| Registro (hex) | Descripción | Tipo | Factor |
|---|---|---|---|
| 0x0000 | Potencia de salida del inversor | uint16 | 0.1 W |
| 0x0001 | Energía total generada | uint32 | 0.1 kWh |
| 0x0002 | Energía hoy | uint16 | 0.1 kWh |
| 0x0003 | Voltaje DC string 1 | uint16 | 0.1 V |
| 0x0004 | Corriente DC string 1 | uint16 | 0.1 A |
| 0x0005 | Frecuencia de red | uint16 | 0.01 Hz |
| 0x0006 | Temperatura del inversor | int16 | 0.1 °C |
| 0x0007 | Estado de carga de batería (SOC) | uint16 | 1 % |
Es fundamental tener en cuenta que los registros de 32 bits ocupan dos direcciones consecutivas y que el orden de los bytes (big-endian o little-endian) puede variar según el firmware. Growatt generalmente utiliza big-endian para sus registros de 32 bits. Además, algunos valores son signed (int16) para permitir temperaturas negativas o potencias negativas en caso de consumo de batería. La lectura incorrecta de estos registros puede llevar a interpretaciones erróneas de los datos.
Conexión física: RS485 y adaptadores USB
Para establecer la comunicación Modbus RTU, necesitarás un adaptador USB a RS485. Los más recomendados son aquellos basados en el chip FTDI o CH340, ya que ofrecen buena compatibilidad con Linux (el sistema operativo habitual de Home Assistant). El adaptador se conecta al puerto RS485 del inversor, que generalmente se encuentra en la parte inferior, protegido por una tapa. Es importante respetar la polaridad: A (positivo) y B (negativo). Un error en la conexión impedirá cualquier comunicación. Además, se recomienda utilizar cable trenzado y apantallado para distancias superiores a 2 metros, y conectar la malla de apantallamiento a tierra en un solo extremo para evitar bucles de masa. La longitud máxima del cable RS485 es de 1200 metros, pero en entornos domésticos no superará los 10 metros.
Guía paso a paso para la integración en Home Assistant
Una vez que dispones del hardware necesario, el siguiente paso es configurar Home Assistant para leer los registros Modbus. Home Assistant tiene una integración nativa llamada modbus que permite definir sensores, switches y otros elementos basados en registros Modbus. A continuación, se detalla el proceso completo, desde la instalación del adaptador hasta la creación de un panel de control personalizado.
Paso 1: Instalación del adaptador USB-RS485 en Home Assistant
Conecta el adaptador USB a RS485 a un puerto USB de tu servidor Home Assistant (ya sea una Raspberry Pi, un mini PC o una máquina virtual). Si utilizas Home Assistant OS, el adaptador debería ser reconocido automáticamente. Para verificar, accede a la terminal (o al complemento SSH) y ejecuta ls /dev/ttyUSB*. Deberías ver un dispositivo como /dev/ttyUSB0. Si no aparece, puede que necesites instalar drivers adicionales, aunque los chips CH340 y FTDI suelen ser plug-and-play. En algunos casos, es necesario reiniciar Home Assistant después de conectar el adaptador.
Paso 2: Configuración básica de Modbus en configuration.yaml
El siguiente paso es editar el archivo configuration.yaml para añadir la configuración de Modbus. Puedes hacerlo a través del editor de archivos (como el complemento File Editor) o por SSH. A continuación, se muestra un ejemplo de configuración para un inversor Growatt típico. Asegúrate de reemplazar /dev/ttyUSB0 por el puerto correcto y ajustar los parámetros de comunicación según tu modelo.
modbus:
- name: Growatt
type: serial
port: /dev/ttyUSB0
baudrate: 9600
bytesize: 8
method: rtu
parity: N
stopbits: 1
timeout: 2
sensors:
- name: 'Growatt Potencia'
slave: 1
address: 0
input_type: holding
data_type: uint16
unit_of_measurement: 'W'
scale: 0.1
precision: 1
- name: 'Growatt Energía Total'
slave: 1
address: 1
input_type: holding
data_type: uint32
unit_of_measurement: 'kWh'
scale: 0.1
precision: 1
- name: 'Growatt Energía Hoy'
slave: 1
address: 2
input_type: holding
data_type: uint16
unit_of_measurement: 'kWh'
scale: 0.1
precision: 1
- name: 'Growatt Voltaje DC'
slave: 1
address: 3
input_type: holding
data_type: uint16
unit_of_measurement: 'V'
scale: 0.1
precision: 1
- name: 'Growatt Corriente DC'
slave: 1
address: 4
input_type: holding
data_type: uint16
unit_of_measurement: 'A'
scale: 0.1
precision: 1
- name: 'Growatt Frecuencia'
slave: 1
address: 5
input_type: holding
data_type: uint16
unit_of_measurement: 'Hz'
scale: 0.01
precision: 2
- name: 'Growatt Temperatura'
slave: 1
address: 6
input_type: holding
data_type: int16
unit_of_measurement: '°C'
scale: 0.1
precision: 1
- name: 'Growatt SOC Batería'
slave: 1
address: 7
input_type: holding
data_type: uint16
unit_of_measurement: '%'
scale: 1
precision: 0Es importante destacar que el parámetro slave se refiere a la dirección Modbus del inversor, que por defecto suele ser 1. Si tienes varios dispositivos en el mismo bus, deberás asignar direcciones diferentes. Además, el parámetro input_type puede ser holding o input; en Growatt, la mayoría de los registros de monitorización son holding registers. Si no estás seguro, prueba con holding primero.
Paso 3: Verificación y solución de problemas
Después de guardar la configuración, reinicia Home Assistant para aplicar los cambios. Ve a la sección de Desarrollador > Estados y busca los sensores creados (por ejemplo, sensor.growatt_potencia). Si los valores aparecen como unknown o unavailable, revisa los registros de Home Assistant (Configuración > Registros) para ver posibles errores de comunicación. Los problemas más comunes incluyen: puerto incorrecto, velocidad en baudios errónea, dirección de esclavo equivocada o polaridad invertida en el cableado. Para depurar, puedes utilizar herramientas como mbpoll o modbus-cli desde la terminal para probar la comunicación directamente.
timeout a 3 o 4 segundos. También puedes reducir la frecuencia de sondeo utilizando el parámetro scan_interval en la configuración del sensor, por ejemplo, scan_interval: 10 para actualizar cada 10 segundos. Esto alivia la carga en el bus Modbus y mejora la estabilidad.Errores comunes y limitaciones de la integración Modbus RTU
A pesar de su robustez, la integración Modbus RTU puede presentar desafíos. Uno de los errores más frecuentes es la incorrecta interpretación de los registros de 32 bits. Algunos modelos Growatt utilizan el orden de palabras little-endian, mientras que otros emplean big-endian. Si los valores de energía total parecen absurdamente altos o bajos, prueba a cambiar el parámetro data_type a uint32 con swap: word o swap: byte. Otra limitación es la velocidad de sondeo: Modbus RTU es un protocolo half-duplex, por lo que no se pueden realizar múltiples lecturas simultáneas. Si configuras demasiados sensores con intervalos muy cortos, el bus se saturará y se producirán errores de comunicación. Se recomienda agrupar lecturas en bloques contiguos para optimizar.
Problemas de compatibilidad con versiones de firmware
Growatt ha lanzado múltiples versiones de firmware para sus inversores, y en ocasiones los mapas de registros cambian. Por ejemplo, en la serie SPH, la dirección del registro de SOC de la batería puede variar entre 0x0007 y 0x0010 según la versión. Si notas que algunos sensores no devuelven datos, consulta foros especializados como el de Home Assistant Community o el repositorio de GitHub de integraciones personalizadas. A veces, una actualización de firmware del inversor puede resolver problemas de comunicación, pero también puede introducir cambios no documentados. Antes de actualizar, investiga si otros usuarios han reportado problemas.
Seguridad eléctrica y aislamiento
Aunque la conexión RS485 es de baja tensión, es importante recordar que el inversor trabaja con altos voltajes DC y AC. Nunca abras la carcasa del inversor ni manipules el cableado interno sin antes desconectar la alimentación fotovoltaica y la red eléctrica. El puerto RS485 suele estar aislado galvánicamente, pero no confíes en ello. Utiliza siempre herramientas aisladas y sigue las normas de seguridad eléctrica. Si no te sientes cómodo, contrata a un electricista certificado.
Comparativa de métodos de integración: Modbus RTU vs. otras alternativas
Además de Modbus RTU, existen otras vías para integrar un inversor Growatt en Home Assistant. A continuación, se presenta una tabla comparativa que evalúa las opciones más populares: Modbus RTU local, integración en la nube (ShinePhone) y el uso de pasarelas como SolarMAN o ShineWiFi. La comparativa se basa en criterios de latencia, fiabilidad, complejidad y costo.
| Método | Latencia | Fiabilidad | Complejidad | Costo |
|---|---|---|---|---|
| Modbus RTU local | Baja (1-2 s) | Alta | Media | Bajo (10-20 €) |
| Integración nube (ShinePhone) | Alta (5-15 min) | Media | Baja | Nulo |
| Pasarela SolarMAN/ShineWiFi | Media (1-5 min) | Media | Baja | Alto (50-100 €) |
Como se puede observar, Modbus RTU local ofrece la mejor combinación de latencia y fiabilidad, a un costo muy bajo. La integración en la nube es la más sencilla pero carece de actualizaciones en tiempo real y depende de servidores externos. Las pasarelas como ShineWiFi añaden un costo adicional y tampoco alcanzan la velocidad de Modbus. Por lo tanto, para usuarios avanzados que deseen automatizaciones precisas, Modbus RTU es la opción recomendada.
Preguntas frecuentes sobre la integración de Growatt en Home Assistant
¿Es compatible mi inversor Growatt con Modbus RTU?
¿Qué adaptador USB-RS485 me recomiendas?
¿Cómo puedo saber la dirección Modbus de mi inversor?
Este análisis técnico es independiente. No recibimos pagos de fabricantes para alterar valoraciones. Si realizas una compra a través de enlaces en este sitio, podríamos percibir una comisión de afiliación que ayuda a mantener el servidor activo, sin coste extra para ti.