Створення власних вузлів в Node-RED¶
Мета: Здобуття навичок розробки власних модулів в середовищі Node-RED. Практичне використання здобутих навичок роботи з системою модулів для створення власних ефективних рішень.
Виконавець:
студент групи КН-41
Кривобоков Микита Олександрович
Завдання¶
- Спроектуйте власний вузол, опишіть задачу яку він має вирішувати, та алгоритм рішення поставленої перед ним задачі.
- Використовуючи наданий в якості прикладу репозиторій, реалізуйте спроектований вузол.
- Додайте вузол в якості пакету (інструкція наведена в документації). Створіть тестовий потік, який буде містити базові приклади застосування вашого вузла. Оформіть візуальну складову новоствореного вузла (колір, іконка, опис), додайте базовий опис в діалог конфігурації.
- Протестуйте роботу новоствореного вузла, виправте потенційні помилки. Готовий результат повинен бути доступний в якості github репозиторію, посилання на нього має бути закріплено в звіті.
- Складіть звіт про виконану роботу, в якому необхідно описати виконану роботу.
Хід роботи¶
Проєктування вузла¶
Проблема: Використання вузлів типу change в деяких випадках потребує перетворити одне і те саме поле в різні результати, проте, із збільшенням кількості таких проміжних операцій ("маперів"), збільшується і кількість компонентів. Інший підхід передбачає винисення компонентів у окремі під-потоки — пробле залишиться так, як вона була делегована.
Приклад:
Ідея: Об'єднати компонент change (операція) та switch (результати).
Візуальне представлення¶
flowchart LR
A[Вхідний об'єкт] --> B{Операції}
B --> C1[Операція 1<br>Результат 1]
B --> C2[Операція 2<br>Результат 2]
B --> C3[Операція 3<br>Результат 3]
C1 --> D1[Порт 1]
C2 --> D2[Порт 2]
C3 --> D3[Порт 3]
Плюси:
- Маштабованість та читабельність потоків, є вирішенням проблеми коли набір відносно простих операцій приймають однаковий об'єкт і результат розподіляють.
Мінуси:
- Не підходить для складної логіки через свою абстракцію у вигляді поєднання двох компонентів.
Приклад місця використання компонента¶
Це не ідеальне місце застосування компоненту transform-switch, проте демонструє гнучкість даного компонента.
Найбільшої ефективності від цього компонента можна отримати у ситуації розподілу, коли вхідний компонент може мати різні варіації себе після мапінгу — цей компонент спрощує даний процес без потреби створювати нові під-потоки.
Уточнення до модифікації
Наразі компонент має базові операції по типу set, move, delete, change та passthrough що нічого не робить з об'єктом і прокидує далі. Проте, найбільш ефективним був цей компонент якщо б він містив реалізацію JSONata, це дозволило спростити в деяких місцях потоки, враховуючи що це 'прості' формули.
Дебаг трансформатора¶
Вхідні дані
Порт виходу 1
Без змін (об'єкт інший але модифікація в порту 1 відсутня)
Порт виходу 2
Змінено topic на stats що цілком очікувано від другого порта
Висновок¶
Здобувши навички розробки власних вузлів в Node-RED, відкрили нові горизонти для організації та проєктування вузлів. Створення кастомного вузла дозволяє оптимізувати роботу з потоками даних та підвищити гнучкість системи. Досвід розробки та тестування власного компонента поглибив розуміння архітектури Node-RED і розширив навички роботи з модульною структурою платформи.





