Created
March 31, 2021 06:32
-
-
Save koenvervloesem/8ec32fe0e37e2eda28e069e90ba300ef to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
substitutions: | |
node_name: esphomepoint | |
node_platform: ESP32 | |
node_board: m5stack-core-esp32 | |
packages: | |
base: !include common/base.yaml | |
# Workaround for https://github.com/esphome/issues/issues/1487 | |
<<: !include common/mqtt.yaml | |
binary_sensor: | |
- platform: gpio | |
id: M5_BtnA | |
pin: | |
number: 39 | |
inverted: True | |
on_click: | |
then: | |
- display.page.show_previous: m5stack_display | |
- component.update: m5stack_display | |
- platform: gpio | |
id: M5_BtnB | |
pin: | |
number: 38 | |
inverted: True | |
on_click: | |
then: | |
- switch.toggle: backlight | |
- platform: gpio | |
id: M5_BtnC | |
pin: | |
number: 37 | |
inverted: True | |
on_click: | |
then: | |
- display.page.show_next: m5stack_display | |
- component.update: m5stack_display | |
- platform: status | |
id: connection_status | |
time: | |
- platform: sntp | |
id: sntp_time | |
sensor: | |
- platform: mqtt_subscribe | |
id: sensor_freezer_temperature | |
topic: rtl433/Oregon-THGR122N/1/218/temperature_C | |
- platform: mqtt_subscribe | |
id: sensor_freezer_humidity | |
topic: rtl433/Oregon-THGR122N/1/218/humidity | |
- platform: mqtt_subscribe | |
id: sensor_cooler_temperature | |
topic: rtl433/Prologue-TH/2/151/temperature_C | |
- platform: mqtt_subscribe | |
id: sensor_cooler_humidity | |
topic: rtl433/Prologue-TH/2/151/humidity | |
- platform: mqtt_subscribe | |
id: sensor_fridge_temperature | |
topic: rtl433/Oregon-THGR122N/1/175/temperature_C | |
- platform: mqtt_subscribe | |
id: sensor_fridge_humidity | |
topic: rtl433/Oregon-THGR122N/1/175/humidity | |
- platform: mqtt_subscribe | |
id: sensor_outside_temperature | |
topic: rtl433/Oregon-THGR122N/1/106/temperature_C | |
- platform: mqtt_subscribe | |
id: sensor_outside_humidity | |
topic: rtl433/Oregon-THGR122N/1/106/humidity | |
- platform: mqtt_subscribe | |
id: sensor_bedroom_temperature | |
topic: rtl433/Prologue-TH/1/159/temperature_C | |
- platform: mqtt_subscribe | |
id: sensor_bedroom_humidity | |
topic: rtl433/Prologue-TH/1/159/humidity | |
- platform: mqtt_subscribe | |
id: sensor_storage_room_temperature | |
topic: rtl433/Prologue-TH/3/128/temperature_C | |
- platform: mqtt_subscribe | |
id: sensor_storage_room_humidity | |
topic: rtl433/Prologue-TH/3/128/humidity | |
- platform: mqtt_subscribe | |
id: sensor_office_temperature | |
topic: rtl433/Prologue-TH/3/83/temperature_C | |
- platform: mqtt_subscribe | |
id: sensor_office_humidity | |
topic: rtl433/Prologue-TH/3/83/humidity | |
- platform: mqtt_subscribe | |
id: sensor_gym_temperature | |
topic: rtl433/Prologue-TH/1/123/temperature_C | |
- platform: mqtt_subscribe | |
id: sensor_gym_humidity | |
topic: rtl433/Prologue-TH/1/123/humidity | |
- platform: mqtt_subscribe | |
id: sensor_office_co2 | |
topic: co2_esp8266/sensor/mh-z19_co/state | |
- platform: mqtt_subscribe | |
id: sensor_pm1 | |
topic: m5stack_air_quality/sensor/pm1/state | |
- platform: mqtt_subscribe | |
id: sensor_pm25 | |
topic: m5stack_air_quality/sensor/pm25/state | |
- platform: mqtt_subscribe | |
id: sensor_pm10 | |
topic: m5stack_air_quality/sensor/pm10/state | |
- platform: mqtt_subscribe | |
id: sensor_garden_shed_temperature | |
topic: ttn/koan-temperature-app/devices/dragino-lht65-1/up/TempC_DS | |
- platform: mqtt_subscribe | |
id: sensor_garden_shed_humidity | |
topic: ttn/koan-temperature-app/devices/dragino-lht65-1/up/Hum_SHT | |
switch: | |
- platform: gpio | |
pin: 32 | |
name: "${node_name} Backlight" | |
id: backlight | |
restore_mode: ALWAYS_ON | |
font: | |
# Download Material Design Icons webfont from https://materialdesignicons.com | |
- file: 'fonts/materialdesignicons-webfont.ttf' | |
id: font_mdi12 | |
size: 12 | |
glyphs: | |
- "\U000F05A9" # mdi-wifi | |
- "\U000F05AA" # mdi-wifi-off | |
- "\U000F02DC" # mdi-home | |
- "\U000F087B" # mdi-home-alert | |
- file: 'fonts/materialdesignicons-webfont.ttf' | |
id: font_mdi22 | |
size: 22 | |
glyphs: | |
- "\U000F050F" # mdi-thermometer | |
- "\U000F058C" # mdi-water | |
- "\U000F07E4" # mdi-molecule-co2 | |
- "\U000F03A6" # mdi-numeric-1-box-outline | |
- "\U000F03A9" # mdi-numeric-2-box-outline | |
- "\U000F0F7E" # mdi-numeric-10-box-outline | |
# Download Roboto font from https://fonts.google.com/specimen/Roboto | |
- file: "fonts/Roboto-Medium.ttf" | |
id: font_roboto_medium12 | |
size: 12 | |
- file: "fonts/Roboto-Medium.ttf" | |
id: font_roboto_medium16 | |
size: 16 | |
- file: "fonts/Roboto-Medium.ttf" | |
id: font_roboto_medium22 | |
size: 22 | |
- file: "fonts/Roboto-Regular.ttf" | |
id: font_roboto_regular12 | |
size: 12 | |
- file: "fonts/Roboto-Regular.ttf" | |
id: font_roboto_regular16 | |
size: 16 | |
spi: | |
clk_pin: 18 | |
mosi_pin: 23 | |
miso_pin: 19 | |
display: | |
- platform: ili9341 | |
id: m5stack_display | |
model: M5Stack | |
cs_pin: 14 | |
dc_pin: 27 | |
led_pin: 32 | |
reset_pin: 33 | |
rotation: 0 | |
pages: | |
- id: page1 | |
lambda: |- | |
Color WHITE(0,0,0); | |
Color RED(0,1,1); | |
Color BLACK(1,1,1); | |
it.fill(BLACK); | |
if(wifi_wificomponent->is_connected()) { | |
it.print(0, 0, id(font_mdi12), WHITE, "\U000F05A9"); | |
it.strftime(it.get_width()/2, 0, id(font_roboto_medium12), WHITE, TextAlign::TOP_CENTER, "%H:%M", id(sntp_time).now()); | |
} else { | |
it.print(0, 0, id(font_mdi12), RED, "\U000F05AA"); | |
} | |
if(id(connection_status).state) { | |
it.print(it.get_width()-12, 0, id(font_mdi12), WHITE, "\U000F02DC"); | |
} else { | |
it.print(it.get_width()-12, 0, id(font_mdi12), RED, "\U000F087B"); | |
} | |
it.line(0, it.get_height()/2, it.get_width(), it.get_height()/2, WHITE); | |
it.line(it.get_width()/3, 12, it.get_width()/3, it.get_height(), WHITE); | |
it.line(it.get_width()*2/3, 12, it.get_width()*2/3, it.get_height(), WHITE); | |
it.print(it.get_width()/6-44, it.get_height()*2/15, id(font_mdi22), WHITE, "\U000F050F"); | |
it.printf(it.get_width()/6-22, it.get_height()*2/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.1f", id(sensor_freezer_temperature).state); | |
it.print(it.get_width()/6-44, it.get_height()*4/15, id(font_mdi22), WHITE, "\U000F058C"); | |
it.printf(it.get_width()/6-22, it.get_height()*4/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.0f", id(sensor_freezer_humidity).state); | |
it.print(it.get_width()/6, it.get_height()*6/15+6, id(font_roboto_medium16), WHITE, TextAlign::CENTER, "Freezer"); | |
it.print(it.get_width()*3/6-44, it.get_height()*2/15, id(font_mdi22), WHITE, "\U000F050F"); | |
it.printf(it.get_width()*3/6-22, it.get_height()*2/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.1f", id(sensor_cooler_temperature).state); | |
it.print(it.get_width()*3/6-44, it.get_height()*4/15, id(font_mdi22), WHITE, "\U000F058C"); | |
it.printf(it.get_width()*3/6-22, it.get_height()*4/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.0f", id(sensor_cooler_humidity).state); | |
it.print(it.get_width()*3/6, it.get_height()*6/15+6, id(font_roboto_medium16), WHITE, TextAlign::CENTER, "Cooler"); | |
it.print(it.get_width()*5/6-44, it.get_height()*2/15, id(font_mdi22), WHITE, "\U000F050F"); | |
it.printf(it.get_width()*5/6-22, it.get_height()*2/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.1f", id(sensor_fridge_temperature).state); | |
it.print(it.get_width()*5/6-44, it.get_height()*4/15, id(font_mdi22), WHITE, "\U000F058C"); | |
it.printf(it.get_width()*5/6-22, it.get_height()*4/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.0f", id(sensor_fridge_humidity).state); | |
it.print(it.get_width()*5/6, it.get_height()*6/15+6, id(font_roboto_medium16), WHITE, TextAlign::CENTER, "Fridge"); | |
it.print(it.get_width()/6-44, it.get_height()*9/15, id(font_mdi22), WHITE, "\U000F050F"); | |
it.printf(it.get_width()/6-22, it.get_height()*9/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.1f", id(sensor_outside_temperature).state); | |
it.print(it.get_width()/6-44, it.get_height()*11/15, id(font_mdi22), WHITE, "\U000F058C"); | |
it.printf(it.get_width()/6-22, it.get_height()*11/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.0f", id(sensor_outside_humidity).state); | |
it.print(it.get_width()/6, it.get_height()*13/15+6, id(font_roboto_medium16), WHITE, TextAlign::CENTER, "Outside"); | |
it.print(it.get_width()*3/6-44, it.get_height()*9/15, id(font_mdi22), WHITE, "\U000F050F"); | |
it.printf(it.get_width()*3/6-22, it.get_height()*9/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.1f", id(sensor_bedroom_temperature).state); | |
it.print(it.get_width()*3/6-44, it.get_height()*11/15, id(font_mdi22), WHITE, "\U000F058C"); | |
it.printf(it.get_width()*3/6-22, it.get_height()*11/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.0f", id(sensor_bedroom_humidity).state); | |
it.print(it.get_width()*3/6, it.get_height()*13/15+6, id(font_roboto_medium16), WHITE, TextAlign::CENTER, "Bedroom"); | |
it.print(it.get_width()*5/6-44, it.get_height()*9/15, id(font_mdi22), WHITE, "\U000F050F"); | |
it.printf(it.get_width()*5/6-22, it.get_height()*9/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.1f", id(sensor_storage_room_temperature).state); | |
it.print(it.get_width()*5/6-44, it.get_height()*11/15, id(font_mdi22), WHITE, "\U000F058C"); | |
it.printf(it.get_width()*5/6-22, it.get_height()*11/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.0f", id(sensor_storage_room_humidity).state); | |
it.print(it.get_width()*5/6, it.get_height()*13/15+6, id(font_roboto_medium16), WHITE, TextAlign::CENTER, "Storage room"); | |
- id: page2 | |
lambda: |- | |
Color WHITE(0,0,0); | |
Color RED(0,1,1); | |
Color BLACK(1,1,1); | |
it.fill(BLACK); | |
if(wifi_wificomponent->is_connected()) { | |
it.print(0, 0, id(font_mdi12), WHITE, "\U000F05A9"); | |
it.strftime(it.get_width()/2, 0, id(font_roboto_medium12), WHITE, TextAlign::TOP_CENTER, "%H:%M", id(sntp_time).now()); | |
} else { | |
it.print(0, 0, id(font_mdi12), RED, "\U000F05AA"); | |
} | |
if(id(connection_status).state) { | |
it.print(it.get_width()-12, 0, id(font_mdi12), WHITE, "\U000F02DC"); | |
} else { | |
it.print(it.get_width()-12, 0, id(font_mdi12), RED, "\U000F087B"); | |
} | |
it.line(0, it.get_height()/2, it.get_width(), it.get_height()/2, WHITE); | |
it.line(it.get_width()/3, 12, it.get_width()/3, it.get_height(), WHITE); | |
it.line(it.get_width()*2/3, 12, it.get_width()*2/3, it.get_height(), WHITE); | |
it.print(it.get_width()/6-44, it.get_height()*2/15, id(font_mdi22), WHITE, "\U000F050F"); | |
it.printf(it.get_width()/6-22, it.get_height()*2/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.1f", id(sensor_office_temperature).state); | |
it.print(it.get_width()/6-44, it.get_height()*4/15, id(font_mdi22), WHITE, "\U000F058C"); | |
it.printf(it.get_width()/6-22, it.get_height()*4/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.0f", id(sensor_office_humidity).state); | |
it.print(it.get_width()/6, it.get_height()*6/15+6, id(font_roboto_medium16), WHITE, TextAlign::CENTER, "Office"); | |
it.print(it.get_width()*3/6-44, it.get_height()*2/15, id(font_mdi22), WHITE, "\U000F07E4"); | |
it.printf(it.get_width()*3/6-22, it.get_height()*2/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.0f", id(sensor_office_co2).state); | |
it.print(it.get_width()*3/6-44, it.get_height()*4/15, id(font_mdi22), WHITE, "\U000F03A6"); | |
it.printf(it.get_width()*3/6-22, it.get_height()*4/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.0f", id(sensor_pm1).state); | |
it.print(it.get_width()*3/6, it.get_height()*6/15+6, id(font_roboto_medium16), WHITE, TextAlign::CENTER, "Air quality"); | |
it.print(it.get_width()*5/6-44, it.get_height()*2/15, id(font_mdi22), WHITE, "\U000F03A9"); | |
it.printf(it.get_width()*5/6-22, it.get_height()*2/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.0f", id(sensor_pm25).state); | |
it.print(it.get_width()*5/6-44, it.get_height()*4/15, id(font_mdi22), WHITE, "\U000F0F7E"); | |
it.printf(it.get_width()*5/6-22, it.get_height()*4/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.0f", id(sensor_pm10).state); | |
it.print(it.get_width()*5/6, it.get_height()*6/15+6, id(font_roboto_medium16), WHITE, TextAlign::CENTER, "Air quality"); | |
it.print(it.get_width()/6-44, it.get_height()*9/15, id(font_mdi22), WHITE, "\U000F050F"); | |
it.printf(it.get_width()/6-22, it.get_height()*9/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.1f", id(sensor_gym_temperature).state); | |
it.print(it.get_width()/6-44, it.get_height()*11/15, id(font_mdi22), WHITE, "\U000F058C"); | |
it.printf(it.get_width()/6-22, it.get_height()*11/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.0f", id(sensor_gym_humidity).state); | |
it.print(it.get_width()/6, it.get_height()*13/15+6, id(font_roboto_medium16), WHITE, TextAlign::CENTER, "Gym"); | |
it.print(it.get_width()*3/6-44, it.get_height()*9/15, id(font_mdi22), WHITE, "\U000F050F"); | |
it.printf(it.get_width()*3/6-22, it.get_height()*9/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.1f", id(sensor_garden_shed_temperature).state); | |
it.print(it.get_width()*3/6-44, it.get_height()*11/15, id(font_mdi22), WHITE, "\U000F058C"); | |
it.printf(it.get_width()*3/6-22, it.get_height()*11/15, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "%.0f", id(sensor_garden_shed_humidity).state); | |
it.print(it.get_width()*3/6, it.get_height()*13/15+6, id(font_roboto_medium16), WHITE, TextAlign::CENTER, "Garden shed"); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment