Перейти к основному контенту

Новая страница

Глава 1: Node-RED — Знакомство, развертывание в Docker и интерфейс

Node-RED — это инструмент визуального программирования, разработанный IBM для связывания аппаратных устройств, API и онлайн-сервисов. Вместо написания сотен строк кода на JavaScript/Python, в Node-RED вы строите логику автоматизации графически, соединяя между собой готовые кубики (ноды) линиями-связями.

Для домашнего сервера это идеальный "диспетчер задач": он может мониторить состояние Docker-контейнеров, слать алерты в Telegram, управлять умным домом (Home Assistant) или дергать веб-хуки по расписанию.


1. Развертывание Node-RED через Docker Compose

Запуск Node-RED в Docker гарантирует, что приложение будет изолировано от основной системы Debian, а все его данные, кастомные ноды и потоки сохранятся в одной конкретной папке в вашей директории /home (которую мы, к слову, бэкапим через Restic).

  1. Создайте папку для проекта в домашней директории:
    mkdir -p ~/nodered/data && cd ~/nodered
  2. Выдайте права на папку data внутреннему пользователю Node-RED в Docker (у него ID 1000, как и у вашего пользователя в Debian, но лучше перестраховаться):
    sudo chown -R 1000:1000 ~/nodered/data
  3. Создайте файл конфигурации Docker Compose:
    nano docker-compose.yml
  4. Вставьте в него следующий манифест:
    version: '3.8'
    
    services:
      node-red:
        image: nodered/node-red:latest
        container_name: node-red
        environment:
          - TZ=Europe/Moscow
        ports:
          - "1880:1880"
        volumes:
          - ./data:/data
        restart: unless-stopped
  5. Запустите контейнер в фоновом режиме:
    sudo docker compose up -d

Теперь откройте браузер и перейдите по адресу: http://IP_ВАШЕГО_СЕРВЕРА:1880. Перед вами откроется рабочая среда Node-RED.


2. Анатомия интерфейса Node-RED

Интерфейс Node-RED лаконичен и разделен на три основные зоны:

  1. Левая панель (Палитра / Palette): Список всех доступных вам узлов (Nodes). Они разбиты по категориям: input (входные), output (выходные), function (функции для обработки данных), network и т.д.
  2. Центральная область (Рабочее пространство / Workspace): Место, куда вы перетаскиваете мышкой узлы и соединяете их проводами. Каждая вкладка здесь — это отдельный Поток (Flow).
  3. Правая панель (Инфо и Отладка / Sidebar): Важнейшая зона. Переключите её на вкладку с иконкой жука (Debug). Сюда будут валиться все логи и сообщения, помогая понять, как работает ваша автоматизация.

3. Главное правило: Кнопка Deploy

ВАЖНО: В отличие от классических программ, Node-RED не применяет изменения на лету. Вы можете нарисовать огромную схему, но она не заработает, пока вы не нажмете ярко-красную кнопку Deploy в правом верхнем углу экрана. Нажали Deploy — логика ушла в память и начала выполняться.


4. Твой первый поток: Hello World за 10 секунд

Давай проверим, что система работает, и поймем базовый принцип передачи данных.

  1. Найдите на левой панели узел inject (категория input, на нем нарисована кнопка) и перетащите его в центр экрана. Этот узел генерирует событие по нажатию на его кнопку.
  2. Дважды кликните по нему. В поле Payload выберите тип string (строка) и напишите "Привет из Node-RED!". Нажмите Done.
  3. Найдите узел debug (категория output, зеленого цвета) и перетащите его правее. Этот узел выводит данные в правую панель отладки.
  4. Зажмите левую кнопку мыши на сером квадратике (выходе) узла inject и протяните провод к серому квадратику (входу) узла debug.
  5. Нажмите кнопку Deploy в правом верхнем углу.
  6. В правой панели откройте вкладку Debug (иконка жука). Нажмите на квадратную кнопку слева от узла inject на схеме.

Результат: В панели отладки мгновенно появится сообщение "Привет из Node-RED!". Вы только что создали и запустили свою первую автоматизацию без единой строчки кода.