Hey guys, I tried making the integrated display work on the ESP board listed below
I did manage to research the pins on the Ali page and make the display light up along with a display on/off switch in HA.
However, I’m unable to display anything on there. All I’m getting is this:
Here comes my YAML. I would really appreciated if anyone could pouint me to the right direction. The ultimate goal here is to display a state of a HA entity (temperature). As you can see, I did try to get help from AI, that’s what’s with the notes
https://www.aliexpress.com/item/1005005059421229.html?spm=a2g0o.order_list.order_list_main.5.1ac11802iHn2qe
esphome:
name: esphome-web-813d00
friendly_name: ESPHomeDisplay
min_version: 2024.11.0
name_add_mac_suffix: false
on_boot:
priority: 800
then:
- lambda: |-
id(disp).enable();
id(disp).transfer_byte(0x11);
id(disp).disable();
esp32:
board: esp32-s3-devkitc-1
framework:
type: esp-idf
# Enable logging
logger:
font:
- file: "gfonts://Roboto"
id: roboto_font
size: 20
# Enable Home Assistant API
api:
# Allow Over-The-Air updates
ota:
- platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Example configuration entry with 2 sensors and filter
sensor:
- platform: wifi_signal # Reports the WiFi signal strength/RSSI in dB
name: "WiFi Signal dB"
id: wifi_signal_db
update_interval: 60s
entity_category: "diagnostic"
- platform: copy # Reports the WiFi signal strength in %
source_id: wifi_signal_db
name: "WiFi Signal Percent"
filters:
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
unit_of_measurement: "Signal %"
entity_category: "diagnostic"
device_class: ""
spi:
clk_pin: GPIO12 # Likely SCK (SPI Clock)
mosi_pin: GPIO13 # Likely MOSI (SPI Data)
display:
- platform: st7789v
model: CUSTOM
eightbitcolor: False
rotation: 270
width: 170
height: 320
offset_width: 0
offset_height: 35
cs_pin: GPIO10 # Could be Chip Select (not confirmed)
dc_pin: GPIO11 # Likely Data/Command (D/C)
reset_pin: GPIO1 # Likely Reset (RST)
id: disp
auto_clear_enabled: false
update_interval: never
lambda: |-
it.fill(Color::BLACK);
delay(100);
it.print(10, 10, id(roboto_font), Color::WHITE, TextAlign::TOP_LEFT, "Hello, World!");
output:
- platform: gpio
pin:
number: GPIO14
allow_other_uses: true # Adjust based on your board
id: backlight_control
light:
- platform: binary
output: backlight_control
name: "Display Backlight"
restore_mode: ALWAYS_ON
# Example configuration entry
# Example configuration entry
switch:
- platform: gpio
pin:
number: GPIO14
allow_other_uses: true
name: "ESP Display"
icon: "mdi:gate"
Karosm
(Karosm)
March 1, 2025, 2:19pm
2
jnedorost:
update_interval: never
What’s the point?
Also, configure your PSRAM
and try with ILI9xxx component
Not really sure, learning as I go. Any ideas how to modify the yaml to make the existing display work, please?
Karosm
(Karosm)
March 1, 2025, 4:19pm
4
Add this component to your yaml
psram:
mode: octal
speed: 80MHz
and give update interval 1s for example.
If you don’t get life on your display, try with ILI9xxx component:
display:
- platform: ili9xxx
model: st7789v
dimensions:
height: 170
width: 320
offset_height: 35
offset_width: 0
color_order: bgr
invert_colors: true
data_rate: 40MHz
cs_pin: GPIO10 # Could be Chip Select (not confirmed)
dc_pin: GPIO11 # Likely Data/Command (D/C)
reset_pin: GPIO1 # Likely Reset (RST)
id: disp
show_test_card: true
1 Like
Thanks so much! This did get me a step further, not quite yet. Any ideas? I’ll do research of my own in the meantime, but any help is much appreciated!
esphome:
name: esphome-web-813d00
friendly_name: ESPHomeDisplay
min_version: 2024.11.0
name_add_mac_suffix: false
on_boot:
priority: 800
then:
- lambda: |-
id(disp).enable();
id(disp).transfer_byte(0x11);
id(disp).disable();
esp32:
board: esp32-s3-devkitc-1
framework:
type: esp-idf
psram:
mode: octal
speed: 80MHz
# Enable logging
logger:
font:
- file: "gfonts://Roboto"
id: roboto_font
size: 20
# Enable Home Assistant API
api:
# Allow Over-The-Air updates
ota:
- platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Example configuration entry with 2 sensors and filter
sensor:
- platform: wifi_signal # Reports the WiFi signal strength/RSSI in dB
name: "WiFi Signal dB"
id: wifi_signal_db
update_interval: 60s
entity_category: "diagnostic"
- platform: copy # Reports the WiFi signal strength in %
source_id: wifi_signal_db
name: "WiFi Signal Percent"
filters:
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
unit_of_measurement: "Signal %"
entity_category: "diagnostic"
device_class: ""
spi:
clk_pin: GPIO12 # Likely SCK (SPI Clock)
mosi_pin: GPIO13 # Likely MOSI (SPI Data)
display:
- platform: ili9xxx
model: st7789v
dimensions:
height: 170
width: 320
offset_height: 35
offset_width: 0
color_order: bgr
invert_colors: true
data_rate: 40MHz
cs_pin: GPIO10 # Could be Chip Select (not confirmed)
dc_pin: GPIO11 # Likely Data/Command (D/C)
reset_pin: GPIO1 # Likely Reset (RST)
update_interval: 1s
id: disp
show_test_card: true
lambda: |-
it.fill(Color::BLACK);
delay(100);
it.print(10, 10, id(roboto_font), Color::WHITE, TextAlign::TOP_LEFT, "Hello, World!");
output:
- platform: gpio
pin:
number: GPIO14
allow_other_uses: true # Adjust based on your board
id: backlight_control
light:
- platform: binary
output: backlight_control
name: "Display Backlight"
restore_mode: ALWAYS_ON
Karosm
(Karosm)
March 1, 2025, 7:04pm
6
What’s the output? Anything on the display? Errors on log?
Sorry, forgot to attach the image. No errors in the log
Karosm
(Karosm)
March 1, 2025, 7:13pm
8
Not bad.
You need to play with parameters of ILI9 component.
Karosm:
show_test_card: true
Should print test image with red/green/blue bars.
You mean like the data rate, color invert, etc.?
Karosm
(Karosm)
March 1, 2025, 7:37pm
10
I have never used that kind of display.
But yes, data rate, spi_mode …
Still no luck, the furthest I got is this. It is progress, but still nowhere near
esphome:
name: esphome-web-813d00
friendly_name: ESPHomeDisplay
min_version: 2024.11.0
name_add_mac_suffix: false
on_boot:
priority: 800
then:
- lambda: |-
id(disp).enable();
id(disp).transfer_byte(0x11);
id(disp).disable();
esp32:
board: esp32-s3-devkitc-1
framework:
type: esp-idf
psram:
mode: octal
speed: 80MHz
# Enable logging
logger:
font:
- file: "gfonts://Roboto"
id: roboto_font
size: 20
# Enable Home Assistant API
api:
# Allow Over-The-Air updates
ota:
- platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Example configuration entry with 2 sensors and filter
sensor:
- platform: wifi_signal # Reports the WiFi signal strength/RSSI in dB
name: "WiFi Signal dB"
id: wifi_signal_db
update_interval: 60s
entity_category: "diagnostic"
- platform: copy # Reports the WiFi signal strength in %
source_id: wifi_signal_db
name: "WiFi Signal Percent"
filters:
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
unit_of_measurement: "Signal %"
entity_category: "diagnostic"
device_class: ""
spi:
clk_pin: GPIO12 # Likely SCK (SPI Clock)
mosi_pin: GPIO13 # Likely MOSI (SPI Data)
display:
- platform: ili9xxx
model: st7789v
dimensions:
height: 170
width: 320
offset_height: 35
offset_width: 0
color_order: bgr
invert_colors: true
data_rate: 80MHz
spi_mode: 0
cs_pin: GPIO10 # Could be Chip Select (not confirmed)
dc_pin: GPIO11 # Likely Data/Command (D/C)
reset_pin: GPIO1 # Likely Reset (RST)
update_interval: 1s
id: disp
rotation: 270
show_test_card: true
lambda: |-
it.fill(Color::BLACK);
delay(100);
it.print(10, 10, id(roboto_font), Color::WHITE, TextAlign::TOP_LEFT, "Hello, World!");
output:
- platform: gpio
pin:
number: GPIO14
allow_other_uses: true # Adjust based on your board
id: backlight_control
light:
- platform: binary
output: backlight_control
name: "Display Backlight"
restore_mode: ALWAYS_ON
Karosm
(Karosm)
March 2, 2025, 11:57am
12
So you tried also lower data rate, like 20MHz and all spi modes 0-3?
You could also try adding miso_pin (some unused generic pin) on spi component.
I did. Tried that, put MISO pin as GPIO15, an unused pin according to the pinout listed, but the result is the same
Try swapping the height and width and read the docs section about transform
.
That was it, we have life! Thanks so much to both for helping. For anyone wondering, below is my YAML that shows the test screen correctly
esphome:
name: esphome-web-813d00
friendly_name: ESPHomeDisplay
min_version: 2024.11.0
name_add_mac_suffix: false
esp32:
board: esp32-s3-devkitc-1
framework:
type: esp-idf
psram:
mode: octal
speed: 80MHz
# Enable logging
logger:
font:
- file: "gfonts://Roboto"
id: roboto_font
size: 20
# Enable Home Assistant API
api:
# Allow Over-The-Air updates
ota:
- platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Example configuration entry with 2 sensors and filter
sensor:
- platform: wifi_signal # Reports the WiFi signal strength/RSSI in dB
name: "WiFi Signal dB"
id: wifi_signal_db
update_interval: 60s
entity_category: "diagnostic"
- platform: copy # Reports the WiFi signal strength in %
source_id: wifi_signal_db
name: "WiFi Signal Percent"
filters:
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
unit_of_measurement: "Signal %"
entity_category: "diagnostic"
device_class: ""
spi:
clk_pin: GPIO12 # Likely SCK (SPI Clock)
mosi_pin: GPIO13 # Likely MOSI (SPI Data)
miso_pin: GPIO15
display:
- platform: ili9xxx
model: st7789v
dimensions:
height: 320
width: 170
offset_height: 0
offset_width: 35
color_order: bgr
invert_colors: true
data_rate: 5MHz
spi_mode: 0
cs_pin: GPIO10 # Could be Chip Select (not confirmed)
dc_pin: GPIO11 # Likely Data/Command (D/C)
reset_pin: GPIO1 # Likely Reset (RST)
update_interval: 1s
id: disp
rotation: 90
show_test_card: true
output:
- platform: gpio
pin:
number: GPIO14
allow_other_uses: true # Adjust based on your board
id: backlight_control
light:
- platform: binary
output: backlight_control
name: "Display Backlight"
restore_mode: ALWAYS_ON
# Example configuration entry
# Example configuration entry
switch:
- platform: gpio
pin:
number: GPIO14
allow_other_uses: true
name: "ESP Display"
icon: "mdi:gate"
2 Likes
Great, but remove rotation
and use transform
instead - will make display updates faster.
clintiot
(Clinton Marshall)
March 16, 2025, 10:42pm
18
Thanks for posting, I have the same board, and have got it working in HA like yours, i also added the lines to make it a BLE Gateway, but my quesion is how your update the content on the display from Home Assistant? Whats your use case with this deivce?
Idealy it woul dbe good to be able to display data such as “Number of new BLE Devices Discovered” on the dislpay, and then update to something else when there are no new BLE devices discovered.