NodeREDGuidUKR

ДОВІДНИК З NODE-RED українською мовою

Статті

Розробка платформи на базі Low/No-Code інструментів

Олександр Пупена 31.07.2023

Декілька місяців тому я вирішив спробувати створити власними силами свою IoT платформу (IoT - Interent of Things, Інтернет речей). Це начебто і не моя справа, як спеціаліста з автоматизації, - створювати платформи. Однак платформа була не єдиною і мабуть не основною ціллю, я хотів пройти шлях розроблення чогось потрібного ринку IoT та IIoT (Industrial IoT) з використанням Low/No-Code інструментів щоб:

Тут, на щастя, з’явився замовник, якому якраз це і потрібно було. Сьогодні (31.07.23) я презентував йому альфа-версію, і презентація пройшла успішно. Звісно не без косяків, але на те вона і “альфа”. У цій статті я вирішив зробити підсумки за весь цей час, так як у своїх постах на каналах практично нічого про проєкт не говорив. Платформа ще сира, але з технічної точки зору багато чого для мене стало новим і принаймні для себе хотів би це зафіксувати.

Про IoT платформу: точка зору кінцевого користувача

Перш за все, треба розказати про те, що тут я називаю IoT платформою. На даний момент це SaaS (хмарний застосунок як сервіс), який надає можливість підключення IoT пристроїв конкретного типу через MQTT з можливістю віддаленого контролю та керування (керування поки не реалізовано) через WEB-браузер, що адаптований під мобільні пристрої. З точки зору кінцевого користувача, на даний момент платформа надає такі можливості:

image-20230731154617002

рис.1. Перегляд пристрою по QR-коду

image-20230731142226833

рис.2. Головна сторінка користувача зі списком пристроїв

image-20230731142255849

рис.3. Інформація про пристрій

Додатково реалізована:

Звісно, це не весь запланований функціонал, це тільки перші кроки. У майбутньому планується наростити.

Про IoT платформу: точка зору адміністратора

Найбільше всього роботи пішло на розроблення основи платформи. Про це я напишу трохи нижче, тут лише зауважу, що для IoT платформи розроблено два інтерфейси: один для кінцевого користувача, який я описав вище, а інший - для адміністратора системи. Наразі “адмінка” надає такі можливості:

image-20230731161236846

рис.4. перегляд та редагування бази даних

image-20230731161543765

рис.5. перегляд та редагування пристроїв для користувача

image-20230731142307988

рис.6. Керування пристроями

У доповнення до цього до платформи підключений Телеграм-бот, який наразі сповіщає адмінів про стан пристроїв.

image-20230731162220766

рис.7. Телеграм бот для адміністраторів

Знову ж таки, планується нарощувати і тут функціональність. Це така собі “стартова позиція”.

Чому “Платформа”?

Аксакали в темі IoT скажуть що це зовсім не платформа, а кінцеве рішення SaaS. Наразі це так і є, але в основі стоять механізми, які нададуть можливість розробникам самостійно розробляти свої типи пристроїв і підключати їх. Звісно, це буде не в межах цього проекту, бо тут це і не потребується. Тим не менше, при розробленні прототипу мене цікавило на скільки це можливо, тому я випробував певні механізми і вони показали свою працездатність. Тут поки зарано розповідати про все, поки скажу що типи означуються через JSONata, і цю ідею я піддивився у IBM Clouds IoT.

Тому, наразі це дійсно не платформа, але я вирощую її саме в цьому напрямку :) .

Платформа на платформі: Low/No-Code інструментарій UBOS.tech

Прийшов час заглянути під капот. Це все реалізовано на дуже крутій (без перебільшення) LoCode/No-Code платформі , яку розробили і підтримує українська компанія UBOS.tech. Я надзвичайно вдячний долі і розробникам UBOS.tech що у мене з’явилася така можливість! Подяки ще будуть нижче, зараз опишу трохи про платформу і що наразі там використовується.

Отже це хмарна платформа, яка надає можливість легко розгортати та поєднувати усі необхідні для розроблення Веб-застосунків сервіси:

image-20230731165000748

рис.8. Доступні типи сервісів на UBOS.tech станом на 31.07.2023

Кількість сервісів означується потребами і звісно впливають на витрати. Типи сервісів планується розширювати в наступних версіях. На скільки мені відомо, в майбутньому добавиться InfluxDB, а пізніше можливо Grafana.

Створення сервісів відбувається дуже легко - добавив, назвав і дав змінні середовища за необхідності. Далі все робиться відповідно до правил роботи з сервісами. У Node-RED все як зазвичай, нічого особливого - і це добре. UI editor розроблений на основі Appsmith і має багато додаткових можливостей. Хоча, на скільки мені відомо під капотом це вже не зовсім Appsmith, але не буду розповідати, бо можливо це комерційна таємниця :). Наприклад, там є віджет, куди можна вписувати свою логіку на базі React. Ну а з базами даних нічого особливого. Хоча, як на мене, варто б було добавити можливість прив’язки до них консолі для адміністрування.

image-20230731164400893

рис.9. Середовище розроблення UBOS.tech

Здобутки в компетентностях та досвід

Як я вже писав на початку, за проект взявся для того щоб “покачати мускули”. Такий пул технологій та рішень за такий короткий час я рідко освоював. Тут перерахую тезисно:

Щодо отриманого досвіду, наведу кілька цікавих моментів:

Стовідсотково щось ще забув написати. Але основні технології та здобутки перерахував. Крім того, я багато часу витратив на розроблення структури платформи. Я вже трохи втомив вас писаниною, тому залишу це на окрему статтю. Тим більше, що тут тільки зачатки.

Резюме: що далі?

Підсумовуючи, варто зазначити, що це тільки початок. Я сподіваюсь і планую, що даний MVP дійде до стадії використання кінцевим споживачем. Паралельно є в планах запустити інший проект, але вже з більш універсальними механізмами, що буде більш схожим на платформу. Слід також зазначити, що “платформенність” рішення зробило реалізацію складніше на кілька порядків. Після великої кількості проведених робіт, будь яке індивідуальне рішення під потреби замовника виглядатимуть набагато простіше. Універсальність при високій функціональності - це ще та задачка.

Використання Low/No-Code для розроблення WEB-застосунків, це як використання програм PLC та SCADA при розробленні програмної частини в системах автоматизації технологічних процесів. Перевірено на власному досвіді - це під силу інженерам-програмістам систем керування. Тут не стільки треба вчити інструменти, як технології. Так що, зберемося з силами, і розробимо курси. Звісно платформу розробляти це не завдання авоматників, але індивідуальні рішення IIoT для конкретного підприємства - чому б і ні, якщо є такі інструменти?!

Подяки

Перш за все дякую команді UBOS.tech за надану можливість попрацювати на безкоштовній основі з їх сервісами а також за потужну технічну підтримку (для мене виділили окремий канал підтримки). Завдяки команді UBOS.tech я багато чому навчився і, взагалі, отримав можливість зануритися у світ Low/No-Code. До знайомства з їх платформою я користувався інструментами стеку IIoT: Node-RED, InfluxDB, Grafana і думав що Low/No-Code то для IoTників і автоматників. Зараз я розумію, що той же Node-RED має значно ширшу область застосування. UBOS.tech є співзасновником спільноти FlowMates, мета якої “розвивати low/no-code культуру, аби організації могли створювати та розгортати користувацькі додатки та інше програмне забезпечення, необхідне для диджиталізації внутрішніх бізнес-процесів, без глибоких знань у галузі програмування”. Саме вони надали мені можливість потусити на їх івентах, за що вдячний і UBOS.tech і іншим співзасновникам FlowMates.

По друге, дякую замовнику, який погодився “почекати”, поки я виділяв крихти часу на розроблення за залишковим принципом. Є багато інших пріоритетних завдань, тому за цей період я виділяв для цього проекту невеликі кванти часу. Зараз, коли вже видно якісь результати, працювати психологічно стало легше.

Ну і підписуйтеся на мої канали в: