Связка Node-RED с Home Assistant: API-ключ, MQTT и расширенные автоматизации

🎨 Node-RED + Home Assistant: расширенные автоматизации через API-ключ и MQTT

📅 Дата публикации: 15 мая 2026 ⏱️ Время чтения: ~12 минут

Ранее мы рассматривали установку на приставку Tanix w2 контейнеров для создания умного дома. И кажется, пора прояснить: «А зачем там Node-RED, если есть Home Assistant для автоматизаций?»

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

В статье рассмотрим: добавление Node-RED в боковую панель Home Assistant, получение долгосрочного токена доступа (API-ключа), установку библиотеки node-red-contrib-home-assistant-websocket, настройку соединения между Node-RED и Home Assistant, а также подключение MQTT-брокера для прямого общения с устройствами.

1. Установка Home Assistant и Node-RED

📦 Базовые контейнеры — Home Assistant и Node-RED устанавливаются как Docker-контейнеры.

Подробная инструкция по установке данных контейнеров была описана в статье про Tanix w2.

Кратко об установке:

  • Home Assistant: docker run -d --name homeassistant --restart=always --network=host -v ha_config:/config ghcr.io/home-assistant/home-assistant:stable
  • Node-RED: docker run -d --name nodered --restart=always -p 1880:1880 -v nodered_data:/data nodered/node-red:latest
🌐 После установки:
• Home Assistant доступен по адресу: http://IP_сервера:8123
• Node-RED доступен по адресу: http://IP_сервера:1880

2. Добавление Node-RED в боковую панель HA

⚠️ Важно: В новых версиях Docker-версии Home Assistant убрали возможность добавления в боковую панель сторонних страниц через YAML-код. Но создать панель вручную всё ещё можно.
  1. Откройте Настройки в боковой панели Home Assistant
  2. Перейдите в раздел «Панели» (или «Dashboards»)
  3. Нажмите кнопку «Добавить панель»
  4. Выберите вариант «Веб-страница» (или «Web Page»)
  5. Задайте произвольное название, например «Node-RED»
  6. В поле «URL» укажите адрес, где живёт Node-RED: http://IP_сервера:1880
  7. Нажмите «Создать» (или «Сохранить»)
✅ Теперь Node-RED появится в боковой панели Home Assistant для быстрого доступа.

3. Получение долгосрочного токена доступа (API-ключа)

Чтобы Node-RED мог управлять сущностями Home Assistant и получать их состояния, нам понадобится долгосрочный токен доступа (Long-Lived Access Token).

  1. Нажмите на своё имя пользователя в нижней части боковой панели Home Assistant
  2. В открывшемся окне перейдите на вкладку «Безопасность» (Security)
  3. Прокрутите страницу вниз до раздела «Долгосрочные токены доступа» (Long-Lived Access Tokens)
  4. Нажмите «Создать токен» (Create Token)
  5. Введите имя для токена, например «Node-RED»
  6. Нажмите «Создать» — система сгенерирует токен
  7. Скопируйте токен и сохраните его в надёжном месте — он показывается только один раз!
Создание долгосрочного токена в Home Assistant
Создание долгосрочного токена доступа в Home Assistant
⚠️ Важно: Токен показывается только один раз при создании. Если потеряете — придётся создавать новый.

4. Установка библиотеки Home Assistant в Node-RED

Сначала нам нужно добавить узлы Home Assistant в Node-RED.

  1. Откройте веб-интерфейс Node-RED (http://IP_сервера:1880)
  2. Нажмите на меню в правом верхнем углу (три горизонтальные линии) → выберите «Управление палитрой» (Manage palette)
  3. Перейдите на вкладку «Установить» (Install)
  4. В поле поиска введите node-red-contrib-home-assistant-websocket
  5. Найдите пакет и нажмите кнопку «Установить»
Установка пакета в Node-RED
Установка node-red-contrib-home-assistant-websocket
🔗 Официальный репозиторий: github.com/zachowj/node-red-contrib-home-assistant-websocket

5. Настройка соединения Node-RED с Home Assistant

Теперь настроим соединение между Node-RED и Home Assistant с помощью полученного токена.

  1. Перейдите на главный экран Node-RED
  2. Перетащите узел «events: all» (из категории Home Assistant) на рабочую область
  3. Дважды щёлкните по узлу, чтобы открыть его настройки
  4. Рядом с полем «Сервер» (Server) выберите «Добавить новый сервер…» и нажмите на значок карандаша ✏️
  5. Дайте конфигурации сервера имя, например «Home Assistant»
  6. НЕ УСТАНАВЛИВАЙТЕ флажок «Using the Home Assistant Add-on»
  7. В поле «Базовый URL» введите адрес доступа к Home Assistant: http://IP_сервера:8123
  8. В поле «Токен доступа» (Access Token) вставьте токен, полученный ранее
  9. Нажмите «Добавить» (Add), а затем «Сохранить» (Save)
Настройка сервера Home Assistant в Node-RED
Настройка соединения Node-RED с Home Assistant
✅ Готово! Теперь Node-RED может управлять сущностями Home Assistant и получать их состояния.

6. Подключение MQTT в Node-RED

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

Эта настройка очень похожа на то, как мы настраивали подключение Home Assistant. Основное отличие в том, что MQTT поддерживается в Node-RED по умолчанию — дополнительный пакет устанавливать не нужно.

  1. В Node-RED перетащите узел «mqtt in» (или «mqtt out») на рабочую область
  2. Дважды щёлкните, чтобы открыть его настройки
  3. Рядом с полем «Сервер» выберите «Добавить новый сервер MQTT…» и нажмите на значок карандаша ✏️
  4. На вкладке «Соединение» (Connection) введите:
    • Сервер: IP адрес вашего MQTT-брокера
    • Порт: 1883
    • Протокол: выберите MQTT V5 (или V3.1.1, если брокер старее)
  5. На вкладке «Безопасность» (Security) введите:
    • Имя пользователя: логин для MQTT (например, homeassistant)
    • Пароль: пароль пользователя MQTT
  6. Нажмите «Добавить», а затем «Сохранить»
  7. В поле «Тема» (Topic) для входящих сообщений можно ввести подстановочный знак #, чтобы слушать все темы
Настройка соединения MQTT в Node-RED
Вкладка «Соединение» — сервер и порт
Настройка безопасности MQTT в Node-RED
Вкладка «Безопасность» — логин и пароль
Общий вид настройки MQTT в Node-RED
Общий вид настроек MQTT-сервера
✅ Готово! Теперь Node-RED может напрямую общаться с MQTT-брокером. Это открывает возможности для создания сложных, визуально приятных потоков автоматизации без посредников.

7. Пример работы: включение света на 77% в фиолетовый цвет

Давайте соберём простой, но наглядный пример — по нажатию кнопки в Node-RED будем включать лампочку с яркостью 77% и фиолетовым цветом.

🎨 Что потребуется: Устройство, поддерживающее управление яркостью и цветом (например, LED-лента, умная лампочка с RGB или светодиодное кольцо).

Узел 1: Inject (кнопка запуска)

  • Перетащите узел Inject из категории «common» на рабочую область
  • Настройки оставьте по умолчанию

Узел 2: Action (включение лампочки)

  • Перетащите узел Action из категории «home assistant» на рабочую область
  • Соедините выход Inject со входом Action
  • Дважды щёлкните по узлу Action для настройки
ПолеЗначение
Server Home Assistant (ваш настроенный сервер)
Action light.turn_on
Targets entity → выберите ваше световое устройство (например, «Кольцо 1»)
Data Выберите Merge context (или переключатель в положение «JSON»)

В поле Data (снизу) вставьте следующий JSON:

{ "brightness": 196, "hs_color": [270, 100] }
Настройка узла Action в Node-RED
Настройка узла Action с JSON-данными
Общий вид потока в Node-RED
Готовый поток: Inject → Action

Запуск:

  1. Нажмите кнопку Deploy (красная кнопка в правом верхнем углу)
  2. Нажмите на серую кнопку слева от узла Inject
  3. Лампочка загорается фиолетовым цветом с яркостью 77%
✅ Готово! Вы создали первый автоматизированный поток в Node-RED, управляющий устройством через Home Assistant.

Альтернативные форматы цвета (замените hs_color в JSON):

  • RGB (красный, зелёный, синий): { "brightness": 196, "rgb_color": [128, 0, 255] } — фиолетовый через RGB
  • Hex (цветовая строка): { "brightness": 196, "color_name": "purple" } — по имени цвета
  • HSV (оттенок, насыщенность, значение): { "brightness": 196, "hs_color": [270, 100] } — тот же фиолетовый через HSV
💡 Почему 196? Яркость в Home Assistant задаётся в диапазоне 0-255. 196 / 255 ≈ 77%.
Мы используем cookie-файлы. Это нужно для лучшей работы сайта. Продолжая пользоваться сайтом, вы соглашаетесь с этим.