Мониторинг присутствия в Home Assistant по пингу телефона

Мониторинг присутствия в Home Assistant по пингу телефона

Автоматическое определение присутствия членов семьи дома — один из фундаментальных столпов, на которых строится по-настоящему умный дом. Знание того, находится ли кто-то в квартире, позволяет умному помощнику вовремя гасить свет в пустых комнатах, ставить систему на охрану, регулировать температуру радиаторов или включать робот-пылесос, не мешая домочадцам.

Существует множество способов трекинга геопозиции, включая GPS-мониторинг, подробнее о котором вы можете прочитать в нашей статье про запуск сценариев Дома в Алисе по GPS-зонам Home Assistant. Однако GPS-трекинг сильно расходует заряд аккумулятора смартфона и требует постоянного доступа к мобильному интернету. В качестве надежной, локальной и энергоэффективной альтернативы выступает отслеживание присутствия по пингу (Ping Device Tracker). Этот метод основан на периодическом опросе доступности смартфона в домашней Wi-Fi сети. Когда вы возвращаетесь домой, ваш телефон автоматически подключается к роутеру, сервер Home Assistant фиксирует его сетевой адрес и сообщает Яндексу о вашем приходе для запуска приветственных сценариев с Алисой.

Шаг 1. Резервирование IP-адресов на роутере

Для того чтобы метод отслеживания по пингу работал стабильно, IP-адрес каждого смартфона в локальной сети должен оставаться неизменным. По умолчанию домашние роутеры выдают адреса динамически через протокол DHCP, что означает, что при очередном подключении телефон может получить новый адрес, и система мониторинга потеряет его из виду.

  1. Войдите в панель управления вашего домашнего роутера (обычно она доступна по адресу 192.168.1.1 или 192.168.0.1).
  2. Найдите раздел, который называется DHCP Server, Static Lease или Резервирование IP-адресов.
  3. Найдите в списке подключенных устройств ваш смартфон (ориентируйтесь по имени устройства или по его уникальному физическому MAC-адресу).
  4. Закрепите за смартфоном постоянный локальный IP-адрес, например 192.168.1.50.
  5. Повторите эту процедуру для мобильных телефонов всех членов семьи, назначив каждому свой статический адрес.
  6. Перезагрузите роутер и убедитесь, что смартфоны получили назначенные им сетевые адреса.

IMPORTANT

В настройках Wi-Fi на самом смартфоне (особенно на iOS и современных версиях Android) отключите функцию «Частный адрес» или «Случайный MAC-адрес» для вашей домашней сети. Если этого не сделать, телефон будет периодически менять свой физический адрес, что нарушит привязку IP-адреса на роутере.

Шаг 2. Настройка интеграции Ping в Home Assistant

Начиная с современных версий Home Assistant, интеграция Ping настраивается непосредственно через графический интерфейс без необходимости ручного редактирования конфигурационных файлов.

  1. В веб-интерфейсе Home Assistant перейдите в раздел Настройки ➡️ Устройства и службы.
  2. Нажмите кнопку Добавить интеграцию в правом нижнем углу.
  3. Введите в поиске слово Ping (или ICMP) и выберите найденную интеграцию.
  4. Настройте устройство: укажите имя (например, «Телефон Алексея») и введите зарезервированный ранее IP-адрес (например, 192.168.1.50).
  5. Установите интервал опроса. По умолчанию система опрашивает устройство каждые 30 секунд. Это оптимальное значение, которое не создает нагрузку на сеть.
  6. Нажмите Отправить. В системе появится новая сущность класса device_tracker.phone_aleksey со статусами home (дома) или not_home (не дома).

Шаг 3. Создание сглаживающего бинарного сенсора

Главная техническая сложность отслеживания телефонов по Wi-Fi заключается в агрессивных алгоритмах энергосбережения мобильных операционных систем. Когда смартфон заблокирован и лежит без дела, он отключает модуль Wi-Fi для экономии заряда батареи и перестает отвечать на пинги. В результате Home Assistant может ошибочно посчитать, что вы ушли из дома, выключит свет и включит сигнализацию.

Чтобы решить эту проблему, мы создадим виртуальный бинарный сенсор-фильтр, который будет переходить в состояние «Не дома» только в том случае, если телефон не пингуется непрерывно в течение последних 10 или 15 минут.

Перейдите в файл configuration.yaml или создайте шаблонный сенсор через интерфейс (вспомогательные элементы типа Template). Мы покажем надежный вариант через конфигурационный файл:

template:
  - binary_sensor:
      - name: "Алексей Присутствие Фильтр"
        device_class: presence
        state: >
          {{ is_state('device_tracker.phone_aleksey', 'home') }}
        delay_off:
          minutes: 10

Этот сенсор мгновенно перейдет в состояние on (дома), как только телефон подключится к Wi-Fi, но задержит свое выключение на 10 минут (delay_off), сглаживая любые временные отключения Wi-Fi в режиме сна.

TIP

Экспериментируйте со временем задержки. Для большинства квартир задержка выключения в 10-15 минут является оптимальной. Если вы заметили, что ложные срабатывания все еще происходят, увеличьте интервал до 20 минут.

NOTE

Рекомендуемый материал по теме: Отправка сообщений в Telegram через Алису и Home Assistant

Шаг 4. Синхронизация с Яндекс Станцией и Алисой

Теперь нам нужно пробросить сглаженный статус присутствия в экосистему Яндекса. Самый простой способ сделать это — использовать виртуальный переключатель input_boolean.

В приложении «Дом с Алисой» этот переключатель отобразится как обычный выключатель. Настройте сценарии автоматизации:

  • Сценарий «Хозяин дома»: При включении виртуального переключателя (Алексей дома) запустить приветственное сообщение на Яндекс Станции в прихожей.
  • Сценарий «Никого нет дома»: Когда оба семейных переключателя перейдут в состояние «Выкл», выключить все осветительные приборы, телевизоры и перевести Станцию в режим охраны.

Инструкция по настройке

1

Резервирование статического IP

Привяжите MAC-адрес телефона к постоянному IP-адресу в панели управления вашего роутера во избежание смены адреса при переподключении.

2

Добавление Ping интеграции

Добавьте интеграцию Ping в Home Assistant, указав зарезервированный IP-адрес телефона для периодической отправки ICMP-пакетов.

3

Создание сглаживающего фильтра

Настройте групповой сенсор или правила фильтрации, чтобы сгладить ложные уходы в офлайн при переходе телефона в спящий режим.

4

Интеграция с Умным домом Яндекса

Передайте статус присутствия в Алису через виртуальный тумблер и настройте голосовые сценарии приветствия.

Илья Кузнецов
Автор статьи

Илья Кузнецов

Основатель & Главный редактор
7+ лет в IoT

Проектирует и тестирует экосистемы умных домов с 2017 года. Создатель испытательного стенда Яндекс Станций и Home Assistant. Пишет подробные технические руководства по построению бесшовных локальных сетей.

Обсуждение статьи