289 lines
7.3 KiB
YAML
289 lines
7.3 KiB
YAML
esphome:
|
|
name: ${device_id}
|
|
name_add_mac_suffix: true
|
|
project:
|
|
name: "${project_name}"
|
|
version: "${project_version}"
|
|
includes:
|
|
- render.h
|
|
# on_boot:
|
|
# - priority: -100.0
|
|
# then:
|
|
# - delay: ${default_update_interval}
|
|
# - component.update: m5paper_display
|
|
# - delay: 1s
|
|
# - bm8563.apply_sleep_duration
|
|
# - m5paper.shutdown_main_power
|
|
# - deep_sleep.enter:
|
|
# sleep_duration: 30s
|
|
|
|
esp32:
|
|
board: m5stack-grey
|
|
framework:
|
|
type: arduino
|
|
|
|
external_components:
|
|
- source:
|
|
type: local
|
|
path: components
|
|
|
|
logger:
|
|
level: DEBUG
|
|
baud_rate: 921600
|
|
|
|
psram:
|
|
|
|
api:
|
|
|
|
ota:
|
|
|
|
wifi:
|
|
ssid: !secret wifi_ssid
|
|
password: !secret wifi_password
|
|
power_save_mode: "HIGH"
|
|
fast_connect: true
|
|
|
|
globals:
|
|
- id: material_icons_map
|
|
type: std::map<std::string, std::string>
|
|
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:
|
|
sda: GPIO21
|
|
scl: GPIO22
|
|
|
|
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
|
|
display: m5paper_display
|
|
id: gt911_touchscreen
|
|
interrupt_pin: GPIO36
|
|
|
|
switch:
|
|
- platform: restart
|
|
id: restart_switch
|
|
name: ${device_name} restart
|
|
- platform: gpio
|
|
pin: 32
|
|
name: "led"
|
|
inverted: true
|
|
|
|
time:
|
|
- platform: homeassistant
|
|
id: homeassistant_time
|
|
on_time_sync:
|
|
- bm8563.write_time
|
|
- platform: bm8563
|
|
id: rtc_time
|
|
sleep_duration: 250s
|
|
# on_time:
|
|
# - seconds: /6
|
|
# then:
|
|
# - component.update: m5paper_display
|
|
|
|
script:
|
|
- id: suspend
|
|
then:
|
|
- component.update: m5paper_display
|
|
- delay: 2s
|
|
- bm8563.apply_sleep_duration
|
|
- m5paper.shutdown_main_power
|
|
- delay: 30s
|
|
- deep_sleep.enter:
|
|
sleep_duration: ${sleep_duration}
|
|
|
|
interval:
|
|
- interval: 1s
|
|
then:
|
|
- if:
|
|
condition:
|
|
and:
|
|
# - lambda: "return !std::isnan(id(m5paper_battery_level).state);"
|
|
- lambda: "return id(rtc_time).now().is_valid();"
|
|
- lambda: "return !std::isnan(id(outside_temperature).state);"
|
|
- lambda: "return !std::isnan(id(lounge_temperature).state);"
|
|
then:
|
|
- script.execute: suspend
|
|
- interval: 3s
|
|
then:
|
|
- delay: 30s
|
|
- script.execute: suspend
|
|
|
|
m5paper:
|
|
battery_power_pin: GPIO5
|
|
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
|
|
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: homeassistant
|
|
name: Outside temperature
|
|
id: outside_temperature
|
|
entity_id: sensor.ruuvitag_1a2d_temperature
|
|
- platform: homeassistant
|
|
name: Lounge temperature
|
|
id: lounge_temperature
|
|
entity_id: sensor.ruuvitag_963b_temperature
|
|
- platform: homeassistant
|
|
name: solar power
|
|
id: solar_power
|
|
entity_id: sensor.solax_pv1_power
|
|
- 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
|
|
|
|
deep_sleep:
|
|
run_duration: 120s
|
|
sleep_duration: ${sleep_duration}
|
|
|