Un lector de libros electrónicos de 40 euros convertido en nuestra pantalla de Home Assistant
Resumen
Un Xteink X4 (lector de libros electrónicos, ESP32-C3, tinta electrónica de 4,26”) funciona ahora como pantalla de estado en una finca sin conexión a la red: batería solar, fotovoltaica, valores de la piscina, cisterna y temperatura exterior. El firmware es ESPHome, la conexión va por la API de Home Assistant y las actualizaciones llegan por WiFi. Tres trampas al flashear, una con el deep sleep y una batería que aguanta menos de lo que prometen las fichas técnicas.
Por qué
La finca funciona off-grid. Solar, batería, cisterna, piscina. Todo está en Home Assistant, pero para ver el estado había que sacar el móvil cada vez. Se buscaba algo que simplemente colgara de la pared, sin cable de corriente, y que se pudiera leer también a pleno sol. Es decir, tinta electrónica.
Las pantallas de tinta electrónica ya listas para Home Assistant se van rápido a 100 euros o más. El Xteink X4 es un lector barato con 800x480 píxeles, ESP32-C3 y batería de 650 mAh. La comunidad ya había desarrollado un componente de ESPHome para él (esphome-component-xteink en GitHub). Ese fue el punto en el que caímos en la tentación.
Lo que hicimos
Después de esto el lector ya no es un lector: el firmware original se sobrescribe por completo. Antes volcamos dos veces los 16 MB de flash y comparamos las sumas de verificación, para poder devolver el aparato a su estado original en cualquier momento. El volcado tarda unos tres minutos. El puerto USB desaparece en cuanto el lector se duerme. Suena trivial, pero nos costó un volcado interrumpido: hay que despertarlo antes y subir el temporizador de reposo.
Después, ESPHome dentro, integrado en Home Assistant como dispositivo, y desde entonces las actualizaciones llegan por OTA a través del WiFi en unos 13 segundos. La pantalla muestra en vertical el nivel de la batería solar, la potencia fotovoltaica, el consumo, la autonomía, además del pH y el redox de la piscina con valoración y recomendación (“añadir pH-menos”, “detener la cloración”), el nivel de la cisterna y la temperatura exterior. El panel solo puede blanco y negro, así que representamos los avisos con un marco y los valores críticos invertidos. Funciona mejor de lo que esperábamos.
Lo que nos costó tiempo
El compilador no encuentra SPI.h. ESPHome no incluye a propósito la librería SPI de Arduino en ESP32, pero el componente de Xteink la necesita. Un libraries: [SPI] bajo esphome: en la configuración lo resuelve. Un bloque spi: en el YAML no sirve de nada.
esphome upload no recompila. Flashea el binario existente, sin avisar. Después de cada cambio en la configuración o en los secrets hay que usar esphome run. Nosotros “corregimos” dos veces una contraseña de WiFi equivocada y no entendíamos nada.
El deep sleep casi nos deja el aparato inservible. El X4 corta la alimentación al dormirse si GPIO13 no se mantiene con gpio_hold_en(). Entonces ya no vuelve a despertar. Importante: solo mantener, no fijar activamente, porque el hardware ya aplica ahí unos 0,85 V. Además ESPHome necesita safe_mode: boot_is_good_after: 10s; si no, un arranque no se considera correcto hasta pasados 60 segundos, el aparato se duerme antes y tras unos cuantos ciclos acaba en modo seguro.
Un detalle más: sleep_duration no admite plantillas en el componente de deep sleep, solo en la acción deep_sleep.enter. Por eso fijamos un valor de reserva en el componente y la duración real por plantilla en la acción.
El balance honesto de la batería
Aquí llega la parte que desilusiona. Despierto de forma permanente y con WiFi, el X4 aguanta unas cuatro horas. Con deep sleep va mejor, pero el aparato consume casi 4 mA durmiendo, en lugar de los pocos microamperios a los que uno está acostumbrado con un ESP32. Corrientes de fuga, entre otras la medición de batería a través de dos resistencias de 10 kΩ. Con 650 mAh, de forma realista:
- Ciclo de 60 s: alrededor de un día
- 5 minutos: alrededor de tres días
- 10 minutos: alrededor de cuatro días
Para una pantalla en la pared es suficiente, pero milagro no es. Queda una idea pendiente: mantener también la línea de reset del panel (GPIO5), lo que debería reducir casi a la mitad el consumo en reposo. Todavía sin probar, a propósito un cambio cada vez.
La duración del reposo la ajustamos directamente desde Home Assistant (de 60 a 1800 s), sin volver a flashear. Un interruptor de “mantener despierto” impide el reposo durante las actualizaciones OTA.
Qué significa esto para los propietarios de fincas
Quien tenga una instalación con solar, cisterna o sensores de piscina no necesita una pantalla de 500 euros para ver el estado de un vistazo. Una pantalla de tinta electrónica en el sitio adecuado, bien configurada una sola vez, hace ese trabajo con menos de 50 euros de material. Lo montamos bajo petición en instalaciones de Home Assistant ya existentes.
Datos técnicos
- Xteink X4: ESP32-C3, 16 MB de flash, panel GDEQ0426T82 / SSD1677, 800x480, 1 bit, 650 mAh
- ESPHome 2026.8.2, componente github://ngxson/esphome-component-xteink
- Rotación 270 → 480x800 en vertical, refresco parcial de ~1,6 s
- Deep sleep: mantener GPIO13,
boot_is_good_after: 10s, reservarun_duration: 30spor si Home Assistant no conecta - Rescate si no arranca: aparato apagado, mantener Bajar volumen + Power, soltar al aparecer el aviso, confirmar con Subir volumen → modo de descarga