Cómo Integrar un Inversor Solar SMA en Home Assistant con Modbus TCP
Escrito por: Alex R.La integración de sistemas de energía solar en plataformas de domótica como Home Assistant se ha convertido en una necesidad para los hogares inteligentes modernos. Entre los fabricantes de inversores, SMA destaca por su fiabilidad y amplia gama de productos, desde los populares Sunny Boy hasta los potentes Sunny Tripower. Sin embargo, muchos usuarios se enfrentan al desafío de extraer datos en tiempo real de estos inversores para visualizarlos en sus paneles de control. La solución más robusta y flexible es utilizar el protocolo Modbus TCP, que permite una comunicación directa y eficiente con el inversor a través de la red local. En esta guía exhaustiva, aprenderás paso a paso cómo configurar la integración de tu inversor SMA en Home Assistant mediante Modbus TCP, cubriendo desde los fundamentos técnicos hasta la resolución de problemas comunes. Con más de 2500 palabras de contenido detallado, este artículo te proporcionará todo el conocimiento necesario para lograr una monitorización solar profesional y fiable.
Fundamentos de la Comunicación Modbus TCP con Inversores SMA
Modbus TCP es un protocolo de comunicación industrial ampliamente utilizado para la supervisión y control de dispositivos electrónicos. En el contexto de los inversores solares SMA, este protocolo permite leer registros específicos que contienen datos como la potencia actual, la energía total generada, las tensiones de entrada y salida, las temperaturas internas y muchos otros parámetros operativos. A diferencia de otras interfaces propietarias, Modbus TCP es abierto, estandarizado y no requiere hardware adicional más allá de una conexión Ethernet estándar. La mayoría de los inversores SMA modernos incluyen una interfaz Ethernet integrada o un módulo opcional (como el SMA Webconnect o el SMA Data Manager) que expone un servidor Modbus TCP. Es importante verificar la compatibilidad de tu modelo específico; los inversores de la serie Sunny Boy (SB 1.5-5.0, SB 3.0-6.0, SB 5.0-7.7) y Sunny Tripower (STP 3.0-10.0, STP 8.0-15.0) suelen soportar Modbus TCP de fábrica, mientras que modelos más antiguos pueden requerir actualizaciones de firmware o hardware adicional. La comunicación se realiza a través del puerto 502 (el puerto estándar de Modbus TCP), y cada registro se identifica mediante una dirección única. Por ejemplo, el registro 30775 (0x7837) contiene la potencia activa total actual en vatios, mientras que el registro 30529 (0x7741) almacena la energía total generada en kilovatios-hora. Home Assistant, con su potente sistema de integraciones personalizadas, puede actuar como cliente Modbus TCP, realizando lecturas periódicas de estos registros y exponiéndolos como sensores en su bus de datos.
Requisitos Previos y Compatibilidad de Hardware
Antes de comenzar, asegúrate de cumplir con los siguientes requisitos: un inversor SMA con soporte Modbus TCP (consulta la documentación de tu modelo), una conexión Ethernet estable entre el inversor y tu red local (puede ser mediante cable directo o a través de un switch), un servidor Home Assistant en funcionamiento (recomendamos la instalación en Raspberry Pi 4 o superior, o en un contenedor Docker), y acceso administrativo a Home Assistant para instalar integraciones personalizadas. Además, necesitarás conocer la dirección IP de tu inversor SMA. Puedes encontrarla accediendo al panel web del inversor (generalmente a través de su IP asignada por DHCP) o utilizando herramientas de escaneo de red como Advanced IP Scanner o Fing. Si tu inversor no tiene una IP fija, es recomendable asignarle una reserva DHCP en tu router para evitar cambios de dirección. La integración se basa en la plataforma Modbus de Home Assistant, que permite definir sensores que lean registros específicos. Aunque existe una integración oficial llamada 'SMA Solar' que utiliza la API web de SMA, la aproximación por Modbus TCP ofrece mayor control y acceso a datos más detallados, especialmente para usuarios avanzados que desean monitorizar parámetros como la temperatura del disipador, la corriente de cada string o el estado de los relés.
Configuración Paso a Paso de la Integración Modbus TCP
La configuración se realiza mediante archivos YAML en Home Assistant. A continuación, te guiamos a través de cada paso, desde la instalación de la integración Modbus hasta la creación de sensores personalizados. Sigue estas instrucciones al pie de la letra para garantizar una comunicación exitosa.
Paso 1: Instalación de la Integración Modbus en Home Assistant
Home Assistant incluye una integración Modbus incorporada que permite configurar clientes TCP. Para activarla, navega a Configuración > Dispositivos y Servicios > Añadir Integración y busca 'Modbus'. Selecciona la opción 'Modbus TCP' e introduce la dirección IP de tu inversor SMA y el puerto 502. Puedes dejar los parámetros de timeout y retries en sus valores predeterminados (5 segundos y 3 intentos respectivamente). Una vez añadida, la integración creará un hub Modbus que servirá como base para los sensores. Verifica que la conexión sea exitosa revisando los logs de Home Assistant (Configuración > Registros). Si ves errores de conexión, comprueba que el inversor esté accesible desde la red y que el puerto 502 no esté bloqueado por un firewall.
Paso 2: Identificación de los Registros Modbus Relevantes
SMA proporciona un mapa de registros Modbus detallado en su documentación técnica. Los registros más comunes para monitorización básica son los siguientes:
| Registro (Decimal) | Registro (Hex) | Descripción | Unidad | Tipo |
|---|---|---|---|---|
| 30775 | 0x7837 | Potencia activa total | W | Uint32 |
| 30529 | 0x7741 | Energía total generada | kWh | Uint64 |
| 30773 | 0x7835 | Corriente de string 1 | A | Uint16 |
| 30774 | 0x7836 | Corriente de string 2 | A | Uint16 |
| 30961 | 0x78F1 | Temperatura del disipador | °C | Int16 |
Para obtener el mapa completo, descarga el documento 'Modbus Parameters' desde el portal de descargas de SMA (requiere registro). Los registros se leen en formato big-endian y pueden ser de 16 o 32 bits. Algunos valores, como la energía total, se almacenan en dos registros consecutivos (64 bits). Es fundamental respetar el tipo de dato especificado para evitar lecturas incorrectas. Por ejemplo, un registro Uint32 debe leerse como dos registros consecutivos de 16 bits.
Paso 3: Configuración de Sensores en configuration.yaml
Una vez que tienes la integración Modbus funcionando, debes definir los sensores en tu archivo de configuración. Abre el archivo configuration.yaml (puedes acceder a través del complemento 'File Editor' o mediante Samba) y añade una sección 'sensor' con plataforma 'modbus'. Aquí tienes un ejemplo completo para los registros más importantes:
sensor:
- platform: modbus
scan_interval: 10
registers:
- name: "SMA Potencia Actual"
hub: modbus_hub
unit_of_measurement: "W"
slave: 1
register: 30775
register_type: holding
count: 2
data_type: uint32
scale: 1
precision: 0
- name: "SMA Energía Total"
hub: modbus_hub
unit_of_measurement: "kWh"
slave: 1
register: 30529
register_type: holding
count: 4
data_type: uint64
scale: 0.001
precision: 3
- name: "SMA Corriente String 1"
hub: modbus_hub
unit_of_measurement: "A"
slave: 1
register: 30773
register_type: holding
count: 1
data_type: uint16
scale: 0.1
precision: 1
- name: "SMA Temperatura Disipador"
hub: modbus_hub
unit_of_measurement: "°C"
slave: 1
register: 30961
register_type: holding
count: 1
data_type: int16
scale: 0.1
precision: 1Explicación de los parámetros: 'hub' debe coincidir con el nombre que le diste a tu integración Modbus (por defecto 'modbus_hub'). 'slave' es la dirección del dispositivo en la red Modbus; para SMA suele ser 1 o 126 (consulta la documentación). 'register' es la dirección decimal del registro. 'register_type' debe ser 'holding' para registros de retención (los más comunes). 'count' indica el número de registros de 16 bits que componen el dato (2 para uint32, 4 para uint64). 'data_type' define cómo se interpretan los bytes. 'scale' y 'precision' permiten convertir el valor bruto a unidades legibles (por ejemplo, la energía total se da en Wh, pero queremos kWh, por lo que escalamos por 0.001). Guarda el archivo y reinicia Home Assistant para aplicar los cambios.
Paso 4: Verificación y Personalización del Panel
Después del reinicio, los nuevos sensores deberían aparecer en 'Desarrollador > Estados'. Busca entidades que comiencen con 'sensor.sma_'. Si ves valores actualizados, la integración funciona correctamente. Si algún sensor muestra 'desconocido' o 'no disponible', revisa los logs en busca de errores de comunicación o de tipo de dato. Puedes crear un panel de control personalizado en el Dashboard de Home Assistant utilizando tarjetas como 'Entities', 'Gauge' o 'History Graph'. Por ejemplo, una tarjeta 'Gauge' para la potencia actual con rango 0-6000 W y una tarjeta 'Sensor' para la energía total. También puedes configurar automatizaciones, como enviar una notificación si la potencia cae por debajo de un umbral o si la temperatura del disipador supera los 80°C.
Errores Comunes y Solución de Problemas
Durante la configuración, es posible encontrar varios obstáculos. A continuación, detallamos los problemas más frecuentes y cómo solucionarlos.
Problema 1: El inversor no responde en el puerto 502
Esto puede deberse a que el servidor Modbus no está habilitado en el inversor. Accede a la interfaz web del inversor (introduciendo su IP en un navegador) y busca la configuración de 'Comunicación' o 'Interfaz'. Asegúrate de que Modbus TCP esté activado y que el puerto sea 502. Algunos modelos requieren habilitar la opción 'Modbus Multicast' o 'Sunspec'. Si no encuentras la opción, consulta el manual de usuario. También verifica que no haya un firewall bloqueando el puerto 502 en tu red. Prueba la conectividad usando una herramienta como 'Modbus Poll' desde un PC en la misma red.
Problema 2: Lecturas incorrectas o valores fuera de rango
Si los sensores muestran valores absurdos (por ejemplo, potencia negativa o temperatura de 999°C), es probable que el tipo de dato o la dirección del registro sean incorrectos. Revisa el mapa de registros de SMA y asegúrate de que 'count' y 'data_type' coincidan. Por ejemplo, un registro Uint32 debe tener count=2 y data_type: uint32. Si el valor parece estar desplazado (por ejemplo, la potencia real es 2500 W pero lees 25000 W), ajusta el factor de escala. También verifica el orden de bytes: algunos inversores usan little-endian en lugar de big-endian. En Modbus, el orden predeterminado es big-endian, pero puedes cambiarlo con la opción 'swap: byte' o 'swap: word' en la configuración del sensor.
Problema 3: Home Assistant no arranca o muestra errores en los logs
Esto suele deberse a una sintaxis incorrecta en configuration.yaml. Utiliza el validador de YAML integrado en Home Assistant (Configuración > Controles del Servidor > Verificar Configuración) antes de reiniciar. Los errores comunes incluyen indentación incorrecta (usa espacios, no tabuladores), comillas faltantes o nombres de sensor duplicados. Si el error persiste, revisa los logs completos en 'Configuración > Registros' y busca entradas que contengan 'Modbus' o 'sensor'.
Tabla Comparativa: Integración Oficial vs. Modbus TCP
Para ayudarte a decidir qué método de integración utilizar, presentamos una comparativa detallada entre la integración oficial 'SMA Solar' (basada en la API web) y la personalizada mediante Modbus TCP.
| Característica | Integración Oficial (API Web) | Modbus TCP Personalizado |
|---|---|---|
| Facilidad de configuración | Alta | Media |
| Cantidad de sensores | Limitada | Ilimitada |
| Frecuencia de actualización | Cada 60s | Configurable (10s) |
| Acceso a datos históricos | No | No |
| Dependencia de la nube | Sí | No (local) |
| Personalización avanzada | Baja | Alta |
Como se observa, Modbus TCP ofrece mayor flexibilidad y frecuencia de actualización, aunque requiere una configuración más manual. Para la mayoría de los usuarios, la integración oficial es suficiente, pero para los entusiastas que desean monitorizar cada detalle, Modbus es la opción superior.
Preguntas Frecuentes (FAQ)
¿Qué modelos de inversores SMA son compatibles con Modbus TCP?
¿Es seguro exponer el puerto Modbus a la red local?
¿Puedo escribir registros Modbus para controlar el inversor?
¿Qué hago si mi inversor no tiene el puerto 502 abierto?
Conclusiones y Plan de Acción Recomendado
La integración de un inversor solar SMA en Home Assistant mediante Modbus TCP es una solución potente y flexible que permite un monitoreo detallado y en tiempo real de tu sistema fotovoltaico. A lo largo de esta guía, hemos cubierto desde los fundamentos del protocolo hasta la configuración práctica de sensores, pasando por la resolución de problemas comunes y una comparativa con la integración oficial. Con este conocimiento, puedes personalizar tu panel de control para visualizar exactamente los parámetros que más te interesen, establecer automatizaciones inteligentes y optimizar el rendimiento de tu instalación solar.
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.