Monitor Nivel Pellets ESPHome
Índice
Monitor Nivel Pellets ESPHome: Control Inteligente para tu Caldera de Biomasa
Este es un proyecto de bricolaje (DIY) sencillo que llevaba tiempo queriendo compartir, pero la falta de tiempo me impidió redactarlo. Mi caldera de pellets se encuentra en el sótano. Cada vez que quería saber cuánta leña quedaba, tenía que bajar las escaleras y comprobar físicamente la tolva. Sin indicador, sin medidor, nada. Me cansé de ello, así que decidí construir uno.

Esta guía te llevará paso a paso en la construcción de un monitor de nivel de pellets DIY utilizando una placa ESP32 y un sensor ultrasónico HC-SR04, flasheado con ESPHome e integrado en Home Assistant. El dispositivo se coloca en la tapa de tu tolva de pellets, mide la distancia hasta la superficie de los pellets e informa de dos sensores limpios: pellets restantes en kilogramos y como porcentaje. Ahora puedo consultarlo desde mi teléfono sin moverme del sofá.
La construcción cuesta menos de 15 € y se completa en aproximadamente una hora.
¿Cómo Funciona el Monitor de Nivel de Pellets?
El HC-SR04 es un sensor de distancia ultrasónico. Emite un breve pulso de sonido y mide el tiempo que tarda en rebotar y regresar. A partir de esa temporización, calcula la distancia hasta el objeto que tiene enfrente.
Montado en la tapa de una tolva de pellets, el sensor apunta directamente hacia abajo, a la superficie de los pellets. Cuando la tolva está llena, los pellets están cerca del sensor y la lectura de distancia es mínima. A medida que se consumen los pellets, la superficie desciende, aumentando la distancia. El ESP32 ejecuta el firmware ESPHome, que lee la distancia bruta del sensor, filtra el ruido con un filtro mediano y convierte el resultado en dos valores útiles mediante cálculos sencillos.
Mi estufa específica es la Thermoflux Pelling 35, que tiene una profundidad máxima de tolva de aproximadamente 100 cm. A 0 cm, la tolva está llena (95 kg). A 100 cm, está vacía. Todo lo intermedio se mapea linealmente a un valor en kilogramos y porcentaje, que luego se envían a Home Assistant a través de la API de ESPHome.


¿Qué Necesitas?
Para construir este proyecto, necesitarás los siguientes componentes:
El coste total es muy inferior a 15 €, si se adquiere en tiendas como AliExpress, o ligeramente superior en Amazon si prefieres un envío más rápido. Si eres nuevo en proyectos con ESP32 y ESPHome, te recomiendo consultar otras guías DIY de ESPHome en SmartHomeScene para familiarizarte con el flujo de trabajo antes de empezar.
Cableado del HC-SR04 al ESP32
El HC-SR04 tiene cuatro pines. Dependiendo de la placa que utilices, puedes conectarlos de varias maneras. Por ejemplo, así es como se conectan a una placa ESP32-WROOM-32 genérica:
| Pin HC-SR04 | Pin ESP32 |
|---|---|
| VCC | 5V (VIN) |
| GND | GND |
| TRIG | GPIO5 |
| ECHO | GPIO18 |
Utilicé conectores Dupont para unir el sensor a la placa, lo que facilita el intercambio de componentes sin necesidad de soldar. Todo se aloja dentro de una carcasa impresa en 3D que se monta en la tapa de la tolva y mantiene el sensor apuntando directamente hacia los pellets.

Configuración y Flasheo de ESPHome
Si ya tienes ESPHome configurado en Home Assistant, crea un nuevo dispositivo y pega la siguiente configuración. Si estás empezando desde cero, el complemento ESPHome se puede instalar directamente desde la tienda de aplicaciones de Home Assistant.
Reemplaza la clave API, la contraseña OTA y la contraseña del punto de acceso de respaldo de Wi-Fi con tus propios valores generados. Las credenciales de Wi-Fi se obtienen de tu archivo de secretos de ESPHome.
esphome:
name: ultrasonic-distance-sensor
friendly_name: Ultrasonic Distance Sensor
esp32:
board: esp32dev
framework:
type: esp-idf
logger:
api:
encryption:
key: "/Akz0CRpygbXXXX"
ota:
- platform: esphome
password: "017c856914XXXX"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Ultrasonic-Distance-Sensor"
password: "lsWUXXXX"
captive_portal:
sensor:
- platform: ultrasonic
trigger_pin: GPIO5
echo_pin: GPIO18
id: ultrasonic_raw
internal: true
update_interval: 10s
filters:
- median:
window_size: 5
send_every: 5
send_first_at: 1
- multiply: 100
- clamp:
min_value: 0
max_value: 100
on_value:
then:
- sensor.template.publish:
id: pellets_kg
state: !lambda 'return (1.0 - (x / 100.0)) * 95.0;'
- sensor.template.publish:
id: pellets_pct
state: !lambda 'return (1.0 - (x / 100.0)) * 100.0;'
- platform: template
name: "Pellets Remaining"
id: pellets_kg
unit_of_measurement: "kg"
device_class: weight
state_class: measurement
accuracy_decimals: 1
- platform: template
name: "Pellets Remaining %"
id: pellets_pct
unit_of_measurement: "%"
state_class: measurement
accuracy_decimals: 0Algunos puntos a tener en cuenta sobre esta configuración:
El sensor ultrasónico bruto está configurado como internal: true, lo que significa que nunca aparece en Home Assistant. Solo se exponen los dos sensores calculados. El filtro mediano recopila cinco lecturas antes de publicarlas, lo que suaviza el ruido causado por la superficie irregular de la pila de pellets. El disparador on_value se activa inmediatamente con la primera lectura válida y en cada actualización posterior, enviando los valores calculados a los sensores de plantilla a través de sensor.template.publish. Esta es la forma correcta de vincular sensores de plantilla a un sensor de hardware en ESPHome.
Añadir el Sensor a Home Assistant

Una vez que flashees la configuración y el dispositivo se inicie, Home Assistant lo descubrirá automáticamente a través de la integración ESPHome. Recibirás una notificación para añadir el nuevo dispositivo. Acéptala, introduce la clave de cifrado de tu configuración si se te solicita, y el dispositivo estará listo.
Aparecerán dos entidades bajo el dispositivo:
- Pellets Remaining (en kg)
- Pellets Remaining %
Ambas se actualizan aproximadamente cada 50 segundos, lo cual es más que suficiente para un sensor de nivel de combustible. Puedes añadirlas a cualquier panel, utilizarlas en automatizaciones para enviar una alerta de bajo nivel de pellets, o simplemente consultarlas en tu teléfono siempre que necesites saber si es hora de pedir otra bolsa.
Adaptación para tu Propia Estufa de Pellets
Esta configuración se basa en una tolva específica con una profundidad útil de 100 cm y una carga máxima de 95 kg. Si tu configuración es diferente, debes cambiar dos valores.
- Profundidad máxima: Es la distancia desde el punto de montaje del sensor en la tapa hasta el fondo vacío de la tolva, medida en centímetros. Reemplaza
100.0en ambas expresiones lambda y en el filtroclampcon tu valor medido. - Peso máximo: Son los kg totales que tu tolva puede albergar cuando está llena. Reemplaza
95.0en ambas expresiones lambda con tu valor.
Por ejemplo, si tu tolva tiene 80 cm de profundidad y pesa 70 kg cuando está llena:
state: !lambda 'return (1.0 - (x / 80.0)) * 70.0;'
- clamp:
min_value: 0
max_value: 80Para una monitorización básica de pellets, eso es todo lo que necesitas cambiar. El resto de la configuración funciona para cualquier tolva rectangular, independientemente de la marca o el modelo. Si construyes esto para otra estufa, no dudes en compartir tus mediciones en los comentarios.
¿Y las formas irregulares de las tolvas?
Muchas tolvas de pellets no son perfectamente rectangulares. La Thermoflux Pelling 35 utilizada en esta guía, por ejemplo, tiene una sección superior rectangular que se estrecha en un embudo en forma de pirámide en la parte inferior. En ese caso, el volumen por centímetro de profundidad es diferente en las dos zonas, y un cálculo lineal simple será ligeramente impreciso en la parte inferior de la tolva.
Puedes tener esto en cuenta dividiendo la lambda en dos zonas: un cálculo lineal para la sección superior y una fórmula de pirámide truncada para la sección inferior cónica. Es más preciso, pero también más complejo de configurar.
Sinceramente, para la mayoría de los propósitos prácticos, no lo necesitas. Si solo quieres saber si tienes suficientes pellets para pasar el día, una escala lineal simple es más que suficiente. Las lecturas serán ligeramente optimistas cuando la tolva esté casi vacía, pero ese es precisamente el momento en que ya estás pensando en rellenarla de todos modos.
Para más construcciones de sensores DIY con ESPHome y ESP32, consulta la guía del sensor de temperatura de doble sonda impermeable y el sensor de humedad del suelo capacitivo DIY v1.2 para más ejemplos del mismo flujo de trabajo aplicado a diferentes sensores.