Recetario ESPHome - Conceptos básicos de pantalla: reTerminal E Serie
Esta página es el recetario de pantalla ESPHome específico para reTerminal E Serie. El contenido común — elegir una ruta de flasheo, el esqueleto YAML genérico, conectar con Home Assistant — se encuentra en Work with ESPHome. Échale un vistazo primero si eres nuevo en ESPHome en los ePaper de Seeed. Para botones, zumbador, LED, batería, SHT4x y deep sleep, consulta el recetario de E/S, batería, táctil y bajo consumo. Para RTC, detección de tarjeta microSD y configuración del micrófono, consulta el recetario de RTC, tarjeta SD y micrófono.
¿Quieres una configuración ESPHome lista para usar sin tener que montar cada pin a mano? Abre el reTerminal E-Series Firmware Hub, elige la tarjeta ESPHome, selecciona tu dispositivo (E1001 / E1002 / E1003 / E1004) y luego marca las funciones integradas que necesitas: pantalla, botones, batería, sensores, RTC, tarjeta SD, micrófono, táctil, deep sleep y más. El Hub genera un YAML de ESPHome correspondiente que puedes copiar o descargar a tu panel de ESPHome.
El mismo Hub también puede flashear firmware de demostración directamente desde el navegador (Chrome o Edge de escritorio). Para el flujo de trabajo común de ESPHome, consulta Work with ESPHome.

Introducción a Home Assistant
Home Assistant es una potente plataforma de automatización del hogar de código abierto que te permite controlar y supervisar tus dispositivos domésticos inteligentes desde una única interfaz unificada. Actúa como el concentrador central de tu hogar inteligente, lo que te permite automatizar rutinas, monitorizar sensores y crear un entorno doméstico más inteligente.

¿Por qué Home Assistant?
-
Control local: A diferencia de muchas soluciones basadas en la nube, Home Assistant se ejecuta localmente en tu red, lo que garantiza que tus datos permanezcan privados y que tus automatizaciones funcionen incluso sin acceso a Internet.
-
Amplia compatibilidad de dispositivos: Home Assistant se integra con miles de dispositivos y servicios de hogar inteligente diferentes, lo que lo hace muy versátil y preparado para el futuro.
-
Automatización potente: Crea reglas de automatización sofisticadas que puedan responder a diversos desencadenantes como la hora, estados de dispositivos, lecturas de sensores y más.
-
Panel personalizable: Diseña tu propia interfaz de usuario para mostrar la información que más te importa.
¿Por qué usar la pantalla ePaper reTerminal E Serie con Home Assistant?
La pantalla ePaper reTerminal E Serie es un excelente complemento para Home Assistant por varias razones:
-
Eficiencia energética: La pantalla de tinta electrónica solo consume energía al actualizar el contenido, lo que la hace perfecta para mostrar información persistente como previsiones meteorológicas, eventos del calendario o el estado del sistema.
-
Visibilidad clara: A diferencia de las pantallas LCD, las pantallas de tinta electrónica se leen fácilmente en cualquier condición de iluminación, incluida la luz solar directa, lo que las hace ideales para paneles de control domésticos montados en la pared.
-
Larga duración de batería: Combinada con el modo de deep sleep, la pantalla puede funcionar durante meses con una sola carga de batería y seguir proporcionando información valiosa de un vistazo.
-
Integración flexible: A través de ESPHome, la pantalla se integra perfectamente con Home Assistant, lo que te permite mostrar cualquier dato de tu sistema de hogar inteligente en un formato elegante y siempre visible.
Estas ventajas hacen que la pantalla ePaper reTerminal E Serie sea una opción ideal para crear una pantalla de información siempre encendida y de bajo consumo para tu configuración de Home Assistant.
Integración con ESPHome
ESPHome es una herramienta de creación de firmware de código abierto diseñada específicamente para dispositivos ESP8266/ESP32. Te permite crear firmware personalizado usando sencillos archivos de configuración YAML, que luego se pueden flashear en tu dispositivo. Para la reTerminal E Serie, ESPHome actúa como el middleware esencial que habilita la comunicación entre el dispositivo y Home Assistant.
El sistema funciona convirtiendo tu configuración YAML en un firmware completo que se ejecuta en tu dispositivo ESP. Este firmware se encarga de todas las tareas complejas de conexión a tu red, comunicación con Home Assistant y control de la pantalla ePaper. Combinado con Home Assistant, ESPHome proporciona una plataforma robusta para crear pantallas y controles de automatización del hogar sofisticados.
Veamos cómo configurarlo y sacar el máximo partido a esta pantalla tan versátil.
Primeros pasos
Antes de comenzar con el contenido del tutorial de este artículo, es posible que necesites tener listo el siguiente hardware.
Materiales necesarios
Este recetario cubre reTerminal E1001, E1002, E1003 y E1004. Elige la pestaña correspondiente en cada ejemplo para tu dispositivo. E1003 y E1004 requieren ESPHome 2026.7.0 o posterior.
| reTerminal E1001 | reTerminal E1002 |
|---|---|
![]() | ![]() |
| reTerminal E1003 | reTerminal E1004 |
|---|---|
![]() | ![]() |
| Home Assistant Green |
|---|
![]() |
Home Assistant Green es la forma más sencilla y centrada en la privacidad de automatizar tu hogar. Ofrece una configuración sin esfuerzo y te permite controlar todos los dispositivos inteligentes con un solo sistema, donde todos los datos se almacenan localmente de forma predeterminada. Esta placa se beneficia del próspero ecosistema de Home Assistant y se mejorará cada mes gracias al código abierto.
Recomendamos usar Home Assistant Green como host de Home Assistant para este tutorial, o puedes usar cualquier host de Home Assistant con Supervisor.
Genera tu primer YAML de ESPHome (recomendado)
Antes de copiar los fragmentos del recetario que aparecen a continuación, puedes crear una configuración completa y adaptada al dispositivo en un solo lugar:
Paso 1. Abre el reTerminal E-Series Firmware Hub en Chrome o Edge de escritorio.
Paso 2. Selecciona la tarjeta de plataforma ESPHome y luego elige tu modelo de reTerminal (E1001 / E1002 / E1003 / E1004).
Paso 3. En el paso de configuración, marca las funciones disponibles en tu dispositivo — por ejemplo, pantalla, botones, zumbador, LED, batería, SHT4x, RTC, microSD, micrófono, táctil (E1003) o suspensión profunda.
Paso 4. Genera el YAML, luego usa Copy to clipboard o Download file e impórtalo en tu panel de ESPHome.

El Firmware Hub completa por ti la placa, el bus y los pines de los periféricos. Usa este recetario cuando quieras aprender cada ejemplo de dibujo o visualización paso a paso, o cuando personalices el YAML generado. El flujo de trabajo completo compartido está documentado en Trabajar con ESPHome.
También hemos escrito cómo instalar Home Assistant para algunos productos de Seeed Studio, por favor consúltalos.
- Primeros pasos con Home Assistant en ODYSSEY-X86
- Primeros pasos con Home Assistant en reTerminal
- Primeros pasos con Home Assistant en LinkStar H68K/reRouter CM4
Si no estás usando un producto de Seeed Studio, también puedes consultar y aprender cómo instalar Home Assistant para otros productos en el sitio web oficial de Home Assistant.
Paso 1. Instalar ESPHome
Si ya has instalado ESPHome, puedes omitir este paso.
Ve a Settings -> Add-ons -> ADD-ON STORE

Introduce el término de búsqueda ESPHome.

Haz clic en INSTALL y START.

Si no puedes encontrar ESPHome en la tienda de complementos, asegúrate de que estás usando una instalación de Home Assistant que admita complementos (como Home Assistant OS o instalaciones supervisadas). Para otros tipos de instalación (como Home Assistant Container), es posible que necesites ejecutar el ESPHome Device Builder de forma independiente usando Docker. Consulta la documentación oficial de ESPHome para más detalles.
Paso 2. Añadir un nuevo dispositivo
Ve a ESPHome y haz clic en NEW DEVICE.

Ponle al dispositivo un nombre que te guste y selecciona ESP32-S3 como tipo de chip, luego haz clic en SKIP.


Después de crear un nuevo dispositivo, haz clic en EDIT.

Paso 3. Instalar firmware
Este es un ejemplo muy básico y mostrará "Hello World!" en la pantalla.
El propósito principal es mostrarte diferentes formas de instalar firmware en el dispositivo.
Puedes usar este ejemplo copiando el código de abajo y pegándolo después de la línea de código captive_portal en tu archivo Yaml.
- Para E1001
- Para E1002
- Para E1003
- Para E1004
# define font to display words
font:
- file: "gfonts://Inter@700"
id: myFont
size: 24
# define SPI interface
spi:
clk_pin: GPIO7
mosi_pin: GPIO9
display:
- platform: waveshare_epaper
id: epaper_display
model: 7.50inv2 # You can use 7.50inv2alt when you draw complex info and it display not good.
cs_pin: GPIO10
dc_pin: GPIO11
reset_pin:
number: GPIO12
inverted: false
busy_pin:
number: GPIO13
inverted: true
update_interval: 300s
lambda: |-
it.print(0, 0, id(myFont), "Hello World!");
# define font to display words
font:
- file: "gfonts://Inter@700"
id: myFont
size: 24
# define SPI interface
spi:
clk_pin: GPIO7
mosi_pin: GPIO9
display:
- platform: epaper_spi
model: Seeed-reTerminal-E1002 #Please update your ESPHome version to 2025.11.1 above
update_interval: 300s
lambda: |-
const auto BLACK = Color(0, 0, 0, 0);
it.print(0, 0, id(myFont), BLACK, "Hello World!");
Por favor, actualiza tu versión de ESPHome a 2026.7.0 o posterior para la plataforma de pantalla it8951.
# define font to display words
font:
- file: "gfonts://Inter@700"
id: myFont
size: 24
# OPI PSRAM is required for the E1003 framebuffer
psram:
mode: octal
# define SPI interface
spi:
id: epaper_spi_bus
clk_pin: GPIO7
mosi_pin: GPIO9
miso_pin: GPIO8
display:
- platform: it8951
id: epaper_display
spi_id: epaper_spi_bus
model: seeed-reterminal-e1003
update_interval: 300s
full_update_every: 30
grayscale: true
dithering: true
update_mode: GC16
transform:
mirror_x: true
mirror_y: false
lambda: |-
it.print(0, 0, id(myFont), Color::BLACK, "Hello World!");
Por favor, actualiza tu versión de ESPHome a 2026.7.0 o posterior para el modelo seeed-reterminal-e1004.
# define font to display words
font:
- file: "gfonts://Inter@700"
id: myFont
size: 24
# OPI PSRAM is required for the E1004 framebuffer
psram:
mode: octal
# define SPI interface
spi:
clk_pin: GPIO7
mosi_pin: GPIO9
display:
- platform: epaper_spi
model: seeed-reterminal-e1004
update_interval: 300s
lambda: |-
const auto BLACK = Color(0, 0, 0, 0);
it.print(0, 0, id(myFont), BLACK, "Hello World!");

Haz clic en INSTALL para instalar el código en el dispositivo y verás la siguiente imagen.
- Install through browser
- Install through host
- Install through Wi-Fi
Si tu Host de Home Assistant (Raspberry PI/Green/Yellow, etc.) está lejos de ti, recomendamos usar este método. Puedes instalarlo con el ordenador que tengas a mano.
Primero, necesitas hacer clic en Manual download para descargar el firmware compilado.

Abre este sitio web donde subiremos el firmware al panel de ePaper.

Vuelve a ESPHome para descargar el firmware.

Selecciona el formato Factory.

Usa un cable USB para conectar el panel de ePaper a tu ordenador y haz clic en CONNECT.

Selecciona usbmodemxxx (en Windows es COMxxx) y haz clic en connect. ¿Has encontrado un problema? Haz clic aquí.

Haz clic en INSTALL y selecciona el firmware que acabas de descargar.

Espera un momento y verás “Hello world!” en la pantalla ~

Si tu Host de Home Assistant (Raspberry PI/Green/Yellow, etc.) está cerca, recomendamos usar este método ya que es más sencillo.
Antes de instalar el código en el dispositivo, necesitas usar un cable USB para conectar este dispositivo a tu Raspberry Pi o HA Green (Yellow), etc. que esté ejecutando Home Assistant.
Haz clic en las opciones siguiendo la imagen para instalar el código en el dispositivo. ¿No se ha encontrado el puerto cuando el dispositivo está en modo de suspensión profunda?


Espera un momento y verás una respuesta como en la siguiente imagen. Significa que el código se está ejecutando correctamente.

Esta es la forma más sencilla, pero con la premisa de que, al instalar el programa por primera vez, primero debes subir el programa al ePaper Panel usando el método de la izquierda. Después de eso, puedes subirlo vía wifi. Además, asegúrate de que tu configuración YAML incluya secciones ota y api correctamente configuradas con claves de cifrado válidas para que este método funcione.
De esta manera, no necesitas conectar el panel ePaper a nada, solo asegúrate de que esté en línea.
Haz clic en la opción y entonces el firmware se instalará automáticamente en el panel ePaper.

Espera un momento y verás una respuesta como en la siguiente imagen. Si falla, puede deberse a una señal débil. Por favor, acerca el dispositivo a tu router. ¿Has encontrado un problema? Haz clic aquí.

Conceptos básicos para dibujar en ESPHome
Dibujo de gráficos simples
Este ejemplo de código YAML configura la interfaz SPI y la pantalla ePaper reTerminal E Series para un proyecto ESPHome. La sección lambda contiene comandos de dibujo que representan formas simples en la pantalla:
- Dos rectángulos (uno en la posición (10, 10) con tamaño 100x50, y otro en (150, 10) con tamaño 50x50)
- Un círculo en (250, 35) con un radio de 25
- Dos rectángulos rellenos (en (10, 80) y (150, 80))
- Un círculo relleno en (250, 105) con un radio de 25
Puedes usar este ejemplo copiando el código de abajo y pegándolo después de la línea de código captive_portal en tu archivo Yaml.
- Para E1001
- Para E1002
- Para E1003
- Para E1004
spi:
clk_pin: GPIO7
mosi_pin: GPIO9
display:
- platform: waveshare_epaper
id: epaper_display
model: 7.50inv2 # You can use 7.50inv2alt when you draw complex info and it display not good.
cs_pin: GPIO10
dc_pin: GPIO11
reset_pin:
number: GPIO12
inverted: false
busy_pin:
number: GPIO13
inverted: true
update_interval: 300s
lambda: |-
it.rectangle(10, 10, 100, 50);
it.rectangle(150, 10, 50, 50);
it.circle(250, 35, 25);
it.filled_rectangle(10, 80, 100, 50);
it.filled_rectangle(150, 80, 50, 50);
it.filled_circle(250, 105, 25);
Cuando veas una respuesta como en la siguiente imagen, significa que el código se está ejecutando correctamente.

# define font to display words
font:
- file: "gfonts://Inter@700"
id: myFont
size: 24
# define SPI interface
spi:
clk_pin: GPIO7
mosi_pin: GPIO9
display:
- platform: epaper_spi
model: Seeed-reTerminal-E1002 #Please update your ESPHome version to 2025.11.1 above
update_interval: 300s
lambda: |-
const auto BLACK = Color(0, 0, 0, 0);
const auto RED = Color(255, 0, 0, 0);
const auto GREEN = Color(0, 255, 0, 0);
const auto BLUE = Color(0, 0, 255, 0);
const auto YELLOW = Color(255, 255, 0, 0);
const auto WHITE = Color(255, 255, 255, 0);
it.rectangle(10, 10, 100, 50, BLACK);
it.rectangle(150, 10, 50, 50, RED);
it.circle(250, 35, 25, GREEN);
it.filled_rectangle(10, 80, 100, 50, BLUE);
it.filled_rectangle(150, 80, 50, 50, YELLOW);
it.filled_circle(250, 105, 25, WHITE);
Cuando veas una respuesta como en la siguiente imagen, significa que el código se está ejecutando correctamente.

Por favor, actualiza tu versión de ESPHome a 2026.7.0 o posterior.
font:
- file: "gfonts://Inter@700"
id: myFont
size: 24
psram:
mode: octal
spi:
id: epaper_spi_bus
clk_pin: GPIO7
mosi_pin: GPIO9
miso_pin: GPIO8
display:
- platform: it8951
id: epaper_display
spi_id: epaper_spi_bus
model: seeed-reterminal-e1003
update_interval: 300s
full_update_every: 30
grayscale: true
dithering: true
update_mode: GC16
transform:
mirror_x: true
mirror_y: false
lambda: |-
it.rectangle(10, 10, 100, 50, Color::BLACK);
it.rectangle(150, 10, 50, 50, Color::BLACK);
it.circle(250, 35, 25, Color::BLACK);
it.filled_rectangle(10, 80, 100, 50, Color::BLACK);
it.filled_rectangle(150, 80, 50, 50, Color::BLACK);
it.filled_circle(250, 105, 25, Color::BLACK);
Por favor, actualiza tu versión de ESPHome a 2026.7.0 o posterior.
font:
- file: "gfonts://Inter@700"
id: myFont
size: 24
psram:
mode: octal
spi:
clk_pin: GPIO7
mosi_pin: GPIO9
display:
- platform: epaper_spi
model: seeed-reterminal-e1004
update_interval: 300s
lambda: |-
const auto BLACK = Color(0, 0, 0, 0);
const auto RED = Color(255, 0, 0, 0);
const auto GREEN = Color(0, 255, 0, 0);
const auto BLUE = Color(0, 0, 255, 0);
const auto YELLOW = Color(255, 255, 0, 0);
const auto WHITE = Color(255, 255, 255, 0);
it.rectangle(10, 10, 100, 50, BLACK);
it.rectangle(150, 10, 50, 50, RED);
it.circle(250, 35, 25, GREEN);
it.filled_rectangle(10, 80, 100, 50, BLUE);
it.filled_rectangle(150, 80, 50, 50, YELLOW);
it.filled_circle(250, 105, 25, WHITE);
Debido a limitaciones de espacio, no profundizaremos demasiado en los métodos de dibujo y los principios de otros patrones; si es necesario, se recomienda al lector leer esta parte de ejemplos detallados de ESPHome.
Obtener valores de Home Assistant para mostrarlos
Para mostrar datos meteorológicos en tu dispositivo de pantalla ePaper reTerminal E Series, necesitarás acceder a los datos de temperatura, condiciones meteorológicas y velocidad del viento desde Home Assistant. La integración Open-Meteo proporciona datos meteorológicos fiables a los que se puede acceder a través de las Herramientas de Desarrollador.
Instalación de la integración Open-Meteo
Paso 1. Abre tu panel de Home Assistant y navega a Settings → Devices & Services.
Paso 2. Haz clic en el botón Add Integration en la esquina inferior derecha.
Paso 3. Busca "Open-Meteo" y selecciónalo de la lista.

Paso 4. Sigue el asistente de configuración para establecer tu ubicación y las unidades preferidas.
Paso 5. Una vez instalada, la integración Open-Meteo creará varias entidades relacionadas con el clima en tu instancia de Home Assistant.
Acceso a los datos meteorológicos en las Herramientas de Desarrollador
Después de instalar la integración Open-Meteo, puedes acceder a los datos meteorológicos a través de las Herramientas de Desarrollador:
Paso 1. En tu panel de Home Assistant, navega a Developer Tools → States.
Paso 2. En el cuadro de filtro, escribe weather para encontrar la entidad meteorológica principal.

Paso 3. Haz clic en la entidad para ver todos los atributos disponibles. Los atributos meteorológicos clave incluyen:
temperature: Temperatura actual (en tus unidades configuradas)wind_bearing: Dirección del vientowind_speed: Velocidad del viento
Uso de los datos meteorológicos en ESPHome
Para usar estos datos meteorológicos en tu configuración ESPHome para el reTerminal E Series, deberás configurar una conexión API de Home Assistant en tu configuración YAML de ESPHome:
# Example ESPHome configuration to retrieve weather data
# Get info from HA, as string format
text_sensor:
- platform: homeassistant
entity_id: weather.home
id: myWeather
internal: true
- platform: homeassistant
entity_id: weather.home
id: myTemperature
attribute: "temperature"
internal: true
# Get info from HA, as float format
sensor:
- platform: homeassistant
entity_id: weather.home
id: myWindBearing
attribute: "wind_bearing"
internal: true
Esta configuración crea entidades de sensor en tu dispositivo ESPHome que extraen datos de la integración meteorológica de Home Assistant. Luego puedes usar estos sensores para actualizar la pantalla ePaper reTerminal E Series con la información meteorológica actual.
Para los datos de pronóstico, deberás usar las entidades weather.open_meteo_forecast que contienen valores previstos para días futuros.
Por último, añade el código para la sección de pantalla para usar estos valores anteriores. El código completo es el siguiente:
- Para E1001
- Para E1002
- Para E1003
- Para E1004
# Example ESPHome configuration to retrieve weather data
# Get info from HA, as string format
text_sensor:
- platform: homeassistant
entity_id: weather.home
id: myWeather
internal: true
- platform: homeassistant
entity_id: weather.home
id: myTemperature
attribute: "temperature"
internal: true
# Get info from HA, as float format
sensor:
- platform: homeassistant
entity_id: weather.home
id: myWindBearing
attribute: "wind_bearing"
internal: true
font:
- file: "gfonts://Inter@700"
id: myFont
size: 24
# define SPI interface
spi:
clk_pin: GPIO7
mosi_pin: GPIO9
display:
- platform: waveshare_epaper
id: epaper_display
model: 7.50inv2 # You can use 7.50inv2alt when you draw complex info and it display not good.
cs_pin: GPIO10
dc_pin: GPIO11
reset_pin:
number: GPIO12
inverted: false
busy_pin:
number: GPIO13
inverted: true
update_interval: 300s
lambda: |-
//print info in log
ESP_LOGD("epaper", "weather: %s", id(myWeather).state.c_str());
ESP_LOGD("epaper", "temperature: %s", id(myTemperature).state.c_str());
ESP_LOGD("epaper", "pressure: %.1f", id(myWindBearing).state);
//display info in epaper screen
it.printf(100, 100, id(myFont), "%s", id(myWeather).state.c_str());
it.printf(100, 150, id(myFont), "%s", id(myTemperature).state.c_str());
it.printf(100, 200, id(myFont), "%.1f", id(myWindBearing).state);
# Example ESPHome configuration to retrieve weather data
# Get info from HA, as string format
text_sensor:
- platform: homeassistant
entity_id: weather.home
id: myWeather
internal: true
- platform: homeassistant
entity_id: weather.home
id: myTemperature
attribute: "temperature"
internal: true
# Get info from HA, as float format
sensor:
- platform: homeassistant
entity_id: weather.home
id: myWindBearing
attribute: "wind_bearing"
internal: true
font:
- file: "gfonts://Inter@700"
id: myFont
size: 24
# define SPI interface
spi:
clk_pin: GPIO7
mosi_pin: GPIO9
display:
- platform: epaper_spi
model: Seeed-reTerminal-E1002 #Please update your ESPHome version to 2025.11.1 above
update_interval: 300s
lambda: |-
const auto BLACK = Color(0, 0, 0, 0);
// const auto RED = Color(255, 0, 0, 0);
// const auto GREEN = Color(0, 255, 0, 0);
// const auto BLUE = Color(0, 0, 255, 0);
// const auto YELLOW = Color(255, 255, 0, 0);
//print info in log
ESP_LOGD("epaper", "weather: %s", id(myWeather).state.c_str());
ESP_LOGD("epaper", "temperature: %s", id(myTemperature).state.c_str());
ESP_LOGD("epaper", "pressure: %.1f", id(myWindBearing).state);
//display info in epaper screen
it.printf(100, 100, id(myFont), BLACK, "%s", id(myWeather).state.c_str());
it.printf(100, 150, id(myFont), BLACK, "%s", id(myTemperature).state.c_str());
it.printf(100, 200, id(myFont), BLACK, "%.1f", id(myWindBearing).state);
Actualiza tu versión de ESPHome a 2026.7.0 o posterior.
# Example ESPHome configuration to retrieve weather data
# Get info from HA, as string format
text_sensor:
- platform: homeassistant
entity_id: weather.home
id: myWeather
internal: true
- platform: homeassistant
entity_id: weather.home
id: myTemperature
attribute: "temperature"
internal: true
# Get info from HA, as float format
sensor:
- platform: homeassistant
entity_id: weather.home
id: myWindBearing
attribute: "wind_bearing"
internal: true
font:
- file: "gfonts://Inter@700"
id: myFont
size: 24
psram:
mode: octal
spi:
id: epaper_spi_bus
clk_pin: GPIO7
mosi_pin: GPIO9
miso_pin: GPIO8
display:
- platform: it8951
id: epaper_display
spi_id: epaper_spi_bus
model: seeed-reterminal-e1003
update_interval: 300s
full_update_every: 30
grayscale: true
dithering: true
update_mode: GC16
transform:
mirror_x: true
mirror_y: false
lambda: |-
ESP_LOGD("epaper", "weather: %s", id(myWeather).state.c_str());
ESP_LOGD("epaper", "temperature: %s", id(myTemperature).state.c_str());
ESP_LOGD("epaper", "pressure: %.1f", id(myWindBearing).state);
it.printf(100, 100, id(myFont), Color::BLACK, "%s", id(myWeather).state.c_str());
it.printf(100, 150, id(myFont), Color::BLACK, "%s", id(myTemperature).state.c_str());
it.printf(100, 200, id(myFont), Color::BLACK, "%.1f", id(myWindBearing).state);
Actualiza tu versión de ESPHome a 2026.7.0 o posterior.
# Example ESPHome configuration to retrieve weather data
# Get info from HA, as string format
text_sensor:
- platform: homeassistant
entity_id: weather.home
id: myWeather
internal: true
- platform: homeassistant
entity_id: weather.home
id: myTemperature
attribute: "temperature"
internal: true
# Get info from HA, as float format
sensor:
- platform: homeassistant
entity_id: weather.home
id: myWindBearing
attribute: "wind_bearing"
internal: true
font:
- file: "gfonts://Inter@700"
id: myFont
size: 24
psram:
mode: octal
spi:
clk_pin: GPIO7
mosi_pin: GPIO9
display:
- platform: epaper_spi
model: seeed-reterminal-e1004
update_interval: 300s
lambda: |-
const auto BLACK = Color(0, 0, 0, 0);
ESP_LOGD("epaper", "weather: %s", id(myWeather).state.c_str());
ESP_LOGD("epaper", "temperature: %s", id(myTemperature).state.c_str());
ESP_LOGD("epaper", "pressure: %.1f", id(myWindBearing).state);
it.printf(100, 100, id(myFont), BLACK, "%s", id(myWeather).state.c_str());
it.printf(100, 150, id(myFont), BLACK, "%s", id(myTemperature).state.c_str());
it.printf(100, 200, id(myFont), BLACK, "%.1f", id(myWindBearing).state);
Después de compilar el código anterior y subirlo a tu dispositivo, es posible que primero veas NaN mostrado en la pantalla, no te preocupes, esto es normal. Esto se debe a que el dispositivo aún no se ha añadido al entorno de Home Assistant, por lo que reTerminal todavía no ha podido adquirir los datos de Home Assistant. Solo tenemos que seguir los pasos siguientes para añadir el dispositivo.
Añadir la pantalla ePaper reTerminal E Serie a Home Assistant
Paso 1. Después de flashear tu dispositivo, vuelve a Home Assistant y navega a Settings → Devices & Services.
Paso 3. Home Assistant debería detectar automáticamente tu dispositivo de pantalla ePaper reTerminal E Serie mediante mDNS. Si aparece en la sección de dispositivos detectados, haz clic en Configure para añadirlo.

Paso 4. Si el dispositivo no se detecta automáticamente, haz clic en Add Integration y busca "ESPHome".
Paso 5. Introduce la dirección IP de tu dispositivo de pantalla ePaper reTerminal E Serie y la clave de cifrado de la API si has configurado una.
Paso 6. Una vez conectado, tu pantalla ePaper reTerminal E Serie aparecerá como un dispositivo en Home Assistant con todos sus sensores y componentes disponibles.

El programa puede tardar de 2 a 3 minutos desde que finaliza la grabación hasta la visualización final.
Aquí tienes el contenido mejorado de la Demo 3 con formato optimizado, colocación de imágenes y descripciones adicionales:
Dibujo de fuentes TrueType
Este ejemplo muestra cómo visualizar iconos personalizados en tu pantalla ePaper reTerminal E Serie utilizando fuentes TrueType. Material Design Icons proporciona una amplia gama de símbolos escalables perfectos para pantallas de tinta electrónica.
Instalación de las herramientas necesarias
Paso 1. Primero, necesitamos instalar el complemento Studio Code Server para gestionar archivos. Ve a la tienda de complementos de Home Assistant, busca Studio Code Server y haz clic en él.

Paso 2. Haz clic en INSTALL y espera a que se complete la instalación. Una vez instalado, haz clic en START para iniciar el editor.

Configuración de las fuentes de iconos
Paso 3. Crea una nueva carpeta llamada fonts en tu directorio de configuración de ESPHome. Esta carpeta almacenará los archivos de fuentes TrueType necesarios para mostrar iconos.
Paso 4. Descarga el archivo de fuente Material Design Icons haciendo clic en el botón de abajo y extrae el contenido.
Paso 5. Sube el archivo de fuente descargado (materialdesignicons-webfont.ttf) a la carpeta fonts que creaste anteriormente.

Configuración de ESPHome para iconos
Paso 6. Añade el siguiente código a tu archivo de configuración de ESPHome después de la sección captive_portal. Este código define dos tamaños de fuente para iconos y configura la pantalla para mostrar iconos meteorológicos.
- Para E1001
- Para E1002
- For E1003
- For E1004
# define font to display words
font:
- file: 'fonts/materialdesignicons-webfont.ttf' # Path to the font file
id: font_mdi_large
size: 200 # Large icon size
glyphs: &mdi-weather-glyphs
- "\U000F0595" # weather-cloudy icon
- "\U000F0592" # weather-hail icon
- file: 'fonts/materialdesignicons-webfont.ttf'
id: font_mdi_medium # Medium icon size
size: 40
glyphs: *mdi-weather-glyphs
# define SPI interface
spi:
clk_pin: GPIO7
mosi_pin: GPIO9
display:
- platform: waveshare_epaper
id: epaper_display
model: 7.50inv2 # You can use 7.50inv2alt when you draw complex info and it display not good.
cs_pin: GPIO10
dc_pin: GPIO11
reset_pin:
number: GPIO12
inverted: false
busy_pin:
number: GPIO13
inverted: true
update_interval: 300s
lambda: |-
it.printf(100, 200, id(font_mdi_medium), TextAlign::CENTER, "\U000F0595");
it.printf(400, 200, id(font_mdi_large), TextAlign::CENTER, "\U000F0592");
# define font to display words
font:
- file: 'fonts/materialdesignicons-webfont.ttf' # Path to the font file
id: font_mdi_large
size: 200 # Large icon size
glyphs: &mdi-weather-glyphs
- "\U000F0595" # weather-cloudy icon
- "\U000F0592" # weather-hail icon
- file: 'fonts/materialdesignicons-webfont.ttf'
id: font_mdi_medium # Medium icon size
size: 40
glyphs: *mdi-weather-glyphs
# define SPI interface
spi:
clk_pin: GPIO7
mosi_pin: GPIO9
display:
- platform: epaper_spi
model: Seeed-reTerminal-E1002 #Please update your ESPHome version to 2025.11.1 above
update_interval: 300s
lambda: |-
const auto BLACK = Color(0, 0, 0, 0);
const auto RED = Color(255, 0, 0, 0);
const auto GREEN = Color(0, 255, 0, 0);
const auto BLUE = Color(0, 0, 255, 0);
const auto YELLOW = Color(255, 255, 0, 0);
it.printf(100, 200, id(font_mdi_medium), RED, TextAlign::CENTER, "\U000F0595");
it.printf(400, 200, id(font_mdi_large), GREEN, TextAlign::CENTER, "\U000F0592");
Actualiza tu versión de ESPHome a la 2026.7.0 o posterior.
# define font to display words
font:
- file: 'fonts/materialdesignicons-webfont.ttf' # Path to the font file
id: font_mdi_large
size: 200 # Large icon size
glyphs: &mdi-weather-glyphs
- "\U000F0595" # weather-cloudy icon
- "\U000F0592" # weather-hail icon
- file: 'fonts/materialdesignicons-webfont.ttf'
id: font_mdi_medium # Medium icon size
size: 40
glyphs: *mdi-weather-glyphs
psram:
mode: octal
spi:
id: epaper_spi_bus
clk_pin: GPIO7
mosi_pin: GPIO9
miso_pin: GPIO8
display:
- platform: it8951
id: epaper_display
spi_id: epaper_spi_bus
model: seeed-reterminal-e1003
update_interval: 300s
full_update_every: 30
grayscale: true
dithering: true
update_mode: GC16
transform:
mirror_x: true
mirror_y: false
lambda: |-
it.printf(100, 200, id(font_mdi_medium), Color::BLACK, TextAlign::CENTER, "\U000F0595");
it.printf(400, 200, id(font_mdi_large), Color::BLACK, TextAlign::CENTER, "\U000F0592");
Actualiza tu versión de ESPHome a la 2026.7.0 o posterior.
# define font to display words
font:
- file: 'fonts/materialdesignicons-webfont.ttf' # Path to the font file
id: font_mdi_large
size: 200 # Large icon size
glyphs: &mdi-weather-glyphs
- "\U000F0595" # weather-cloudy icon
- "\U000F0592" # weather-hail icon
- file: 'fonts/materialdesignicons-webfont.ttf'
id: font_mdi_medium # Medium icon size
size: 40
glyphs: *mdi-weather-glyphs
psram:
mode: octal
spi:
clk_pin: GPIO7
mosi_pin: GPIO9
display:
- platform: epaper_spi
model: seeed-reterminal-e1004
update_interval: 300s
lambda: |-
const auto BLACK = Color(0, 0, 0, 0);
const auto RED = Color(255, 0, 0, 0);
const auto GREEN = Color(0, 255, 0, 0);
const auto BLUE = Color(0, 0, 255, 0);
const auto YELLOW = Color(255, 255, 0, 0);
it.printf(100, 200, id(font_mdi_medium), RED, TextAlign::CENTER, "\U000F0595");
it.printf(400, 200, id(font_mdi_large), GREEN, TextAlign::CENTER, "\U000F0592");
-
La sección
glyphsdefine qué iconos se cargan desde el archivo de fuente. Cargar solo los iconos que necesitas ahorra memoria en tu dispositivo. -
El programa puede tardar de 2 a 3 minutos desde que termina la grabación hasta la visualización final.
Paso 7. Guarda tu configuración y súbela a tu reTerminal E Serie. Cuando veas un mensaje como en la siguiente imagen, significa que el código se está ejecutando correctamente.

Personalización con diferentes iconos
La biblioteca Material Design Icons contiene miles de iconos que puedes usar en tus proyectos. A continuación se explica cómo encontrar y usar diferentes iconos:
Paso 1. Visita el sitio web de Material Design Icons haciendo clic en el botón de abajo.
Paso 2. Busca un icono que quieras usar en tu proyecto. Puedes explorar por categoría o usar la función de búsqueda.

Paso 3. Cuando encuentres un icono que te guste, haz clic en él para ver sus detalles. Busca el valor Unicode, que tendrá el formato F0595.
Paso 4. Añade el valor Unicode a tu configuración de ESPHome:
- Añadiéndolo a la lista
glyphsen tu configuración de fuente - Actualizando el código de la pantalla para usar el nuevo icono
Por ejemplo, para usar un nuevo icono con Unicode F0123:
glyphs:
- "\U000F0595" # weather-cloudy icon
- "\U000F0592" # weather-hail icon
- "\U000F0123" # your new icon
Y en la lambda de la pantalla:
lambda: |-
it.printf(100, 200, id(font_mdi_medium), TextAlign::CENTER, "\U000F0123");
Paso 5. Guarda tu configuración actualizada y súbela a tu dispositivo para ver el nuevo icono.
Para paneles de control del tiempo, considera usar iconos como F0590 (soleado), F0591 (parcialmente nublado), F0593 (lluvioso) y F059E (ventoso).
Combinando estos iconos con los datos meteorológicos de Home Assistant que configuramos antes, puedes crear una pantalla meteorológica dinámica que muestre las condiciones actuales usando los iconos apropiados.
Mostrar imágenes personalizadas
Este ejemplo muestra cómo visualizar imágenes personalizadas en la pantalla de tinta electrónica ePaper Display de tu reTerminal E Serie. Puedes usar esta función para mostrar logotipos, iconos o cualquier gráfico que mejore la experiencia de tu panel.
Preparación
Paso 1. Asegúrate de tener instalado el complemento Studio Code Server en Home Assistant. Si aún no lo has instalado, sigue las instrucciones del ejemplo anterior.
Paso 2. Crea una nueva carpeta llamada image en tu directorio de configuración de ESPHome. Esta carpeta almacenará los archivos de imagen que quieras mostrar.
config/
└── esphome/
├── your_device.yaml
└── image/ <- Create this folder
Añadir imágenes
Paso 3. Descarga una imagen de ejemplo para probar la funcionalidad. Puedes usar el icono de WiFi que se proporciona a continuación o usar tu propia imagen.
Paso 4. Sube la imagen descargada a la carpeta image que creaste antes usando el administrador de archivos de Studio Code Server.

Si quieres mostrar imágenes de paisajes complejas y bonitas, es mejor realizar el tramado de la imagen de antemano en nuestro sitio web para obtener un mejor efecto. Se admiten los formatos JPG y PNG.
Configurar ESPHome para mostrar imágenes
Paso 5. Añade el siguiente código a tu archivo de configuración de ESPHome después de la sección captive_portal. Este código define el recurso de imagen y configura la pantalla para mostrarlo.
- For E1001
- For E1002
- For E1003
- For E1004
image:
- file: /config/esphome/image/wifi.jpg # Path to your image file (JPG or PNG)
id: myImage
type: BINARY # Binary works for monochrome, RGB565 works for colorful eink
resize: 800x480 # Resize to match display resolution
invert_alpha: true # Invert colors is needed
spi:
clk_pin: GPIO7
mosi_pin: GPIO9
display:
- platform: waveshare_epaper
id: epaper_display
model: 7.50inv2 # You can use 7.50inv2alt when you draw complex info and it display not good.
cs_pin: GPIO10
dc_pin: GPIO11
reset_pin:
number: GPIO12
inverted: false
busy_pin:
number: GPIO13
inverted: true
update_interval: 300s
lambda: |-
it.image(0, 0, id(myImage)); # Display image at position (0,0)
Actualiza tu versión de ESPHome a la 2025.11.1 o superior.
image:
- file: /config/esphome/image/wifi.jpg # Path to your image file (JPG or PNG)
id: myImage
type: RGB565 # Binary works for monochrome, RGB565 works for colorful eink
resize: 800x480 # Resize to match display resolution
# define SPI interface
spi:
clk_pin: GPIO7
mosi_pin: GPIO9
display:
- platform: epaper_spi
model: Seeed-reTerminal-E1002 #Please update your ESPHome version to 2025.11.1 above
update_interval: 300s
lambda: |-
it.image(0, 0, id(myImage)); # Display image at position (0,0)
Actualiza tu versión de ESPHome a la 2026.7.0 o posterior. El E1003 utiliza un panel de escala de grises de 16 niveles; da preferencia al tipo de imagen GRAYSCALE y a un redimensionado mayor para el panel de 1872×1404 cuando sea necesario.
image:
- file: /config/esphome/image/wifi.jpg # Path to your image file (JPG or PNG)
id: myImage
type: GRAYSCALE # Grayscale for the E1003 16-level panel
resize: 800x480 # Start with a smaller size for a quick test
psram:
mode: octal
spi:
id: epaper_spi_bus
clk_pin: GPIO7
mosi_pin: GPIO9
miso_pin: GPIO8
display:
- platform: it8951
id: epaper_display
spi_id: epaper_spi_bus
model: seeed-reterminal-e1003
update_interval: 300s
full_update_every: 30
grayscale: true
dithering: true
update_mode: GC16
transform:
mirror_x: true
mirror_y: false
lambda: |-
it.image(0, 0, id(myImage)); # Display image at position (0,0)
Actualiza tu versión de ESPHome a la 2026.7.0 o posterior.
image:
- file: /config/esphome/image/wifi.jpg # Path to your image file (JPG or PNG)
id: myImage
type: RGB565 # RGB565 works for colorful e-ink
resize: 800x480 # Start with a smaller size for a quick test
psram:
mode: octal
spi:
clk_pin: GPIO7
mosi_pin: GPIO9
display:
- platform: epaper_spi
model: seeed-reterminal-e1004
update_interval: 300s
lambda: |-
it.image(0, 0, id(myImage)); # Display image at position (0,0)
Paso 6. Guarda tu configuración y súbela a tu reTerminal E Serie. Cuando la actualización se complete, tu pantalla de papel electrónico mostrará la imagen.

Técnicas avanzadas de imágenes
Puedes mejorar la visualización de tus imágenes con estas técnicas adicionales:
Posicionamiento de imágenes
Para posicionar tu imagen en coordenadas específicas en la pantalla:
lambda: |-
// Display image at position (100,50)
it.image(100, 50, id(myImage));
Combinar imágenes con texto
Puedes mostrar tanto imágenes como texto en la misma pantalla:
lambda: |-
// Display image
it.image(0, 0, id(myImage));
// Add text below or beside the image
it.printf(400, 400, id(myFont), TextAlign::CENTER, "WiFi Connected");
Uso de múltiples imágenes
Para mostrar múltiples imágenes en la misma pantalla, define cada imagen en tu configuración:
image:
- file: /config/esphome/image/wifi.jpg
id: wifiImage
type: BINARY
resize: 200x200
- file: /config/esphome/image/temperature.png
id: tempImage
type: BINARY
resize: 200x200
# In the display lambda:
lambda: |-
it.image(50, 50, id(wifiImage));
it.image(300, 50, id(tempImage));
Recuerda que las pantallas de papel electrónico tienen tasas de refresco limitadas. La configuración update_interval: 300s significa que tu pantalla se actualizará solo cada 5 minutos. Ajusta este valor según tus necesidades, pero ten en cuenta que las actualizaciones frecuentes pueden reducir la vida útil de las pantallas de papel electrónico.
Al combinar imágenes con texto y otros elementos de visualización tratados en ejemplos anteriores, puedes crear paneles ricos e informativos en tu reTerminal E Serie.
Continuar leyendo
Este artículo se centra en conectar la pantalla y dibujar contenido en la pantalla de ePaper. Continúa con estos recetarios de ESPHome cuando quieras usar el resto del hardware integrado:
- reTerminal E-Series Firmware Hub - genera un archivo YAML completo de ESPHome seleccionando tu dispositivo y marcando las funciones integradas, o flashea firmware de demostración desde el navegador.
- ESPHome Cookbook: Buttons, Buzzer, LED, Battery, Touch & Low Power - botones de usuario, retroalimentación del zumbador, LED integrado, monitorización de batería, sensor SHT4x, toque capacitivo (E1003), sueño profundo y paneles de varias páginas.
- ESPHome Cookbook: RTC, SD Card & Microphone - sincronización horaria RTC PCF8563, pines de alimentación/detección de tarjeta microSD y inicialización del micrófono PDM integrado.
Preguntas frecuentes
P1: ¿Por qué no hay datos?
En este caso, debes ir a Settings -> Devices & Services -> Integrations para RECONGFIGURE el dispositivo. ¿No has encontrado tu reTerminal? Intenta reiniciar Home Assistant.

P2: ¿Por qué no puedo obtener esos datos en Home Assistant?
En este caso, debes ir a Settings -> Devices & Services -> Integrations para ADD tu dispositivo a HA.

P3: ¿La pantalla ePaper de reTerminal E Serie no puede conectarse a tu ordenador?

Intenta desconectarla y volver a conectarla varias veces, o simplemente instala el controlador según las indicaciones.
P4: ¿Por qué no hay registro serie por USB?
La reTerminal E Serie utiliza un puente CH340K USB-a-UART en UART0. Mantén esta configuración de registro en tu YAML:
logger:
hardware_uart: UART0
Soporte técnico y debate sobre el producto
Gracias por elegir nuestros productos. Estamos aquí para ofrecerte diferentes tipos de soporte y garantizar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a diferentes preferencias y necesidades.




