Cómo Integrar un Inversor Solar GoodWe con Batería BYD en Home Assistant: Monitorización y Automatización Avanzada
Escrito por: Alex R.La integración de un inversor solar GoodWe con una batería BYD en Home Assistant se ha convertido en una de las configuraciones más demandadas por los entusiastas de la domótica y la eficiencia energética. Esta combinación permite no solo monitorizar en tiempo real la producción solar, el estado de carga de la batería y el consumo del hogar, sino también automatizar estratégicamente los excedentes para maximizar el ahorro. En esta guía exhaustiva, exploraremos desde los fundamentos técnicos de la comunicación Modbus hasta la implementación práctica de automatizaciones avanzadas, pasando por la configuración del inversor, la integración en Home Assistant y la resolución de problemas comunes. Si posees un sistema GoodWe con baterías BYD, este artículo te proporcionará todas las herramientas para convertir tu instalación en un sistema inteligente y altamente eficiente.
1. Fundamentos Técnicos de la Integración GoodWe BYD en Home Assistant
Antes de sumergirnos en la configuración práctica, es crucial comprender la arquitectura de comunicación que permite a Home Assistant interactuar con el inversor GoodWe y la batería BYD. La mayoría de los inversores GoodWe (especialmente las series ET, EH, BT y BH) incorporan un puerto de comunicación Modbus RTU sobre RS485, que puede ser accedido a través de diferentes métodos. El más común es mediante el módulo WiFi o Ethernet integrado (como el Ezlink o el Smart Meter), pero para una integración local y sin dependencia de la nube, se recomienda utilizar un convertidor USB-RS485 conectado directamente al puerto Modbus del inversor.
La batería BYD, por su parte, se comunica con el inversor a través del protocolo CAN Bus, y es el propio inversor GoodWe quien expone los datos de la batería (estado de carga, voltaje, corriente, temperatura, etc.) a través de sus registros Modbus. Por lo tanto, al integrar el inversor en Home Assistant, obtendremos automáticamente la información de la batería sin necesidad de conectar directamente a la BYD. Esto simplifica enormemente la instalación y reduce costes.
1.1. Protocolo Modbus y Registros Clave
El protocolo Modbus es un estándar de comunicación industrial que permite leer y escribir registros en dispositivos electrónicos. En el caso de los inversores GoodWe, los registros más relevantes para la monitorización solar son los siguientes:
| Registro (Hex) | Descripción | Unidad | Factor |
|---|---|---|---|
| 0x0000 | Potencia de salida del inversor | W | 1 |
| 0x0001 | Voltaje de la red | V | 0.1 |
| 0x0002 | Corriente de salida | A | 0.1 |
| 0x0003 | Frecuencia de red | Hz | 0.01 |
| 0x0004 | Potencia fotovoltaica | W | 1 |
| 0x0005 | Voltaje del string PV1 | V | 0.1 |
| 0x0006 | Corriente del string PV1 | A | 0.1 |
| 0x0007 | Voltaje del string PV2 | V | 0.1 |
| 0x0008 | Corriente del string PV2 | A | 0.1 |
| 0x0009 | Potencia de carga de batería | W | 1 |
| 0x000A | Potencia de descarga de batería | W | 1 |
| 0x000B | Estado de carga de batería (SOC) | % | 1 |
| 0x000C | Voltaje de batería | V | 0.1 |
| 0x000D | Corriente de batería | A | 0.1 |
| 0x000E | Temperatura de batería | °C | 0.1 |
Estos registros son la base para construir sensores personalizados en Home Assistant. Es importante consultar la documentación específica de tu modelo de inversor GoodWe, ya que los registros pueden variar ligeramente entre series. La integración oficial de GoodWe en Home Assistant, disponible a través de HACS, ya incluye muchos de estos sensores predefinidos, lo que simplifica enormemente la configuración.
1.2. Métodos de Conexión: Local vs. Nube
Existen dos enfoques principales para integrar el inversor GoodWe en Home Assistant: mediante la nube (usando la API oficial de GoodWe o el módulo WiFi) o de forma local (a través de Modbus TCP o RTU). La conexión local es la más recomendada por su fiabilidad, baja latencia y independencia de servidores externos. Para ello, necesitarás un adaptador USB-RS485 (como el USR-TCP232-410s o similar) conectado al puerto Modbus del inversor y a tu servidor de Home Assistant (por ejemplo, una Raspberry Pi o un mini PC).
Si optas por la conexión local, deberás configurar la integración Modbus en Home Assistant, especificando la dirección IP del adaptador (si es Ethernet) o el puerto serie (si es USB). La velocidad de transmisión típica es 9600 baudios, 8 bits de datos, sin paridad y 1 bit de parada. A continuación, se muestra un ejemplo de configuración en el archivo configuration.yaml:
modbus:
- name: GoodWe
type: serial
port: /dev/ttyUSB0
baudrate: 9600
bytesize: 8
method: rtu
parity: N
stopbits: 1
sensors:
- name: Potencia Solar
slave: 1
address: 4
input_type: input
unit_of_measurement: W
scale: 1
precision: 0
data_type: uint16
- name: SOC Bateria
slave: 1
address: 11
input_type: input
unit_of_measurement: '%'
scale: 1
precision: 0
data_type: uint16Este código define dos sensores: la potencia solar instantánea y el estado de carga de la batería. Observa que la dirección del registro se especifica en decimal (4 para 0x0004 y 11 para 0x000B). Es fundamental ajustar el slave ID correcto, que por defecto suele ser 1, pero puede variar.
2. Guía de Instalación Paso a Paso: De la Configuración Física a Home Assistant
Ahora que comprendemos los fundamentos, vamos a detallar el proceso completo de integración, desde la conexión física hasta la visualización de datos en un dashboard personalizado. Sigue estos pasos meticulosamente para evitar errores comunes.
2.1. Conexión Física del Adaptador RS485
El primer paso es conectar el adaptador USB-RS485 al puerto de comunicación del inversor GoodWe. Localiza el puerto RS485, que generalmente se encuentra en la parte inferior del inversor, protegido por una tapa. Necesitarás un conector RJ45 o terminales de tornillo, dependiendo del modelo. Los pines típicos son: pin 1 (A) y pin 2 (B) para la señal diferencial, y pin 3 (GND) para tierra. Conecta el adaptador a tu servidor de Home Assistant y verifica que el sistema operativo lo reconoce (por ejemplo, como /dev/ttyUSB0 en Linux).
1Paso 1: Materiales Necesarios
Adaptador USB-RS485 (recomendado: USR-TCP232-410s o similar), cable apantallado de 2 hilos, conector RJ45 o terminales, destornillador, y acceso al puerto Modbus del inversor.
2Paso 2: Conexión al Inversor
Apaga el inversor (DC y AC). Conecta el cable al puerto RS485 respetando la polaridad A y B. Asegura bien las conexiones y vuelve a colocar la tapa protectora.
3Paso 3: Conexión al Servidor
Conecta el adaptador USB al servidor de Home Assistant. Verifica que aparece el dispositivo en /dev/ttyUSB0 o similar. Si usas Ethernet, configura la IP correspondiente.
4Paso 4: Configuración en Home Assistant
Añade la configuración Modbus en configuration.yaml, reinicia Home Assistant y comprueba que los sensores aparecen correctamente.
2.2. Configuración Avanzada de Sensores y Plantillas
Una vez que los sensores básicos funcionan, podemos crear sensores derivados y plantillas para obtener información más útil, como la energía acumulada, el autoconsumo o el balance neto. Por ejemplo, para calcular la energía solar generada en el día, podemos utilizar la integración de sensores de utilidad (utility_meter) o sensores de integración (integration).
A continuación, se muestra un ejemplo de configuración para un sensor de energía diaria y otro para el autoconsumo instantáneo:
sensor:
- platform: integration
source: sensor.potencia_solar
name: Energia Solar Diaria
unit_prefix: k
round: 2
method: left
- platform: template
sensors:
autoconsumo:
friendly_name: 'Autoconsumo Instantaneo'
unit_of_measurement: 'W'
value_template: >-
{% set solar = states('sensor.potencia_solar') | float %}
{% set consumo = states('sensor.consumo_casa') | float %}
{{ [solar, consumo] | min }}
excedente:
friendly_name: 'Excedente a Red'
unit_of_measurement: 'W'
value_template: >-
{% set solar = states('sensor.potencia_solar') | float %}
{% set consumo = states('sensor.consumo_casa') | float %}
{{ [solar - consumo, 0] | max }}Estos sensores nos permiten conocer en todo momento cuánta energía estamos autoconsumiendo y cuánta estamos vertiendo a la red. Con esta información, podemos diseñar automatizaciones para, por ejemplo, encender el termo eléctrico o la bomba de la piscina cuando haya excedente, maximizando el ahorro.
3. Automatizaciones Avanzadas para Maximizar el Ahorro Energético
La verdadera potencia de integrar GoodWe y BYD en Home Assistant radica en la capacidad de crear automatizaciones inteligentes que aprovechen al máximo la energía solar y el almacenamiento en baterías. A continuación, presentamos varios casos prácticos con ejemplos de código YAML que puedes adaptar a tu instalación.
3.1. Automatización de Carga de Batería en Horas Valle
Si tu tarifa eléctrica tiene discriminación horaria, puedes programar la carga de la batería BYD durante las horas valle (cuando la electricidad es más barata) para luego utilizarla durante las horas punta. Esta automatización requiere que el inversor GoodWe permita el control de carga desde Modbus (algunos modelos lo permiten mediante registros de escritura).
El siguiente ejemplo activa la carga forzada de la batería a las 2:00 AM y la detiene a las 6:00 AM, siempre que el precio de la luz sea bajo y el SOC esté por debajo del 80%:
automation:
- alias: 'Cargar Bateria en Horas Valle'
trigger:
- platform: time
at: '02:00:00'
condition:
- condition: numeric_state
entity_id: sensor.soc_bateria
below: 80
- condition: numeric_state
entity_id: sensor.precio_luz
below: 0.15
action:
- service: modbus.write_register
data:
hub: goodwe
unit: 1
address: 0x1000
value: 1
- alias: 'Detener Carga Bateria'
trigger:
- platform: time
at: '06:00:00'
action:
- service: modbus.write_register
data:
hub: goodwe
unit: 1
address: 0x1000
value: 0Es importante verificar en el manual de tu inversor la dirección exacta del registro de control de carga y los valores permitidos. No todos los modelos GoodWe permiten escritura Modbus; en esos casos, deberás usar la API de la nube o un sistema externo.
3.2. Gestión de Excedentes para Calentamiento de Agua
Otra automatización muy común es desviar el excedente solar a un termo eléctrico o a una resistencia de calefacción. Para ello, necesitamos medir el excedente (como vimos en el sensor de plantilla) y activar un relé o enchufe inteligente cuando supere un umbral. El siguiente ejemplo enciende el termo cuando el excedente es mayor de 1500 W durante 5 minutos y lo apaga cuando baja de 500 W:
automation:
- alias: 'Encender Termo con Excedente'
trigger:
- platform: numeric_state
entity_id: sensor.excedente
above: 1500
for:
minutes: 5
action:
- service: switch.turn_on
entity_id: switch.termo_electrico
- alias: 'Apagar Termo sin Excedente'
trigger:
- platform: numeric_state
entity_id: sensor.excedente
below: 500
for:
minutes: 2
action:
- service: switch.turn_off
entity_id: switch.termo_electricoEsta automatización puede ampliarse para controlar la potencia de carga de forma proporcional al excedente, utilizando un dimmer o un relé de estado sólido. Home Assistant permite integrar fácilmente dispositivos como Shelly, Sonoff o incluso PLCs industriales.
4. Errores Comunes y Limitaciones Técnicas
A pesar de que la integración es relativamente sencilla, existen varios errores que los usuarios principiantes suelen cometer. A continuación, detallamos los más frecuentes y cómo evitarlos.
- Error 1: Dirección Modbus incorrecta: Cada modelo de inversor tiene un mapa de registros distinto. Consulta el manual oficial o la documentación de la integración GoodWe para Home Assistant.
- Error 2: Slave ID incorrecto: El ID de esclavo por defecto es 1, pero algunos instaladores lo cambian. Verifica en la configuración del inversor.
- Error 3: Falta de permisos en el puerto serie: En Linux, el usuario de Home Assistant debe pertenecer al grupo dialout para acceder a /dev/ttyUSB0.
- Error 4: Intervalo de sondeo demasiado corto: Consultar los registros cada segundo puede sobrecargar el inversor. Se recomienda un intervalo de 5 a 10 segundos.
5. Comparativa de Métodos de Integración
Existen varias formas de integrar el inversor GoodWe en Home Assistant. A continuación, comparamos las tres más habituales: integración oficial (HACS), Modbus local y API de la nube.
| Método | Ventajas | Desventajas | Recomendado |
|---|---|---|---|
| Integración HACS (GoodWe) | Fácil configuración, sensores predefinidos, actualizaciones automáticas | Depende de la nube, latencia, posible caída de servidores | Opcional |
| Modbus Local (RS485) | Sin dependencia de nube, baja latencia, control total | Requiere hardware adicional, configuración manual | Muy Recomendado |
| API Nube GoodWe | No requiere hardware, funciona en cualquier lugar | Dependencia total de internet, límites de peticiones, datos con retardo | No Recomendado |
Como se desprende de la tabla, el método Modbus local es el más robusto y profesional. Aunque requiere una inversión inicial en hardware (aproximadamente 30-50 euros), la fiabilidad y el control que ofrece no tienen comparación. La integración HACS es una buena opción para quienes no quieren complicarse, pero no permite automatizaciones críticas en tiempo real.
6. Preguntas Frecuentes (FAQ)
¿Es compatible mi inversor GoodWe con la integración Modbus en Home Assistant?
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.