This is my first post, so I hope I include everything, and I really appreciate any help.
I have three {kitchen, hall & lounge} Waveshare ESP32-S3 7-inch Capacitive Touch Displays that are mostly brilliant. They each display a custom dashboard using LVGL. I installed the kitchen first and copied the base ESPHome configuration to the lounge and hall dashboards so they are configured identically.
The kitchen board is perfect, whilst the hall and lounge boards have two annoying features.
-
On startup, the displays are scrolled 50% off screen. The hall display does this vertically, whereas the lounge display does it horizontally. I can swipe them back so they cover the full screen, and then it will not allow me to swipe them off-screen again.
-
In addition, the lounge and hall displays flicker occasionally. I think this is when they receive an update from Home Assistant, such as a switch changing state.
The three boards are configured identically apart from name, etc., as follows. I’ve only included the config as I have over 1000 lines of YAML for each display.
esphome:
name: hall-display
friendly_name: Hall Display
min_version: 2025.11.0
project:
name: "Waveshare.ESP32-S3-Touch-LCD-7B"
version: "1.0.0"
external_components:
- source: github://pr#10071
components: [waveshare_io_ch32v003]
refresh: 1h
waveshare_io_ch32v003:
- id: waveshare_io_hub
psram:
mode: octal
speed: 80MHz
preferences:
flash_write_interval: 5min
esp32:
board: esp32-s3-devkitc-1
variant: esp32s3
flash_size: 16MB
cpu_frequency: 240MHz
framework:
type: esp-idf
################################################################################
# WiFi
################################################################################
wifi:
networks:
- ssid: !secret wifi_ssid
password: !secret wifi_password
manual_ip:
static_ip: 192.168.2.130
gateway: 192.168.2.1
subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "${device_wifi_name} Hotspot"
password: !secret wifi_password
captive_portal:
################################################################################
# Web Server
################################################################################
web_server:
port: 80
version: 3
include_internal: true
################################################################################
# OTA
################################################################################
ota:
- platform: esphome
password: !secret ota_password
################################################################################
# Enable Home Assistant API
################################################################################
api:
id: ha_api
encryption:
key: !secret encryption
################################################################################
# I2C for touchscreen
################################################################################
i2c:
- id: bus_a
sda: GPIO08
scl: GPIO09
scan: true
################################################################################
# IO Extender
################################################################################
ch422g:
- id: ch422g_hub
################################################################################
# Enable logging
################################################################################
logger:
level: DEBUG
and the screen config
display:
- platform: rpi_dpi_rgb
id: my_display
update_interval: never
auto_clear_enabled: false
color_order: RGB
pclk_frequency: 30MHZ
dimensions:
width: 800
height: 480
de_pin:
number: 5
hsync_pin:
number: 46
ignore_strapping_warning: true
vsync_pin:
number: 3
ignore_strapping_warning: true
pclk_pin: 7
pclk_inverted: true
reset_pin:
waveshare_io_ch32v003: waveshare_io_hub
number: 3
hsync_back_porch: 152
hsync_front_porch: 48
hsync_pulse_width: 162
vsync_back_porch: 13
vsync_front_porch: 3
vsync_pulse_width: 45
data_pins:
red:
- 1 #r3
- 2 #r4
- 42 #r5
- 41 #r6
- 40 #r7
blue:
- 14 #b3
- 38 #b4
- 18 #b5
- 17 #b6
- 10 #b7
green:
- 39 #g2
- 0 #g3
- 45 #g4
- 48 #g5
- 47 #g6
- 21 #g7
################################################################################
# Touch Screen
################################################################################
touchscreen:
platform: gt911
id: my_touchscreen
display: my_display
i2c_id: bus_a
interrupt_pin: GPIO4
calibration:
x_min: 0
x_max: 800
y_min: 0
y_max: 480
reset_pin:
waveshare_io_ch32v003: waveshare_io_hub
number: 1
mode: OUTPUT
on_touch:
then:
- if:
condition:
- switch.is_on: switch_antiburn
then:
- switch.turn_off: switch_antiburn