Трекинг присутствия по Wi-Fi в Node-RED для Алисы
Автоматическое определение присутствия жильцов в доме — это фундамент для создания по-настоящему умных сценариев. Зная, находится ли кто-то в квартире, система может самостоятельно выключать забытый свет, отключать теплые полы, переводить отопление в экономичный режим, запускать робот-пылесос или активировать охранный периметр.
Часто для этих целей пытаются использовать GPS-трекеры и геозоны на смартфонах. Однако такое решение имеет серьезные недостатки: оно сильно расходует заряд аккумулятора мобильного телефона, зависит от стабильности сотовой связи и может давать ложные срабатывания из-за погрешностей позиционирования. Гораздо более надежной и энергоэффективной альтернативой является отслеживание факта подключения смартфона к домашней беспроводной сети Wi-Fi. В этой статье мы разберем, как реализовать такую систему с помощью Node-RED и интегрировать ее с Яндекс Алисой.
Принцип работы и сетевые требования
Идея метода очень проста: когда член семьи возвращается домой, его смартфон автоматически подключается к домашней точке доступа Wi-Fi. Сервер Node-RED фиксирует появление устройства в сети и меняет статус присутствия пользователя. Когда пользователь уходит, связь разрывается, и система фиксирует отсутствие.
Для стабильной работы этой схемы необходимо выполнить два обязательных условия на вашем домашнем роутере:
- Выделите смартфонам членов семьи постоянные статические IP-адреса. Это делается в настройках DHCP-сервера роутера путем привязки IP-адреса к физическому MAC-адресу телефона.
- Отключите в настройках 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 минут, что система опроса может ошибочно распознать как уход из дома.
Чтобы сгладить эти кратковременные пропадания сети, необходимо использовать логический фильтр задержки.
- Подключите узел Trigger после ноды проверки сети.
- Настройте его так, чтобы при получении сигнала
true(телефон подключен) он сразу отправлялtrueдальше по цепочке. - При получении сигнала
false(связь пропала) узел Trigger должен не отправлять команду сразу, а запускать таймер ожидания на10-15 минут. - Если в течение этого времени телефон хоть раз пинганулся (пришел сигнал
true), таймер сбрасывается. - Только если телефон недоступен непрерывно более 15 минут, узел отправляет сигнал
false(пользователь действительно ушел).
Для надежного управления состояниями «Дома», «В гостях» или «Спит» рекомендуется использовать автомат состояний в Node-RED. Это позволит комбинировать данные Wi-Fi трекинга со статусом датчиков движения на входной двери. Например, если датчик двери не фиксировал открытие, статус нахождения дома не должен меняться даже при отключении смартфона от Wi-Fi.
Связывание статуса с Яндекс Алисой
Для отображения статуса присутствия в Яндексе мы создадим виртуальный датчик:
- Установите узел
yandex-deviceи настройте его как датчик присутствия или виртуальный переключатель (например, “Илья дома”). - Направьте отфильтрованный выход из узла задержки на вход
yandex-device. - В приложении Дом с Алисой настройте автоматическое приветствие: при изменении статуса датчика “Илья дома” на значение “Да”, умная колонка произнесет: «С возвращением домой, Илья!», включит любимый плейлист и запустит робот-пылесос на базу.
Такой подход позволяет полностью автоматизировать большинство рутинных повседневных действий, делая управление умным домом абсолютно незаметным, комфортным и естественным для всех членов вашей семьи. Это избавит вас от необходимости ручного переключения режимов охраны и снизит расходы на электроэнергию во время вашего отсутствия.
Инструкция по настройке
Опрос сетевых устройств по IP
Используйте узел ping для периодической проверки доступности IP-адресов смартфонов членов семьи в локальной сети.
Сглаживание ложных отключений
Настройте узел trigger для фильтрации кратковременных отключений Wi-Fi модуля смартфона в режиме глубокого сна.
Связывание с виртуальным датчиком
Передайте отфильтрованный статус присутствия на виртуальный датчик yandex-device для синхронизации с облаком Яндекса.
Настройка автоматизаций в Алисе
Создайте сценарии приветствия Алисы и автоматического включения света при обнаружении подключения смартфона к сети.
Совет эксперта: Управляйте домом с компьютера
Установите Яндекс Браузер, чтобы управлять умными розетками и светом прямо со стартовой страницы, не отвлекаясь от работы.