Поиск по базе знаний

Трекинг присутствия по Wi-Fi в Node-RED для Алисы

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

Часто для этих целей пытаются использовать GPS-трекеры и геозоны на смартфонах. Однако такое решение имеет серьезные недостатки: оно сильно расходует заряд аккумулятора мобильного телефона, зависит от стабильности сотовой связи и может давать ложные срабатывания из-за погрешностей позиционирования. Гораздо более надежной и энергоэффективной альтернативой является отслеживание факта подключения смартфона к домашней беспроводной сети Wi-Fi. В этой статье мы разберем, как реализовать такую систему с помощью Node-RED и интегрировать ее с Яндекс Алисой.


Принцип работы и сетевые требования

Идея метода очень проста: когда член семьи возвращается домой, его смартфон автоматически подключается к домашней точке доступа Wi-Fi. Сервер Node-RED фиксирует появление устройства в сети и меняет статус присутствия пользователя. Когда пользователь уходит, связь разрывается, и система фиксирует отсутствие.

Для стабильной работы этой схемы необходимо выполнить два обязательных условия на вашем домашнем роутере:

  1. Выделите смартфонам членов семьи постоянные статические IP-адреса. Это делается в настройках DHCP-сервера роутера путем привязки IP-адреса к физическому MAC-адресу телефона.
  2. Отключите в настройках Wi-Fi на самих смартфонах функцию «Случайный MAC-адрес» (частный адрес) для вашей домашней сети. В противном случае при каждом подключении телефон будет генерировать новый виртуальный идентификатор, что нарушит работу автоматизации.

Способы отслеживания устройств в локальной сети

Существует два основных подхода к реализации опроса устройств в Node-RED:

  • Активный опрос (Ping). Среда автоматизации периодически отправляет ICMP-пакеты (пинги) на IP-адрес смартфона. Если приходит ответ — устройство дома. Для этого используется стандартный узел node-red-node-ping. В его настройках указывается целевой IP-адрес и интервал опроса (например, каждые 20 секунд). При успешном пинге нода возвращает время отклика в миллисекундах, а при потере связи — булево значение false. Это самый простой и универсальный метод, работающий на любых роутерах.
  • Пассивный мониторинг через API (UniFi/Keenetic). Если вы используете оборудование Ubiquiti UniFi или Keenetic, можно установить специализированные узлы (например, node-red-contrib-unifi), которые опрашивают сам контроллер сети или роутер и моментально получают список active-клиентов. Для настройки UniFi-ноды потребуется указать IP-адрес контроллера (например, https://192.168.1.10:8443), имя пользователя, пароль и идентификатор сайта (обычно default). Этот способ экономит заряд батареи телефона, так как сервер опрашивает контроллер, а не сам смартфон.

Борьба со спящим режимом смартфонов

Главная техническая сложность Wi-Fi трекинга заключается в алгоритмах энергосбережения мобильных операционных систем (особенно iOS и последних версий Android). Когда телефон долго лежит на столе без использования, он засыпает и отключает Wi-Fi модуль для экономии заряда, переходя на кратковременные сессии опроса сети раз в несколько минут.

Дополнительно в современных бесшовных сетях с несколькими точками доступа активированы функции Band Steering (принудительный перенос между диапазонами 2.4 ГГц и 5 ГГц) и Fast Roaming (стандарты 802.11r/k/v). При переходе смартфона между точками или частотами соединение может кратковременно прерываться на период от 30 секунд до 2 минут, что система опроса может ошибочно распознать как уход из дома.

Чтобы сгладить эти кратковременные пропадания сети, необходимо использовать логический фильтр задержки.

  1. Подключите узел Trigger после ноды проверки сети.
  2. Настройте его так, чтобы при получении сигнала true (телефон подключен) он сразу отправлял true дальше по цепочке.
  3. При получении сигнала false (связь пропала) узел Trigger должен не отправлять команду сразу, а запускать таймер ожидания на 10-15 минут.
  4. Если в течение этого времени телефон хоть раз пинганулся (пришел сигнал true), таймер сбрасывается.
  5. Только если телефон недоступен непрерывно более 15 минут, узел отправляет сигнал false (пользователь действительно ушел).

Для надежного управления состояниями «Дома», «В гостях» или «Спит» рекомендуется использовать автомат состояний в Node-RED. Это позволит комбинировать данные Wi-Fi трекинга со статусом датчиков движения на входной двери. Например, если датчик двери не фиксировал открытие, статус нахождения дома не должен меняться даже при отключении смартфона от Wi-Fi.


Связывание статуса с Яндекс Алисой

Для отображения статуса присутствия в Яндексе мы создадим виртуальный датчик:

  • Установите узел yandex-device и настройте его как датчик присутствия или виртуальный переключатель (например, “Илья дома”).
  • Направьте отфильтрованный выход из узла задержки на вход yandex-device.
  • В приложении Дом с Алисой настройте автоматическое приветствие: при изменении статуса датчика “Илья дома” на значение “Да”, умная колонка произнесет: «С возвращением домой, Илья!», включит любимый плейлист и запустит робот-пылесос на базу.

Такой подход позволяет полностью автоматизировать большинство рутинных повседневных действий, делая управление умным домом абсолютно незаметным, комфортным и естественным для всех членов вашей семьи. Это избавит вас от необходимости ручного переключения режимов охраны и снизит расходы на электроэнергию во время вашего отсутствия.

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

1

Опрос сетевых устройств по IP

Используйте узел ping для периодической проверки доступности IP-адресов смартфонов членов семьи в локальной сети.

2

Сглаживание ложных отключений

Настройте узел trigger для фильтрации кратковременных отключений Wi-Fi модуля смартфона в режиме глубокого сна.

3

Связывание с виртуальным датчиком

Передайте отфильтрованный статус присутствия на виртуальный датчик yandex-device для синхронизации с облаком Яндекса.

4

Настройка автоматизаций в Алисе

Создайте сценарии приветствия Алисы и автоматического включения света при обнаружении подключения смартфона к сети.

Совет эксперта: Управляйте домом с компьютера

Установите Яндекс Браузер, чтобы управлять умными розетками и светом прямо со стартовой страницы, не отвлекаясь от работы.