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

Детектор присутствия на 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
Автор
Редакция

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

Обновить BIOS через Lenovo Vantage
Руководства

Обновить BIOS через Lenovo Vantage

Камера Samsung Galaxy — полное руководство
Мобильная фотография

Камера Samsung Galaxy — полное руководство

Тёмная тема в Калькуляторе Windows — как включить
Windows

Тёмная тема в Калькуляторе Windows — как включить

Установка Windows 10 Creators Update на Mac
Руководство

Установка Windows 10 Creators Update на Mac

Где смотреть «A Charlie Brown Christmas»
Развлечения

Где смотреть «A Charlie Brown Christmas»

RCS и подтверждения прочтения в Google Messages
Мессенджеры

RCS и подтверждения прочтения в Google Messages