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

Обнаружение присутствия с ESP32 для умного дома

8 min read Умный дом Обновлено 08 Jan 2026
ESP32: локальное обнаружение присутствия для Home Assistant
ESP32: локальное обнаружение присутствия для Home Assistant

Детектор присутствия в комнате на базе ESP32, вид платы и окружения

Обнаружение присутствия — удобная функция для умного дома: система или датчик определяет, находится ли кто‑то рядом, и выполняет заранее настроенные действия. Например, при входе в комнату автоматически включается свет, а при выходе — выключается. Также можно получать уведомления о возвращении домочадцев, отслеживать наполняемость помещений или просто видеть, кто и где находится.

В этом руководстве вы соберёте локальный датчик присутствия на базе ESP32 для работы с Home Assistant, используя прошивку ESPresense и MQTT. Подробно разберём установку, варианты настройки, проверку и сценарии использования.

Как работает обнаружение присутствия

Существует несколько подходов к определению присутствия. Краткое описание основных методов:

  • Wi‑Fi‑presence: устройство определяется роутером по подключению к сети. Надёжно для определения нахождения в сети, но зависит от возможностей роутера и не всегда даёт точную локализацию по комнате.
  • Геолокация (мобильные приложения): полезна для зон «дома/вне дома», но плохо работает внутри помещений из‑за точности GPS.
  • Bluetooth Low Energy (BLE): ESP32 сканирует BLE‑маячки (телефоны, часы, метки) и по силе сигнала оценивает расстояние. Это подходит для локализованного определения присутствия в пределах комнаты.

Технически ESP32 в режиме BLE‑сканирования получает RSSI (уровень сигнала) от устройств и использует калибровку для преобразования RSSI в приблизительную дистанцию. ESPresense собирает эти данные и публикует их в MQTT, откуда Home Assistant может прочитать состояние и атрибуты (расстояние, уровень сигнала, время последнего обнаружения).

Преимущества BLE‑подхода

  • Локализация по комнатам с точностью в метрах.
  • Локальная обработка (можно работать без облака).
  • Низкая стоимость: ESP32 стоит недорого и имеет встроенный BLE и Wi‑Fi.

Ограничения

  • RSSI зависит от препятствий и позиции устройства в кармане или сумке.
  • Не все устройства стабильно транслируют BLE‑маячки.

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

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

Полезные приложения:

  • nRF Connect (мобильное приложение) — для проверки MAC‑адресов и рекламы BLE.
  • ESPHome‑Flasher или веб‑интерфейс ESPresense — для прошивки ESP32.

Подготовка и шаги сборки датчика присутствия

Ниже — детальная последовательность действий от подключения платы до создания автоматизации в Home Assistant.

Шаг 1: Подключите ESP32 к компьютеру

Установите драйвер USB‑Serial для вашей платы ESP32, затем перезагрузите компьютер.

  • CP2102 (если на плате квадратный чип)
  • CH341 (альтернативный чип)

После установки драйверов подключите плату ESP32 к компьютеру через micro‑USB кабель.

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

Откройте веб‑страницу Espresense.com/firmware, выберите модель ESP32 и нажмите Connect. Выберите COM‑порт (обычно в списке виден чип CP2102 или CH340 или Ser! (COMxx)).

Подключение ESP32 к ПК/Mac для прошивки через веб-интерфейс

Нажмите INSTALL ESPRESENSE. Отметьте Erase device, далее Next, выберите Install и дождитесь окончания процесса.

Прошивка ESPresense на ESP32 через веб-интерфейс

После прошивки откройте LOGS & CONSOLE, чтобы отслеживать процесс и убедиться, что модуль стартовал корректно.

Шаг 3: Прошивка через ESPHome‑Flasher (альтернативный метод)

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

Прошивка ESPresense с помощью ESPHome-Flasher, логирование процесса

После завершения вы увидите логи и состояние устройства.

Шаг 4: Подключите ESP32 к Wi‑Fi и настройте параметры

На телефоне подключитесь к Wi‑Fi сети espresense‑xxxxxx и перейдите в браузере по адресу 192.168.4.1.

Заполните форму:

  1. Имя вашей домашней Wi‑Fi сети (SSID) и пароль.
  2. Язык интерфейса.
  3. Название комнаты (Room).
  4. Данные MQTT‑брокера (адрес, порт, логин/пароль, если требуется).
  5. Включите Query devices for characteristics (рекомендуется для детальной информации).
  6. Калибровка: введите 4 для отслеживания устройств в пределах ~4 метров (значение подбирается экспериментально).

Оставшиеся параметры можно оставить по умолчанию. Нажмите Save, затем переподключите USB кабель для перезагрузки ESP32.

Настройка ESPresense: ввод Wi‑Fi, MQTT и параметров калибровки

В логах вы увидите, что ESP32 подключился к Wi‑Fi и начал сканирование BLE‑устройств.

Шаг 5: Добавление ESPresense в Home Assistant

В Home Assistant откройте Configuration → Devices & Services. Найдите Mosquitto broker и щёлкните по связанным устройствам.

Добавление ESPresense в Home Assistant, список устройств Mosquitto

Если ESPResense подключён, можно добавлять отдельные BLE‑устройства для отслеживания. Для этого нужно узнать BLE beacon ID (MAC‑адрес), который отображается в логах ESPresense.

Для проверки используйте приложение nRF Connect: оно покажет MAC‑адреса и рекламные пакеты рядом находящихся Bluetooth‑устройств. Сопоставьте MAC‑адрес из nRF Connect с тем, что в логах ESPresense.

Просмотр логов для определения и копирования идентификатора устройства

Откройте File Editor в Home Assistant и отредактируйте configuration.yaml. Добавьте одну запись sensor для каждого устройства, которое хотите отслеживать. Пример:

sensor:  
# Одна запись для каждого маячка, который хотите отслеживать
  - platform: mqtt_room
    device_id: "xxxxxx"
    name: 'Samsung Smartphone'
    state_topic: 'espresense/rooms'
    timeout: 60
    away_timeout: 120  # количество секунд, после которого entity получит статус not_home

Сохраните файл.

Добавление Bluetooth‑ID устройства в файл configuration.yaml в File Editor

Перейдите в Configuration → Settings и нажмите Check Configuration. При отсутствии ошибок перезапустите Home Assistant.

Перезапуск Home Assistant после проверки конфигурации

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

Проверка устройства ESPresense в инструментах разработчика — отображение расстояния

Также entity можно добавить на панель управления (dashboard).

Шаг 6: Автоматизация включения/выключения устройств по присутствию

В Home Assistant перейдите Configuration → Automations & Scenes → Create Automation → Start with an empty automation.

Дайте имя автоматизации. В разделе Triggers выберите Numeric State. В Attribute укажите Distance. В поле Below/Above задайте порог расстояния, при достижении которого сработает триггер (например, меньше 3 м — включить свет).

Создание автоматизации в Home Assistant на основе расстояния от BLE‑устройства

В Actions укажите включение или выключение нужных устройств (ламп, розеток и пр.).

Примеры использования и сценарии

  • Автоматическое включение света при входе в комнату для конкретного телефона.
  • Отключение кондиционера при уходе последнего человека из квартиры.
  • Оповещение о возвращении ребёнка домой.
  • Управление мультирумной подсветкой в зависимости от нахождения человека в зоне.

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

  • Для определения точного положения нескольких человек в одной комнате (BLE даёт приблизительную дистанцию, но не точную позицию).
  • Если устройство не транслирует BLE‑маячки (некоторые телефоны/аксессуары могут ограничивать рекламу).
  • В помещениях с плотными металлическими преградами или сильной радиопомехой, где RSSI нестабилен.

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

  • Роутер‑based presence (определение по подключению к Wi‑Fi) — проще в настройке, но хуже локализует по комнатам.
  • GPS/Geofencing (через мобильное приложение) — хорош для «вне/дома», но бесполезен внутри здания.
  • UWB (Ultra Wideband) — обеспечивает высокую точность, но дороже и требует соответствующих устройств.

Ментальные модели и эвристики

  • RSSI → дистанция: RSSI меняется в зависимости от окружения. Считайте значение как «приблизительную дистанцию», а не абсолютную истину.
  • Надёжность = несколько источников: комбинируйте BLE с датчиками движения или контактными датчиками для снижения ложных срабатываний.
  • Калибровка: начните с базовой калибровки (4 м) и уточняйте значение экспериментально.

Чек‑лист по ролям

Установщик/энтузиаст:

  • Купить ESP32 и блок питания.
  • Установить драйверы USB‑Serial на ПК.
  • Прошить ESPresense (веб/ESPHome‑Flasher).
  • Настроить Wi‑Fi и MQTT.
  • Расположить ESP32 в зоне покрытия BLE.

Администратор Home Assistant:

  • Проверить соединение с Mosquitto/другим MQTT‑брокером.
  • Добавить sensor: mqtt_room в configuration.yaml.
  • Проверить корректность entity в Developer Tools.
  • Настроить автоматизации и тестовые сценарии.

Пользователь/владелец:

  • Проверить работу автоматизаций в быту несколько дней.
  • Сообщать об ошибках и нестабильных срабатываниях для донастройки порогов.

Мини‑методология развёртывания (SOP)

  1. Подготовка: собрать платы и кабели, установить ПО.
  2. Прошивка: выбрать метод (веб/Flasher) и прошить ESP32.
  3. Конфигурация: ввести Wi‑Fi, MQTT, калибровку и имя комнаты.
  4. Тестирование: убедиться, что ESP32 публикует сообщения в MQTT и логах видно устройства.
  5. Интеграция: добавить sensor: mqtt_room в Home Assistant.
  6. Автоматизация: создать и протестировать автоматизации.
  7. Оценка и корректировка порогов по фактическим результатам.

Критерии приёмки

  • ESP32 успешно подключается к Wi‑Fi и MQTT.
  • В логах ESPresense отображаются обнаруженные BLE‑устройства.
  • Home Assistant видит sensor с атрибутом distance и временем последнего обнаружения.
  • Автоматизация срабатывает корректно при достижении порога distance и не срабатывает при отсутствии устройства.

Тестовые случаи и приёмка

  1. Тест «вход в комнату»: поднести телефон к центру комнаты, проверить, что distance уменьшается и автоматизация включается.
  2. Тест «выход из комнаты»: уйти за пределы порога, дождаться away_timeout, убедиться, что состояние изменилось на not_home.
  3. Тест устойчивости: оставить телефон в кармане и пройти по комнате — проверить, нет ли ложных срабатываний.
  4. Тест завышенной нагрузки: включить несколько телефонов — проверить, что каждый tracked entity корректно обновляется.

Безопасность и приватность

  • MQTT: используйте аутентификацию и, при возможности, TLS для шифрования трафика.
  • Минимизируйте логирование персональных данных: храните только необходимые идентификаторы.
  • Уведомляйте членов семьи о функционировании системы и возможностях трекинга.

Риски и способы их смягчения

  • Ложные срабатывания из‑за помех — комбинируйте с датчиками движения.
  • Потеря связи с MQTT — настроить оповещения о недоступности устройства.
  • Постоянное отслеживание — уважайте приватность: используйте короткие тайм‑ауты и давайте выбор пользователям.

Примеры конфигурации автоматизации (идея)

  • Включение света при обнаружении устройства ближе 3 м и отключение через 2 минуты после ухода.
  • Переключение музыкальной зоны при появлении хозяина в гостиной.

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

Q: Нужен ли постоянный интернет для работы ESPresense?
A: Для локального сканирования BLE интернет не обязателен, но для интеграции с Home Assistant через MQTT нужен доступ к MQTT‑брокеру. Брокер может находиться локально.

Q: Можно ли отслеживать несколько устройств?
A: Да — добавляйте по одному sensor: mqtt_room для каждого MAC‑адреса.

Q: Как улучшить точность определения комнаты?
A: Используйте несколько ESP32‑узлов в соседних комнатах и объединяйте данные по самым сильным уровням сигнала или временем обнаружения.

Краткое резюме

Локальное BLE‑обнаружение на ESP32 — недорогой, гибкий и приватный способ добавить присутствие в умный дом. Оно не заменяет все другие методы, но хорошо дополняет их, особенно для управления освещением и местными сценариями.

Внедряйте по шагам: прошивка → подключение к Wi‑Fi и MQTT → добавление устройств в Home Assistant → настройка автоматизаций → тестирование и калибровка.

Важно: тестируйте в реальных условиях и комбинируйте источники данных для повышения надёжности.

Поделиться: 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 — руководство