esphome: name: ${device_id} name_add_mac_suffix: true project: name: "${project_name}" version: "${project_version}" includes: - render.h on_boot: - priority: 1000 then: - lambda: |- pinMode(5, OUTPUT); digitalWrite(5, HIGH); - priority: 800 then: - output.turn_on: ext_pwr_en esp32: board: m5stack-grey framework: type: arduino external_components: - source: type: local path: components logger: level: DEBUG baud_rate: 921600 psram: api: ota: platform: esphome wifi: ssid: !secret wifi_ssid password: !secret wifi_password power_save_mode: "HIGH" fast_connect: true globals: - id: material_icons_map type: std::map restore_value: no initial_value: | { {"mdi-weather-night", "󰖔"}, {"mdi-weather-cloudy", "󰖐"}, {"mdi-weather-cloudy-alert", "󰼯"}, {"mdi-weather-fog", "󰖑"}, {"mdi-weather-hail", "󰖒"}, {"mdi-weather-lightning-rainy", "󰙾"}, {"mdi-weather-lightning", "󰖓"}, {"mdi-weather-partly-cloudy", "󰖕"}, {"mdi-weather-night-partly-cloudy", "󰼱"}, {"mdi-weather-pouring", "󰖖"}, {"mdi-weather-rainy", "󰖗"}, {"mdi-weather-snowy-rainy", "󰙿"}, {"mdi-weather-snowy", "󰖘"}, {"mdi-weather-sunny", "󰖙"}, {"mdi-weather-windy-variant", "󰖞"}, {"mdi-weather-windy", "󰖝"}, {"mdi-cloud-question", "󰨹"}, {"mdi-thermometer", "󰔏"}, {"mdi-water-percent", "󰖎"}, {"mdi-molecule-co2", "󰟤"}, {"mdi-wind-power-outline", "󱪉"}, {"mdi-home-outline", "󰚡"}, {"mdi-tree-outline", "󰹩"}, {"mdi-gauge", "󰊚"}, {"mdi-battery-high", "󱊣"}, {"mdi-battery-medium", "󱊢"}, {"mdi-battery-low", "󱊡"}, {"mdi-battery-alert-variant-outline", "󱃍"}, {"mdi-battery-charging-high", "󱊦"}, {"mdi-battery-unknown", "󰂑"}, {"mdi-shield-outline", "󰒙"}, {"mdi-shield-home-outline", "󰳋"}, {"mdi-shield-lock-outline", "󰳌"}, {"mdi-shield-moon-outline", "󱠩"}, {"mdi-shield-alert-outline", "󰻍"}, {"mdi-molecule-co2", "󰟤"}, {"mdi-radioactive", "󰐼"}, {"mdi-numeric-0-circle-outline", "󰲟"}, {"mdi-numeric-1-circle-outline", "󰲡"}, {"mdi-numeric-2-circle-outline", "󰲣"}, {"mdi-numeric-3-circle-outline", "󰲥"}, {"mdi-numeric-4-circle-outline", "󰲧"}, {"mdi-numeric-5-circle-outline", "󰲩"}, {"mdi-numeric-6-circle-outline", "󰲫"}, {"mdi-numeric-7-circle-outline", "󰲭"}, {"mdi-numeric-8-circle-outline", "󰲯"}, {"mdi-numeric-9-plus-circle-outline", "󰲳"}, } font: - file: "gfonts://Roboto" id: normal_font size: 120 - file: "gfonts://Roboto" id: small_font size: 50 - file: "gfonts://Roboto" id: clock_font size: 260 glyphs: "0123456789:" - file: "fonts/materialdesignicons-webfont.ttf" id: battery_font size: 40 glyphs: [ "󱊢", #mdi-battery-medium "󱊡", #mdi-battery-low "󱊣", # mdi-battery-high "󱃍", #mdi-battery-alert-variant-outline "󱊦", #mdi-battery-charging-high "󰂑", #mdi-battery-unknown ] spi: clk_pin: GPIO14 mosi_pin: GPIO12 miso_pin: GPIO13 i2c: - id: i2c0 sda: GPIO21 scl: GPIO22 frequency: 200kHz - id: i2c1 sda: GPIO25 scl: GPIO32 frequency: 200kHz display: - platform: it8951e id: m5paper_display cs_pin: GPIO15 reset_pin: GPIO23 reset_duration: 5ms busy_pin: GPIO27 rotation: 0 reversed: False update_interval: never lambda: |- render(it); touchscreen: - platform: gt911 i2c_id: i2c0 display: m5paper_display id: gt911_touchscreen interrupt_pin: GPIO36 switch: - platform: restart id: restart_switch name: ${device_name} restart time: - platform: homeassistant id: homeassistant_time on_time_sync: - bm8563.write_time - platform: bm8563 i2c_id: i2c0 id: rtc_time sleep_duration: 250s m5paper: battery_power_pin: GPIO26 main_power_pin: GPIO2 sensor: - platform: adc disabled_by_default: true pin: GPIO35 name: ${device_name} battery voltage id: m5paper_battery_voltage update_interval: ${default_update_interval} attenuation: 11db filters: - multiply: 2 #1,27272727 - platform: sht3xd i2c_id: i2c0 address: 0x44 temperature: name: ${device_name} temperature id: m5paper_temperature device_class: "temperature" state_class: "measurement" icon: mdi:thermometer humidity: name: ${device_name} humidity id: m5paper_humidity device_class: "humidity" state_class: "measurement" icon: mdi:water-percent update_interval: ${default_update_interval} - platform: template name: ${device_name} battery level id: m5paper_battery_level unit_of_measurement: "%" device_class: "battery" state_class: "measurement" icon: mdi:battery-high update_interval: 20s lambda: |- constexpr float min_level = 3.52; constexpr float max_level = 4.15; return ((id(m5paper_battery_voltage).state - min_level) / (max_level - min_level)) * 100.00; filters: - clamp: min_value: 0 max_value: 100 - platform: uptime id: uptime_sensor name: Uptime update_interval: 3s binary_sensor: - platform: gpio name: ${device_name} right button id: right_button icon: mdi:gesture-tap-button pin: number: GPIO37 inverted: true - platform: gpio name: ${device_name} left button icon: mdi:gesture-tap-button pin: number: GPIO39 inverted: true - platform: gpio name: ${device_name} BTN/PWR button icon: mdi:gesture-tap-button pin: number: GPIO38 inverted: true - platform: homeassistant id: ota_mode entity_id: input_boolean.${device_id}_ota_mode publish_initial_state: true on_state: then: if: condition: lambda: return x; then: - deep_sleep.prevent: deep_sleep0 else: - deep_sleep.allow: deep_sleep0 deep_sleep: id: deep_sleep0 run_duration: 120s sleep_duration: ${sleep_duration} output: - platform: gpio pin: GPIO5 id: ext_pwr_en inverted: false