Резервное оповещение по SMS в Node-RED при сбоях интернета

Современный умный дом в значительной степени зависит от стабильного подключения к интернету. Голосовые ассистенты, включая Алису, а также большинство популярных мессенджеров (например, Telegram) отправляют push-уведомления и оповещения через облачные сервера. Если провайдер связи проводит технические работы, поврежден физический кабель в подъезде или завис домашний роутер, хозяева рискуют вовремя не узнать о критической аварии: прорыве трубы отопления, задымлении или несанкционированном проникновении в жилье.

Для обеспечения максимальной безопасности критически важных систем автоматизации необходимо предусмотреть автономный резервный канал связи. Самым простым, надежным и проверенным решением является отправка текстовых SMS-сообщений через подключенный напрямую к серверу умного дома USB-модем. Этот канал полностью независим от проводного интернета и продолжает работать, пока активна сотовая вышка ближайшего оператора связи.


Шаг 1: Выбор и подготовка аппаратного обеспечения

Для реализации резервного SMS-оповещения вам понадобится классический USB-модем (например, популярные модели Huawei E3372, ZTE MF833 или аналогичные). Перед подключением к серверу автоматизации необходимо настроить модем.

Модемы могут работать в двух режимах:

  1. Stick-режим — устройство определяется как последовательный COM-порт (/dev/ttyUSB* в операционных системах Linux). Управление отправкой сообщений происходит с помощью низкоуровневых AT-команд.
  2. HiLink-режим — модем работает как сетевой адаптер (роутер) с собственным веб-интерфейсом. Управление и отправка SMS осуществляются через встроенный HTTP API (посредством отправки POST-запросов XML/JSON).

Для работы в Node-RED режим HiLink является более предпочтительным, так как он не требует монопольного захвата последовательного порта операционной системой и работает стабильнее при частых перезапусках контейнеров или служб.


Шаг 2: Мониторинг доступности интернета

Постоянно отправлять оповещения через SMS не имеет коммерческого смысла, так как каждое сообщение тарифицируется оператором связи. Резервный канал должен активироваться только тогда, когда основной интернет-канал недоступен.

Для этого в Node-RED создается постоянный цикл проверки связи. Периодически (например, раз в 60 секунд) отправляется тестовый пинг на стабильный публичный DNS-сервер (например, 8.8.8.8) или выполняется легкий HTTP-запрос. Результат проверки записывается в глобальную переменную. Если пинг не проходит в течение трех циклов подряд, статус интернета меняется на аварийный. О том, как профессионально настроить отслеживание работоспособности служб, вы можете прочитать в инструкции по мониторингу системы в Node-RED. Наличие актуального флага статуса сети в глобальном контексте позволяет сценариям мгновенно выбирать правильный способ отправки тревоги.


Шаг 3: Настройка отправки SMS в Node-RED

Если ваш модем работает в режиме HiLink, отправка SMS настраивается через стандартную ноду http request. Нам необходимо отправить HTTP POST-запрос на локальный адрес модема (обычно это http://192.168.8.1/api/sms/send-sms).

Для авторизации запроса в новых прошивках модемов требуется сначала запросить токен безопасности (Session Token). Схема отправки в Node-RED выглядит следующим образом:

  1. Нода http request делает GET-запрос на http://192.168.8.1/api/webserver/token.
  2. Функция JavaScript извлекает токен безопасности из XML-ответа модема.
  3. Следующая нода http request выполняет POST-запрос с XML-телом, содержащим номер телефона получателя и текст тревожного сообщения, прикрепив полученный токен к заголовкам запроса.

Такой подход с двухэтапным получением авторизационного токена гарантирует защиту от несанкционированного доступа к веб-интерфейсу модема со стороны вредоносных скриптов в локальной сети.

Пример структуры XML-пакета для отправки:

<Request>
    <Index>-1</Index>
    <Phones>
        <Phone>+79991234567</Phone>
    </Phones>
    <Content>Внимание! Обнаружена протечка воды в ванной комнате.</Content>
    <Length>51</Length>
    <Reserved>1</Reserved>
    <Date>2026-07-09 12:00:00</Date>
</Request>

Шаг 4: Логика переключения каналов связи

Финальным этапом является создание распределительного узла в логике тревог. Когда срабатывает датчик протечки или дыма, сообщение с текстом аварии поступает на вход ноды-переключателя switch.

Эта нода проверяет значение глобальной переменной global.internetActive:

  • Если интернет доступен (true), сообщение направляется в ветку отправки через Telegram-бота или облачное push-уведомление приложения Яндекс. Алиса в этот момент может также продублировать предупреждение голосом через Яндекс Станцию.
  • Если интернет отсутствует (false), сообщение немедленно перенаправляется на ветку управления USB-модемом, инициируя отправку экстренного SMS-сообщения на мобильный телефон владельца. В SMS-сообщении передается точное время происшествия, название сработавшего датчика и его текущее состояние, чтобы владелец сразу понимал степень серьезности аварии.

IMPORTANT

Для стабильной работы резервного канала связи сервер Node-RED, сетевой коммутатор и сам USB-модем должны быть подключены к надежному источнику бесперебойного питания (ИБП). При отключении электричества в доме проводной интернет пропадет гарантированно, и только автономное питание сервера позволит модему отправить SMS-сообщение о аварии.

WARNING

USB-модемы во время отправки SMS могут потреблять значительный ток (до 1-1.5 Ампер в пике при слабом сигнале сотовой сети). Это может привести к падению напряжения на шине питания Raspberry Pi и зависанию сервера. Рекомендуется подключать модем через активный USB-хаб с внешним питанием.

TIP

При использовании SIM-карты с тарифом без абонентской платы сотовые операторы могут заблокировать номер за неактивность через несколько месяцев. Настройте в Node-RED автоматическую отправку одного тестового SMS-сообщения раз в 30 дней для поддержания активности SIM-карты.

NOTE

Не забудьте расположить USB-модем как можно дальше от беспроводных адаптеров Zigbee и Wi-Fi с помощью короткого USB-удлинителя. Мощное излучение передатчика модема при плохой связи способно создавать сильные электромагнитные помехи для чувствительных радиомодулей умного дома.

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

1

Подключение USB-модема к серверу

Подключите USB-модем с SIM-картой к серверу Node-RED и настройте его работу в режиме модема или шлюза.

2

Установка ноды SMS-шлюза

Установите в Node-RED ноды для работы с модемом через AT-команды или HTTP API локального шлюза.

3

Отслеживание доступности интернета

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

4

Тестирование отправки аварийного SMS

Создайте тестовое критическое событие (протечка, пожар) и проверьте отправку SMS при отключенном кабеле провайдера.

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

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