237 lines
5.9 KiB
YAML
237 lines
5.9 KiB
YAML
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
|
|
|
|
|
|
image: !include widgets/image.yaml
|
|
font: !include widgets/fonts.yaml
|
|
color: !include widgets/colors.yaml
|
|
|
|
|
|
http_request:
|
|
verify_ssl: false
|
|
|
|
external_components:
|
|
- source: github://pr#9972
|
|
components: [mapping]
|
|
refresh: 1h
|
|
|
|
esphome:
|
|
name: display
|
|
friendly_name: display
|
|
includes:
|
|
- <sstream>
|
|
- <algorithm>
|
|
platformio_options:
|
|
board_build.flash_mode: dio
|
|
|
|
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
|
|
# CONFIG_ESP32S3_DATA_CACHE_64KB: "y"
|
|
# CONFIG_ESP32S3_DATA_CACHE_LINE_64B: "y"
|
|
# CONFIG_SPIRAM_FETCH_INSTRUCTIONS: y
|
|
# CONFIG_SPIRAM_RODATA: y
|
|
# CONFIG_FREERTOS_USE_TRACE_FACILITY: "y"
|
|
# CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS: "y"
|
|
|
|
psram:
|
|
mode: octal
|
|
speed: 80MHz
|
|
|
|
|
|
logger:
|
|
level: debug
|
|
|
|
|
|
api:
|
|
encryption:
|
|
key: !secret display_api
|
|
|
|
ota:
|
|
- platform: esphome
|
|
password: !secret ota_password
|
|
|
|
wifi:
|
|
networks:
|
|
- ssid: !secret wifi_ssid
|
|
password: !secret wifi_password
|
|
|
|
|
|
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
|
|
|
|
|
|
light:
|
|
# Backlight
|
|
- 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:
|
|
|
|
output:
|
|
# Backlight LED
|
|
- platform: ledc
|
|
pin: GPIO38
|
|
id: backlight_output
|
|
frequency: 100Hz
|
|
|
|
i2c:
|
|
- id: bus_a
|
|
sda: GPIO19
|
|
scl:
|
|
number: GPIO45
|
|
ignore_strapping_warning: true
|
|
frequency: 100kHz
|
|
|
|
|
|
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
|
|
|
|
# on_touch:
|
|
# - lambda: |-
|
|
# ESP_LOGI("cal", "x=%d, y=%d, x_raw=%d, y_raw=%0d",
|
|
# touch.x,
|
|
# touch.y,
|
|
# touch.x_raw,
|
|
# touch.y_raw
|
|
# );
|
|
|
|
spi:
|
|
- id: lcd_spi
|
|
clk_pin: GPIO48
|
|
mosi_pin: GPIO47
|
|
|
|
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
|
|
transform:
|
|
mirror_x: false
|
|
mirror_y: false
|
|
cs_pin: 39
|
|
# reset not defined
|
|
de_pin: 18
|
|
hsync_pin: 16
|
|
vsync_pin: 17
|
|
pclk_pin: 21
|
|
init_sequence:
|
|
- 1
|
|
- [0xFF, 0x77, 0x01, 0x00, 0x00, 0x10] # CMD2_BKSEL_BK0
|
|
- [0xCD, 0x00] # disable MDT flag
|
|
pclk_frequency: 12MHz
|
|
pclk_inverted: false
|
|
data_pins:
|
|
red:
|
|
- 11 # R1
|
|
- 12 # R2
|
|
- 13 # R3
|
|
- 14 # R4
|
|
- 0 # R5
|
|
green:
|
|
- 8 # G0
|
|
- 20 # G1
|
|
- 3 # G2
|
|
- 46 # G3
|
|
- 9 # G4
|
|
- 10 # G5
|
|
blue:
|
|
- 4 # B1
|
|
- 5 # B2
|
|
- 6 # B3
|
|
- 7 # B4
|
|
- 15 # B5
|
|
|
|
|
|
# interval:
|
|
# - interval: 60s
|
|
# then:
|
|
# - lambda: |-
|
|
# // Общая информация о памяти
|
|
# ESP_LOGI("memory", "Free heap: %d bytes", esp_get_free_heap_size());
|
|
# ESP_LOGI("memory", "Free internal heap: %d bytes", esp_get_free_internal_heap_size());
|
|
# ESP_LOGI("memory", "Min free heap: %d bytes", esp_get_minimum_free_heap_size());
|
|
|
|
# // Детальная статистика кучи
|
|
# multi_heap_info_t info;
|
|
# heap_caps_get_info(&info, MALLOC_CAP_INTERNAL);
|
|
# ESP_LOGI("memory", "SRAM total: %d, free: %d, largest_free: %d",
|
|
# info.total_free_bytes + info.total_allocated_bytes,
|
|
# info.total_free_bytes,
|
|
# info.largest_free_block);
|
|
|
|
# // Статистика по PSRAM
|
|
# heap_caps_get_info(&info, MALLOC_CAP_SPIRAM);
|
|
# ESP_LOGI("memory", "PSRAM total: %d, free: %d, largest_free: %d",
|
|
# info.total_free_bytes + info.total_allocated_bytes,
|
|
# info.total_free_bytes,
|
|
# info.largest_free_block);
|
|
|
|
# - lambda: |-
|
|
# ESP_LOGI("stack", "Main task free: %d bytes",
|
|
# uxTaskGetStackHighWaterMark(xTaskGetHandle("loopTask")));
|
|
# ESP_LOGI("stack", "System event free: %d bytes",
|
|
# uxTaskGetStackHighWaterMark(xTaskGetHandle("sys_evt")));
|
|
# ESP_LOGI("stack", "Timer task free: %d bytes",
|
|
# uxTaskGetStackHighWaterMark(xTaskGetHandle("esp_timer")));
|
|
|
|
# - lambda: |-
|
|
# char* buf = (char*)malloc(1024);
|
|
# if (buf) {
|
|
# vTaskList(buf);
|
|
# ESP_LOGI("stack", "\nTask Name\tState\tPrio\tStack\tNum\n%s", buf);
|
|
# free(buf);
|
|
# } |