PLC-Modbus-NodeRED-GoogleSheet

Майстер-клас: відправка змінних з ПЛК до GoogleSheet з використанням Node-RED.

Цей майстер-клас призначений для швидкого старту в розумінні рішень Промислового Інтернету речей з використанням безкоштовного інструменту Node-RED.

PDF-версія

Відео-версія (рос.мова)

Крок за кроком Ви будете знайомитися з інструментами та сервісами, які дадуть Вам можливість збирати дані з ПЛК (програмованого логічного контролеру) і передавати їх в хмарний застосунок Google Sheet. Якщо Ви коли-небудь програмували ПЛК, то цей майстер клас саме для Вас.

Для проходження цього прикладу Вам потрібно мати:

  • ПК з ОС, які підтримують Node-RED (наприклад Windows 7 та вище, для підтримки версій інших ОС ознайомтеся з вимогами)

  • аккаунт Google (для роботи з Google Sheet)

  • доступ до Інтернет

  • велике бажання пройти цей майстер клас

  • біля години часу, ну можливо двох чи трьох, як піде

Якщо Ви ще не передумали -- вперед! Але дам Вам кілька порад. Якщо Ви швидко втомлюєтеся від читання, можете перший раз пропустити усі пояснення, а просто йти за командами (вони виділені опцією, які на роздруківках можна мітити галочками). Якщо Вам все ж таки цікаво чому це так працює, або щось піде не так, тоді прийдеться трохи почитати тексту.

1. Інсталювання Node-RED під Windows

У цьому майстер-класі використовується програмна платформа Node-RED. Редактор Node-RED функціонує на основі браузера. Власне застосунок Node-RED виглядає як об’єднані в потоки (flow) вузли (node), що вибираються з палітри. Після редагування потоки можуть бути розгорнуті в середовище виконання, яке побудоване на Node.js. Потоки, створені в Node-RED, зберігаються за допомогою JSON, які можна легко імпортувати та експортувати для спільного використання з іншими.

Все, замість того, щоб розповідати що таке "червоний вузол" чи "вузлова червінь", краще спробуємо як це працює.

Але ні, прийдеться таки трохи розказати про фундамент. Node-RED функціонує на основі Node.js -- платформи для створення мережних застосунків серверів на мові JavaScript. Тобто середовище Node.js виконує код JavaScript і може виконуватися на різних операційних системах. Нижче показано як встановити Node.js для Windows (Windows 10, Windows 8, Windows 7).

1.1. Завантаження Node.JS

1.2. Встановлення Node.JS

  • Запустіть на виконання msi-файл від імені адміністратора і встановіть Node.JS. При виклику діалогових вікон все залишати за замовченням (ну як завжди, "далі", "далі"...).

1.3. Визначення версії npm

Програмісти, що використовують Node.JS розробили (і розробляють) велику кількість бібліотек, які доступні усім для використання. Ці бібліотеки доступні у вигляді пакунків Node.JS. Для спрощення керування цими пакунками (добавлення, видалення, оновлення і т.п.) використовується менеджер пакунків npm (Node Package Manager). Для середовища виконання Node.js утиліта npm є менеджером пакунків за замовчуванням, і включає в себе клієнт командного рядка (який так само називається npm) та онлайн-базу даних публічних та приватних пакунків, яка називається реєстром npm. Доступ до реєстру доступний з клієнта, а доступні пакунки можна переглядати та шукати через веб-сайт npm.

  • Після інсталяції запустіть командний рядок (CMD), у якому введіть

node -v

  • повинно вивести версію Node.JS, після чого введіть

npm –v

  • повинно вивести версію npm

1.4. Інсталяція Node-RED

Node-RED по суті є також комплектом взаємопов'язаних пакунків. Тому його інсталювання проводиться з використанням npm з командою install.

  • Наберіть в командному рядку

npm install -g --unsafe-perm node-red

після чого почнеться процедура інсталяції

З іншими деталями встановлення за необхідності можна ознайомитися за посиланням

1.5. Запуск Node-RED.

  • Після інсталяції запустіть Node-RED з командного рядка

node-red

  • Можуть бути показані повідомлення про пропозицію розблокування брандмауером, з якими треба погодитись.

Ура! Нарешті можна не дивитися на командний рядок, і не лякатися цих незрозумілих повідомлень. Але закривати його не можна!

1.6. Відкриття редактору.

Редактор доступний на будь якому сучасному браузері. Зрештою застосунки Node-RED можна редагувати і з планшета або телефону. Але це не зручно ;-)

  • Відкрийте браузер, перейдіть до редактору Node-Red, за посиланням http://127.0.0.1:1880/

Зауважте! Для того, щоб Node-RED виконувався, вікно з командним рядком не можна закривати.

2. Знайомство з Node-RED

Створена програма на Node-RED виконується в середовищі виконання. Зрештою ця програма має текстовий вигляд у форматі JSON (JavaScript Object Notation), але для розробника вона представляється в графічному вигляді. Все як ми любимо! (але не всі з нас)

Програма в редакторі Node-RED виглядає як набір закладок, які звуться потоками (Flow), що виконуються як умовно незалежні підпрограми, які навіть мають свої незалежні змінні. Програма в потоці являє собою набір вузлів (Node), які виконуються тільки тоді, коли на їх вхід приходить повідомлення. У свою чергу вузли, як правило, після обробки також формують повідомлення. Для того щоб вузли обмінювалися повідомленнями їх об'єднують інформаційними дротами (wires).

Таким чином, коли один вузол формує повідомлення, воно надходить усім іншим вузлам, які з ним пов'язані. Це приводить до їх виклику, у результаті якого вони формують повідомлення, які відправляються іншим вузлам і т.д.

2.1. Ознайомлення з редактором Node-RED.

  • Відкрийте в браузері редактор Node-RED, якщо він ще не відкритий. Ознайомтеся з його основними частинами (рис.1). Зауважте, що у кожній новій версії щось добавляється, і зовнішній вигляд може змінюватися.

2.2. Розміщення вузлів inject і Debug

Усі доступні типи вузлів відображаються на палітрі вузлів. Їх достатньо просто вибрати і розмістити на робочій області потоку.

Мабуть найбільш вживані вузли в Node-RED це inject (впорскування), які ініціюють передачу повідомлень, та debug (налагодження) - який відображає зміст повідомлення на панелі налагодження.

  • Виберіть з палітри і розмістіть на робочій області наступні вузли

  • common ->inject

  • common ->Debug

Зауважте, що у старших версіях Node-RED ці вузли можуть бути у інших розділах (input та output).

  • З’єднайте вузли між собою. Повинно вийти як на рис.2. Блакитні кружечки показують, що зміна в вузлах ще не відобразилася в середовищі виконання, так як змінена програма не була в ньому розгорнута.

2.3. Розгортання

При редагуванні потоку, зміни не одразу вступають в дію. Тобто під час редагування середовище виконання виконує попередню версію програми. Щоб повідомити середовищу Node-RED, що змінений код варто прийняти і запустити в середовищі виконання, необхідно зробити його розгортання (Deploy). Розгорнути можна як повністю весь проект так і тільки змінені частини.

  • В заголовку виберіть пункт Deploy->Full (див.рис.3), після чого натисніть Deploy (Розгортання).

рис.3. Вибір варіанту розгортання (Full, Modofoed Flows)

  • При вдалому розгортанні з’явиться відповідне повідомлення. А в робочому просторі вузли вже будуть без блакитних кружечків.

2.4. Відображення вікна повідомлень

  • Для перевірки роботи програми, на бічній панелі треба відобразити вікно Debug messages (налагоджувальні повідомлення ) шляхом натиснення кнопки з «жуком».

рис.4. Показати вікно повідомлень

  • Ліворуч вузла типу Inject з назвою «timestamp» є кнопка, яка приводить до ініціювання розрахунку ланцюжка вузлів, що починаються з нього. Натисніть на цю кнопку.

  • В результаті з’явиться повідомлення про успішне впорскування (Inject), а на панелі повідомлень з’явиться повідомлення зі значенням (рис.5).

Виведене значення по суті представляє відмітку часу, а саме кількість мілісекунд, що пройшла з 1980 року.

рис.5. Результат виконання програми

2.5. Відображення всього повідомлення

За замовчуанням, вузол debug виводить тільки корисне навантаження повідомлення.

  • Щоб вивести все повідомлення, зайдіть подвійним кліком на налаштування вузлу з іменем msg.payload і виберіть "complete msg object", після чого натисніть кнопку "Done".

рис.6. Налаштування виведення змісту всього повідомлення.

  • Знову виконайте розгортання проекту, після чого зробіть впорскування вузлом inject. Тепер виведеться вся структура повідомлення, яку можна розгорнути і подивитися усі поля.

рис.7. Виведення всього повідомлення.

На цьому прикладі розглянемо, як виконується програма. Але, якщо Вам нудно читати переходьте до п. 2.6.

Як ми уже зазначили, у більшості випадків перерахунок вузлів починається тоді, коли на його вхід подається повідомлення (message). Повідомлення – це прості об’єкти JavaScript (умовно структурні змінні), що можуть мати будь який набір властивостей. Тобто в даній програмі після перерахунку вузла з іменем timestamp буде сформовано об’єкт-повідомлення (msg), який буде переданий по інформаційному дроту іншому вузлу, а саме типу debug.

На вхід вузла з іменем timestamp повідомлення не надходять, бо він є ініціатором розрахунку. Всі вузли палітри що входять в групу вхідних є ініціаторами розрахунку. Ініціація вузлів типу Inject відбувається шляхом ручного запуску по кнопці, або через певні інтервали часу, що вказується у налаштуваннях вузлу. Ініціювання повідомлення -- це формування полів msg та відправка його іншим вузлам по інформаційним дротам.

Повідомлення, надіслане вузлом Inject, має властивості payload (корисне навантаження) та topic (тема). Ці два поля притаманні більшості змінних повідомлення msg. Кожен вузол в полі корисного навантаження вказує певне значення, яке у свою чергу може також бути об'єктом (структурою). Поле теми вказує на назву повідомлення. Така структура повідомлення притаманна протоколу MQTT, що робить Node-RED дуже зручним для використання в застосунках Інтернету речей (але тут про нього не будемо). Вузли, як правило, модифікують вхідні повідомлення і відправляють їх на свої виходи. Тому можна сказати, що повідомлення ініціюється вхідними вузлами, і модифікуються у процесі проходження через вузли поки не надійдуть до вихідного вузла.

Як вже було відмічено, за замовченням, Inject записує у властивість topic відмітку часу (timestamp – кількість мілісекунд, що пройшла з 1980 року).

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

рис.8. Налаштування вузлів у нових версіях Node-RED

рис.9. Налаштування вузлів у старших версіях Node-RED

  • Зробіть розгортання, та проаналізуйте зміст виведених у вікні Debug повідомлень.

Зовсім не по темі (оффтоп). Багато лабораторних робіт для студентів по дисципліні "Технології Індустрії 4.0" через рік прийшлося перероблювати, а деякі пункти повністю викидати. Хто зна, який матимуть вигляд наведені тут вікна вже завтра. Подумайте, наскільки все швидко змінюється, може не варто читати далі а шукати свіжішу версію? А... так, цей документ матиме ту саму адресу посилання, навіть якщо зміниться. Тоді все нормально, читайте далі.

Ну от, перше знайомство з Node-RED можемо вважати успішно завершеним!

3. Підключення та ознайомлення з модулем node-red-dashboard

Node-RED дозволяє інсталювати та обновляти палітру вузлів. Якби такої можливості не було, Ви б не читали цей документ, а я б не знав що таке Node-RED. Доповнення палітри можна робити через менеджер пакунків -- знову консольні вікна, і ненависні набори команд. Але в Node-RED є набагато зручніший для автоматника інструмент -- команда "Manage Palette" (рис.10).

рис.10. Запуск Manage palette

У даному пункті необхідно ознайомитися з можливостями пакунку node-red-dashboard , який дає можливість легко розробляти графічний інтерфейс користувача (GUI) на базі HTML простим розміщенням та налаштування вузлів Node-RED. Тому спочатку його треба інсталювати.

3.1. Інсталювання node-red-dashboard

  • В налаштуваннях палітри (див.рис.10) на вкладці Install в поле фільтру введіть node-red-dashboard і інсталюйте даний пакет (рис.11):

  • натисніть кнопку install

  • підтвердіть інсталювання у вікні повідомлення

  • після інсталювання з'явиться перелік встановлених вузлів, після чого закрийте вікно керування палітрою

рис.11. Вибір Manage palette

  • Перевірте чи з’явився в палітрі розділ «Dashboard».

Тепер ми зможемо розробляти Веб-інтерфейс для користувача. Зауважте, що під користувачем тут розуміється не тільки і не стільки розробник, а саме той, хто буде використовувати Вашу розробку.

3.2. Добавлення закладок

  • Після встановлення у бічній панелі з’явилася нова іконка з зображенням діаграми (рис.12) , яка перемикає на панель конфігурування графічного інтерфейсу користувача. Натисніть на ній.

рис.12. Панель налаштування графічного інтерфейсу користувача.

  • У вкладці Layout добавте дві закладки (tab) та змініть їх назви як це показано на рис.13. Це будуть закладки у вікні браузеру, які будуть відповідати за окрему приладову панель (Dashboard). Зауважте, що графічний інтерфейс може дещо відрізнятися, але я сподіваюсь, ви вже зрозуміли це і дасте раду собі в цьому.

рис.13. Добавлення закладок, груп віджетів та команди переходу на приладову панель.

Графічний інтерфейс будується шляхом розміщення на приладовій панелі віджетів. Ці віджети об'єднуються в окремі групи, налаштування яких також конфігурується.

  • Для закладки 1 створіть групу (кнопка +Group), надалі у цій групі будемо відображати графічні елементи.

3.3. Створення віджетів

  • Виберіть з палітри і розмістіть вузли slider , Gauge та debug. З'єднайте та налаштуйте ці вузли, як показано на рис.14.

рис.14. Налаштування віджетів для введення та виведення.

3.4. Перевірка роботи графічного інтерфейсу

  • Зробіть розгортання проекту. За допомогою кнопки переходу на сторінку (див.рис.13) перейдіть на сторінку приладової панелі. Змініть значення, використовуючи повзунок (рис.15). Оскільки значення з повзунка (slider) передається повідомленням на віджет показового приладу (gauge), то воно на ньому відобразиться у вигляді поворотної стрілки.

рис.15. Перевірка роботи віджетів.

3.5. Перегляд повідомлення від віджета повзунка

У нашій програмі є два вузли типу Debug. Для зручності налагодження, повідомлення з них можна не виводити. Для цього праворуч від вузла є кнопка, яка включає або відключає виведення повідомлення.

  • Сховайте повідомлення, що виводяться від inject.

  • Використовуючи створену Вами приладову панель знову змініть значення за допомогою повзуна. Подивіться що виводиться на панель налагодження, та пишеться під вузлом віджета.

О! Тепер Ви вмієте виводити та вводити значення на графічних приладових панелях. Тепер прийшов час навчитися налаштовувати Node-RED для збирання даних з Ваших пристроїв, наприклад програмованих контролерів. Перед тим, як це зробити, варто дещо вияснити: а при чому тут Node-RED? Наступний розділ саме про це. Але якщо Вам нудно читати, і ви хочете просто продовжити робити цікаві програмки можете пропустити 4-й розділ, там не має прямокутників з опціями.

4. Використання Node-RED в Edge пристроях.

Ми встановили Node-RED собі на комп'ютер для перегляду його можливостей (ну якось же цей майстер-клас треба проходити, еге ж), та можливо навіть для його використання у майбутньому вирішенні якихось задач, саме з використанням вашого комп'ютеру. Але здебільшого, Node-RED використовується на стороні Edge-шлюзу, або в якості хмарного застосунку.

Якщо спрощено, Edge-шлюз це такий комп'ютер (часто невеликого розміру і без вентиляторів) який забезпечує зв'язок польового рівня (Edge-рівня), де фізично знаходиться об'єкт, з хмарними сервісами та застосунками а також іншими пристроями. Рівень Edge може реалізовуватися різним способом та засобами, наприклад, це може бути ціла система АСКТП. У останньому випадку, збір даних можна проводити з ПЛК. Таке спрощене представлення архітектури Edge-рівня в Промисловому Інтернеті речей (IIoT) для дуже освічених в темі людей може здатися виродженою. Але вони, сподіваюсь, не читають такі швидкі старти, тому я не буду перейматися і Ви поки про це не думайте.

Якщо Node-RED використовується на стороні Edge в якості програми для концентратора або шлюзу чи маршрутизатору, він може збирати дані з різних пристроїв по протоколам промислових мереж. Найбільш поширеним і простим протоколом на сьогоднішній день є Modbus, тому в спільноті Node-RED-ників програмісти розробили кілька бібліотек для нього. Хто зна, може ще одну колись розробите Ви.

Апаратною платформою для Edge шлюзу може виступати, наприклад, Raspberry PI. Це такий недорогий одноплатний комп'ютер, вартістю біля 50 USD. Якщо рішення критичне до збоїв, треба вибирати якісь промислові рішення з аналогічними функціями.

На рис.20 показаний приклад, де Edge шлюз має реалізацію Raspberry PI, який взаємодіє з пристроями по протоколу Modbus TCP/IP та/або Modbus RTU. З іншого боку він взаємодіє з хмарними застосунками та сервісами. У якості хмарного застосунку у нас буде Google Sheet, з яким буде взаємодія через протокол HTTP. У якості пристрою, з якого будуть збиратися дані -- є ПЛК.

рис.20. Приклад структури рішення IIoT з використанням Raspberry PI та Node-RED.

Що? У Вас немає контролера? І немає Raspberry PI? Ну... це звісно погано, бо я не розумію як Ви живете без цих чудових речей! Ну добре, заспокійтесь, дійсно, не завершувати ж на цьому наш майстер клас. У мене є для Вас хороша новина -- на сьогоднішній день є велика кількість безкоштовних програмних утиліт, які надають можливість зв'язатися з ними по протоколу Modbus TCP/IP!

Тому для тестування наведеного вище рішення можна на перших порах обійтися тільки програмними складовими. Замість ПЛК можна використати імітатор ПЛК, що підтримує Modbus TCP/IP, а замість Raspberry PI – використовувати Node-RED на нашому комп'ютері, який буде з’єднуватися з імітатором ПЛК або імітатором Modbus TCP/IP Server (рис.21). Усі компоненти на одному ПК! У даному майстер-класі в якості імітатора PLC буде використаний безкоштовний застосунок Mod_RSsim, який треба попередньо встановити. А в якості бібліотеки Modbus для Node-RED -- node-red-contrib-modbustcp.

рис.21. Приклад структури рішення IIoT з використанням різних утиліт на одному ПК.

5. Робота з Modbus TCP в Node-RED

Бібліотек роботи з Modbus для Node-RED дуже багато і часто важко вибрати, яка з них найбільш підійде для вирішення конкретного завдання. Ну, я в принципі визначився, принаймні на цей час, тому гайда її ставити!

5.1. Встановлення пакунку Modbus

  • Встановити пакунок Modbus (node-red-contrib-modbustcp) використовуючи Manage Palette (рис.22)

рис.22. Встановлення пакунку node-red-contrib-modbustcp.

5.2. Завантаження та встановлення Modbus PLC Simulator (Mod_RSsim) або аналогічний

Ви можете використати інші утиліти, або навіть реальний ПЛК, який налаштований на Modbus TCP. Але у цьому випадку Вам прийдеться використовувати свої власні знання та інтуїцію, щоб зробити аналогічні до цього прикладу налаштування. Однак, якщо Ви цей шлях пройдете, то можете малювати на борту вашого ... (не знаю чого) чергову зірочку, або ... що ви там малюєте в такому випадку.

5.3. Запуск на виконання Modbus PLC Simulator

  • Запустіть на виконання Modbus PLC Simulator C:\Program Files (x86)\EmbeddedIntelligence\Mod_RSsim

  • При першому запуску може з'явитися пропозиція про внесення порту до списку дозволених брандмауером. Треба погодитися, бо може виникнути проблема з доступом

  • Виставте значення в Prot: Modbus TCP (рис.23)

рис.23 Вікно Mod_RSsim.

5.4. Вставка та налаштування елементу modbustcp-read

  • Зайдіть в редактор Node-RED, та з розділу палітри Input вставте елемент modbustcp-read.

  • Зайдіть в налаштування вузлу. Праворуч поля Server натисніть кнопку з олівцем для створення нового серверу і налаштуйте його як показано на рис.24, після чого натисніть Add.

рис.24 Налаштування підключення до Modbus TCP/IP серверу .

Зауважте, якщо у Вас реальний ПЛК (що, звісно, неймовірно круто!), тут замість 127.0.0.1 треба вставити його реальну IP-адресу.

Якщо Вам не зрозуміло поняття Modbus-сервер, але Ви розумієте що таке Modbus Slave, сміло змінюйте уявно тут в тексті одне на інше, бо зараз не час дискутувати за таких дріб'язків.

  • Після створення налаштування Modbus серверу налаштуйте зчитування десяти Holding регістрів починаючи з 0-го, як це показано на рис.25. Після цього натисніть Done

рис.25 Налаштування зчитування по Modbus TCP/IP.

  • Зробіть фрагмент програми, показаний на рис.26. Зробіть розгортання проекту, деактивуйте усі виводи вузлівdebug окрім останнього (кнопкою праворуч).

рис.26 Фрагмент програми для зчитування регістрів.

5.5. Перевірка роботи програми читання регістрів по Modbus

  • Змініть значення перших десяти регістрів у програмі Mod_RSsim. Для цього просто натисніть подвійним кліком по відповідному полю зі значенням і введіть значення в діапазоні від 0 до 100.

  • Активуйте вікно виводу Debug, там повинні виводитися значення регістрів у вигляді масиву (рис.27).

рис.27 Значення зчитуваних регістрів у вигляді масиву.

Якщо Ви бачите подібну картину, як на рис.27, очевидно дані зчитуються. Якщо Ви бачите якісь червоні повідомлення, а під вузлом "Читання регістрів" не горить "Connected", очевидно щось пішло не так.

Зверніть увагу, що msg.payload є масивом з десяти елементів (Array[10]), тому для роботи з цими значеннями, наприклад виводу на відображення на ВЕБ-сторінці, необхідно вибрати одне з них. Припустимо, нас цікавить 2-й регістр (починаючи з нуля), бо саме в ньому знаходиться потрібне нам значення температури. У такому випадку нам треба вилучити і перенаправити це значення на віджет приладової панелі. Ну от, цим і займемося!

5.6. Модифікування програми для відображення температури на віджеті

  • Модифікуйте програму відповідно до рис.28.

Як бачите, у нас з'явився новий тип взула change, який модифікує зміст повідомлення. Вірніше він формує повідомлення, в корисне навантаження якого ставить значення 2-го елементу масиву корисного навантаження вхідного повідомлення.

рис.28 Модифікована програма.

  • Зробіть розгортання, та перевірте чи вірно відображаються значення. Не знаєте як перевірити? Просто змінюйте значення в імітаторі ПЛК і дивіться як реагує віджет приладу. Не забувайте, що значення зчитується кожні 5 секунд. Якщо хочете частіше - змініть налаштування вузла Modbus TCP, Ви ж програміст!

Якщо Ви вмієте налаштовувати брандмауери, спробуйте зайти з Вашого телефону або планшету за посиланням приладової панелі. Не забудьте, що замість IP 127.0.0.1 треба вказувати IP вашого ПК, ну або Raspberry PI, якщо Node-RED виконується там. Якщо вийшло, то я Вас черговий раз вітаю, Ви зробили веб-інтерфейс для системи керування. І можете знову рисувати ... ну Ви зрозуміли. Якщо ні -- все одно вітаю, бо ми переходимо до іншого пункту нашого плану!

6. Відправка даних до небес

Втомилися? Попереду всього один пункт -- відправка даних в Google Sheet. Інтернет речей, та і взагалі Інтернет надає велику функціональність, але в той же час може надати зловмиснику доступ до Ваших конфіденційних даних. З цієї причини щоб забезпечити взаємодію між застосунками в хмарах (Cloud) необхідно зробити багато нудних кроків. Але ми ж не здаємося!

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

Якщо Ви дуже втомилися, і хочете відпочити, моете подивитися цей жартівливий ролик про кіповця Микиту. Бачили? ну то може цей подивіться про конфлікт програмістів ІТ та АСКТП. І цей бачили!? Ну тоді -- ТДАшні коломийки ! І це теж? А, хлопе, та Ви просто підписані на мій канал, то дуже добре!

Ок, пора за роботу!

6.0. Створення облікового запису Google.

Якщо у Вас немає облікового запису Google -- створіть його на сайті. Це безкоштовно, потребується тільки поштова скринька і номер телефону. Ні, кредитка не потрібна.

6.1.Створення та налаштування сервісного акаунту Google (для доступу іншого сервісу)

Багато хто з Вас у повсякденному житті користується сервісами Google. Для доступу до більшості з цих сервісів потрібна автентифікація. Коли людина використовує ці сервіси, вона як правило вводить ім'я користувача та пароль, чим засвідчує, що саме ця особа зараз користується сервісами. Якщо ж сервісами хоче скористатися інший застосунок, використовується трохи інші підходи. Для цього у Google необхідно активівувати доступ до сервісів з інших застосунків шляхом створення так званого "сервісного акаунту". У цьому пункті будемо робити саме це.

Увага! Сервісний доступ за замовчуванням надає усі привілеї. Тому нікому не передавайте облікові дані, інакше зловмисник зможе керувати вашими застосунками!

Якщо Вам все одно не страшно, тоді йдемо далі, крок за кроком.

1.Активація використання сервісів Google Cloud Platform.

  • Зайдіть на сторінку налаштування API для сервісів, якими Ви користуєтеся на GoogleCloud https://console.cloud.google.com/apis. При першому входженні Вам запропонують прийняти умови використання. Для того, щоб користуватися сервісами виставте опцію "Приймаю умови використання" після чого натисніть кнопку "Прийняти і продовжити" (але перед тим обов'язково прочитайте, що там написано, і мені при нагоді розповісте).

рис.29. Активація сервісів Google Cloud Platform.

2.Створення проекту.

  • Доступ до сервісів відбувається в межах певного проекту. Тому спочатку створіть проект.

рис.30. Створення проекту.

  • Заповніть налаштування проекту, за прикладом, як показано на рис.31. Вкажіть назву проекту (наприклад "RPI3"), після чого натисніть "Створити". Після створення проекту, Ви автоматично будете змінювати налаштовування саме для нього.

рис.31. Налаштування проекту.

3.Створення сервісного акаунту.

  • Тепер в межах проекту треба створити сервісний акаунт, від імені якого будуть підключатися застосунки. Для цього зайдіть в головне меню і перейдіть в розділ створення сервісних акаунтів і натисніть "Створити сервісний акаунт".

рис.32. Створення сервісного акаунту.

  • Помічник створення сервісного акаунту проведе вас по необхідним налаштуванням. Хороша новина в тому, що більшість з них можна не заповнювати. На першому кроці означте назву, наприклад "RPI_SERVICE_ACCOUNT" (рис.33), після чого натисніть кнопку "Создать".

рис.33. Налаштування імені сервісному акаунту

  • На другому кроці можна поки (та і потім також) нічого не вписувати, а просто натиснути "Продовжити".

  • На третьому кроці кроці виберіть "Готово" (рис.34).

От бачите, на всіх кроках треба було задати лише ім'я, а для цього треба було аж три кроки для цього робити!

4.Створення ключа сервісного акаунту.

Після створення сервісного акаунту, для нього необхідно створити ключ, використовуючи який застосунки зможуть користуватися сервісами Гугл (рис.35). Це типу імені та паролю, але вже на мові застосунків. Не будуть же застосунки спілкуватися людською мовою!

  • Тому, при створенні ключу доступу, система запропонує відкрити або зберегти файл JSON, який по суті і показує зміст ключа. Збережіть цей файл, він Вам потребується в майбутньому. Після збереження, натисніть "Готово".

рис.35. Створення ключу для сервісного акаунту.

Зверніть увагу, у цього акаунту навіть електронна пошта є, але сумніваюсь, що туди можна відправляти листи, хіба що для скарг.

5.Активація доступу до сервісів Гугл.

  • Тепер необхідно активувати доступ до необхідних сервісів. Для цього необхідно перейти на сторінку з бібліотекою і сервісами (рис.36).

рис.36. Перехід до бібліотеки сервісів Гугл.

  • Оскільки ми хочемо з'єднуватися з застосунком Google Sheets, знаходимо і вибираємо його в розділі G Suite (рис.37)

рис.37. Вибір сервісу Google Sheet для налаштування.

  • Натисніть "Включити" для активації доступу до цього сервісу з інших застосунків (рис.38).

рис.38. Надання доступу до сервісу Google Sheet.

Фууух! Це був самий нудний пункт з майстер-класу.

6.2.Створення таблиці Google Sheet

Раптом Ви не знаєте, але Google Sheet - це хмарний застосунок від Google для роботи з електронними таблицями. За функціональністю і принципами роботи він схожий на Microsoft Excel (хоч про нього, сподіваюсь, знаєте?). Усі створені таблиці зберігаються на Гугл Диску (Google Drive). Для того, щоб заносити дані в таблицю Гугл, давайте спочатку її створимо.

  • Зайдіть на головну сторінку Google і зайдіть в застосунок Google Sheet(Таблиці). Альтернативно можна відразу перейти на сторінку

  • У новому вікні натисніть кнопку + (створити), щоб створити нову електронну таблицю

  • Змініть назву документу на якусь більш прийнятну, наприклад RPIData

6.3.Надання доступу до таблиці

Тепер необхідно надати доступ до таблиці тому сервісному акаунту, який Ви створили до цього. Пам'ятаєте, цей акаунт має адресу віртуальної електронної пошти (див.рис.35), яку необхідно вказати як обліковий запис. От бачите, таки Він нам знадобиться.

  • Зайдіть перелік своїх сервісних облікових записів за цим посиланням, скопіюйте електронну адресу та добавте її до адрес редакторів таблиці. Перед тим, як натиснути кнопку "Готово", зніміть опцію “Повідомляти користувача”, щоб сервіс не намагався відправити запрошення. Якщо ж опція залишиться, то Вам на пошту прийде повідомлення, що вказана поштова адреса не існує. Але навіть при цьому, доступ буде надано.

рис.39. Надання доступу до таблиці Google Sheet вказаному користувачу (сервісному аккаунту).

Ну що ж, Google Sheet нарешті готовий спілкуватися з будь-яким застосунком, який має ключ і буде робити все, що той йому скаже. Тепер справа за Node-RED. Залишилося геть трохи.

6.4.Встановлення бібліотеки node-red-contrib-google-sheets

Для роботи з сервісами Гугл є також кілька готових бібліотек. Ми скористаємося node-red-contrib-google-sheets.

  • Тому зайдіть в Managevent Palette, далі в Install і встановіть бібліотеку node-red-contrib-google-sheets (рис.40)

рис.40. Встановлення бібліотеки node-red-contrib-google-sheets

6.5.Налаштування конфігураційного вузла

  • Тепер у вкладці Function палітри з'явився новий вузол GSheet, який необхідно розмістити на робочій області потоку.

  • У налаштуваннях вузлу треба вказати секретний ключ. Саме час за допомогою блокноту відкрити той файл, в якому знаходиться секретний ключ для аккаунту, скопіювати весь його зміст і помістити його в поле Creds (рис.41). Після цього натиснути Add і продовжити конфігурувати вузол.

рис.41. Налаштування доступу з використанням секретного ключа.

6.6.Налаштування запису в Google Sheet

Залишилося сконфігурувати інші поля вузлуGSheet.

  • По перше, ми хочемо оновлювати комірки новими даними. Тому вибираємо метод Update Cells.

  • По друге треба вказати ідентифікатор тієї Гугл Таблиці, яка нас цікавить. Так, ми відкрили доступ тільки до однієї таблиці, але могли зробити це і до інших, при цьому використовуючи той самий сервісний аккаунт. Ідентифікатор аркуша можна знайти в URL-адресі вашої таблиці в Google, наприклад, у

https://docs.google.com/spreadsheets/d/1UuVIH2O38XK0TfPMGHk0HG_ixGLtLk6WoBKh4YSrDm4/edit#gid=0

ID буде 1UuVIH2O38XK0TfPMGHk0HG_ixGLtLk6WoBKh4YSrDm4

  • Отже копіюємо його і вставляємо в поле SpreedsheetID.

  • Тепер необхідно вказати діапазон комірок, куди вписуватимуться наші зчитані з ПЛК значення. Ця адреса включає в себе назву аркушу потім знак оклику (!) і діапазон комірок. Враховуючи, що змінних 10, це матиме такий вигляд:

Аркуш1!R1C1:R1C10

Ну зовсім нічим не нагадує Excel.

  • Зрештою усі налаштування вузла та вся програма показана на рис.42. Звісно у Вас будуть інші значення полів, навіть слово Аркуш1 може бути іншим словом, адже ніхто не забороняє Вам змінювати назви аркушів.

рис.42. Кінцевий вигляд застосунку Node-RED та налаштування вузла.

6.7.Перевірка роботи

  • Ну і звісно, саме важке і заключне завдання Ви повинні зробити самостійно -- перевірити роботу.

Так, так, я знаю що мав би Вам показати, як це працює. Але останній крок маєте зробити Ви, адже інакше вийде, що Ви просто повторяли за мною все, і нічого не зрозуміли.

рис.43. Перевірка роботи

Якщо у Вас все вийшло - вітаю! Ви пройшли швидкий старт в Промисловий Інтерент речей з використанням Node-RED! Було приємно, що Ви таки наважилися стартувати і дійшли до фінішу!

Що далі?

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

Якщо Ви співробітник якогось підприємства, у якого є потреба навчити Вас створювати рішення для Промислового Інтернету речей та інших технологій Індустрії 4.0, радимо Вам пройти навчання в форматі онлайн або офлайн. З деталями Ви можете ознайомитися на сторінці курсу, там можна зареєструватися на найближчий час.

Якщо Ви студент, або викладач і хочете самостійно вивчити інші матеріали та пройти лабораторні роботи, можете відвідати сторінки курсів автора цього швидкого старту, зокрема це:

Ці курси постійно змінюються, тому деяка інформація там ще потребує дороблення.

Якщо Вам цікаві нові публікації автора, Ви можете підписатися на:

З найкращими побажаннями, Олександ Пупена

pupena_san@ukr.net