¿Tienes paneles solares con netbilling y te duele ver que a mediodía la casa le regala energía a la red, mientras en la tarde prendes la estufa a parafina o a gas? En otoño y primavera pasa todos los días: sol de sobra al almuerzo y frío apenas se esconde. Este proyecto le da vuelta a esa ecuación con una estufa eléctrica de aceite que solo se enciende cuando los paneles producen más de lo que la casa consume, y que se apaga sola cuando pasa una nube, cuando empiezas a comprarle energía a la distribuidora o cuando la pieza ya llegó a la temperatura que quieres.
Al terminar vas a saber:
- calcular en Home Assistant el excedente solar real sin que la propia estufa lo contamine;
- evitar que la carga se prenda y apague cada minuto con histéresis y retardos;
- escribir una automatización idempotente que falla hacia "apagado" si un sensor se cae;
- decidir con números si en tu casa conviene o no, según el combustible que reemplazas;
- y, si prefieres armarlo tú, reemplazar el enchufe comercial por un ESP32-C6 con ESPHome que comanda un contactor.
La lógica funciona con cualquier inversor o medidor que le entregue a Home Assistant la potencia en el empalme.
El concepto: por qué el excedente vale poco en Chile
Con la Ley 20.571 de generación distribuida (lo que todos llaman netbilling), la energía que inyectas no se paga igual que la que compras. La distribuidora la valoriza al precio de la energía, sin los cargos de transmisión y distribución que sí vienen en tu tarifa BT1, así que cada kWh inyectado vale bastante menos que un kWh comprado. Ese saldo se descuenta de la boleta y lo que sobra se arrastra a los meses siguientes.
La consecuencia práctica: cada kWh de excedente que consumes tú mismo te rinde más que inyectarlo. El problema es que en otoño la casa a mediodía no necesita casi nada: el refrigerador, un computador, quizás la lavadora. El resto se va a la red al precio bajo.
Una estufa eléctrica es la carga perfecta para absorber ese sobrante, con una condición dura: solo tiene sentido si funciona con excedente. Con energía comprada a tarifa residencial, calentar con resistencia eléctrica sale más caro que casi cualquier combustible. Por eso toda la automatización gira en torno a una pregunta: ¿sobra energía en este momento?
El autor del tutorial original, que vive en Alemania, lo resolvió para reemplazar su caldera a petróleo. Acá lo adaptamos a la realidad chilena: casas monofásicas de 220 V, enchufes tipo L y calefacción que suele ser parafina, gas licuado o leña.
Hardware: qué necesitas y por qué cada pieza
Una estufa de aceite con termostato mecánico. El original usa una De'Longhi Radia S de siete aletas y 1.500 W, funcionando en su nivel más bajo, que medido consume 720 W. El detalle mecánico no es un capricho, y lo explicamos en la sección siguiente.

Un interruptor con medición de potencia. Hay dos caminos:
- Ruta A, enchufe inteligente: el original usa un SONOFF S60ZBTPF Zigbee de 16 A, sin WiFi ni nube, que además actúa como router de la red Zigbee. Un Shelly Plug o un Tapo P110 funcionan igual por WiFi. La medición de potencia importa, porque entra en el cálculo del excedente.
- Ruta B, ESP32-C6 con relé y contactor: la versión DIY, con la que aprendes cómo funciona por dentro. Está explicada más abajo.
Home Assistant corriendo en algo que no se apague. Una Raspberry Pi 5 con Home Assistant OS es la opción más común. Si vas por la ruta A con Zigbee, necesitas además un coordinador Zigbee USB para ZHA o Zigbee2MQTT.
Un sensor de potencia en el empalme. Esta es la pieza que no se puede saltar. Tiene que medir la potencia neta que entra o sale de la casa: negativa cuando inyectas, positiva cuando compras. El original lee el medidor EMMA de su inversor Huawei. En Chile se ven mucho Huawei, Growatt, Fronius y SMA, y casi todos tienen integración en Home Assistant. Si tu inversor no mide el empalme, en una casa monofásica basta un Shelly EM con pinza en el tablero (el Shelly Pro 3EM que menciona el original es para trifásico).
Un sensor de temperatura en la pieza. El original usa un Airthings View Plus, pero sirve cualquiera que reporte cada pocos minutos: un sensor Zigbee, un termostato de radiador o el mismo ESP32 de la ruta B con un DHT22.
Opcional: una cuenta gratuita de Solcast para la etapa de pronóstico del final.
Por qué estufa de aceite y termostato mecánico
El enchufe inteligente no "aprieta el botón" de la estufa: le corta y le devuelve la corriente completa. Eso solo lo tolera un equipo sin electrónica. Una perilla mecánica no olvida en qué posición quedó, así que cuando vuelve la corriente la estufa sigue calentando en el nivel que dejaste. Los modelos con pantalla y control digital, como la variante EasyTronic de la misma línea, arrancan en standby después de un corte: el enchufe hace clic y en la pieza no pasa nada.

Frente a un termoventilador o un convector, la estufa de aceite tiene dos ventajas más para este uso:
- No tiene ventilador: es silenciosa y no levanta polvo.
- Inercia térmica: el aceite es un pequeño acumulador. Unos cuantos litros de aceite más el metal de las aletas guardan calor y lo siguen entregando varios minutos después de cortar la corriente. Cuando una nube se come el excedente por un rato, la pieza no se enfría de golpe. En términos de control, es un filtro pasa bajos natural que suaviza el encendido y apagado.
Por qué el nivel más bajo. La pieza solo absorbe calor hasta la temperatura objetivo; todo lo que va por encima es excedente regalado. Y 720 W se cubren con sobrante durante muchas más horas de un día de otoño que 1.500 W. Una carga chica que funciona seis horas aprovecha más sol que una grande que funciona una.
⚠️ Seguridad: estufas y enchufes programables
Los manuales de calefactores (norma IEC/EN 60335-2-30) advierten que no se deben operar con temporizadores, programadores ni control remoto, porque un equipo tapado o mal ubicado puede provocar un incendio. Este montaje va en contra de esa advertencia, y tienes que saberlo antes de empezar. Si lo replicas, lo haces bajo tu responsabilidad, y el manual del fabricante manda por sobre cualquier cosa que diga este artículo.
Reglas mínimas:
- La estufa va parada, con espacio libre alrededor, lejos de cortinas, muebles y ropa. Nada colgado encima.
- El interruptor va directo en el enchufe de muro, nunca en una zapatilla ni en un alargador.
- En Chile los enchufes domiciliarios son tipo L de 10 A o 16 A a 220 V. A 1.500 W la estufa consume unos 6,8 A (1.500 / 220), y a 720 W unos 3,3 A. Muchos enchufes inteligentes que se venden en línea son de formato europeo (Schuko): no los uses con un adaptador para una carga que funciona horas, porque el adaptador es justo el punto que se calienta.
- No la dejes funcionando sin nadie en casa. Más abajo está cómo hacer que Home Assistant lo imponga.
Los números: ¿te conviene en tu casa?
Antes de armar nada, haz la cuenta con tus precios. La métrica útil es cuánto te cuesta un kWh de calor útil con cada fuente:
- Combustible: precio por litro (o kg) ÷ (kWh por litro × eficiencia). La parafina entrega del orden de 10 kWh por litro y el gas licuado cerca de 12,8 kWh por kg. Una estufa a parafina sin ducto deja casi todo el calor dentro de la pieza (junto con los gases de la combustión), mientras que una caldera pierde parte en la chimenea y en las cañerías.
- Estufa con excedente: lo que te hubiera pagado la distribuidora por ese kWh inyectado. Es el costo de oportunidad.
- Estufa con energía comprada: tu tarifa por kWh. Aquí es donde casi siempre pierde.
Como referencia, el autor del original hizo la cuenta con sus precios alemanes: su caldera a petróleo le cuesta unos 21 centavos de euro por kWh de calor, el excedente le vale 7,8 centavos y la electricidad comprada 31. En un día soleado de otoño la estufa funciona unas seis horas y entrega cerca de 4,3 kWh de calor, lo que le ahorra poco más de medio litro de petróleo al día. Su conclusión, que aplica igual en Chile: es una medida de ahorro chica y segura, no una máquina de hacer plata.
Dos casos donde no conviene:
- Si calientas con bomba de calor o aire acondicionado inverter, olvídalo. Una bomba de calor convierte 1 kWh de electricidad en 3 a 4 kWh de calor; la resistencia de la estufa, en 1. Mejor usa el excedente para el aire acondicionado.
- Si tu inyección vale casi lo mismo que tu combustible, el ahorro se vuelve marginal y el beneficio pasa a ser otro: menos parafina quemada dentro de la casa y menos humedad en los vidrios.
Software: de dónde saca Home Assistant el excedente
Todo el sistema descansa en un solo número: la potencia neta en el empalme. Negativa cuando inyectas, positiva cuando compras. En el original el sensor se llama sensor.emma_wirkleistung y a mediodía, con el lavavajillas funcionando, marca unos, 1.400 W; en una tarde despejada, hasta, 2.800 W.
Revisa el signo antes de seguir. Algunos medidores reportan la inyección como positiva. Si es tu caso, tienes que invertir el signo en la plantilla de más abajo.
Un error típico es usar la potencia de generación del inversor. Generar 3 kW con una casa que consume 2,8 kW no es excedente: son 200 W. Si solo tienes el dato del inversor, necesitas un medidor en el empalme (el Shelly EM en monofásico, o un lector óptico en el puerto infrarrojo del medidor, algo que se puede armar con una Raspberry Pi).
Paso 1: integrar el interruptor
El enchufe Zigbee se empareja como cualquier dispositivo por ZHA o Zigbee2MQTT; un Shelly, por su integración propia. Después configura tres cosas:
- Nombres de entidades. En el original, el interruptor es
switch.heizung_wohnzimmer("calefacción living" en alemán) y la potencia medida essensor.heizung_wohnzimmer_leistung. Esos IDs aparecen en todo el código de abajo: reemplázalos por los tuyos. Si renombras algo, revisa los dashboards y automatizaciones que usaban el nombre viejo, porque Home Assistant no los actualiza solo. - Comportamiento al volver la corriente: "estado anterior". En el SONOFF es la entidad de encendido tras corte; en Shelly, el estado inicial. Así, después de un corte de luz, el enchufe vuelve a donde estaba y la automatización lo corrige en el siguiente disparo.
- Apaga automatizaciones viejas. Al autor le pasó: ese enchufe antes controlaba una luz de mueble y seguía amarrado a una automatización del comedor. Sin este paso, prender la luz en la noche habría encendido la estufa.
Paso 2: los cuatro ayudantes (helpers)
La automatización final queda chica porque las decisiones viven en cuatro ayudantes, que se crean en Ajustes → Dispositivos y servicios → Ayudantes. La ventaja: umbrales y temperaturas quedan editables desde el dashboard, sin tocar YAML.

Ayudante 1: temperatura objetivo (Número). Un ayudante tipo Número, en el original input_number.heizung_wohnzimmer_solltemperatur, con rango de 15 a 26 °C en pasos de 0,5, mostrado como campo de entrada. Parte con 22,5 °C. No reutilices un ayudante de tu calefacción principal: le quitarías la temperatura objetivo a tu programa semanal.
Ayudante 2: excedente disponible (sensor de plantilla). Es la pieza más importante y la que más gente hace mal. Piensa qué pasa si usas la inyección tal cual: la estufa se enciende, la inyección baja justo en 720 W, el sensor ve que ya no sobra y la apaga. La inyección sube, la vuelve a encender, y así para siempre. Es un lazo de realimentación que oscila.
La solución es sumarle al excedente lo que la propia estufa está consumiendo. Así el sensor muestra el excedente como si la estufa estuviera apagada, y el valor queda estable al encenderla y apagarla. Crea un ayudante tipo Plantilla, subtipo Sensor, con nombre "PV-Überschuss verfügbar" (o el tuyo), unidad W, clase de dispositivo potencia, clase de estado medición, y como estado:
{{ ((0 - states('sensor.emma_wirkleistung') | float(0))
+ (states('sensor.heizung_wohnzimmer_leistung') | float(0)
if is_state('switch.heizung_wohnzimmer', 'on') else 0)) | round(0) }}
En las opciones avanzadas, pon como disponibilidad {{ has_value('sensor.emma_wirkleistung') }}. Si el medidor se cae, el sensor pasa a "no disponible" en vez de reportar cero en silencio, y la automatización apaga la estufa. Si tu medidor reporta la inyección como positiva, cambia el 0 - del inicio por un signo más. Home Assistant le quita las diéresis al ID, así que queda como sensor.pv_uberschuss_verfugbar.
Ayudante 3: ¿alcanza el sol? (Umbral). Un ayudante tipo Umbral convierte los watts en un sí o no con histéresis incluida. Fuente: el sensor del ayudante 2. Límite superior: 720. Histéresis: 100. Con eso pasa a "encendido" recién sobre 820 W y vuelve a "apagado" bajo 620 W.
Traducido: la estufa parte cuando sobran al menos 100 W por encima de su propio consumo, y sigue funcionando hasta que la casa compra más de 100 W de la red. Esos 100 W de compra se aceptan a propósito: sin ese margen, cada vez que arranca el compresor del refrigerador la estufa se apagaría. Si tu estufa consume otra potencia, ajusta el límite. En el original el resultado es binary_sensor.pv_uberschuss_reicht_fur_heizung.
La histéresis es la misma idea del termostato de una plancha: dos umbrales distintos para encender y apagar crean una "zona muerta" que absorbe el ruido de la medición.
Ayudante 4: demanda de calor (sensor binario de plantilla). La pieza necesita calor si está bajo la temperatura objetivo. Para que no conmute cada minuto en el borde, una vez encendida calienta hasta 0,3 °C por encima del objetivo. Tipo Plantilla, subtipo Sensor binario, clase calor, estado:
{% set t = states('sensor.wohnzimmer_view_plus_temperatur') | float %}
{% set soll = states('input_number.heizung_wohnzimmer_solltemperatur') | float(22.5) %}
{% if is_state('switch.heizung_wohnzimmer', 'on') %}
{{ t < soll + 0.3 }}
{% else %}
{{ t < soll }}
{% endif %}
También acá va la disponibilidad {{ has_value('sensor.wohnzimmer_view_plus_temperatur') }} en las opciones avanzadas. Cambia el sensor por el tuyo. Uno que reporta cada pocos minutos basta: la estufa de aceite reacciona lento de todas formas.
Paso 3: la automatización
Con los cuatro ayudantes, la regla es una sola: la estufa funciona si "alcanza el sol" y "demanda de calor" están los dos encendidos; si no, se apaga. Los disparadores solo existen para darle calma al sistema. Crea una automatización nueva, cambia a Editar en YAML desde el menú de arriba a la derecha y pega:
alias: Heizung Wohnzimmer – PV-Überschuss
description: Ölradiator läuft nur bei Überschuss und Heizbedarf.
mode: queued
max: 5
triggers:
- trigger: state
entity_id: binary_sensor.pv_uberschuss_reicht_fur_heizung
to: "on"
for: "00:02:00"
id: ein
- trigger: state
entity_id: binary_sensor.wohnzimmer_heizbedarf
to: "on"
for: "00:02:00"
id: ein
- trigger: state
entity_id: binary_sensor.pv_uberschuss_reicht_fur_heizung
to:
- "off"
- unavailable
- unknown
for: "00:01:00"
id: aus
- trigger: state
entity_id: binary_sensor.wohnzimmer_heizbedarf
to:
- "off"
- unavailable
- unknown
for: "00:01:00"
id: aus
- trigger: homeassistant
event: start
id: sync
actions:
- if:
- condition: state
entity_id: binary_sensor.pv_uberschuss_reicht_fur_heizung
state: "on"
- condition: state
entity_id: binary_sensor.wohnzimmer_heizbedarf
state: "on"
then:
- action: switch.turn_on
target:
entity_id: switch.heizung_wohnzimmer
else:
- action: switch.turn_off
target:
entity_id: switch.heizung_wohnzimmer
Tres decisiones de diseño que vale la pena entender:
- Retardos asimétricos. Encender espera 2 minutos de estado estable, para que un claro entre nubes no arranque la estufa. Apagar espera solo 1, porque comprar energía duele más que perder un minuto de sol.
- Idempotencia. La acción no se ramifica según qué disparador llegó: siempre revisa las dos condiciones desde cero. Da lo mismo cuál dispare, o si disparan tres a la vez (por eso
mode: queued): el resultado siempre es el estado correcto. - Falla segura. "No disponible" y "desconocido" cuentan como apagado. Si se cae el medidor, el sensor de temperatura o la red Zigbee, la estufa se apaga, nunca se queda encendida.
El disparador de inicio de Home Assistant sincroniza el estado después de un reinicio. No hay horario a propósito: si prendes la estufa a mano en la noche, sigue encendida hasta el siguiente disparador de apagado. Si prefieres que la automatización mande siempre, agrega un disparador time_pattern cada 15 minutos con el id sync.
Paso 4: solo calentar si hay alguien en casa
La advertencia del manual apunta a un calefactor funcionando sin supervisión. Home Assistant sabe si hay gente en la casa gracias a la app Companion del celular, y la zona zone.home cuenta cuántas personas hay adentro. Agrega esta tercera condición en el bloque if de la automatización:
- condition: numeric_state
entity_id: zone.home
above: 0
Y para que la estufa se apague apenas sale la última persona, sin esperar a una nube, suma este disparador de apagado:
- trigger: numeric_state
entity_id: zone.home
below: 1
id: aus
El original agrega un cuarto disparador sobre la misma zona, con above: 0 y dos minutos de espera, para que la estufa vuelva a partir cuando llega alguien y todavía hay sol y demanda.
Aviso al celular. Conviene una notificación en cada encendido y apagado, pero no dentro de la automatización principal (se ejecuta con cada disparador y te llenaría de avisos). Va en una automatización aparte que escucha al interruptor:
alias: PV-Heizung – Meldung aufs Handy
description: Push bei jedem Schaltvorgang des Radiators.
mode: queued
triggers:
- trigger: state
entity_id: switch.heizung_wohnzimmer
from: "off"
to: "on"
id: an
- trigger: state
entity_id: switch.heizung_wohnzimmer
from: "on"
to: "off"
id: aus
actions:
- action: notify.mobile_app_iphone_philipp
data:
title: PV-Heizung Wohnzimmer
message: "Radiator {{ 'an' if trigger.id == 'an' else 'aus' }} – Überschuss {{ states('sensor.pv_uberschuss_verfugbar') }} W, Raum {{ states('sensor.wohnzimmer_view_plus_temperatur') }} °C"
El nombre del servicio notify lo encuentras en Herramientas para desarrolladores → Acciones: empieza con notify.mobile_app_ y termina con el nombre del teléfono en la app Companion.
Un seguro extra que recomendamos: un disparador state sobre el interruptor con for: "04:00:00" que apague la estufa y avise tras cuatro horas seguidas funcionando. Eso atrapa un sensor de temperatura pegado que reporta demanda de calor para siempre.
Paso 5: ver lo que pasa
Sin gráficos no le vas a creer a la automatización. El original agrega una pestaña "PV Heizung" al dashboard solar, con los valores del día arriba (estufa hoy, inyectado, comprado, pronóstico restante de Solcast) y tres curvas abajo: generación contra red, excedente disponible contra potencia de la estufa, y temperatura de la pieza contra objetivo.

Abajo va un historial con tres líneas de tiempo: "alcanza el sol", "demanda de calor" y "enchufe". La barra del enchufe solo puede estar verde donde las otras dos también lo están. Esa es la mirada con la que auditas la automatización de un vistazo.
Las curvas usan mini-graph-card de HACS. La tarjeta de excedente contra estufa:
type: custom:mini-graph-card
name: Verfügbarer Überschuss vs. Radiator
hours_to_show: 24
points_per_hour: 12
line_width: 2
height: 220
show:
legend: true
state: true
labels: true
fill: fade
entities:
- entity: sensor.pv_uberschuss_verfugbar
name: Überschuss verfügbar
color: "#2e7d32"
- entity: sensor.heizung_wohnzimmer_leistung
name: Radiator
color: "#ef6c00"
Para el consumo diario de la estufa, crea un ayudante tipo Medidor de consumo con ciclo diario sobre el sensor de energía del enchufe, y agrégalo como dispositivo individual en el panel de Energía. Así la ves junto a la lavadora en el desglose de consumo.
Paso 6: guardar calor con el pronóstico de Solcast
La automatización del paso 3 reacciona al momento. Pero si Home Assistant sabe que en lo que queda del día vienen varios kWh más de sol, la pieza puede subir un grado extra: ese calor queda guardado en muros y muebles para cuando el sol se va. Es almacenamiento térmico gratis.
Solcast entrega pronósticos de generación gratis para uso doméstico (hasta dos superficies de techo y diez consultas al día). Al crear cada superficie te pide azimut, inclinación y potencia. Ojo con el azimut, que no sigue la rosa de los vientos de una brújula: 0 es norte, este es, 90, oeste +90 y sur ±180. La buena noticia para Chile: en el hemisferio sur el techo ideal mira al norte, así que tu superficie principal probablemente sea azimut 0 o cercano. Revisa igual el aviso "Site is facing" del formulario: un signo al revés corre el pronóstico hasta una hora.

Una instalación este oeste como la del original se registra como dos superficies, cada una con la mitad de la potencia. En Home Assistant instala por HACS la integración Solcast PV Forecast, pega la API key y las superficies aparecen solas.
Para esta etapa agrega dos ayudantes tipo Número ("temperatura día de sol", con 23,5 °C, y "umbral de pronóstico" en kWh) y un sensor de plantilla "objetivo efectivo" en °C:
{% set normal = states('input_number.heizung_wohnzimmer_solltemperatur') | float(22.5) %}
{% set boost = states('input_number.heizung_wohnzimmer_solltemperatur_sonnentag') | float(normal) %}
{% set rest = states('sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute') | float(0) %}
{% set schwelle = states('input_number.heizung_wohnzimmer_prognose_schwelle') | float(6) %}
{{ boost if rest > schwelle else normal }}
En el sensor de demanda de calor (ayudante 4), reemplaza la línea de la temperatura objetivo por states('sensor.heizung_wohnzimmer_soll_effektiv') | float(22.5). Si el pronóstico restante supera el umbral, rige el objetivo de día de sol; si no, el normal. Si Solcast se cae, float(0) devuelve cero y vuelve el objetivo normal: otra vez, falla segura.
El autor ajustó el umbral al segundo día. Con 6 kWh, el refuerzo se cortaba a las 14:00 aunque hubo excedente hasta la tarde, y la pieza se quedó en 22,6 °C. Justo la tarde es cuando más conviene acumular calor, porque viene la noche sin sol. Lo bajó a 1 kWh, y el refuerzo ahora dura hasta poco antes de la puesta de sol. Mira tu dashboard unos días y ajústalo a tu instalación.
Prueba: el primer día
El sistema partió el 23 de septiembre de 2026 a las 13:44, con, 2.400 W en el medidor (o sea 3.100 W de excedente disponible) y 22,4 °C en el living. El enchufe encendió, la inyección bajó a, 1.700 W y el sensor de excedente se mantuvo en 3.100 W, tal como se buscaba: la estufa no se "vio" a sí misma. El pronóstico superaba el umbral y el objetivo subió a 23,5 °C. Cerca de las 15:20 la pieza llegó a 23,8 °C, el pronóstico cayó bajo el umbral, el objetivo volvió a 22,5 °C y la estufa se apagó, después de 0,62 kWh esa primera tarde.

Si al probar el tuyo ves que la estufa se prende y se apaga cada pocos minutos, revisa en este orden:
- El signo del medidor. Si el excedente sale positivo cuando compras, todo queda al revés.
- Que la plantilla sume la potencia de la estufa. Si el valor del excedente cae 700 W justo al encender, la corrección no está funcionando (revisa el ID del sensor de potencia del enchufe).
- La histéresis. Con menos de 100 W de margen, el ruido normal de la casa hace oscilar el sistema.
- La frecuencia del sensor de temperatura. Si reporta cada 10 minutos o más, la estufa se pasa de largo del objetivo. No es grave con aceite, pero se nota.
Qué no hace este montaje
- No almacena energía. La pieza es el único acumulador, y se llena con un grado sobre el objetivo. Lo que sobre después sigue yéndose a la red.
- No es inyección cero. La histéresis tolera hasta 100 W de compra y apagar puede tardar un minuto. La estufa es una carga todo o nada, no un regulador continuo.
- No reemplaza tu calefacción. Si tienes termostatos en la misma pieza, van a ver el calor de la estufa y bajarán solos, y eso está bien.
- No conviene con bomba de calor, y con combustibles baratos el ahorro es marginal.
Ruta B: el mismo control con un ESP32-C6 y un contactor
Si prefieres no depender de un enchufe comercial, o quieres entender qué hay dentro de uno, puedes armar el actuador con un ESP32-C6 y ESPHome. El C6 tiene WiFi 6, Bluetooth LE y radio 802.15.4 (Thread/Zigbee), así que te sirve hoy por WiFi y mañana por Thread.
La arquitectura es de dos etapas, y no es opcional:
- El ESP32-C6 activa un módulo relé de un canal.
- Ese relé solo energiza la bobina de un contactor modular instalado en el tablero, y el contactor es el que conmuta los 220 V de la estufa, en un circuito con su propio automático.
¿Por qué no conectar la estufa directo al relé del módulo? Los relés de esos módulos suelen estar especificados para 10 A, pero están en una placa con pistas delgadas y bornes pequeños. Una carga resistiva de horas en el límite los calienta. El contactor está hecho para eso. Y el trabajo en el tablero lo hace un electricista autorizado: es 220 V en un circuito de la casa.
Dos detalles de la electrónica: el ESP32-C6 entrega 3,3 V en sus GPIO, y hay módulos relé que necesitan 5 V en la señal para activarse con confianza (busca uno con optoacoplador y entrada compatible con 3,3 V). Y si agregas un DHT22 al mismo ESP32, montado lejos de la estufa, ya tienes también el sensor de temperatura de la pieza.
Esta configuración de ESPHome expone el relé como interruptor y la temperatura como sensor, y apaga la estufa si pierde contacto con Home Assistant:
esphome:
name: estufa-living
esp32:
board: esp32-c6-devkitc-1
framework:
type: esp-idf
logger:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
api:
on_client_disconnected:
- switch.turn_off: rele_estufa
ota:
- platform: esphome
switch:
- platform: gpio
pin: GPIO4
id: rele_estufa
name: "Estufa living"
restore_mode: ALWAYS_OFF
sensor:
- platform: dht
pin: GPIO5
model: DHT22
update_interval: 60s
temperature:
name: "Temperatura living"
humidity:
name: "Humedad living"
Fíjate en dos líneas. restore_mode: ALWAYS_OFF hace que, tras un corte de luz, el relé parta apagado y espere la orden de Home Assistant (lo contrario de la ruta A, donde el enchufe recordaba su estado: aquí preferimos falla segura). Y on_client_disconnected apaga la estufa si Home Assistant se reinicia o se cae la red. Como el contactor no mide potencia, en esta ruta el ayudante 2 no puede sumar la potencia medida: reemplaza el sensor.heizung_wohnzimmer_leistung de la plantilla por la potencia nominal fija de la estufa (720 W) cuando el interruptor está encendido.
Variantes y mejoras
- Otras cargas, misma lógica. El sensor de excedente con autocompensación y la histéresis sirven para cualquier carga todo o nada: un termo eléctrico para el agua caliente (el acumulador térmico más grande de la casa), la bomba de la piscina o el cargador de un auto eléctrico. Con el termo es donde más rinde, porque el agua guarda calor muchas horas.
- Cargas por prioridad. Si tienes dos o más cargas, crea un umbral por cada una con límites escalonados (por ejemplo, termo sobre 1.200 W y estufa sobre 2.000 W) para que la primera en entrar sea la que más te conviene.
- Estufa con regulación continua. En vez de todo o nada, un regulador de potencia por ángulo de fase o un SSR con control por ciclos completos, comandado por el ESP32-C6, permite seguir el excedente watt a watt y acercarse a la inyección cero. Es otro nivel de complejidad eléctrica y de seguridad, y también pasa por un electricista.
- Episodios críticos. En ciudades con restricción de leña, puedes subir el objetivo los días de preemergencia para depender menos de la combustión y usar más la estufa eléctrica mientras haya sol.
Personalización para Chile
En Chile consigues en MechatronicStore la base del montaje (busca cada uno en el catálogo, la disponibilidad cambia):
- Raspberry Pi 5: el servidor de Home Assistant OS, encendido todo el día con bajo consumo.
- Tarjeta microSD de 32 GB o más: para el sistema de Home Assistant; con uso intensivo, conviene un SSD por PCIe.
- Placa ESP32-C6 DevKit: el actuador de la ruta B con ESPHome; también sirve como nodo Thread o Zigbee.
- Módulo relé de 1 canal: activa la bobina del contactor, nunca la estufa directo.
- Sensor de temperatura y humedad DHT22: la temperatura de la pieza, conectado al mismo ESP32-C6.
Si el original usa un Airthings View Plus como sensor de temperatura, el DHT22 conectado al ESP32 cumple la misma función en esta automatización. La estufa de aceite con termostato mecánico, el medidor del empalme y el contactor modular los compras en ferreterías o tiendas eléctricas, y el contactor lo instala un electricista.
Recursos
- Tutorial original (alemán), en el que se basa esta versión: Mit PV-Überschuss heizen: Home Assistant schaltet die Steckdose, de Philipp Schweizer en raspberry.tips.
- Integración de pronóstico: Solcast PV Forecast para Home Assistant
- Tarjeta de gráficos: mini graph card
- Documentación: Ayudante de umbral (Threshold) en Home Assistant y componente DHT de ESPHome
Versión chilena con componentes en stock local en MechatronicStore.




