Как настроить ESP так, чтобы он спал, когда нужно, и просыпался по команде из Home Assistant.
Энергоэффективность — ключевая задача при проектировании автономных устройств на базе ESP8266 или ESP32. Особенно если они питаются от батареек или аккумуляторов. Один из самых надёжных способов экономии энергии — использовать deep sleep, глубокий сон, при котором микроконтроллер отключает большинство внутренних компонентов и снижает потребление до микроампер.
Но возникает вопрос:
Как управлять этим сном удалённо, через Home Assistant, без необходимости физически к нему прикасаться?
Что мы сделаем
В этой статье вы узнаете, как настроить прошивку ESPHome так, чтобы устройство:
- Автоматически засыпало на заданное время;
- Просыпалось и проверяло состояние выключателя в Home Assistant;
- Оставалось бодрствовать, если это требуется (например, для OTA-прошивки или отладки);
- И снова засыпало, когда выключатель отключается.
Что понадобится
- Установленный Home Assistant;
- Созданный выключатель input_boolean в Home Assistant:
input_boolean:
disable_deep_sleep:
name: Отключить глубокий сон ESP
icon: mdi:sleep-off
Конфигурация прошивки ESPHome
При загрузке:
- Пишем в лог: "Загрузка"
- Включаем питание датчика DS18B20
- Ждём 1 секунду (стабилизация питания)
- Считываем напряжение батареи
- Считываем температуру
- Ждём 10 секунд (гарантированное время для отправки показаний)
- Выключаем питание датчика
- Проверяем состояние "Disable Deep Sleep" если выключен →
- Пишем в лог: "Уходим в сон" Переходим в глубокий сон на 20 минут
Аппаратная конфигурация
- MQTT с авторизацией
- Питание датчика через GPIO2
- Кнопка перезагрузки
- 1-Wire на GPIO0 для датчика DS18B20
Датчики и логика сна:
Датчики:
- Напряжение питания (VCC)
- Температура (DS18B20, адрес 0x6f...ff28)
- Обновляются только при пробуждении
Управление сном:
- Проверка переключателя [Disable Deep Sleep] в HA
- Если выключен → сон на 20 минут
Как это работает
1. «Disable Deep Sleep» ВКЛЮЧЕН:
- Один замер → не засыпает
- Можно перепрошить/отладить
- 🔋 Быстро разряжает батарею
2. «Disable Deep Sleep» ВЫКЛЮЧЕН:
- Мгновенно уходит в глубокий сон
- Работает в цикле:
→ Сон 20 мин → Замер → Сон 20 мин →
- 🔋 Максимально экономит батарею
Итог:
- Включён = режим отладки
- Выключен = штатная энергосберегающая работа
- (Всё чётко и предсказуемо!) 🔋
Заключение
Этот код — готовый шаблон для любых автономных ESP8266-устройств.
Чтобы адаптировать под свои задачи:
- Подключите нужные датчики
- Настройте интервалы сна
— и получите энергоэффективное устройство на ESP