mirror of
https://github.com/randybb/esphome-configs.git
synced 2026-03-03 15:24:09 +01:00
Bulk cleanup: remove trailing whitespace and ensure files end with a newline. Structural issues (indentation, bracket spacing) left for per-file fixes. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
290 lines
6.3 KiB
YAML
290 lines
6.3 KiB
YAML
substitutions:
|
|
device: lvgl-trainer
|
|
name: Trainer Display
|
|
area: Basement
|
|
comment: "${area} | Pain Cave"
|
|
|
|
esphome:
|
|
name: mcu-${device}
|
|
friendly_name: ${name}
|
|
area: ${area}
|
|
comment: ${comment}
|
|
|
|
esp32:
|
|
variant: esp32s3
|
|
flash_size: 16MB
|
|
framework:
|
|
type: esp-idf
|
|
|
|
|
|
packages:
|
|
common: !include common/common.yaml
|
|
|
|
i2c:
|
|
- id: touchscreen_bus
|
|
sda: 4
|
|
scl: 8
|
|
|
|
psram:
|
|
mode: octal
|
|
speed: 80MHz
|
|
|
|
spi:
|
|
id: display_qspi
|
|
type: quad
|
|
clk_pin: 47
|
|
data_pins: [21, 48, 40, 39]
|
|
|
|
color:
|
|
- id: my_red
|
|
red: 100%
|
|
green: 0%
|
|
blue: 0%
|
|
- id: my_orange
|
|
red: 100%
|
|
green: 50%
|
|
blue: 0%
|
|
- id: my_yellow
|
|
red: 100%
|
|
green: 100%
|
|
blue: 0%
|
|
- id: my_green
|
|
red: 0%
|
|
green: 100%
|
|
blue: 0%
|
|
- id: my_blue
|
|
red: 0%
|
|
green: 0%
|
|
blue: 100%
|
|
- id: my_teal
|
|
red: 0%
|
|
green: 100%
|
|
blue: 100%
|
|
- id: my_gray
|
|
red: 70%
|
|
green: 70%
|
|
blue: 70%
|
|
- id: my_white
|
|
red: 100%
|
|
green: 100%
|
|
blue: 100%
|
|
|
|
font:
|
|
- file: "gfonts://Roboto"
|
|
id: Roboto_48
|
|
size: 48
|
|
- file: "gfonts://Roboto"
|
|
id: Roboto_36
|
|
size: 36
|
|
- file: "gfonts://Roboto"
|
|
id: Roboto_24
|
|
size: 24
|
|
- file: "gfonts://Roboto"
|
|
id: Roboto_12
|
|
size: 12
|
|
- file: "gfonts://Roboto"
|
|
id: font_std
|
|
size: 40
|
|
glyphs: "!\"%()+=,-_.:°0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz/\\[]|&@#'"
|
|
- file: "gfonts://Roboto@700"
|
|
id: font_title
|
|
size: 40
|
|
glyphs: "!\"%()+=,-_.:°0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz/\\[]|&@#'"
|
|
|
|
globals:
|
|
- id: bgcolor
|
|
type: Color
|
|
initial_value: "Color::random_color()"
|
|
|
|
# power_supply:
|
|
# id: main_backlight
|
|
# pin: 1
|
|
# enable_on_boot: true
|
|
|
|
output:
|
|
- platform: ledc
|
|
id: gpio_backlight_pwm
|
|
pin: 1
|
|
|
|
light:
|
|
- id: display_backlight
|
|
name: Backlight
|
|
platform: monochromatic
|
|
output: gpio_backlight_pwm
|
|
restore_mode: ALWAYS_ON
|
|
default_transition_length: 500ms
|
|
|
|
display:
|
|
- platform: qspi_dbi
|
|
model: axs15231
|
|
data_rate: 40MHz #20mhz is default
|
|
#spi_mode: MODE2
|
|
id: main_display
|
|
spi_id: display_qspi
|
|
dimensions:
|
|
height: 480
|
|
width: 320
|
|
cs_pin: 45
|
|
brightness: 50
|
|
rotation: 90
|
|
auto_clear_enabled: false
|
|
# show_test_card: true
|
|
# lambda: |-
|
|
# it.fill(id(bgcolor));
|
|
# it.print(it.get_width()/2, it.get_height()/2-20, id(font_title), TextAlign::CENTER, "ESPHome");
|
|
# it.print(it.get_width()/2, it.get_height()/2+20, id(font_std), TextAlign::CENTER, "@UTBDK");
|
|
|
|
touchscreen:
|
|
- platform: axs15231
|
|
id: main_touch
|
|
display: main_display
|
|
i2c_id: touchscreen_bus
|
|
update_interval: 100ms
|
|
# interrupt_pin:
|
|
# number: 3
|
|
# ignore_strapping_warning: true
|
|
calibration:
|
|
x_min: 0
|
|
x_max: 479
|
|
y_min: 0
|
|
y_max: 319
|
|
transform:
|
|
swap_xy: true
|
|
mirror_x: false
|
|
mirror_y: true
|
|
# on_touch:
|
|
# - lambda: |-
|
|
# Color newColor;
|
|
# do { newColor = Color::random_color(); } while (newColor == id(bgcolor));
|
|
# id(bgcolor) = newColor;
|
|
|
|
# ESP_LOGI("cal", "x=%d, y=%d, x_raw=%d, y_raw=%0d",
|
|
# touch.x,
|
|
# touch.y,
|
|
# touch.x_raw,
|
|
# touch.y_raw
|
|
# );
|
|
on_release:
|
|
- if:
|
|
condition: lvgl.is_paused
|
|
then:
|
|
- lvgl.resume:
|
|
- lvgl.widget.redraw:
|
|
- light.turn_on:
|
|
id: display_backlight
|
|
transition_length: 300ms
|
|
|
|
uart:
|
|
- id: ext_uart
|
|
tx_pin: 43
|
|
rx_pin: 44
|
|
baud_rate: 115200
|
|
stop_bits: 1
|
|
parity: NONE
|
|
|
|
binary_sensor:
|
|
- platform: homeassistant
|
|
id: exercise_room_light
|
|
entity_id: light.exercise_room
|
|
publish_initial_state: true
|
|
on_state:
|
|
then:
|
|
lvgl.widget.update:
|
|
id: exercise_room_light_btn
|
|
state:
|
|
checked: !lambda return x;
|
|
- platform: homeassistant
|
|
id: exercise_room_fan
|
|
entity_id: light.mcu_dimmer_exercise_room_fan
|
|
publish_initial_state: true
|
|
on_state:
|
|
then:
|
|
lvgl.widget.update:
|
|
id: exercise_room_fan_btn
|
|
state:
|
|
checked: !lambda return x;
|
|
|
|
lvgl:
|
|
buffer_size: 100%
|
|
log_level: WARN
|
|
color_depth: 16
|
|
default_font: montserrat_18
|
|
# on_idle:
|
|
# - timeout: !lambda "return (id(display_timeout).state * 1000);"
|
|
# then:
|
|
# - logger.log: "LVGL is idle"
|
|
# - light.turn_off:
|
|
# id: display_backlight
|
|
# transition_length: 2500ms
|
|
# - lvgl.pause:
|
|
top_layer:
|
|
widgets:
|
|
- buttonmatrix:
|
|
align: bottom_mid
|
|
# styles: header_footer
|
|
pad_all: 0
|
|
outline_width: 0
|
|
id: top_layer
|
|
# items:
|
|
# styles: header_footer
|
|
rows:
|
|
- buttons:
|
|
- id: page_prev
|
|
text: "\uF053"
|
|
on_press:
|
|
then:
|
|
lvgl.page.previous:
|
|
- id: page_home
|
|
text: "\uF015"
|
|
on_press:
|
|
then:
|
|
lvgl.page.show: main_page
|
|
- id: page_next
|
|
text: "\uF054"
|
|
on_press:
|
|
then:
|
|
lvgl.page.next:
|
|
pages:
|
|
- id: main_page
|
|
widgets:
|
|
- label:
|
|
text: "ESPHome LVGL Display"
|
|
align: CENTER
|
|
text_align: CENTER
|
|
text_color: 0xFFFFFF
|
|
- id: excercise_page
|
|
widgets:
|
|
- label:
|
|
align: CENTER
|
|
text: 'Hello World!'
|
|
- button:
|
|
id: exercise_room_light_btn
|
|
align: TOP_LEFT
|
|
width: 100
|
|
height: 70
|
|
checkable: true
|
|
widgets:
|
|
- label:
|
|
align: CENTER
|
|
text: 'Light'
|
|
on_click:
|
|
- homeassistant.action:
|
|
action: light.toggle
|
|
data:
|
|
entity_id: light.exercise_room
|
|
- button:
|
|
id: exercise_room_fan_btn
|
|
align: TOP_RIGHT
|
|
width: 100
|
|
height: 70
|
|
checkable: true
|
|
widgets:
|
|
- label:
|
|
align: CENTER
|
|
text: 'Fan'
|
|
on_click:
|
|
- homeassistant.action:
|
|
action: light.toggle
|
|
data:
|
|
entity_id: light.mcu_dimmer_exercise_room_fan
|