Si tienes placas solares, seguramente sabes que tus excedentes solares (la energía que produces de más) se “vierten” o “inyectan” a la red eléctrica. Lo que mucha gente no sabe es que ese excedente no siempre se paga: en algunos contratos y mercados, cuando hay mucha producción solar y poca demanda, el precio de inyección puede llegar a ser negativo. Es decir, en lugar de cobrar por la energía que viertes, te la cobran a ti.
En este tutorial vamos a crear una automatización de Home Assistant que vigila el precio de inyección y, cuando se pone negativo, le ordena al inversor que deje de verter energía a la red. Cuando el precio vuelve a ser positivo, reanuda el vertido automáticamente. Todo ello con una verificación que comprueba que el cambio se ha aplicado de verdad, y un aviso por Telegram para que sepas en todo momento qué está pasando.
Es un ejemplo perfecto de domótica económica: una automatización pequeña que, en los momentos justos, te evita pagar dinero por algo que debería ser gratis.
Índice
Qué hace esta automatización con tus excedentes solares
La idea es sencilla de explicar en dos frases:
- Si el precio de inyección baja de 0 € (vertiendo perderías dinero) → activa la “limitación de vertido” del inversor para que no exporte a la red.
- Si el precio de inyección vuelve a estar por encima de 0 € → desactiva la limitación para reanudar el vertido y seguir cobrando por tu excedente.
Además, cada cambio se intenta hasta 3 veces y se verifica que el inversor ha quedado en el estado correcto. Así evitamos el clásico problema de que la orden “se pierda” y el inversor se quede como estaba. Por último, envía un mensaje a un grupo de Telegram avisando de cada acción.
El hardware: un inversor Sofar híbrido
Esta automatización está funcionando en un montaje real con un inversor solar Sofar híbrido monofásico con batería (serie “ES”/HYD, conexión a 230 V y 50 Hz). Al ser híbrido, gestiona a la vez las placas, la batería y la red eléctrica, y trabaja en modo de autoconsumo (“Self Use”): primero alimenta la casa, después carga la batería y, solo cuando sobra, vierte a la red.
La clave para este tutorial es que este tipo de inversores Sofar incorpora una función llamada “Feed-in limitation” (limitación de vertido). Es justo lo que vamos a manejar desde Home Assistant: un interruptor interno del inversor que le dice si puede exportar a la red o si debe limitar/cortar ese vertido. Muchos inversores modernos (Sofar, pero también Solax, Solis, Growatt…) tienen una función equivalente, así que la idea es trasladable a otras marcas cambiando las entidades.
No necesitas un modelo concreto para aprovechar este tutorial: basta con que tu inversor exponga en Home Assistant algún control de limitación de vertido. Más abajo verás exactamente qué entidades hacen falta.
Las integraciones que necesitas
Toda la magia se apoya en tres integraciones de Home Assistant. Vamos una por una, porque entenderlas es lo más importante del tutorial.
1. ESIOS (precios de Red Eléctrica de España)
El precio de inyección lo obtenemos de ESIOS, el sistema de información del operador del sistema eléctrico español (Red Eléctrica, REE). En el ejemplo se usa una integración de HACS que se conecta a la API de ESIOS y crea el sensor sensor.injection_price, que publica el precio del excedente/inyección en €/kWh (en este caso, el indicador 1739 de ESIOS).
Para usarla necesitas un token gratuito de ESIOS. Se solicita enviando un correo a consultasios@ree.es pidiendo un “token personal” para la API; te responden con una clave que pegarás en la configuración de la integración. Ese sensor, además del precio actual, ofrece datos muy útiles como el precio de cada hora del día, el mínimo y el máximo, y cuándo llegará el próximo mejor precio: perfecto para automatizar.
Si tu integración de precios solo te da el PVPC (precio de compra) y no el de inyección, puedes adaptarla; lo esencial es disponer de un sensor numérico que represente el precio de verter, y que pueda ponerse en negativo.
2. SolaX Modbus (control del inversor)
Para hablar con el inversor Sofar usamos la integración de HACS “SolaX Modbus” (el repositorio hass-solax-modbus). Aunque su nombre diga “SolaX”, soporta muchísimas marcas, Sofar entre ellas, además de Solis, Growatt, Sofar, etc. Se comunica con el inversor por Modbus, normalmente a través del puerto RS485 del equipo conectado a un adaptador Modbus-TCP (o un puente RS485-WiFi/Ethernet).
Esta integración es la que crea las dos entidades que de verdad controlan el vertido:
select.inversor_feedin_limitation_mode→ un selector con las opciones Disabled, Enabled – Feed-in limitation y Enabled – 3-phase limit.button.inversor_feedin_limitation_mode→ el botón que “aplica” en el inversor la opción seleccionada.
Además expone decenas de sensores interesantes (generación solar, temperatura, estado de la batería, potencia por fase…) que puedes usar en otras automatizaciones.
3. Telegram Bot (notificaciones)
Las avisos los envía la integración oficial Telegram Bot de Home Assistant. Necesitas crear un bot con @BotFather en Telegram, configurarlo en HA y obtener el chat_id del chat o grupo donde quieres recibir los mensajes. En el YAML verás un config_entry_id (identifica tu bot dentro de HA) y un chat_id (el destino del mensaje). Esta parte es totalmente opcional.
Las entidades que usa la automatización
Resumiendo, estos son los tres “ingredientes” que tendrás que sustituir por los nombres de tu instalación:
sensor.injection_price— el precio de verter energía a la red (de ESIOS).select.inversor_feedin_limitation_mode— el selector de modo de limitación de vertido del inversor (de SolaX Modbus).button.inversor_feedin_limitation_mode— el botón que aplica el cambio en el inversor (de SolaX Modbus).
La automatización completa (YAML)
Aquí tienes la automatización entera. Más abajo la explicamos por partes. Recuerda cambiar los nombres de las entidades, el config_entry_id y el chat_id de Telegram por los tuyos.
alias: Control de Exportación de Electricidad con Verificación
description: >-
Controla la exportación de electricidad según el precio de inyección,
con verificación de estado.
mode: single
triggers:
- entity_id: sensor.injection_price
trigger: state
conditions: []
actions:
- choose:
# CASO 1: precio negativo, dejar de verter
- conditions:
- condition: numeric_state
entity_id: sensor.injection_price
below: 0
- condition: state
entity_id: select.inversor_feedin_limitation_mode
state: Disabled
sequence:
- action: telegram_bot.send_message
data:
config_entry_id: TU_CONFIG_ENTRY_ID
chat_id: "TU_CHAT_ID"
message: "Exportacion Energia Cancelada"
- repeat:
count: 3
sequence:
- action: select.select_option
target:
entity_id: select.inversor_feedin_limitation_mode
data:
option: "Enabled - Feed-in limitation"
- action: button.press
target:
entity_id: button.inversor_feedin_limitation_mode
- delay:
seconds: 10
- action: button.press
target:
entity_id: button.inversor_feedin_limitation_mode
- delay:
seconds: 10
- if:
- condition: state
entity_id: select.inversor_feedin_limitation_mode
state: "Enabled - Feed-in limitation"
then:
- stop: "Exito"
# CASO 2: precio positivo, reanudar vertido
- conditions:
- condition: numeric_state
entity_id: sensor.injection_price
above: 0
- condition: state
entity_id: select.inversor_feedin_limitation_mode
state: "Enabled - Feed-in limitation"
sequence:
- action: telegram_bot.send_message
data:
config_entry_id: TU_CONFIG_ENTRY_ID
chat_id: "TU_CHAT_ID"
message: "Exportacion Energia Reanudada"
- repeat:
count: 3
sequence:
- action: select.select_option
target:
entity_id: select.inversor_feedin_limitation_mode
data:
option: Disabled
- action: button.press
target:
entity_id: button.inversor_feedin_limitation_mode
- delay:
seconds: 10
- action: button.press
target:
entity_id: button.inversor_feedin_limitation_mode
- delay:
seconds: 10
- if:
- condition: state
entity_id: select.inversor_feedin_limitation_mode
state: Disabled
then:
- stop: "Exito"
default: []
Cómo funciona, paso a paso
El disparador (trigger)
La automatización se ejecuta cada vez que cambia el sensor del precio de inyección. Como ese precio se actualiza periódicamente, cada actualización es una oportunidad para revisar si toca cortar o reanudar el vertido.
La estructura “choose”: dos caminos posibles
El bloque choose es como un “si pasa esto, haz aquello; si pasa esto otro, haz lo otro”. Tenemos dos casos:
Caso 1 — Precio negativo y el inversor está vertiendo. Se comprueban dos cosas a la vez: que el precio sea menor que 0 y que el modo de limitación esté en “Disabled” (es decir, ahora mismo sí está vertiendo). Solo si se cumplen las dos actúa. Esto evita repetir la orden si ya estaba cortado.
Caso 2 — Precio positivo y el inversor está cortado. Igual pero al revés: si el precio vuelve a ser positivo y la limitación está activada, reanuda el vertido.
Esta doble condición (precio + estado actual del inversor) es la clave para que la automatización no se dispare una y otra vez sin necesidad.
El bucle de verificación (repeat + if + stop)
Aquí está lo más interesante y lo que hace a esta automatización robusta. En lugar de mandar la orden una sola vez y cruzar los dedos, hace lo siguiente hasta 3 veces:
- Selecciona la opción deseada en el inversor.
- Pulsa el botón para aplicarla.
- Espera 10 segundos.
- Vuelve a pulsar el botón (algunos inversores necesitan ese segundo toque para confirmar).
- Espera otros 10 segundos a que el inversor responda.
- Comprueba si el inversor ya está en el estado correcto. Si lo está,
stop: "Exito"termina la automatización.
Si no lo consiguió, el bucle lo vuelve a intentar. Con 3 intentos se cubren los típicos fallos de comunicación con el inversor sin quedarse atascado para siempre.
Las notificaciones de Telegram
Antes de cada cambio, envía un mensaje a un grupo de Telegram (“Exportación Energía Cancelada” o “Reanudada”). Así tienes un registro cómodo en el móvil de cuándo se cortó y cuándo se reanudó el vertido.
Cómo instalarla en Home Assistant
Tienes dos formas de añadirla:
Opción A — Editor en modo YAML. Ve a Ajustes → Automatizaciones y escenas → Crear automatización → (menú de los tres puntos) → Editar en YAML, borra lo que haya y pega el código de arriba. Ajusta las entidades y guarda.
Opción B — Archivo automations.yaml. Si gestionas tus automatizaciones por archivo, pega el bloque dentro de automations.yaml y recarga las automatizaciones desde Herramientas para desarrolladores → YAML → Recargar automatizaciones.
Antes de darla por buena, comprueba la configuración con Herramientas para desarrolladores → Comprobar configuración.
Personalízala a tu gusto
Algunas ideas para adaptarla a tu caso:
- Sin Telegram: si no usas Telegram, borra simplemente las dos acciones
telegram_bot.send_message. El resto funciona igual. También puedes cambiarlas por una notificación a tu móvil connotify.notify. - Umbral distinto: en lugar de cortar solo cuando el precio es negativo (
below: 0), podrías cortar también cuando esté por debajo de un valor muy bajo que no te compense, por ejemplobelow: 0.01. - Inversor sin botón: si tu inversor aplica el cambio solo con seleccionar la opción, puedes quitar las acciones de
button.press. - Otra marca: si tienes Solax, Solis o Growatt, busca en tus entidades el equivalente a “feed-in limitation” o “export limit” y sustituye los nombres.
- Más o menos intentos: ajusta
count: 3si quieres más reintentos o tiempos de espera distintos en losdelay.
Conclusión
Con apenas unas líneas de YAML, Home Assistant vigila por ti el precio de inyección y protege tu bolsillo para que no pagues por tus excedentes solares cuando verter sale caro, reanudando el vertido en cuanto vuelve a ser rentable. Es un ejemplo redondo de cómo la automatización del hogar no solo da comodidad, sino que también ahorra dinero de forma real. Lo mejor: una vez instalada, te olvidas; ella trabaja sola en segundo plano.
¿Tienes un inversor distinto y no sabes qué entidades usar? Cuéntalo en los comentarios y entre todos lo afinamos.
Casi todos los inversores híbridos del mercado que soporten modbus son compatibles.