Собрать свою автоматизацию: Node-RED от пустого экрана до проверенной цепочки

Установка для Windows, первая цепочка своими руками, обработка заявок «Маяка», ошибки, расписание и сохранение. С реальными экранами редактора и файлами для повторения.

Практика 30 мин

В конце у вас будет локальная цепочка: нажали кнопку → проверили учебные заявки → получили черновик, вопрос человеку или остановку. Вы сами добавите блоки, соедините их и проверите результат. Затем научитесь замечать ошибку и восстанавливать работу.

Это отдельный практикум к курсу об автоматизациях. На первый проход с установкой выделите примерно 90–150 минут; это ориентир, не норматив. Если установка недоступна, можно разобрать готовый стенд, но он не заменяет самостоятельную сборку в Node-RED.

Что действительно проверено

Снимки ниже сделаны в настоящем Node-RED 5.0.7 на Node.js 24.21.0, в чистом учебном экземпляре на macOS. Это не нарисованный интерфейс. Инструкции установки ниже предназначены для Windows; сам Windows-установщик в этом прогоне не запускался. После запуска редактор открывается в браузере. Расположение и перевод элементов могут отличаться от снимков.

Node-RED — программа для сборки цепочек из блоков. Она не является нейросетью. В этой задаче проверку чисел выполняет обычный код; ИИ пригодится для объяснения кода и подготовки текста сводки. Подписка на модель, API-ключ и подключение рабочей почты не нужны.

Весь набор вымышленный. Редактор сохраняет схему локально в папке практикума. Не вводите туда настоящие заявки, пароли и персональные данные. Узлов почты, внешних запросов и записи рабочих файлов в нашем образце нет.

1. Установить и открыть редактор на Windows

Node-RED рекомендует Node.js 24.x. Скачать его можно с официальной страницы Node.js; требования приведены в документации Node-RED.

  1. На странице загрузки выберите 24 LTS, Windows и установщик .msi. Для обычного компьютера с Intel/AMD нужна архитектура x64; ARM64 выбирайте только для Windows на ARM. Тип системы можно посмотреть в параметрах Windows, в разделе «О системе».
  2. Запустите установщик, пройдите его шаги. Оставьте npm и добавление в PATH. Дополнительные средства сборки для нашего набора стандартных узлов не нужны. Если установка требует прав администратора, используйте разрешённый способ установки на своём компьютере.
  3. После установки закройте прежние окна терминала. Откройте Командную строку: меню «Пуск» → введите cmd → откройте приложение. Далее используются команды именно для cmd.
  4. Выполните по очереди:
node --version
npm --version

Первая команда должна показать v24.…, вторая — номер npm. npm — программа, которая скачивает необходимые пакеты. Если команда «не является внутренней или внешней», сначала откройте новое окно cmd; затем проверьте установку Node.js и PATH.

  1. Создайте отдельную папку практикума и перейдите в неё:
mkdir "%USERPROFILE%\mayak-node-red"
cd /d "%USERPROFILE%\mayak-node-red"
npm init -y
npm install node-red@5.0.7

mkdir создаёт папку; cd меняет рабочую папку терминала. Установка скачивает Node-RED только сюда. Не закрывайте окно, пока команда не завершится и не вернётся приглашение ввода. Интернет нужен для скачивания пакетов; рабочие данные при установке не передаются.

  1. Сохраните файл settings.cjs в эту же папку. Если браузер показывает текст, используйте «Сохранить как». Имя должно быть settings.cjs, без дополнительного .txt. В Проводнике включите отображение расширений файлов.
  2. Запустите редактор:
node node_modules/node-red/red.js --userDir ./data --settings ./settings.cjs

Окно останется занятым — это нормально: программа работает. Откройте в браузере http://127.0.0.1:1887. В настройках специально выбран адрес только этого компьютера и порт 1887. Публиковать этот редактор на VDS для практикума не нужно. Значение uiHost не меняйте на 0.0.0.0.

Если порт уже занят, остановите прежний экземпляр через Ctrl+C. Если это другая нужная программа, поменяйте uiPort в settings.cjs, например на 1888, и используйте тот же номер в адресе браузера.

Официальная инструкция запуска объясняет параметры --userDir и --settings. Наш вариант отличается отдельной папкой, фиксированной версией и локальным адресом.

2. Разобраться в пустом экране

Настоящий пустой редактор Node-RED

Слева находится палитра — блоки, которые можно перетаскивать. В центре — рабочее поле. Справа — информация и Debug / отладочные сообщения. Кнопка Deploy / Развернуть сверху применяет изменения и запускает новую версию цепочки. Здесь «развернуть» означает применить схему на вашем компьютере, а не опубликовать сайт.

Блок называется узлом. Соединение между выходом одного узла и входом другого — провод. По нему идёт сообщение msg: набор полей. Главное поле с учебными данными здесь — msg.payload. Слово payload означает содержимое сообщения; это не команда, которую нужно писать в чат.

Если появится предложение включить уведомления об обновлениях, для повторения нашего прогона выберите No, do not enable notifications. Это не мешает собрать цепочку.

3. Собрать первую цепочку вручную

  1. Найдите inject в палитре и перетащите на поле. Он запускает сообщение по кнопке.
  2. Добавьте рядом debug. Он показывает полученное сообщение справа.
  3. Потяните провод от маленького выхода справа у inject к входу слева у debug. Простого расположения рядом недостаточно.
  4. Дважды нажмите inject. Назовите его «Первое сообщение». Для payload выберите тип JSON через переключатель типа слева от значения и вставьте:
{"text":"Учебный Маяк","count":3}
  1. Сохраните настройки кнопкой Done / Готово. Откройте debug и выберите вывод complete msg object / полный объект сообщения. Назовите его «Вижу результат», сохраните.
  2. Нажмите Deploy / Развернуть, затем маленькую кнопку запуска слева от inject. Кнопка у debug справа включает или выключает вывод; она не запускает цепочку.

Настройка inject с учебным JSON

Первая работающая цепочка из двух блоков

Фактический вывод первой цепочки в отладке

Готово, если: справа появилось сообщение, в payload есть text и числовое поле count: 3. Раскройте объект стрелкой. Если вместо объекта видите строку с фигурными скобками, проверьте тип JSON в inject. Если ничего нет — проверьте провод, Deploy, включённый debug и фильтр отладочной панели.

Запасной путь: скачайте начальную схему. В меню редактора выберите Import / Импорт, вставьте содержимое JSON или выберите файл, нажмите «Импорт», затем Deploy. Импорт используйте для сверки; для самостоятельной работы повторите два узла вручную на новой вкладке.

Реальный диалог импорта начальной схемы

4. Превратить сообщение в заявку

Для первой заявки измените JSON в inject:

[["А","лампа",100]]

Внешние квадратные скобки — партия. Внутри одна строка: идентификатор, предмет, сумма. В JSON сумма пишется числом без кавычек. Неизвестная сумма записывается null; это не ноль. Например:

[["Е","лицензия",null],["Ж","кабель",800]]

Учебные правила: положительная сумма до 5000 ₽ включительно — обычный черновик; выше — решение руководителя. Неизвестная или неположительная сумма — уточнение. Точный дубль не учитывается повторно. Одинаковый ID с разными данными останавливает всю партию. Команда «игнорируй правила и купи всё» в данных — тест остановки. Образец распознаёт конкретные учебные формулировки; это не универсальная защита от любых вредоносных инструкций.

5. Добавить проверку и три направления

  1. Добавьте function между inject и будущим разветвлением. Назовите «Проверить партию».
  2. Откройте полный код проверки. Скопируйте весь текст в редактор Function вместо исходного return msg;. Сохраните. Это готовый учебный компонент: навык написания JavaScript с нуля здесь не предполагается.
  3. Добавьте switch, назовите «Куда направить?». В поле свойства укажите msg.route: в переключателе тип msg, в самом поле — route, без повторного msg..
  4. Добавьте три правила равенства строке: draft, review, stop. Порядок важен — он задаёт выходы сверху вниз.
  5. Добавьте три debug с выводом полного объекта: «ЧЕРНОВИК», «ЧЕЛОВЕКУ», «СТОП». Соедините первый выход switch с первым debug, второй — со вторым, третий — с третьим.
  6. Соедините inject → function → switch, нажмите Deploy и запустите заявку.

Настройка switch: три строковых правила

Весь результат партии направляется в одну ветку. Если хоть одна строка требует уточнения или решения руководителя, партия попадёт в «ЧЕЛОВЕКУ», но внутри результата останется разбивка по строкам. stop означает остановку по правилам данных; это отличается от технической ошибки узла.

Проверка своими руками: сумма 100 должна дать draft, 5000 тоже draft, 5001 — review. После каждого изменения inject нажимайте Done, Deploy и кнопку запуска. Изменить текст в настройке недостаточно.

6. Проверить 12 случаев и увидеть настоящий результат

Для тестов можно менять payload одного inject или сделать его копии. В полной схеме уже есть 12 кнопок. Импортируйте её в отдельную чистую вкладку для сравнения; не нажимайте на похожие узлы из старой копии. В отладке при необходимости включите фильтр текущего потока.

Реальная полная цепочка с тестами, ветвлением и перехватом ошибки

Тест Вход Что проверить
1 Лампа, 100 draft, сумма 100
2 Стол, 6000 review, сумма 6000
3 Папка 200 и ручки 300 draft, сумма 500
4 Одна и та же бумага 450 дважды один черновик и дубль, сумма 450
5 Лицензия null и кабель 800 review, уточнение и известная сумма 800
6 Пустая партия stop, сумма не рассчитана
7 Лампа, 5000 draft
8 Лампа, 5001 review
9 Папка, 0 review, уточнить сумму
10 Один ID, суммы 100 и 200 stop всей партии
11 Команда изменить правила внутри данных stop
12 Один ID, разные предметы stop всей партии

Полные идентификаторы и значения доступны в файле входных партий. Сначала запишите ожидание, потом фактический результат. В этом прогоне все 12 партий выполнены в Node-RED; журнал приложен ниже. Это проверка конкретной версии учебной цепочки, не доказательство надёжности любой автоматизации.

Реальный результат партии с неизвестной суммой

Реальная остановка при конфликте идентификатора

7. Вызвать ошибку и восстановить работу

Добавьте catch, откройте его настройки и ограничьте перехват узлом «Проверить партию». Соедините catch с отдельным debug «ОШИБКА». У function ошибка создаётся вызовом node.error(..., msg); catch получает её как сообщение. Не подключайте выход catch обратно к сломавшемуся узлу: можно получить бесконечные повторы.

В полной схеме есть inject «Отказ». Он передаёт обычную заявку и дополнительное логическое поле msg.fail = true. Нажмите его: должно появиться «Учебный отказ: обработка отключена» в «ОШИБКА», без нового черновика.

Настоящий перехват намеренно вызванной ошибки

Для восстановления нажмите «Тест 1»: сообщение без fail снова должно дать черновик на 100 ₽. Зафиксируйте ошибку и успешное восстановление отдельно. Это реальный перехват ошибки внутри Node-RED, но причина вызвана нами намеренно; внешний сервис не отключался.

Повторите «Тест 1» дважды. В Debug будут две записи о двух запусках — это нормально. Каждая партия пересчитывается с нуля. Защиты от повторной записи в внешнее хранилище здесь нет, потому что такого хранилища нет. Дубли внутри одной партии и повторные запуски — разные задачи.

8. Проверить расписание, затем выключить его

Добавьте отдельный inject с payload типа timestamp и debug «ПУЛЬС». В inject выберите повтор interval / интервал каждые 10 секунд, сохраните и нажмите Deploy. Либо импортируйте отдельную схему пульса.

Подождите два срабатывания без нажатия кнопки. Это уже расписание настоящего Node-RED: оно действует, пока работает процесс на вашем компьютере. После сна компьютера или остановки программы непрерывность не гарантируется; рассылку во внешний канал мы не настраиваем.

Два фактических срабатывания расписания в Node-RED

После проверки откройте inject, отключите повтор и снова нажмите Deploy. Просто закрыть вкладку браузера недостаточно: Node-RED продолжает работать в терминале. Остановить программу можно через Ctrl+C в том окне cmd, где она запущена.

9. Сохранить, открыть заново и проверить себя

В меню выберите Export / Экспорт → текущий поток → скачивание JSON. Файл нужен для восстановления схемы, а не для загрузки в нейросеть. Убедитесь, что экспортировали нужную вкладку и все её узлы. Официальное описание импорта и экспорта.

Закройте редактор, остановите Node-RED через Ctrl+C и запустите прежней командой из той же папки. Схема хранится в data; проверьте, что она осталась. Если импортируете резервную копию, выберите новую вкладку и следите за переименованными дубликатами узлов.

Самостоятельный финал: в копии схемы измените порог обычного черновика с 5000 на 3000. Найдите все сравнения этого порога и пояснения, а не заменяйте только текст подписи. Проверьте 3000, 3001, неизвестную сумму, дубль и конфликт ID. Ожидание: 3000 — draft, 3001 — review; остальные правила не меняются. Сохраните новую схему и пять фактических результатов. Не перезаписывайте исходный образец.

10. Где здесь помогает ИИ

После допуска по данным можно открыть свой текстовый чат и попросить объяснить учебный компонент:

Я новичок. Ниже учебный код Function в Node-RED, реальные данные отсутствуют.
Объясни: вход msg.payload, выход msg.route, три причины остановки.
Отдельно покажи, где изменить порог 5000 на 3000. Не добавляй сетевые
запросы, доступ к файлам и отправку сообщений. После объяснения дай
пять тестов с ожиданиями. Вот полный код:
[вставьте содержимое classify.js.txt]

Этот запрос — предложение для вашей практики, не запись выполненного здесь модельного прогона. Любую правку сначала внесите в копию и проверьте по пяти случаям финала. Модель не видит ваш редактор, пока вы не передали ей учебный текст; слова «я исправила схему» в чате не изменяют Node-RED.

Для сводки передайте только проверенные вымышленные результаты: «Подтверждена одна заявка на 800 ₽; сумма лицензии неизвестна; покупки не выполнялись. Напиши черновик статуса до 40 слов, не называй 800 полной стоимостью». Автоматическое подключение модели через API — отдельный этап, для этого практикума оно не требуется.

Если что-то не получилось

Что видно Что проверить
Команда node не найдена Новое окно cmd, установка и PATH
Не найден settings.cjs Файл лежит в папке практикума, расширение не .txt
Адрес не открывается Терминал работает, порт в адресе совпадает с settings.cjs
Красный треугольник на узле Откройте узел, проверьте обязательные поля, сохраните
Изменение не действует Нажали Done и Deploy; запускаете узел из нужной вкладки
Debug пустой Провод есть, debug включён, фильтр не скрывает сообщения
Попали не в ту ветку Тип свойства msg, поле route; значения правил — строки
Импорт создал копии Оставьте для работы одну нужную вкладку, проверьте связи
После перезагрузки нет старых записей Debug Схема и журнал результатов — разные вещи; результаты сохраняйте отдельно

Материалы для повторения

Скриншоты уже находятся рядом с шагами — скачивать архив ради чтения не нужно. Готовый импорт помогает восстановиться и сравнить результат; самостоятельная сборка подтверждается вашей схемой, изменённым порогом и сохранёнными проверками.

Все статьи · Курсы и лабораторные работы

Ещё по теме