Здесь могла бы быть реклама
Она помогает блогу развиваться.
Кажется, сегодня она немного загрустила.

Главная страница » Home Assistant » Node-RED + Home Assistant: Визуальная автоматизация умного дома без единой строчки кода
Node-RED + Home Assistant: Визуальная автоматизация умного дома без единой строчки кода
Home Assistant

Node-RED + Home Assistant: Визуальная автоматизация умного дома без единой строчки кода

31.03.2026 281
Node-RED + Home Assistant: Визуальная автоматизация умного дома без единой строчки кода

Подключаем Node-RED к Home Assistant и создаём наглядные сценарии автоматизации без написания большого объёма кода.

Приветствую всех, кто увлечён созданием своего умного дома! Если вы, как и я, уже познакомились с мощью Home Assistant и оценили его гибкость, то наверняка сталкивались с ситуацией, когда логика автоматизации в YAML становится слишком громоздкой. Цепочки условий condition:, триггеры trigger: и действия action: в редакторе автоматизаций — это здорово, но что если хочется чего-то более наглядного, где всю логику можно увидеть одним взглядом? А что если хочется быстро прототипировать сложные сценарии, которые реагируют на погоду, время, состояние устройств и ваше местоположение одновременно?

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

Почему Node-RED? Зачем это нужно

Home Assistant — это отличный «мозговой центр», который объединяет все устройства и предоставляет единый интерфейс. Его встроенный редактор автоматизаций мощный, но имеет свои ограничения в наглядности и скорости разработки для сложных логических цепочек.

Node-RED решает эти проблемы. Представьте его как визуальную среду, где: * Ноды (блоки) — это готовые функции: получить состояние устройства, включить свет, отправить уведомление, обработать JSON, сделать HTTP-запрос. * Потоки — это полотно, где вы соединяете ноды между собой, определяя поток данных и логику. * Связи — это провода, по которым данные (сообщения) перетекают от одной ноды к другой.

Преимущества такого подхода: * Наглядность: Вся логика сценария видна на одном экране. Легко понять, как работает автоматизация, даже если вы писали её полгода назад. * Простота отладки: Вы можете в реальном времени видеть, какие данные проходят через каждую ноду, и быстро находить ошибки. * Огромная библиотека нод: Сообщество создало тысячи нод для работы с MQTT, Telegram, погодными сервисами, базами данных (как в статье про домашнюю метеостанцию с графиками), API и многим другим. * Прототипирование: Создать и проверить идею можно за считанные минуты, просто перетаскивая блоки.

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

Установка Node-RED: выбираем способ

Существует несколько способов установить Node-RED. Я рассмотрю два самых популярных для среды Home Assistant.

Способ 1: Надстройка (Add-on) для Home Assistant OS или Supervised

Это самый простой и интегрированный путь, если вы используете Home Assistant OS (например, на Raspberry Pi) или Supervised-установку.

  1. В панели управления Home Assistant перейдите в раздел Настройки -> Надстройки.
  2. В правом нижнем углу нажмите кнопку Магазин надстроек.
  3. Найдите надстройку "Node-RED" от сообщества (часто она уже в избранном).
  4. Нажмите на неё и затем Установить. Дождитесь окончания загрузки.
  5. Перед запуском важно зайти в конфигурацию надстройки. Часто нужно добавить несколько ключевых параметров в поле config:

    json { "credential_secret": "придумайте_свой_сложный_ключ_здесь", "dark_mode": true, "ssl": false, "certfile": "fullchain.pem", "keyfile": "privkey.pem", "require_ssl": false, "http_node": { "username": "user", "password": "pass" }, "http_static": { "username": "user", "password": "pass" }, "i_like_to_be_pwned": false, "leave_front_door_open": false } * credential_secret: Обязательно задайте свой уникальный ключ! Он используется для шифрования паролей в потоках. * dark_mode: На вкус и цвет. * Параметры ssl, certfile, keyfile: Включайте (true) и настраивайте только если у вас есть SSL-сертификат (например, от Let's Encrypt через надстройку Nginx Proxy Manager). Для начала оставьте false. * Параметры username/password: Задайте логин и пароль для доступа к интерфейсу Node-RED. Это важно для безопасности! * leave_front_door_open: Всегда оставляйте false, если не хотите, чтобы Node-RED был доступен без пароля из локальной сети.

  6. Сохраните конфигурацию, запустите надстройку, нажав "Запуск", а затем "Открыть веб-интерфейс".

Типичная ошибка: Пропуск настройки credential_secret и паролей. Это может привести к уязвимости и проблемам при обновлении.

Способ 2: Установка в Docker (для любых систем, включая Ubuntu на сервере)

Если ваш Home Assistant работает в Docker или на отдельном сервере (например, на том же одноплатнике, где крутится ваш приватный DNS-сервер Pi-hole + Unbound), этот способ для вас.

Создайте файл docker-compose.yml:

version: '3.8'
services:
  node-red:
    image: nodered/node-red:latest
    container_name: node-red
    restart: unless-stopped
    user: "1000:1000" # Замените на ваши UID:GID (узнать можно командой `id`)
    ports:
      - "1880:1880" # Порт для веб-интерфейса
    environment:
      - TZ=Europe/Moscow # Укажите свою временную зону
      - NODE_RED_CREDENTIAL_SECRET=придумайте_свой_сложный_ключ_здесь
    volumes:
      - ./node-red-dаta:/data # Папка для хранения данных и потоков
      - /etc/localtime:/etc/localtime:ro # Синхронизация времени с хостом
    networks:
      - homeassistant_network # Подключите к той же сети, что и Home Assistant

networks:
  homeassistant_network:
    external: true # Предполагается, что сеть уже создана для Home Assistant

Комментарии к командам: * user: "1000:1000" — запуск от имени вашего пользователя, чтобы избежать проблем с правами на файлы. * NODE_RED_CREDENTIAL_SECRET — аналог credential_secret из надстройки. * volumes — маппинг папки /data контейнера в локальную папку ./node-red-data для сохранения данных.

Запустите контейнер, находясь в папке с docker-compose.yml:

docker-compose up -d

После этого Node-RED будет доступен по адресу http://ваш_сервер:1880.

Первый запуск и настройка интеграции с Home Assistant

  1. Откройте веб-интерфейс Node-RED (http://homeassistant.local:1880 для надстройки или http://ваш_сервер:1880 для Docker).
  2. Вы увидите чистое рабочее поле — поток (flow).
  3. Слева — палитра нод. Нам нужна нода "home assistant". Если её нет, её необходимо установить.
  4. В верхнем меню выберите Управление палитрой (три строки -> Управление палитрой).
  5. Перейдите на вкладку "Установка", найдите node-red-contrib-home-assistant-websocket и нажмите "Установить". Это официальный пакет нод для связи по WebSocket API.

Настройка сервера Home Assistant

После установки нод в палитре появится группа "home assistant".

  1. Перетащите на рабочее поле любую ноду из этой группы, например, "events: state".
  2. Дважды щёлкните по ней, чтобы открыть настройки. Рядом с полем "Server" нажмите на карандаш (иконку редактирования).
  3. Нажмите "Add new home-assistant-server".
  4. Заполните поля:
    • Name: Любое удобное имя, например, "My HA".
    • Base URL: URL вашего Home Assistant, например, http://homeassistant.local:8123 (для надстройки) или http://ваш_внутренний_ip:8123. Важно: Если используете SSL (HTTPS), укажите https://.
    • Access Token: Это ключ доступа. Чтобы получить его, откройте Home Assistant, перейдите в свой профиль (внизу левой панели), прокрутите вниз до раздела "Токены долгосрочного доступа" и создайте новый токен. Скопируйте его и вставьте в это поле.
  5. Нажмите "Update", а затем "Add".

Типичная ошибка: Неверный Base URL. Если Home Assistant и Node-RED в одной системе (как надстройка), часто срабатывает http://homeassistant.local:8123. Если в разных Docker-сетях, используйте внутренний IP-адрес контейнера или хоста. Проблемы с подключением — первое, что нужно проверять.

Создаём первую автоматизацию: "Вечерний режим"

Давайте создадим полезный сценарий: когда вечером (после заката) кто-то приходит домой (датчик присутствия срабатывает), включается свет в прихожей и коридоре на 50%, но только если в гостиной темно (чтобы не слепить, если там уже кто-то есть).

Шаг 1: Слушаем события

  1. Из палитры "home assistant" перетащите ноду "events: state". Это триггер, который срабатывает при изменении состояния сущности.
  2. Настройте её:
    • Server: Выберите созданный сервер.
    • Entity ID: Выберите датчик присутствия, например, binary_sensor.front_door_presence.
    • If State: Выберите is. Рядом в поле введите on (или home в зависимости от датчика).
    • Остальное можно оставить по умолчанию. Эта нода будет выдавать сообщение каждый раз, когда датчик переходит в состояние "on".

Шаг 2: Проверяем время (после заката)

  1. Из палитры "home assistant" перетащите ноду "current state". Она получает текущее состояние сущности.
  2. Настройте её:
    • Entity ID: sun.sun.
    • Property: state.
  3. Из палитры "function" перетащите ноду "switch". Она будет направлять поток в зависимости от условия.
  4. Настройте правила (правила):
    • Property: msg.payload.
    • Rules: Первое правило: ==, значение below_horizon. Это означает "после заката". Второе правило оставьте по умолчанию (otherwise).
  5. Соедините ноды: выход "events: state" -> вход "current state". Выход "current state" -> вход "switch".

Шаг 3: Проверяем освещённость в гостиной

  1. Перетащите ещё одну ноду "current state".
  2. Настройте: Entity ID — датчик освещённости в гостиной, например, sensor.living_room_lux.
  3. Перетащите ноду "function" -> "range".
  4. Настройте её: Установите нижний и верхний пределы, например, от 0 до 10 (люкс). Это означает "темно".
  5. Соедините: Выход первого правила ноды "switch" (закат) -> вход новой ноды "current state". Выход "current state" -> вход "range".

Шаг 4: Включаем свет

  1. Перетащите ноду "call service" из палитры Home Assistant.
  2. Настройте:
    • Domain: light.
    • Service: turn_on.
    • Entity ID: Выберите свет в прихожей, например, light.entrance.
    • Data: Вставьте JSON-объект для установки яркости: {"brightness_pct": 50}.
  3. Соедините выход ноды "range" (если темно) -> вход ноды "call service".
  4. Совет: Скопируйте эту ноду (Ctrl+C, Ctrl+V), чтобы создать вторую такую же для света в коридоре (light.hallway).

Шаг 5: Развёртываем и тестируем

  1. Нажмите красную кнопку "Развернуть" (Deploy) в правом верхнем углу. Теперь ваш поток активен.
  2. Чтобы проверить, щёлкните правой кнопкой мыши на ноде "events: state" и выберите "Отладка" (Debug). Рядом с рабочей областью откроется вкладка "Отладка".
  3. Симулируйте событие: подойдите к двери, чтобы сработал датчик присутствия (или вручную измените состояние сущности в Home Assistant).
  4. Во вкладке "Отладка" вы увидите сообщения, проходящие через ноды. Это позволит понять, на каком шаге логика прерывается, если что-то не работает.

Проверка результата: Вечером, после захода солнца, при срабатывании датчика у двери, в прихожей и коридоре должен плавно включиться свет на 50% яркости. Если в гостиной уже горит свет (датчик освещённости показывает >10 люкс), ничего происходить не должно.

Продвинутый пример: Уведомление в Telegram об открытом окне

Допустим, у вас есть датчик открытия окна и вы ушли из дома. Если окно открыто дольше 10 минут, пока вас нет, придёт уведомление в Telegram.

  1. Триггер: Нода "events: state" для датчика окна (binary_sensor.kitchen_window), где состояние is on (открыто).
  2. Проверка присутствия: Параллельно нода "current state" для трекера вашего телефона (device_tracker.your_phone). Нода "switch" проверяет, что состояние not_home.
  3. Логическое "И": Используйте ноду "function" -> "join" (режим AND) или сгруппируйте условия, чтобы поток шёл дальше только если оба условия истинны (окно открыто И вас нет дома).
  4. Таймер: Нода "function" -> "delay". Настройте её на задержку в 10 минут. Установите опцию "Drop intermediate messages" — это важно, чтобы при каждом новом событии (например, вы всё ещё отсутствуете) таймер перезапускался.
  5. Действие: Нода "call service". Здесь можно использовать сервис notify.telegram (если у вас настроена интеграция Telegram в HA) или универсальную ноду node-red-contrib-chatbot для прямого подключения к Telegram API.
  6. В Data сервиса укажите сообщение: {"message":"⚠️ Кухонное окно открыто уже более 10 минут, а вас нет дома!"}.

Оптимизация и лучшие практики

  • Именуйте ноды: Дважды щёлкните на заголовке любой ноды, чтобы дать ей понятное имя (например, "Датчик: Открытие кухонного окна"). Это спасает при анализе сложных потоков.
  • Используйте подпотоки (Subflows): Если у вас повторяется одинаковая логика (например, проверка "день/ночь"), вынесите её в отдельный подпоток. Это как функция в программировании.
  • Комментируйте: Добавляйте ноды "comment" из палитры, чтобы описывать участки потока.
  • Резервное копирование: Потоки хранятся в файле flows.json в папке данных Node-RED (/data для надстройки, ./node-red-data для Docker). Регулярно копируйте этот файл. Также используйте функцию "Экспорт" в меню проекта.
  • Безопасность: Никогда не оставляйте leave_front_door_open: true в продакшене. Используйте сложные пароли и токены. Если ваш Node-RED доступен из интернета (через безопасный портал WireGuard VPN — это идеально), обязательно

Понравилась статья?

Поставьте лайк и сохраните полезный материал в закладки.

Комментарии (0)
Добавить комментарий
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Home Assistant: А есть ли аналоги?
Home Assistant
09.09.2026
Home Assistant: А есть ли аналоги?
Сравниваем Home Assistant с Aqara, Яндексом, OpenHAB, Domoticz и другими платформами умного дома. Разбираем локальное управление, интеграции, сложность настройки и
Xiaomi Miot Auto в Home Assistant: установка, настройка и подключение устройств Xiaomi
Home Assistant
09.09.2026
Xiaomi Miot Auto в Home Assistant: установка, настройка и подключение устройств Xiaomi
Подробное руководство по интеграции Xiaomi Miot Auto в Home Assistant: установка через HACS, настройка облачного и локального подключения, решение типичных ошибок и
Matter и Thread в Home Assistant: новый стандарт умного дома 2024
Home Assistant
31.03.2026
Matter и Thread в Home Assistant: новый стандарт умного дома 2024
Полное руководство по настройке Matter и Thread в Home Assistant. Подключаем устройства, настраиваем сеть, тестируем работу. Новый стандарт умного дома своими руками.
LocalTuya. Перепрошивка розеток Tuya: Как отвязать розетку от облака.
Home Assistant
31.08.2026
LocalTuya. Перепрошивка розеток Tuya: Как отвязать розетку от облака.
Tuya-экосистема — это удобно, дёшево и, на первый взгляд, безальтернативно. Но у любого облачного сервиса есть обратная сторона: зависимость от серверов производителя,
Sonoff Zigbee 3.0 USB Dongle Plus в Home Assistant: настройка ZHA и Zigbee2MQTT
Home Assistant
02.09.2026
Sonoff Zigbee 3.0 USB Dongle Plus в Home Assistant: настройка ZHA и Zigbee2MQTT
Настраиваем Sonoff Zigbee 3.0 USB Dongle Plus в Home Assistant: пошаговые инструкции для ZHA и Zigbee2MQTT, типичные ошибки, советы по стабильной работе Zigbee-сети.
Второй координатор Zigbee2MQTT: зачем нужен и как настроить
Home Assistant
03.09.2026
Второй координатор Zigbee2MQTT: зачем нужен и как настроить
Пошаговая настройка второго координатора Zigbee2MQTT в Home Assistant: зачем он нужен, как избежать конфликтов, типичные ошибки и проверка результата.

Войдите в аккаунт, чтобы пользоваться закладками, сообщениями и другими возможностями сайта.