Основная конфигурация
Основной конфигурационный файл main.yaml содержит все необходимые настройки для работы устройства. Рассмотрим каждый блок подробно:
Подключение модулей (Packages)
packages:
home: !include widgets/home/home.yaml
lights_config: !include widgets/light/lights_config.yaml
devices: !include widgets/devices.yaml
settings: !include widgets/settings.yaml
menu_controls_main: !include widgets/menu_controls_main.yaml
loading_page: !include widgets/loading_page.yamlНазначение: Модульная система организации кода. Каждый файл содержит конфигурацию определенной функциональности.
home.yaml— главный экран с основной информациейlights_config.yaml— управление освещениемdevices.yaml— управление остальными устройствамиsettings.yaml— настройки устройстваmenu_controls_main.yaml— элементы управленияloading_page.yaml— экран загрузки при старте
Ресурсы интерфейса
image: !include widgets/image.yaml
font: !include widgets/fonts.yaml
color: !include widgets/colors.yamlНазначение: Централизованное управление визуальными ресурсами.
image.yaml— определения всех изображенийfonts.yaml— настройки шрифтовcolors.yaml— цветовая палитра интерфейса
HTTP запросы
http_request:
verify_ssl: falseНазначение: Настройка HTTP клиента для запросов к внешним API. Нужен для работы media_player
Внешние компоненты
external_components:
- source: github://pr#9972
components: [mapping]
refresh: 1hНазначение: Подключение экспериментального компонента ESPHome.
- Загружается компонент
mappingиз GitHub PR #9972 - Обновление каждый час для получения последних изменений
ВНИМАНИЕ
Данный компонент будет удален в релизной версии или раньше, как только будет осуществлено слияние с основной веткой. Данный компонент оптимизирует работу компонента mapping с PSRAM
Основные настройки ESPHome
esphome:
name: display
friendly_name: display
includes:
- <sstream>
- <algorithm>
platformio_options:
board_build.flash_mode: dioПараметры:
name— внутреннее имя устройстваfriendly_name— отображаемое имя в Home Assistantincludes— подключение C++ библиотек для расширенной функциональностиflash_mode: dio— режим работы с флеш-памятью для стабильности
Конфигурация ESP32-S3
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_SPIRAM_TRY_ALLOCATE_WIFI_LWIP: yКлючевые настройки:
board— тип платы ESP32-S3flash_size: 16MB— размер флеш-памятиframework: esp-idf— использование ESP-IDFCPU_FREQ_240— максимальная частота процессора 240 МГцSPIRAM_TRY_ALLOCATE_WIFI_LWIP— использование PSRAM для Wi-Fi стека
ВАЖНО
Настройки в sdkconfig_options напрямую могут влиять на запуск прошивки.
ОПЦИИ
Это блок-спойлер.
PSRAM конфигурация
psram:
mode: octal
speed: 80MHzНазначение: Настройка внешней оперативной памяти.
octal— 8-битный режим для максимальной скорости80MHz— частота работы PSRAM
Логирование
logger:
level: debugНазначение: Уровень детализации логов для отладки. Подробнее
СОВЕТ
После отладки cтарайтесь использовать уровни info или error, так как это напрямую влияет на скорость работы устройства.
API и OTA
api:
encryption:
key: !secret display_key
ota:
- platform: esphome
password: !secret display_otaБезопасность:
api.encryption.key— ключ шифрования для связи с Home Assistantota.password— пароль для обновлений по воздуху
Wi-Fi подключение
wifi:
networks:
- ssid: !secret wifi_ssid
password: !secret wifi_passwordНастройка сети: Данные берутся из файла secrets.yaml для безопасности.
LVGL интерфейс
lvgl:
color_depth: 16
byte_order: big_endian
displays: my_display
touchscreens:
- touchscreen_id: my_touchscreen
long_press_time: 5000ms
long_press_repeat_time: 400ms
page_wrap: falseПараметры графики:
color_depth: 16— 16-битная глубина цвета (65536 цветов)big_endian— порядок байтов для совместимости с дисплеемlong_press_time— время удержания для долгого нажатия на кнопкуpage_wrap: false— отключение циклического переключения страниц
Подсветка дисплея
light:
- platform: monochromatic
output: backlight_output
name: Backlight
id: display_backlight
restore_mode: ALWAYS_ON
on_turn_on:
- if:
condition: lvgl.is_paused
then:
- logger.log: "LVGL resuming by backlight on"
- lvgl.resume:
- lvgl.widget.redraw:
on_turn_off:
- if:
condition:
lambda: 'return id(display_timeout_number).state >= 0;'
then:
- logger.log: "Backlight off, pausing LVGL"
- lvgl.pause:Умное управление:
- Автоматическое возобновление интерфейса при включении подсветки
- Пауза LVGL при выключении для экономии ресурсов
- Восстановление состояния после перезагрузки
PWM выход для подсветки
output:
- platform: ledc
pin: GPIO38
id: backlight_output
frequency: 100HzТехнические параметры:
GPIO38— пин управления подсветкой100Hz— частота ШИМ для плавного управления яркостью
I2C шина
i2c:
- id: bus_a
sda: GPIO19
scl:
number: GPIO45
ignore_strapping_warning: true
frequency: 100kHzНазначение: Инициализация шины I2C
ignore_strapping_warning— игнорирование предупреждения о загрузочном пине
Сенсорный контроллер
touchscreen:
platform: gt911
id: my_touchscreen
transform:
mirror_x: false
mirror_y: false
display: my_display
on_release:
- if:
condition: lvgl.is_paused
then:
- logger.log: "LVGL resuming"
- lvgl.resume:
- lvgl.widget.redraw:
- light.turn_on: display_backlightФункции:
- Контроллер GT911
- Автоматическое пробуждение при касании
SPI интерфейс
spi:
- id: lcd_spi
clk_pin: GPIO48
mosi_pin: GPIO47Назначение: Инициализация шины SPI. Высокоскоростная передача данных на дисплей.
Конфигурация дисплея
display:
- platform: st7701s
id: my_display
update_interval: never
auto_clear_enabled: false
data_rate: 2MHz
spi_mode: MODE3
color_order: RGB
invert_colors: false
dimensions:
width: 480
height: 480Основные параметры:
st7701s— драйвер для контроллера дисплеяupdate_interval: never— обновление только по требованию LVGLdimensions: 480x480— разрешение дисплеяdata_rate: 2MHz— скорость передачи по SPI
RGB интерфейс дисплея
transform:
mirror_x: false
mirror_y: false
cs_pin: 39
de_pin: 18
hsync_pin: 16
vsync_pin: 17
pclk_pin: 21
init_sequence:
- 1
- [0xFF, 0x77, 0x01, 0x00, 0x00, 0x10]
- [0xCD, 0x00]
pclk_frequency: 12MHz
pclk_inverted: false
data_pins:
red:
- 11, 12, 13, 14, 0 # R1-R5
green:
- 8, 20, 3, 46, 9, 10 # G0-G5
blue:
- 4, 5, 6, 7, 15 # B1-B5RGB интерфейс:
- Прямое подключение к пинам ESP32-S3
pclk_frequency: 12MHz— тактовая частота пикселейinit_sequence— команды инициализации контроллера ST7701S- Распределение цветовых каналов по GPIO пинам
ВНИМАНИЕ
Есть вероятность, что в будущих версиях этот компонент будет заменен на упрощенную версию.