Cómo integrar un inversor solar SofarSolar en Home Assistant con Modbus TCP: Guía paso a paso
Escrito por: Alex R.La monitorización en tiempo real de un inversor solar es esencial para optimizar el rendimiento de una instalación fotovoltaica. Con la creciente popularidad de las soluciones domóticas, integrar el inversor en Home Assistant se ha convertido en una práctica habitual para los entusiastas del autoconsumo. Este artículo ofrece una guía exhaustiva para integrar un inversor de la marca SofarSolar en Home Assistant mediante el protocolo Modbus TCP, abarcando desde los conceptos básicos hasta la configuración avanzada, con el objetivo de que cualquier usuario pueda llevar a cabo esta integración con éxito.
Fundamentos de la comunicación Modbus en inversores solares
El protocolo Modbus es un estándar de comunicación industrial que permite el intercambio de datos entre dispositivos electrónicos. En el ámbito de la energía solar, los inversores suelen incorporar una interfaz Modbus para exponer sus registros internos, como potencias, tensiones, corrientes, temperaturas y estados de funcionamiento. La variante Modbus TCP utiliza una red Ethernet para transmitir estos datos, lo que facilita su integración en redes domésticas y sistemas de automatización como Home Assistant.
SofarSolar, como fabricante de inversores de alta calidad, incluye en muchos de sus modelos un puerto de comunicación que soporta Modbus TCP (a veces con opción RS485, pero el TCP es más sencillo para integrar con Home Assistant). Para poder acceder a los datos del inversor, es necesario conocer la dirección IP que este tiene en la red, el puerto Modbus (habitualmente 502) y el identificador de unidad (unit ID), que suele ser 1, aunque puede variar según el modelo. Además, cada modelo de inversor tiene un mapa de registros específico, es decir, una tabla que asocia cada dirección de registro con una magnitud física. Este mapa es fundamental para extraer los datos correctos.
Home Assistant, por su parte, ofrece una integración nativa para Modbus, que permite leer y escribir registros de forma sencilla mediante archivos de configuración YAML. Esta integración se basa en la librería pymodbus y soporta tanto Modbus TCP como RTU. Para los inversores SofarSolar, la configuración típica implica definir un bloque 'modbus:' con los parámetros de conexión y, posteriormente, definir sensores que lean los registros deseados.
¿Qué modelos de SofarSolar son compatibles?
La mayoría de los inversores de la serie KTL, HYD, y otros modelos actuales de SofarSolar incluyen soporte para Modbus TCP. Por ejemplo, los modelos KTL-X, HYD 5-20KTL, y las versiones trifásicas suelen tener esta capacidad. Sin embargo, es imprescindible consultar el manual del inversor para confirmar la disponibilidad de esta función y obtener el mapa de registros específico del modelo. En caso de no disponer de Modbus TCP, se puede recurrir a un adaptador RS485 a Ethernet, pero esto añade complejidad y no es el objetivo de esta guía.
Antes de comenzar, es recomendable actualizar el firmware del inversor a la última versión, ya que los fabricantes suelen corregir errores y ampliar las funciones de comunicación. La actualización se realiza generalmente a través de la aplicación móvil del fabricante o mediante un ordenador conectado por USB. Una vez actualizado, hay que habilitar la opción de comunicación Modbus en el panel de control del inversor, si no está activa por defecto. En muchos modelos, esta opción se encuentra en el menú de configuración de red o comunicaciones.
Preparación del entorno: requisitos previos y herramientas necesarias
Para llevar a cabo esta integración, necesitarás los siguientes elementos:
- Inversor SofarSolar con soporte Modbus TCP: Verifica que tu modelo tiene esta función y que está actualizado.
- Conexión de red: El inversor debe estar conectado a la misma red local que el servidor de Home Assistant, ya sea mediante cable Ethernet o a través de un adaptador Wi-Fi si el inversor lo soporta.
- Home Assistant instalado y en funcionamiento: Puede ser en una Raspberry Pi, un servidor NAS, una máquina virtual, etc. Se recomienda tener acceso a la configuración YAML (por ejemplo, mediante el complemento File editor o Samba).
- Herramienta de prueba Modbus: Para verificar la comunicación antes de configurar Home Assistant, puedes usar herramientas como 'Modbus Poll' (Windows) o 'mbpoll' (Linux) en tu ordenador.
Además, es fundamental conocer la dirección IP del inversor. Puedes obtenerla a través del router (buscando dispositivos conectados) o mediante la aplicación del fabricante. Una vez que tengas la IP, puedes probar la conectividad haciendo ping desde un terminal. Si el inversor responde, es probable que el puerto Modbus esté abierto.
Obtención del mapa de registros del inversor
El mapa de registros es un documento técnico que proporciona el fabricante. En el caso de SofarSolar, este mapa suele estar disponible en el manual de usuario o en la sección de descargas de su página web. Si no lo encuentras, puedes contactar con el soporte técnico. El mapa incluye direcciones decimales o hexadecimales, tipo de dato (int16, uint16, int32, etc.), escala (por ejemplo, 0.1) y la descripción de la variable. Por ejemplo, el registro 0x0000 puede contener la potencia activa total en vatios, con escala 1.
Para esta guía, utilizaremos un mapa genérico basado en los modelos más comunes de SofarSolar. No obstante, es crucial que verifiques los registros específicos de tu modelo, ya que las direcciones pueden variar. A continuación, se muestra una tabla con los registros más habituales que se utilizan para monitorizar un inversor.
| Registro (Decimal) | Descripción | Tipo | Escala |
|---|---|---|---|
| 0 | Potencia activa total (W) | uint16 | 1 |
| 1 | Energía total generada (kWh) | uint32 | 0.1 |
| 2 | Tensión de red fase A (V) | uint16 | 0.1 |
| 3 | Corriente de red fase A (A) | uint16 | 0.01 |
| 4 | Temperatura del inversor (°C) | int16 | 0.1 |
Configuración de la conexión Modbus en Home Assistant
Una vez que tenemos claros los registros, procedemos a configurar Home Assistant. La integración Modbus se configura a través del archivo 'configuration.yaml'. Es recomendable hacer una copia de seguridad antes de realizar cambios.
Primero, definimos el bloque 'modbus' con los parámetros de conexión. En nuestro caso, usaremos Modbus TCP. La configuración básica es la siguiente:
modbus:
- name: sofarsolar
type: tcp
host: 192.168.1.100
port: 502
sensors:
- name: "Potencia activa total"
address: 0
unit_of_measurement: "W"
device_class: power
state_class: measurement
scan_interval: 10
- name: "Energía total generada"
address: 1
input_type: holding
data_type: uint32
scale: 0.1
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
scan_interval: 60En este bloque, hemos definido un sensor para la potencia activa (registro 0) y otro para la energía total (registro 1). Observa que para la energía hemos especificado 'data_type: uint32' porque el registro ocupa dos direcciones consecutivas (1 y 2). Además, hemos aplicado una escala de 0.1, ya que el valor real se obtiene multiplicando el valor leído por 0.1. La propiedad 'input_type' puede ser 'holding' (por defecto) o 'input', dependiendo del tipo de registro. En los inversores, normalmente se usan registros holding.
Es importante destacar que la integración Modbus de Home Assistant permite definir sensores de forma individual dentro del bloque 'modbus', pero también se pueden definir sensores adicionales en el bloque 'sensor' utilizando la plataforma 'modbus'. Sin embargo, la forma más sencilla es hacerlo directamente en el bloque 'modbus' como se muestra arriba.
Añadiendo más sensores: tensión, corriente, temperatura
Para obtener una monitorización completa, añadiremos más sensores. Por ejemplo, la tensión de red, la corriente y la temperatura del inversor. A continuación, se muestra cómo ampliar la configuración:
modbus:
- name: sofarsolar
type: tcp
host: 192.168.1.100
port: 502
sensors:
- name: "Potencia activa total"
address: 0
unit_of_measurement: "W"
device_class: power
state_class: measurement
scan_interval: 10
- name: "Energía total generada"
address: 1
input_type: holding
data_type: uint32
scale: 0.1
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
scan_interval: 60
- name: "Tensión red fase A"
address: 2
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
scale: 0.1
scan_interval: 10
- name: "Corriente red fase A"
address: 3
unit_of_measurement: "A"
device_class: current
state_class: measurement
scale: 0.01
scan_interval: 10
- name: "Temperatura inversor"
address: 4
unit_of_measurement: "°C"
device_class: temperature
state_class: measurement
scale: 0.1
scan_interval: 30Hemos añadido tres sensores más. Observa que para la tensión y la temperatura hemos utilizado una escala de 0.1, y para la corriente una escala de 0.01. Estas escalas deben coincidir con las especificaciones del fabricante. Además, hemos definido 'device_class' y 'state_class' para que Home Assistant pueda tratar estos sensores correctamente (por ejemplo, para estadísticas de energía).
Después de modificar el archivo, es necesario reiniciar Home Assistant para que los cambios surtan efecto. Puedes hacerlo desde la interfaz web (Configuración > Sistema > Reiniciar) o mediante el comando 'ha core restart' si usas el sistema operativo Home Assistant.
Verificación de la comunicación y resolución de problemas
Una vez reiniciado, es probable que los sensores aparezcan en el registro de entidades. Sin embargo, es posible que encuentres problemas. A continuación, se presentan los errores más comunes y cómo solucionarlos.
El sensor no aparece o muestra 'No disponible'
Si el sensor no aparece, revisa los logs de Home Assistant (Configuración > Registro). Los errores típicos incluyen:
- Dirección IP incorrecta: Verifica que la IP del inversor es correcta y que el inversor está encendido y conectado a la red.
- Puerto Modbus bloqueado: Asegúrate de que el puerto 502 no está siendo utilizado por otro dispositivo y que el firewall del router permite la comunicación.
- Unit ID incorrecto: Aunque la mayoría usa el ID 1, algunos modelos pueden usar otro. Puedes probar con un escáner Modbus o leyendo el manual.
- Tipo de registro incorrecto: Si el sensor aparece pero con valor 'No disponible', es posible que el registro no sea de tipo holding o que la dirección esté mal. Prueba con 'input_type: input' o cambia la dirección.
Valores incorrectos o con escala errónea
Si los sensores muestran valores que no coinciden con la realidad, es probable que la escala no sea la correcta o que el tipo de dato no sea el adecuado. Por ejemplo, si la potencia aparece como 0 cuando el inversor está generando, puede que el registro esté leyendo un valor de 16 bits cuando debería ser de 32 bits. Revisa el mapa de registros y ajusta 'data_type' y 'scale'.
Otro problema común es que el valor de la energía no se acumula correctamente. Para ello, es importante definir 'state_class: total_increasing' en el sensor de energía. De esta manera, Home Assistant tratará el valor como un contador y podrá calcular el consumo diario, etc.
Optimización de la monitorización: creación de paneles y automatizaciones
Una vez que los sensores están funcionando, el siguiente paso es crear un panel de control atractivo y útil. Home Assistant permite diseñar paneles personalizados con tarjetas. Para una monitorización solar, es común mostrar la potencia actual, la energía generada hoy, y la temperatura del inversor. También se pueden añadir gráficas históricas.
Para crear un panel, ve a 'Panel' y haz clic en el icono de lápiz para editar. Añade tarjetas de tipo 'Sensor', 'Gráfica' o 'Estadísticas'. Por ejemplo, puedes añadir una tarjeta 'Sensor' para mostrar la potencia actual y otra 'Gráfica' para visualizar la evolución de la potencia a lo largo del día. También puedes usar tarjetas 'Energía' si has configurado el sensor de energía correctamente.
Además, puedes crear automatizaciones para recibir notificaciones cuando la producción sea baja o cuando el inversor presente alguna anomalía. Por ejemplo, puedes configurar una automatización que envíe una notificación push si la temperatura del inversor supera los 70°C.
automation:
- alias: "Alerta de temperatura alta del inversor"
trigger:
platform: numeric_state
entity_id: sensor.temperatura_inversor
above: 70
condition: []
action:
service: notify.mobile_app_iphone
data:
title: "Alta temperatura"
message: "El inversor ha superado los 70°C."De esta manera, podrás reaccionar rápidamente ante posibles problemas.
Comparativa con otras soluciones de monitorización
Existen varias alternativas para monitorizar un inversor SofarSolar, como la plataforma propia del fabricante (SofarMonitor) o el uso de plataformas de terceros como PVOutput. A continuación, se presenta una comparativa detallada para que puedas decidir cuál se adapta mejor a tus necesidades.
1Home Assistant + Modbus TCP
Integración local, sin dependencia de la nube, altamente personalizable, permite automatizaciones complejas y almacenamiento de datos local. Requiere conocimientos técnicos para su configuración inicial.
2SofarMonitor (plataforma del fabricante)
Solución oficial, fácil de configurar, acceso remoto desde cualquier lugar, pero depende de la nube del fabricante y ofrece menos flexibilidad para automatizaciones locales.
3PVOutput
Servicio en línea para compartir datos de producción, fácil de configurar si se dispone de un puente, pero no ofrece control ni automatización, solo visualización y estadísticas.
4Otros sistemas domóticos (como Domoticz)
Alternativas de código abierto similares a Home Assistant, pero con menor comunidad y menos integraciones nativas para inversores solares.
Como se puede observar, Home Assistant ofrece la ventaja de la integración total en un ecosistema domótico, lo que permite optimizar el consumo energético del hogar en función de la producción solar. Por ejemplo, se puede activar automáticamente el calentador de agua cuando hay excedente de energía.
Errores comunes y precauciones de seguridad
Aunque la integración es segura si se siguen las instrucciones, es importante tener en cuenta ciertas precauciones. En primer lugar, nunca intentes escribir registros en el inversor sin conocer exactamente su función, ya que podrías alterar parámetros de fábrica y provocar un mal funcionamiento o incluso daños. La integración Modbus en Home Assistant está pensada principalmente para lectura de datos.
Otro error común es saturar la comunicación Modbus con intervalos de escaneo muy cortos. Aunque los inversores pueden soportar lecturas frecuentes, un intervalo de 1 segundo puede generar una carga innecesaria en la red y en el propio inversor. Se recomienda un intervalo mínimo de 10 segundos para datos que cambian rápidamente (como la potencia) y de 60 segundos para datos acumulativos (como la energía).
También es importante asegurarse de que el inversor está correctamente conectado a tierra y que las conexiones eléctricas cumplen con las normativas locales. La monitorización no interfiere en el funcionamiento eléctrico, pero cualquier manipulación del inversor debe realizarse con el equipo desconectado de la red.
Preguntas frecuentes sobre la integración SofarSolar en Home Assistant
¿Qué hago si mi inversor SofarSolar no tiene Modbus TCP?
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.