home-automation/hardware/esphome/plant_monitor/plant-monitor.yaml

264 lines
7.2 KiB
YAML

# Further reference
# https://platformio.org/lib
# SHT1x - 86 - https://platformio.org/lib/show/86/SHT1x
# MAX1704X - 5812 - https://platformio.org/lib/show/5812/MAX1704X/
# GxEPD2 - 5869 - https://platformio.org/lib/show/5869/GxEPD2
# AsyncMqttClient - 346 - https://platformio.org/lib/show/346/AsyncMqttClient/
# Adafruit GFX Library - 13 - https://platformio.org/lib/show/13/Adafruit GFX Library/
# Node Config
esphome:
#esphome_core_version:
# local: "C:\\Users\\mcros\\src\\esphome\\esphome-core"
name: !secret node_name
platform: ESP32
board: featheresp32
platformio_options:
upload_speed: 115200
includes:
- sht1x.h
- max1704xsensor.h
libraries:
- SPI
- Wire
- "346"
# - "13"
- "86"
- "5812"
# WiFi config
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
domain: !secret node_domain
# Enable I2C (Qwiic and others)
i2c:
# Enable SPI
# CLK: D5
# MOSI: D18
spi:
clk_pin: 5
mosi_pin: 18
deep_sleep:
run_duration: 6min
sleep_duration: 54min
wakeup_pin_mode: INVERT_WAKEUP # stop caring and be judicious about tolerance of goofy pin modes
# Enable logging
logger:
level: DEBUG # Flip to ERROR for production deployments
baud_rate: 0 # Disable UART logging
# Enable Home Assistant API
#api:
# password: !secret api_password
# OTA Config
ota:
password: !secret ota_password
safe_mode: true
# Web Server (DISABLE outside of testing)
#web_server:
# port: 80
# MQTT CLIENT
mqtt:
broker: !secret mqtt_client_broker
port: 8883
username: !secret mqtt_client_username
password: !secret mqtt_client_password
birth_message:
topic: 'hass/status'
payload: 'online'
will_message:
topic: 'hass/status'
payload: 'offline'
# 2.9" Waveshare 3-color (red) e-ink setup
# BUSY -> 21, RST -> 14, DC -> 15, CS -> 27, CLK -> SCK(5), DIN -> MOSI(18), GND -> GND, 3.3V -> 3.3V
#display:
# - platform: waveshare_epaper
# cs_pin: 27
# dc_pin: 15
# busy_pin: 21
# reset_pin: 14
# model: 2.90in
# rotation: 90
# update_interval: 30s
# lambda: |-
# // Setup / Clear
# it.powerOn();
# it.clear();
# // Battery
# if (id(Battery_Level).state > 90) {
# it.image(0, 0, id(battery_100));
# }
# else if (id(Battery_Level).state > 75) {
# it.image(0, 0, id(battery_75));
# }
# if (id(Battery_Level).state > 50) {
# it.image(0, 0, id(battery_50));
# }
# if (id(Battery_Level).state > 25) {
# it.image(0, 0, id(inverted_battery_25));
# }
# else {
# it.image(0, 0, id(inverted_battery_0));
# }
# if (id(Battery_Alert).state != 0) {
# it.image(37,0, id(alert_filled));
# }
# else {
# it.printf(37, 0, id(deja_vu_mono_bold_8), "%.1f%%", id(Battery_Level).state);
# }
# // WiFi
# it.image(148, 0, id(wifi_icon));
# it.printf(185, 0, id(deja_vu_mono_bold_8), "%.1fdB", id(sensor_wifi_signal).state);
# // Temperature
# it.image(37, 0, id(thermometer));
# it.printf(37,37, id(deja_vu_mono_bold_8), "%.1f°F", id(Temperature_F).state);
# // Humidity
# it.image(148,37, id(humidity));
# it.printf(185,37, id(deja_vu_mono_bold_8), "%.1f%%", id(Humidity).state);
# // Plants
# it.image(0, 96, id(cat_grass));
# it.image(37, 96, id(tarragon));
# it.image(74, 96, id(cat_nip));
# it.image(111, 96, id(christmas_cactus));
# it.image(148, 96, id(inverted_cat_grass));
# it.image(185, 96, id(inverted_tarragon));
# it.image(222, 96, id(inverted_catnip));
# it.image(259, 96, id(inverted_christmas_cactus));
# // Sleep to conserve power
# //it.powerOff();
#font:
# - file: "DejaVuSansMono-Bold.ttf"
# id: deja_vu_mono_bold_8
# size: 8
#image:
# - file: noun_Alert_2145614.png # empty
# id: alert_empty
# resize: 32x32
# - file: noun_Alert_2490416.png # filled
# id: alert_filled
# resize: 32x32
# - file: noun_battery indicator_1601217.png # battery 75%
# id: battery_75
# resize: 32x32
# - file: noun_battery level_1601219.png # battery 50%
# id: battery_50
# resize: 32x32
# - file: noun_Cactus_1197535.png # christmas cactus
# id: christmas_cactus
# resize: 32x32
# - file: noun_empty battery_1601215.png # battery 25%
# id: battery_25
# resize: 32x32
# - file: noun_empty battery_1601218.png # battery 0%
# id: battery_0
# resize: 32x32
# - file: noun_Full Battery_1601214.png # battery 100%
# id: battery_100
# resize: 32x32
# - file: noun_grass_355100.png # cat grass
# id: cat_grass
# resize: 32x32
# - file: noun_humidity_1762738.png # temp + humidity
# id: temp_humidity
# resize: 32x32
# - file: noun_humidity_2280622.png # humidity
# id: humidity
# resize: 32x32
# - file: noun_leaf_1153077.png # catnip
# id: cat_nip
# resize: 32x32
# - file: noun_Tarragon_499800.png # tarragon
# id: tarragon
# resize: 32x32
# - file: noun_Thermometer_217722.png # thermometer
# id: thermometer
# resize: 32x32
# - file: noun_wifi_2201334.png # wifi
# id: wifi_icon
# resize: 32x32
# - file: inverted_noun_Tarragon_499800.png # inverted tarragon
# id: inverted_tarragon
# resize: 32x32
# - file: inverted_noun_leaf_1153077.png # inverted catnip
# id: inverted_catnip
# resize: 32x32
# - file: inverted_noun_grass_355100.png # inverted cat grass
# id: inverted_cat_grass
# resize: 32x32
# - file: inverted_noun_empty battery_1601218.png # inverted battery_0
# id: inverted_battery_0
# resize: 32x32
# - file: inverted_noun_empty battery_1601215.png # inverted battery_25
# id: inverted_battery_25
# resize: 32x32
# - file: inverted_noun_Cactus_1197535.png # inverted christmas cactus
# id: inverted_christmas_cactus
# resize: 32x32
binary_sensor:
- platform: status
name: "Status"
sensor:
- platform: wifi_signal
id: sensor_wifi_signal
name: "WiFi_Signal"
update_interval: 3min
unit_of_measurement: "dB"
accuracy_decimals: 1
- platform: uptime
name: Uptime
update_interval: 3min
- platform: custom
lambda: |-
auto sht1x = new SHT1xSensor();
App.register_component(sht1x);
return {sht1x->temp_c_sensor, sht1x->temp_f_sensor, sht1x->humidity_sensor};
sensors:
- name: "Temperature_C"
id: Temperature_C
unit_of_measurement: "°C"
accuracy_decimals: 1
- name: "Temperature_F"
id: Temperature_F
unit_of_measurement: "°F"
accuracy_decimals: 1
- name: "Humidity"
id: Humidity
unit_of_measurement: "%"
accuracy_decimals: 1
- platform: custom
lambda: |-
auto max1704x = new MAX1704xSensor();
App.register_component(max1704x);
return {max1704x->voltageSensor, max1704x->percentSensor, max1704x->isSleepingSensor, max1704x->alertIsActiveSensor, max1704x->getThresholdSensor};
sensors:
- name: "Battery_Voltage"
id: Battery_Voltage
unit_of_measurement: "V"
accuracy_decimals: 2
- name: "Battery_Level"
id: Battery_Level
unit_of_measurement: "%"
accuracy_decimals: 1
- name: "Battery_Sleeping"
id: Battery_Sleeping
- name: "Battery_Alert"
id: Battery_Alert
- name: "Battery_Threshold"
id: Battery_Threshold
accuracy_decimals: 0