Гид по технологиям

Детектор присутствия на ESP32 для локальной автоматизации дома

8 min read Домашняя автоматизация Обновлено 17 Dec 2025
ESP32: локальный детектор присутствия для Home Assistant
ESP32: локальный детектор присутствия для Home Assistant

Обнаружение присутствия в комнате с помощью ESP32 для домашней автоматизации

Что такое локальное обнаружение присутствия и зачем оно нужно

Локальное обнаружение присутствия — это способ определить, находится ли конкретное Bluetooth‑устройство (смартфон, часы, метка) в пределах комнаты или рядом с узлом. В отличие от геолокации по GPS, BLE работает внутри дома и даёт точную привязку по расстоянию и силе сигнала.

Коротко: ESP32 сканирует BLE‑маяки, вычисляет расстояние/состояние и отправляет события в Home Assistant через MQTT. Затем Home Assistant использует эти данные для включения светa, предупреждений или логики энергосбережения.

Краткие определения

  • BLE: Bluetooth Low Energy, энергоэффективный профиль Bluetooth для маяков и телефонов.
  • MQTT: лёгкий брокер сообщений для передачи телеметрии между устройствами и Home Assistant.
  • ESPresense: прошивка для ESP32, оптимизированная для BLE‑сканирования и интеграции с Home Assistant.

Основные варианты применения

  • Автоматическое включение света при входе в комнату.
  • Определение, кто дома (по мак‑адресам или тегам).
  • Снижение ложных срабатываний датчиков движения за счёт подтверждения присутствия BLE.

Что понадобится

  • Один или несколько модулей ESP32 (по количеству зон).
  • Кабель micro USB и 5 В блок питания (любой зарядник от смартфона).
  • Компьютер (Windows/macOS/Linux) с доступом в интернет для прошивки.
  • Home Assistant с настроенным MQTT брокером (например, Mosquitto).

Важно: используйте качественное питание; нестабильный USB‑адаптер вызывает перезагрузки и проблемы с Wi‑Fi/BLE.

Как это работает (кратко технически)

ESP32 периодически сканирует BLE‑устройства и собирает их MAC, RSSI и возможные характеристики. ESPresense агрегирует данные, оценивает расстояние по RSSI и публикует события в топики MQTT (espresense/rooms и другие). Home Assistant читает эти топики и переводит маяки в состояния home/away и числовые атрибуты (distance).


Пошаговая инструкция по сборке и настройке

Ниже — подробная последовательность с советами и примерами конфигурации.

Шаг 1. Подключение ESP32 и драйверы

  1. Скачайте и установите драйверы USB‑UART для вашей платы:
    • CP2102 (если на плате квадратный чип)
    • CH341 или CH340 (часто на дешёвых платах)
  2. Перезагрузите компьютер после установки драйверов.
  3. Подключите ESP32 к компьютеру через micro USB.

Совет: в диспетчере устройств (Windows) или в /dev (Linux/macOS) вы увидите порт, например COM3 или /dev/ttyUSB0.

Шаг 2. Прошивка ESPresense через веб‑интерфейс

  1. Перейдите на сайт https://espresense.com/firmware (или указанную официальную страницу прошивки).
  2. Выберите ESP32 в выпадающем списке и нажмите Connect.
  3. Выберите серийный порт (веб‑интерфейс покажет имя чипа — CP2102 или CH340).

Подключение ESP32 к ПК для веб‑прошивки

  1. Нажмите INSTALL ESPRESENSE. Отметьте Erase device (стереть память) и нажмите Next → Install.
  2. Дождитесь завершения. После прошивки откройте Logs & Console, чтобы мониторить загрузку и статус модуля.

Прошивка ESPresense через веб

Если веб‑способ не сработал, используйте ESPHome‑Flasher (ниже).

Шаг 3. Прошивка ESPresense через ESPHome‑Flasher

  1. Скачайте esp32.bin с релизов ESPresense и утилиту ESPHome‑Flasher.
  2. Запустите ESPHome‑Flasher, выберите COM‑порт, укажите esp32.bin и нажмите Flash ESP.

Прошивка ESP32 через ESPHome‑Flasher

  1. Мониторьте логи в утилите; после успешной записи плата перезагрузится и начнёт транслировать точку доступа для конфигурации.

Шаг 4. Настройка Wi‑Fi и параметров ESPresense

  1. На телефоне подключитесь к Wi‑Fi сети, которую создаёт плата: espresense-xxxxxx.
  2. Откройте браузер и перейдите на 192.168.4.1 — откроется конфигурационный портал.

Заполните поля в порядке (кнопки/лейблы в портале могут отличаться по версии):

  • SSID: имя вашей домашней Wi‑Fi сети.
  • Password: пароль Wi‑Fi.
  • Language: язык (если есть).
  • Room: имя комнаты — короткое и понятное (Kitchen, Bedroom и т. п.).
  • MQTT Broker: адрес вашего брокера (ip:порт) и, при необходимости, логин/пароль.
  • Query devices for characteristics: включите для получения дополнительных атрибутов BLE.
  • Calibration: значение для калибровки расстояния — введите 4 для отслеживания в пределах ~4 метров (значение зависит от вашей установки).

Оставьте остальные настройки по умолчанию и нажмите Save. Переподключите питание платы, чтобы применились изменения.

Конфигурация ESPresense и подключение к Wi‑Fi

После подключения модуль начнёт сканирование и публикацию логов в разделе Logs.

Шаг 5. Настройка MQTT в Home Assistant и добавление ESPresense

  1. Убедитесь, что Mosquitto (или другой MQTT брокер) добавлен и запущен в Home Assistant.
  2. В Home Assistant зайдите в Configuration → Devices & Services, найдите Mosquitto broker и кликните Devices.

Добавление ESPresense в Home Assistant

Если ESPresense подключён корректно, он будет виден среди клиентов MQTT.

Добавление отслеживаемых маяков:

  1. В логах ESPresense найдите MAC‑адреса и идентификаторы обнаруженных BLE‑устройств.
  2. Для удобства установите на телефон приложение nRF Connect (или nRF Connect/Connector). Оно покажет MAC и имя устройства; сопоставьте с логами ESPresense.

Проверка логов и копирование ID устройства

  1. Откройте File Editor в Home Assistant и отредактируйте configuration.yaml, добавив запись для каждого маячка. Пример:
# Одна запись для каждого маяка, который хотите отслеживать
sensor:
  - platform: mqtt_room
    device_id: "xx:xx:xx:xx:xx:xx"
    name: 'Samsung Smartphone'
    state_topic: 'espresense/rooms'
    timeout: 60
    away_timeout: 120

Замените device_id на MAC/ID, который показан в логах (строго в кавычках). Сохраняйте файл и проверьте конфигурацию:

  1. Configuration → Settings → Check Configuration.
  2. Если всё валидно — Restart Home Assistant.

Редактирование configuration.yaml и сохранение

После перезапуска зайдите в Developer Tools и введите имя сенсора — он должен показывать расстояние и текущую комнату.

Проверка устройства ESPresense в Developer Tools

Шаг 6. Создание автоматизации по присутствию

  1. Configuration → Automations & Scenes → +Create Automation → Start with empty automation.
  2. Задайте имя.
  3. В триггерах выберите Numeric State. В Attribute укажите distance (атрибут сенсора).
  4. В поле Below/Above задайте порог (например, ниже 3 м — включить свет).

Пример логики: при distance < 3 м — включить свет в комнате; при distance >= 4 м — выключить через задержку.

Добавление автоматизации в Home Assistant по присутствию

В Actions укажите устройство (light, switch) и нужное состояние.


Калибровка и практические советы

  • RSSI чувствителен к препятствиям и расположению антенны. Осуществите калибровку: физически измерьте расстояния в комнате и подберите значение Calibration.
  • Разместите ESP32 в центре комнаты на высоте ~1–2 м для равномерного покрытия.
  • Если нужно охватить несколько комнат, используйте несколько ESP32‑узлов и объединяйте данные в Home Assistant.

Важно: BLE‑MAC адреса на современных смартфонах могут маскироваться системой (randomized MAC) — для телефонов лучше использовать приложения, которые отправляют уникальные идентификаторы или использовать статические теги/метки.


Безопасность, конфиденциальность и GDPR заметки

  • Данные о присутствии считаются персональными. Храните MQTT и Home Assistant в приватной сети и используйте пароли/TLS для MQTT, если брокер доступен извне.
  • Ограничьте доступ к логам и dashboard в Home Assistant.
  • Для совместимости с регуляциями избегайте передачи данных третьим сторонам без явного согласия жильцов.

Типичные ошибки и их устранение

  • Устройство не появляется в веб‑портале: проверьте питание и драйверы USB.
  • ESP32 не подключается к Wi‑Fi: проверьте SSID/пароль и диапазон сети (2.4 ГГц required).
  • Неправильные расстояния: откалибруйте значение Calibration и проверьте препятствия.
  • Множественные шумовые устройства: включите Query devices for characteristics и фильтруйте по известным MAC.

Чек‑лист отладки:

  • Питание 5 В стабильное.
  • Корректный COM‑порт и драйверы.
  • Прошивка успешно записана (логи без ошибок).
  • MQTT брокер доступен и принимает подключения.
  • configuration.yaml синтаксически корректен.

Роли и краткие чек‑листы

Установка (инсталлятор):

  • Проверить питание и крепление устройства.
  • Обеспечить доступ к Wi‑Fi 2.4 ГГц.
  • Установить ESP32 в центральной точке зоны.

Владелец дома:

  • Сопоставить MAC устройств с членами семьи.
  • Настроить автоматизации и пороги.
  • Проверить уведомления и приватность.

Техподдержка:

  • Мониторить логи ESPresense и MQTT.
  • Обновлять прошивку по мере выхода релизов.

Примеры автоматизаций и сценариев

  1. Включение света при входе и выключение при выходе:
trigger:
  - platform: numeric_state
    entity_id: sensor.samsung_smartphone
    attribute: distance
    below: 3
action:
  - service: light.turn_on
    target:
      entity_id: light.bedroom_main
  1. Предотвращение ложных срабатываний датчика движения: только если BLE подтверждает отсутствие человека — выключить свет.

  2. Уведомление о приходе ребёнка: если его метка вошла в домашнюю зону — отправить push‑уведомление родителю.


Тесты и критерии приёмки

Критерии приёмки для узла ESP32:

  • Устройство стабильно подключается к Wi‑Fi и MQTT.
  • Home Assistant получает сообщения espresense/rooms с атрибутом distance.
  • При расстоянии < заданного порога автоматизация выполняется в течение 1–3 секунд.

Тесты:

  • Перемещайтесь по комнате и проверяйте изменения distance в Developer Tools.
  • Отключайте питание и включайте снова — проверяйте восстановление соединения.

Альтернативные подходы и когда ESPresense не подходит

  • Wi‑Fi‑основанное присутствие (устройство подключено к роутеру) — проще, но требует поддержки на роутере и не даёт точного размещения по комнатам.
  • GPS‑трекинг — пригоден для определения «дома/вне дома», но не для комнатной локализации.
  • Использование BLE‑маячков с фиксированными MAC — более предсказуемо, чем случайные MAC смартфонов.

Когда этот метод не подходит:

  • Если все устройства используют рандомизированные MAC и вы не можете установить статические идентификаторы.
  • Если у вас политика приватности, запрещающая отслеживание членов семьи.

Потенциальные улучшения и масштабирование

  • Добавление нескольких ESP32 с объединением данных по MQTT для расчёта точной позиции (triangulation).
  • Интеграция с Presence groups в Home Assistant для агрегирования состояния семьи.
  • Внедрение фильтров шумов и временных усреднений для устойчивости показаний.

Диаграмма выбора подхода (Mermaid)

flowchart TD
  A[Нужна локальная детекция?] -->|Да| B{Устройства BLE?}
  B -->|Да| C[ESP32 + ESPresense + MQTT]
  B -->|Нет| D[Рассмотреть Wi‑Fi или GPS]
  C --> E{Нужно несколько комнат?}
  E -->|Да| F[Несколько узлов ESP32]
  E -->|Нет| G[Один узел ESP32]
  D --> H[Wi‑Fi presence или мобильный трекер]

Часто задаваемые вопросы

Q: Будет ли это работать с iPhone?
A: Частично. iPhone иногда использует рандомизированные MAC. Лучше проверять через nRF Connect и при необходимости использовать отдельные метки или приложения.

Q: Какой радиус покрытия у ESP32?
A: Реальный радиус зависит от окружения; для надёжного локального триггера используйте порог 2–4 метра и калибруйте по месту.

Q: Требуется ли платный сервис?
A: Нет — весь стек может работать локально: ESP32, MQTT и Home Assistant.


Короткое руководство по обслуживанию

  • Ежемесячно проверяйте доступность MQTT и Home Assistant.
  • Раз в полгода обновляйте прошивку ESPresense и резервную копию configuration.yaml.
  • Ведите простую таблицу устройств и соответствующих device_id (MAC) — это упростит администрирование.

Итог

Локальная система обнаружения присутствия на базе ESP32 и ESPresense — надёжный и недорогой способ автоматизировать свет и другие устройства в доме. Проект масштабируем: один узел на комнату обеспечивает гибкие автоматизации и повышает точность по сравнению с GPS или только Wi‑Fi. Следуйте чек‑листам, калибруйте пороги и учитывайте вопросы приватности.

Важно: перед массовым развёртыванием проверьте, не мешает ли трекинг политике приватности жильцов.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство