На платах розробника Wemos Lolin D32 є порт для підключення акумулятора Li-ion для живлення плати. Також є поділювач напруги на двох резисторах 100 кОм за допомогою яких можна контролювати стан акумулятора.
В ESPhome є компонент ADC за допомою якого можна використовувати вбудований в esp32 АЦП.
sensor:
- platform: adc
pin: GPIO35 #GPIO до якого буде підключено дільник напруги
id: battery_voltage
name: battery_voltage
accuracy_decimals: 4 # кількість чисел після крапки
attenuation: 11dB # коефіцієнт ослаблення на АЦП
filters:
- multiply: 2 # коефіцієнт дільника напруги
update_interval: 3s # інтервал оновлення сенсора
Якщо у вас є бажання зробити на подібній платі зовнішній датчик, то бажано використовувати режим енергозбереження. В ESPhome це можна зробити за допомогою deep_sleep.
deep_sleep:
run_duration: 10s # 10 секунд працювати
sleep_duration: 1min # 1 хвилину спати
id: deep_sleep_process
Але режим сну можна вимикати за допомогою помічника в Home Assistant. Для цього потрібно додати Помічника input_boolean.disable_deep_sleep в Home Assistant, прописати бінарний сенсор в ESPhome і додати скрипт, який буде перевіряти при старті esp32 в якому стані знаходиться помічник.
esphome:
name: zigbee
friendly_name: Zigbee
on_boot:
priority: -100.0
then:
- script.execute: deep_sleep_evaluation # виклик скрипта при старті
deep_sleep:
# run_duration: 10s # закоментувати, так як час роботи буде вказано в скрипті
sleep_duration: 1min
id: deep_sleep_process
binary_sensor:
- platform: homeassistant
id: disable_deep_sleep
entity_id: input_boolean.disable_deep_sleep # статус Помічника в HA
script:
- id: deep_sleep_evaluation
mode: queued
then:
- delay: 10s # працюємо 10 секунд
- if:
condition:
binary_sensor.is_on: disable_deep_sleep #якщо ввімкнено, то не спимо
then:
- logger.log: 'Deep Sleep Disabled'
else:
- deep_sleep.enter: deep_sleep_process #якщо вимкнено, то спимо.
- script.execute: deep_sleep_evaluation
Деталі та пояснення можна побачити в відео: