Node-RED в Home Assistant

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

Что понадобится

Понадобится установленный Home Assistant - если он еще не стоит, начните с гайда по установке Home Assistant. Node-RED можно установить как приложение сообщества. Теперь Home Assistant называет аддоны приложениями (apps).

Для отдельной установки Node-RED вне Home Assistant документация интеграции требует Node.js v14.0+, Node-RED v3.0.0+ и Home Assistant v2021.3.0+. Node-RED должен быть уже установлен и запущен.

Каждый узел Home Assistant в Node-RED должен ссылаться на узел конфигурации сервера Server Config.

Установка приложения Node-RED

Откройте приложение через кнопку Home Assistant My в документации.

  1. Откройте страницу приложения в своем Home Assistant. В документации приложения для этого есть кнопка Home Assistant My - она открывает приложение на вашем экземпляре Home Assistant. Нажмите Install.
  2. Запустите Node-RED и посмотрите его журнал.
  3. Нажмите OPEN WEB UI, чтобы попасть в веб-редактор Node-RED.
  4. Оставьте настройки сервера без изменений. Подключение приложения уже настроено, и документация прямо не рекомендует добавлять, менять или обновлять настройки серверного подключения.

Первая автоматизация

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

  1. Добавьте узел Events: state. В поле Entity ID укажите sun.sun, а в If State - above_horizon.
  2. Перетащите на схему два узла Action и соедините их с выходами узла Events: state. Верхний выход ведет к действию light.turn_off, нижний - к light.turn_on. В поле Entity обоих узлов укажите light.front_porch.
  3. Нажмите Deploy - поток отправится в среду исполнения и начнет работать.

Другие способы

Для отдельно установленного Node-RED добавьте пакет node-red-contrib-home-assistant-websocket.

Отдельная установка Node-RED. В редакторе откройте Manage palette, на вкладке Install найдите пакет node-red-contrib-home-assistant-websocket и нажмите install. Установленные модули перечислены в разделе Nodes. Пакет можно поставить и через npm:

cd ~/.node-red
npm install node-red-contrib-home-assistant-websocket

После установки через npm перезапустите Node-RED.

Подключение при отдельной установке. Добавьте узел Events: all. Нажмите значок карандаша у поля Server, укажите Base URL и Access Token, сохраните изменения и сделайте Deploy.

Другие платформы. Инструкции по установке Node-RED на локальный компьютер, Raspberry Pi, в Docker и облако собраны в документации Node-RED.

Кастомная интеграция. Этот дополнительный компонент для Home Assistant необязателен. Его можно поставить через HACS и Marketplace или вручную по инструкции из README.

Ограничения и предупреждения

Опция ssl действует только на прямой доступ к интерфейсу и не влияет на сервис Ingress.

Частые проблемы

У пользователей форума помогали следующие решения. Проблему синтеза речи (TTS) обсуждали в 2 ветках, каждую из остальных проблем - в одной ветке.

ПроблемаТекст ошибкиЧто помогало пользователям
Действия TTS не срабатывают или не используют медиаплеер, переданный в JSONне указануказать media_player_entity_id в данных; повторно применить поток с кавычками и убрать entity_id
Потоки Node-RED останавливаются: типы узлов Home Assistant отсутствуютFlows gestoppt aufgrund fehlender Node-Typenостановить Node-RED, переименовать node-red-contrib-home-assistant-websocket, добавив к имени .bak, и снова запустить
Автоматизация света падает после обновления до Home Assistant 2026.3name: "HomeAssistantError" | message: "extra keys not allowed @ data['color_temp']"заменить color_temp на color_temp_kelvin

Частые вопросы

Когда нужен Current State?

Узел Current State нужен, чтобы получить последнее известное состояние сущности при поступлении входящего сообщения. Сущность выбирают в поле Entity ID. Узел Events: state слушает изменения состояния сущностей Home Assistant, выбранных настройкой Entity. Выбор между ними зависит от того, нужно ли получить состояние при входящем сообщении или отследить его изменение.

Почему узел Action игнорирует данные из msg.payload?

Включенная по умолчанию опция Block Input Overrides не дает msg.payload перезаписать локальные настройки узла Action. Этот узел отправляет в Home Assistant запрос на выполнение действия. Действие и сущность задают в полях Action и Entity, а дополнительные данные для вызова - в поле Data в формате JSON или JSONata.

Как понять, что отдельный Node-RED подключился к Home Assistant?

Зеленый статус connected или state_changed под узлом означает, что соединение установлено. При connecting или disconnected проверьте Base URL и Access Token. Для создания токена прокрутите профиль пользователя Home Assistant вниз и нажмите Create Token. Задайте имя токена и скопируйте его в Node-RED. Владелец токена должен состоять в группе администраторов.

Андрей Ковалев, редактор. Собирает решения из веток форума Home Assistant и сверяет команды и настройки с официальной документацией.