first commit
This commit is contained in:
@@ -0,0 +1,202 @@
|
||||
# Waveshare ESP32-S3-Touch-LCD-4B — doorbell JPEG viewer
|
||||
# Copy this file AND the components/ folder into your ESPHome config directory.
|
||||
# Pair with the resizer proxy in this repo.
|
||||
#
|
||||
# Uses a custom fast_jpeg component (RGB565 block decode + DMA blit).
|
||||
# Stock online_image JPEG is too slow for ~5 fps.
|
||||
|
||||
substitutions:
|
||||
name: doorbell-display
|
||||
friendly_name: Doorbell Display
|
||||
image_url: "http://10.0.1.70:8080/"
|
||||
|
||||
external_components:
|
||||
- source:
|
||||
type: local
|
||||
path: components
|
||||
|
||||
esphome:
|
||||
name: ${name}
|
||||
friendly_name: ${friendly_name}
|
||||
min_version: "2025.2.0"
|
||||
on_boot:
|
||||
- priority: 800
|
||||
then:
|
||||
- lambda: |-
|
||||
auto *io = id(ext_io);
|
||||
io->pin_mode(0, esphome::gpio::FLAG_OUTPUT);
|
||||
io->pin_mode(1, esphome::gpio::FLAG_OUTPUT);
|
||||
io->pin_mode(2, esphome::gpio::FLAG_OUTPUT);
|
||||
io->pin_mode(7, esphome::gpio::FLAG_OUTPUT);
|
||||
io->digital_write(0, true);
|
||||
io->digital_write(1, false);
|
||||
io->digital_write(2, false);
|
||||
io->digital_write(7, false);
|
||||
- delay: 120ms
|
||||
- lambda: |-
|
||||
id(ext_io)->digital_write(7, true);
|
||||
|
||||
esp32:
|
||||
board: esp32-s3-devkitc-1
|
||||
variant: esp32s3
|
||||
flash_size: 16MB
|
||||
framework:
|
||||
type: esp-idf
|
||||
sdkconfig_options:
|
||||
CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240: "y"
|
||||
CONFIG_ESP32S3_DATA_CACHE_LINE_64B: "y"
|
||||
CONFIG_SPIRAM_FETCH_INSTRUCTIONS: "y"
|
||||
CONFIG_SPIRAM_RODATA: "y"
|
||||
advanced:
|
||||
include_builtin_idf_components:
|
||||
- esp_http_client
|
||||
|
||||
psram:
|
||||
mode: octal
|
||||
speed: 80MHz
|
||||
|
||||
logger:
|
||||
logs:
|
||||
fast_jpeg: INFO
|
||||
|
||||
api:
|
||||
ota:
|
||||
- platform: esphome
|
||||
|
||||
wifi:
|
||||
ssid: !secret wifi_ssid
|
||||
password: !secret wifi_password
|
||||
power_save_mode: none
|
||||
|
||||
i2c:
|
||||
sda: GPIO47
|
||||
scl: GPIO48
|
||||
frequency: 400kHz
|
||||
scan: true
|
||||
|
||||
pca9554:
|
||||
- id: ext_io
|
||||
address: 0x20
|
||||
pin_count: 8
|
||||
|
||||
spi:
|
||||
- id: disp_spi
|
||||
interface: software
|
||||
clk_pin:
|
||||
pca9554: ext_io
|
||||
number: 2
|
||||
mode:
|
||||
output: true
|
||||
mosi_pin:
|
||||
pca9554: ext_io
|
||||
number: 1
|
||||
mode:
|
||||
output: true
|
||||
|
||||
output:
|
||||
- platform: ledc
|
||||
id: backlight_pwm
|
||||
inverted: true
|
||||
pin: GPIO4
|
||||
|
||||
light:
|
||||
- platform: monochromatic
|
||||
id: backlight
|
||||
name: "Backlight"
|
||||
output: backlight_pwm
|
||||
restore_mode: ALWAYS_ON
|
||||
default_transition_length: 0s
|
||||
|
||||
# Simple on/off for Home Assistant automations (light still exposes brightness).
|
||||
switch:
|
||||
- platform: template
|
||||
name: "Screen"
|
||||
id: screen_power
|
||||
icon: mdi:monitor
|
||||
lambda: |-
|
||||
return id(backlight).current_values.is_on();
|
||||
turn_on_action:
|
||||
- light.turn_on:
|
||||
id: backlight
|
||||
brightness: 100%
|
||||
turn_off_action:
|
||||
- light.turn_off: backlight
|
||||
|
||||
display:
|
||||
- platform: mipi_rgb
|
||||
id: lcd
|
||||
model: WAVESHARE-4-480x480
|
||||
dimensions: 480x480
|
||||
color_order: RGB
|
||||
auto_clear_enabled: false
|
||||
update_interval: never
|
||||
|
||||
spi_id: disp_spi
|
||||
cs_pin:
|
||||
pca9554: ext_io
|
||||
number: 0
|
||||
mode:
|
||||
output: true
|
||||
reset_pin:
|
||||
pca9554: ext_io
|
||||
number: 7
|
||||
mode:
|
||||
output: true
|
||||
|
||||
de_pin: GPIO17
|
||||
hsync_pin:
|
||||
number: GPIO46
|
||||
ignore_strapping_warning: true
|
||||
vsync_pin:
|
||||
number: GPIO3
|
||||
ignore_strapping_warning: true
|
||||
pclk_pin: GPIO9
|
||||
pclk_inverted: false
|
||||
|
||||
data_pins:
|
||||
red: [GPIO10, GPIO11, GPIO12, GPIO13, GPIO14]
|
||||
green: [GPIO21, GPIO8, GPIO18, GPIO45, GPIO38, GPIO39]
|
||||
blue: [GPIO40, GPIO41, GPIO42, GPIO2, GPIO1]
|
||||
|
||||
init_sequence:
|
||||
- [0xFF, 0x77, 0x01, 0x00, 0x00, 0x10]
|
||||
- [0xC0, 0x3B, 0x00]
|
||||
- [0xC1, 0x0D, 0x02]
|
||||
- [0xC2, 0x21, 0x08]
|
||||
- [0xCD, 0x08]
|
||||
- [0xB0, 0x00, 0x11, 0x18, 0x0E, 0x11, 0x06, 0x07, 0x08, 0x07, 0x22, 0x04, 0x12, 0x0F, 0xAA, 0x31, 0x18]
|
||||
- [0xB1, 0x00, 0x11, 0x19, 0x0E, 0x12, 0x07, 0x08, 0x08, 0x08, 0x22, 0x04, 0x11, 0x11, 0xA9, 0x32, 0x18]
|
||||
- [0xFF, 0x77, 0x01, 0x00, 0x00, 0x11]
|
||||
- [0xB0, 0x60]
|
||||
- [0xB1, 0x30]
|
||||
- [0xB2, 0x87]
|
||||
- [0xB3, 0x80]
|
||||
- [0xB5, 0x49]
|
||||
- [0xB7, 0x85]
|
||||
- [0xB8, 0x21]
|
||||
- [0xC1, 0x78]
|
||||
- [0xC2, 0x78]
|
||||
- delay 20ms
|
||||
- [0xE0, 0x00, 0x1B, 0x02]
|
||||
- [0xE1, 0x08, 0xA0, 0x00, 0x00, 0x07, 0xA0, 0x00, 0x00, 0x00, 0x44, 0x44]
|
||||
- [0xE2, 0x11, 0x11, 0x44, 0x44, 0xED, 0xA0, 0x00, 0x00, 0xEC, 0xA0, 0x00, 0x00]
|
||||
- [0xE3, 0x00, 0x00, 0x11, 0x11]
|
||||
- [0xE4, 0x44, 0x44]
|
||||
- [0xE5, 0x0A, 0xE9, 0xD8, 0xA0, 0x0C, 0xEB, 0xD8, 0xA0, 0x0E, 0xED, 0xD8, 0xA0, 0x10, 0xEF, 0xD8, 0xA0]
|
||||
- [0xE6, 0x00, 0x00, 0x11, 0x11]
|
||||
- [0xE7, 0x44, 0x44]
|
||||
- [0xE8, 0x09, 0xE8, 0xD8, 0xA0, 0x0B, 0xEA, 0xD8, 0xA0, 0x0D, 0xEC, 0xD8, 0xA0, 0x0F, 0xEE, 0xD8, 0xA0]
|
||||
- [0xEB, 0x02, 0x00, 0xE4, 0xE4, 0x88, 0x00, 0x40]
|
||||
- [0xEC, 0x3C, 0x00]
|
||||
- [0xED, 0xAB, 0x89, 0x76, 0x54, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x45, 0x67, 0x98, 0xBA]
|
||||
- [0xFF, 0x77, 0x01, 0x00, 0x00, 0x00]
|
||||
- [0x36, 0x00]
|
||||
- [0x3A, 0x66]
|
||||
|
||||
fast_jpeg:
|
||||
id: doorbell_jpg
|
||||
url: ${image_url}
|
||||
display_id: lcd
|
||||
update_interval: 200ms
|
||||
# If colours look swapped, set big_endian: false
|
||||
big_endian: true
|
||||
Reference in New Issue
Block a user