На платах розробника 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

Деталі та пояснення можна побачити в відео:

Категорії: Без категорії