Node-RED: Озвучка зон охраны периметра на Яндекс Станциях
Содержание
Яндекс Браузер со встроенной Алисой — бесплатно
Интеграция систем безопасности с голосовыми помощниками позволяет мгновенно реагировать на нештатные ситуации без необходимости постоянно проверять уведомления на экране смартфона. Используя платформу визуального программирования Node-RED, можно настроить гибкую логику оповещений, которая будет озвучивать информацию о нарушении конкретных зон охраны периметра через голосовой помощник Алиса на Яндекс Станциях. В данном руководстве мы пошагово разберем создание такого потока, отслеживание датчиков и передачу речевых сообщений.
Подготовка и выбор архитектуры интеграции
Для построения сценария безопасности нам потребуется развернутый сервер автоматизации (например, Home Assistant), подключенный к нему уличный датчик движения и установленная среда Node-RED. Чтобы настроить среду разработки и связать ее с вашими устройствами, ознакомьтесь с нашей инструкцией по базовой установке Node-RED.
Отправка голосовых оповещений на Яндекс Станцию может быть реализована двумя основными способами: через официальное облачное REST API платформы Яндекс Диалоги или локально, используя интеграцию node-red-contrib-yandex2-alice (или Yandex Station в Home Assistant). Мы остановимся на использовании локальной интеграции, так как она минимизирует задержки до 150-300 мс и обеспечивает надежность работы даже при временном падении внешнего интернет-канала.
IMPORTANT
Для стабильной отправки TTS-команд на Яндекс Станцию ваш сервер Node-RED и колонка должны находиться в одной локальной подсети. Убедитесь, что для умной колонки зарезервирован статический IP-адрес на вашем DHCP-сервере во избежание смены адреса после перезагрузки роутера.
Проектирование логики сценария в Node-RED
Сценарий безопасности должен реагировать на изменение состояния датчика движения и генерировать голосовое сообщение. Логическая схема состоит из нескольких последовательных узлов:
- Входной узел
events: stateотслеживает состояние датчика движения (например,binary_sensor.outdoor_motion). - Узел
switchпроверяет, изменилось ли состояние на значениеon(обнаружено движение). - Узел
changeилиfunctionформирует текстовый JSON payload, содержащий фразу для озвучивания. - Выходной узел отправляет команду TTS на выбранную Яндекс Станцию.
WARNING
Будьте внимательны при настройке частоты отправки сообщений. Если датчик движения будет постоянно слать сигналы при непрерывном перемещении объекта, это вызовет циклическую отправку запросов к API Яндекса, что может привести к временной блокировке вашего токена за превышение лимитов (rate limiting).
Чтобы предотвратить лавину оповещений, добавьте в поток узел delay в режиме rate limit. Настройте его на пропуск не более 1 сообщения в 10 секунд. Этого времени достаточно, чтобы Алиса успела проговорить предупреждение, не прерывая саму себя на середине фразы.
Фильтрация ложных тревог и разделение зон
Для исключения ложных срабатываний в дневное время необходимо настроить временные фильтры. В Node-RED для этого идеально подходит узел time-range-switch или интеграция с астрономическим временем. Вы можете настроить поток так, чтобы звуковые оповещения на Станции работали только с 23:00 до 07:00, когда вся семья спит, а датчики периметра активны.
Написание кода в функциональном узле позволяет гибко управлять адресацией сообщений:
let zone = msg.topic.split('.')[1];
let zoneName = "Неизвестная зона";
if (zone === "gate_motion") {
zoneName = "ворота";
} else if (zone === "backyard_motion") {
zoneName = "задний двор";
}
msg.payload = {
data: {
message: "Внимание! Обнаружено движение в зоне: " + zoneName,
media_player: "media_player.yandex_station_living_room",
volume_level: 0.8
}
};
return msg;
Этот код формирует объект данных для отправки на медиаплеер. Параметр volume_level гарантирует, что важное сообщение будет озвучено с громкостью 80%, даже если до этого колонка играла тихую музыку перед сном.
Практическое использование шаблонов сообщений (TTS) в Яндекс Станции
Современные Яндекс Станции поддерживают тонкую настройку речевого синтеза. При отправке команд из Node-RED вы можете задавать дополнительные параметры:
- Скорость произношения с помощью параметра
speedв диапазоне от 0.5 до 2.0 (по умолчанию 1.0). - Эмоциональную окраску голоса через параметр
emotion(например,good— доброжелательный,evil— злой/предостерегающий,neutral— нейтральный). - Проигрывание звуковых эффектов или предупреждающих сигналов перед текстом с помощью тега
<speaker audio="...">во фразе TTS. Например, звук сиреныsirenили предупреждающий гудок привлекут внимание перед произнесением информации.
Использование тегов разметки позволяет существенно улучшить восприятие предупреждений. Вы можете вставить короткий звук тревоги, после которого Алиса четко проговорит, где зафиксировано нарушение периметра.
TIP
Добавьте узел времени time-range перед отправкой на колонку. Это позволит автоматически отключать голосовые оповещения в ночные часы или перенаправлять их на беззвучные пуш-уведомления на смартфоны членов семьи, чтобы не будить домочадцев ложными тревогами.
Отладка и тестирование потока
После развертывания потока (кнопка Deploy в правом верхнем углу интерфейса) проведите натурный тест. Перейдите в зону действия датчика движения. Задержка от момента детекции до начала фразы Алисы не должна превышать 5 секунд.
Если колонка молчит, откройте панель отладки Node-RED (иконка жука справа) и подключите узел debug к выходу функционального блока. Проверьте правильность структуры отправляемого JSON-объекта и доступность сетевого соединения с колонкой. Также убедитесь, что колонка не находится в режиме «Не беспокоить» (DND), который может блокировать воспроизведение медиафайлов и TTS-оповещений.
NOTE
Локальная озвучка работает через отправку команд по протоколу Websocket непосредственно на порт колонки. Если на вашем сервере активен брандмауэр, убедитесь, что он разрешает исходящие соединения на порты Станции.
Инструкция по настройке
Подготовка датчиков движения
Интегрируйте уличные датчики движения in локальную сеть автоматизации и проверьте скорость передачи сигналов тревоги.
Настройка нод Яндекс Диалогов
Установите в Node-RED палитру для отправки текстовых команд на Яндекс Станцию с использованием API или локальных протоколов.
Создание логического потока
Свяжите состояние датчика с функциональным узлом фильтрации, чтобы разделить зоны периметра и сформировать текст оповещения.
Тестирование голосовой озвучки
Проверьте задержку отправки команд TTS на колонку при срабатывании датчиков движения в различных охраняемых зонах.