esphome: name: lilka friendly_name: lilka on_boot: priority: 600 then: - output.turn_on: display_power - delay: 100ms esp32: board: esp32-s3-devkitc-1 framework: type: esp-idf logger: api: encryption: key: "Yw3yq8lxsaze+jdggjAwxKpV4GD6gNZptvw4d6OPfOc=" ota: - platform: esphome password: "bb198feb99159fdaefc8092f10039acd" wifi: ssid: !secret wifi_ssid password: !secret wifi_password ap: ssid: "Lilka Fallback Hotspot" password: "hnYImYM4O6I0" captive_portal: # Веб-сервер web_server: port: 80 # Увімкнення живлення дисплея output: - platform: gpio pin: 46 id: display_power inverted: false # Сенсор батареї sensor: - platform: adc pin: GPIO3 name: "Battery Voltage" id: battery_voltage update_interval: 10s attenuation: 12db filters: - multiply: 1.33 - platform: template name: "Battery Level" id: battery_level unit_of_measurement: "%" accuracy_decimals: 0 update_interval: 10s lambda: |- float voltage = id(battery_voltage).state; float percent = (voltage - 3.0) / (4.2 - 3.0) * 100.0; if (percent > 100) percent = 100; if (percent < 0) percent = 0; return percent; # SPI шина spi: clk_pin: 18 mosi_pin: 17 # Дисплей ST7789V display: - platform: mipi_spi model: ST7789V id: my_display dc_pin: 15 cs_pin: 7 rotation: 270 invert_colors: false color_order: RGB pixel_mode: 16bit dimensions: width: 240 height: 280 offset_width: 0 offset_height: 0 auto_clear_enabled: false # LVGL - мінімальний варіант lvgl: log_level: INFO pages: - id: main_page widgets: # Заголовок - label: text: "Lilka LVGL" align: TOP_MID y: 20 # Батарея - label: id: battery_label text: "Battery: --" align: TOP_MID y: 50 # Текст по центру - label: text: "LVGL Works!" align: CENTER # Кнопки керування - БЕЗ lvgl дій поки що binary_sensor: - platform: gpio pin: number: 38 mode: INPUT_PULLUP inverted: true name: "Button Up" id: button_up filters: - delayed_on_off: 50ms - platform: gpio pin: number: 41 mode: INPUT_PULLUP inverted: true name: "Button Down" id: button_down filters: - delayed_on_off: 50ms - platform: gpio pin: number: 39 mode: INPUT_PULLUP inverted: true name: "Button Left" id: button_left filters: - delayed_on_off: 50ms - platform: gpio pin: number: 40 mode: INPUT_PULLUP inverted: true name: "Button Right" id: button_right filters: - delayed_on_off: 50ms - platform: gpio pin: number: 5 mode: INPUT_PULLUP inverted: true name: "Button A" id: button_a filters: - delayed_on_off: 50ms - platform: gpio pin: number: 6 mode: INPUT_PULLUP inverted: true name: "Button B" id: button_b filters: - delayed_on_off: 50ms - platform: gpio pin: number: 10 mode: INPUT_PULLUP inverted: true name: "Button C" id: button_c filters: - delayed_on_off: 50ms - platform: gpio pin: number: 9 mode: INPUT_PULLUP inverted: true name: "Button D" id: button_d filters: - delayed_on_off: 50ms - platform: gpio pin: number: 4 mode: INPUT_PULLUP inverted: true name: "Button Start" id: button_start filters: - delayed_on_off: 50ms - platform: gpio pin: number: 0 mode: INPUT_PULLUP inverted: true name: "Button Select" id: button_select filters: - delayed_on_off: 50ms # Оновлення батареї interval: - interval: 5s then: - lvgl.label.update: id: battery_label text: !lambda |- return std::string("Battery: ") + to_string((int)id(battery_level).state) + "%";