Отслеживание присутствия в Home Assistant по пингу для Алисы
Автоматическое определение присутствия членов семьи дома — один из фундаментальных столпов, на которых строится по-настоящему умный дом. Знание того, находится ли кто-то в квартире, позволяет умному помощнику вовремя гасить свет в пустых комнатах, ставить систему на охрану, регулировать температуру радиаторов или включать робот-пылесос, не мешая домочадцам.
Существует множество способов трекинга геопозиции, включая GPS-мониторинг, подробнее о котором вы можете прочитать в нашей статье про запуск сценариев Дома в Алисе по GPS-зонам Home Assistant. Однако GPS-трекинг сильно расходует заряд аккумулятора смартфона и требует постоянного доступа к мобильному интернету. В качестве надежной, локальной и энергоэффективной альтернативы выступает отслеживание присутствия по пингу (Ping Device Tracker). Этот метод основан на периодическом опросе доступности смартфона в домашней Wi-Fi сети. Когда вы возвращаетесь домой, ваш телефон автоматически подключается к роутеру, сервер Home Assistant фиксирует его сетевой адрес и сообщает Яндексу о вашем приходе для запуска приветственных сценариев с Алисой.
Шаг 1. Резервирование IP-адресов на роутере
Для того чтобы метод отслеживания по пингу работал стабильно, IP-адрес каждого смартфона в локальной сети должен оставаться неизменным. По умолчанию домашние роутеры выдают адреса динамически через протокол DHCP, что означает, что при очередном подключении телефон может получить новый адрес, и система мониторинга потеряет его из виду.
- Войдите в панель управления вашего домашнего роутера (обычно она доступна по адресу
192.168.1.1или192.168.0.1). - Найдите раздел, который называется DHCP Server, Static Lease или Резервирование IP-адресов.
- Найдите в списке подключенных устройств ваш смартфон (ориентируйтесь по имени устройства или по его уникальному физическому MAC-адресу).
- Закрепите за смартфоном постоянный локальный IP-адрес, например
192.168.1.50. - Повторите эту процедуру для мобильных телефонов всех членов семьи, назначив каждому свой статический адрес.
- Перезагрузите роутер и убедитесь, что смартфоны получили назначенные им сетевые адреса.
IMPORTANT
В настройках Wi-Fi на самом смартфоне (особенно на iOS и современных версиях Android) отключите функцию «Частный адрес» или «Случайный MAC-адрес» для вашей домашней сети. Если этого не сделать, телефон будет периодически менять свой физический адрес, что нарушит привязку IP-адреса на роутере.
Шаг 2. Настройка интеграции Ping в Home Assistant
Начиная с современных версий Home Assistant, интеграция Ping настраивается непосредственно через графический интерфейс без необходимости ручного редактирования конфигурационных файлов.
- В веб-интерфейсе Home Assistant перейдите в раздел Настройки ➡️ Устройства и службы.
- Нажмите кнопку Добавить интеграцию в правом нижнем углу.
- Введите в поиске слово Ping (или ICMP) и выберите найденную интеграцию.
- Настройте устройство: укажите имя (например, «Телефон Алексея») и введите зарезервированный ранее IP-адрес (например,
192.168.1.50). - Установите интервал опроса. По умолчанию система опрашивает устройство каждые
30секунд. Это оптимальное значение, которое не создает нагрузку на сеть. - Нажмите Отправить. В системе появится новая сущность класса
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 минут.
Шаг 4. Синхронизация с Яндекс Станцией и Алисой
Теперь нам нужно пробросить сглаженный статус присутствия в экосистему Яндекса. Самый простой способ сделать это — использовать виртуальный переключатель input_boolean.
- Создайте вспомогательный элемент типа Переключатель (в меню Настройки ➡️ Устройства и службы ➡️ Вспомогательные элементы) под названием «Алексей дома» (
input_boolean.alexey_home). - Напишите простую автоматизацию в Home Assistant, которая включает этот тумблер при переходе нашего фильтр-сенсора в состояние
on, и выключает его при переходе вoff. - Откройте приложение «Дом с Алисой» и выполните поиск новых устройств. Виртуальный тумблер появится в списке устройств как обычный выключатель.
- Перейдите в раздел сценариев Алисы и создайте новое правило. В качестве условия выберите: «Если выключатель Алексей дома включился», а в качестве действия настройте вашу Яндекс Станцию: «Алиса, скажи: Привет, Алексей! Рада твоему возвращению».
Такой подход гарантирует абсолютную локальность первичного обнаружения и максимальную стабильность работы без лишнего расхода аккумулятора ваших мобильных устройств.
Инструкция по настройке
Добавление пинг-интеграции
Добавьте IP-адреса смартфонов членов семьи в файл конфигурации или через интерфейс интеграции Ping в Home Assistant.
Резервирование IP-адресов
В настройках вашего роутера закрепите статические IP-адреса за каждым смартфоном, чтобы адреса не менялись со временем.
Создание бинарного сенсора
Настройте групповой сенсор или правила фильтрации, чтобы сгладить ложные уходы в офлайн при переходе телефона в спящий режим.
Интеграция с Умным домом Яндекса
Передайте статус присутствия в Алису через виртуальный тумблер и настройте голосовые сценарии приветствия.