tobivan
(Tobivan)
January 18, 2026, 2:54pm
1
Hi all,
anybody who has managed to compile for the Lilygo T547 e-paper and is willing to share?
I have tried various sources and all I got was a ton of errors:
github://danuw/esphome-components2
github://vbaksa/esphome
github://kaeltis/esphome-lilygo-t547plus
github://nickolay/esphome-lilygo-t547plus
github://dabalroman/esphome-lilygo-t547plus_esphome-2025.11
Running HAOS core 2025.12.1 with ESPHome 2025.12.7
This is an example for a .yaml file, super simple βHello Worldβ-style. Getting different kinds of compiling errors. βCould not find package Wireβ,
esphome:
name: esp-epaper
friendly_name: esp-epaper
platformio_options:
board_build.f_flash: 80000000L
board_build.flash_mode: qio
board_build.psram_type: opi
board_build.partitions: default_16MB.csv
board_build.arduino.memory_type: qio_opi
build_flags: # the first three defines are required for the screen library to function.
- "-DBOARD_HAS_PSRAM" #OK
- "-DARDUINO_USB_MODE=1" #OK
- "-DARDUINO_USB_CDC_ON_BOOT=1" #OK
libraries:
- SPI
esp32:
board: esp32dev
framework:
type: arduino
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
external_components:
- source: github://nickolay/esphome-lilygo-t547plus
components: ["t547"]
- source: github://kaeltis/esphome-lilygo-t547plus
components: ["lilygo_t5_47_battery"]
display:
- platform: t547
id: t5_display
update_interval: 30s
lambda: ---
sensor:
- platform: lilygo_t5_47_battery
id: battery_voltage
voltage:
name: "Battery Voltage"
update_interval: 60s
deep_sleep:
run_duration: 10s
sleep_duration: 1min
id: deep_sleep_1
tried hbast?
esphome:
name: wetter
friendly_name: Wetterdisplay
on_boot:
- priority: 600
then:
- logger.log: "ESP gestartet β Wetterdashboard aktiv"
- priority: -10
then:
- logger.log: "Starte Update-Skript (Timer-DeepSleep, kein Button-Wakeup)"
- script.execute: update_and_sleep
platformio_options:
upload_speed: 921600
monitor_speed: 115200
board_build.mcu: esp32s3
board_build.f_cpu: 240000000L
board_build.arduino.memory_type: qspi_opi
board_build.flash_size: 4MB
board_build.flash_mode: qio
board_build.flash_type: qspi
board_build.psram_type: opi
board_build.memory_type: qspi_opi
board_build.boot_freq: 80m
build_flags:
- "-DBOARD_HAS_PSRAM"
- "-DARDUINO_USB_CDC_ON_BOOT=1"
- "-mfix-esp32-psram-cache-issue"
libraries:
- SPI
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# CRITICAL for ESP-IDF 5.4.2+: Enable PSRAM initialization (thanks @hbast!)
sdkconfig_options:
CONFIG_SPIRAM: "y"
CONFIG_SPIRAM_MODE_OCT: "y"
CONFIG_SPIRAM_SPEED_80M: "y"
CONFIG_SPIRAM_USE_MALLOC: "y"
CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL: "16384"
CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP: "y"
CONFIG_ESP32S3_SPIRAM_SUPPORT: "y"
CONFIG_SPIRAM_BOOT_INIT: "y"
CONFIG_SPIRAM_IGNORE_NOTFOUND: "n"
# Logging + OTA + API
logger:
level: INFO
api:
encryption:
key: ""
ota:
- platform: esphome
password: ""
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Fast connect for DeepSleep optimization
fast_connect: true
# Disable power saving for faster wake-up
power_save_mode: none
ap:
ssid: "EpaperDashboard Fallback"
password: ""
captive_portal:
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# DEEPSLEEP CONFIGURATION
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
deep_sleep:
id: deep_sleep_control
sleep_duration: 6h
external_components:
- source:
type: git
url: https://github.com/hbast/esphome-lilygo-t547plus_esphome-2025.11
ref: deepsleep-example
components: ["t547"]
tobivan
(Tobivan)
January 24, 2026, 10:16am
3
Thanks, Iβll give it a try right nowβ¦
tobivan
(Tobivan)
January 25, 2026, 2:53pm
4
It is compiling, however I am getting this error in a loop on the device.
tobivan
(Tobivan)
January 25, 2026, 4:06pm
5
Oh, I have just found out that the git by hbast is for the t547 plus only, I have the βold classicβ one. So that one wonβt work
tobivan:
t547 plus
Try this
t
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# LilyGo T5 4.7" ESP32 (Non-Plus) β Wetterdashboard (DeepSleep)
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
esphome:
name: wetter-nonplus
friendly_name: Wetterdisplay Non-Plus
on_boot:
- priority: 600
then:
- logger.log: "ESP gestartet β Wetterdashboard aktiv"
- priority: -10
then:
- logger.log: "Starte Update-Skript (Timer-DeepSleep, kein Button-Wakeup)"
- script.execute: update_and_sleep
platformio_options:
upload_speed: 921600
monitor_speed: 115200
esp32:
board: esp32dev # Standard ESP32 fΓΌr T5 4.7 Non-Plus
framework:
type: arduino
# Logging + OTA + API
logger:
level: INFO
api:
encryption:
key: "ukhS8iah+AyqjgwNxY4h4BkeJGg1g1QSXyrxcQaoTmk="
ota:
- platform: esphome
password: "12345678"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: true
power_save_mode: none
ap:
ssid: "EpaperDashboard Fallback"
password: "12345678"
captive_portal:
# DeepSleep
deep_sleep:
id: deep_sleep_control
sleep_duration: 6h
time:
- platform: homeassistant
id: ha_time
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# FONTS
# βββββββββββββββββββββββββββββββββββββββββββββββββ
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SENSORS & TEXT SENSORS
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
sensor:
- platform: wifi_signal
name: "WiFi Signal"
update_interval: 60s
# Batterie (ADC β Pin ggf. anpassen!)
- platform: adc
pin: GPIO14 # PrΓΌfe fΓΌr Non-Plus! Oft GPIO34/35
id: battery_voltage_raw
attenuation: 12db
update_interval: never
internal: true
unit_of_measurement: V
accuracy_decimals: 3
filters:
- multiply: 2.0 # Teiler korrigieren
- platform: template
name: "Akku Prozent"
id: battery_level
unit_of_measurement: "%"
device_class: battery
accuracy_decimals: 0
update_interval: 60s
lambda: |-
float v = id(battery_voltage_raw).state;
// Typische Li-Ion Kurve: 3.3V leer, 4.2V voll
if (v < 3.3) return 0.0f;
if (v > 4.2) return 100.0f;
return (v - 3.3f) / (4.2f - 3.3f) * 100.0f;
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# DISPLAY fΓΌr T5 4.7 Non-Plus
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
display:
- platform: waveshare_epaper
cs_pin: GPIO5
dc_pin: GPIO17
busy_pin: GPIO4
reset_pin: GPIO16
display_size: 960x540
num_colors: 16
rotation: 0Β°
id: lilygo_display
update_interval: never
lambda: |-
// DEIN KOMPLETTER WEATHER DISPLAY CODE
it.fill(COLOR_OFF);
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# UPDATE SCRIPT (identisch aus Original)
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
script:
- id: update_and_sleep
then:
- logger.log: "Starte Update + DeepSleep Sequenz..."
- wait_until:
condition: wifi.connected
timeout: 15s
- if:
condition: wifi.connected
then:
- logger.log: "WiFi verbunden"
else:
- logger.log: "Kein WLAN β mache trotzdem weiter"
level: WARN
- wait_until:
condition: api.connected
timeout: 15s
- wait_until:
condition:
lambda: 'return id(ha_time).now().is_valid();'
timeout: 15s
- wait_until:
condition:
lambda: 'return id(temp_nuernberg).has_state();'
timeout: 20s
- wait_until:
condition:
lambda: 'return id(forecast_day1_temp).has_state();'
timeout: 20s
- delay: 2s
- logger.log: "Lese Batteriespannung..."
- component.update: battery_voltage_raw
- delay: 50ms
- component.update: battery_level
- logger.log: "Aktualisiere Display..."
- display.update: lilygo_display
- logger.log: "Display aktualisiert"
- delay: 3s
- logger.log: "Gehe jetzt in DeepSleep..."
- deep_sleep.enter: deep_sleep_control
1 Like