**Технології індустрії 4.0. Лабораторний практикум. ** Автор і лектор: Олександр Пупена
<- до лаборних робіт | на основну сторінку курсу |
---|---|
У частині 1 лабораторної роботи 3 (Л.Р 3.1) в якості варіанту реалізації IIoT рішення пропонувалося використання хмарного застосунку Node-RED, який взаємодіяв з пристроєм Edge з використанням WEB Socket. Перевагами такої архітектури є відсутність потреби в спеціальних IoT сервісах, які, між іншим, як правило оплачуються по кількості використаного трафіку. Тим не менше, такий варіант має ряд недоліків, зокрема:
з боку Edge та Cloud потребується програмування
тільки програмовані (конфігуровані) пристрої IoT Edge мають можливість використання WEB Socket
інфраструктуру IoT необхідно реалізовувати самосітйно
Для побудови IoT та IIoT рішень на базі хмарних рішень IBM пропонує сервіс Watson IoT Platform. Платформа IBM Watson ™ IoT побудована на таких ключових засадах:
Connect - підключення пристроїв і розроблених застосунків.
Керування інформацією - зберігання, нормалізація, перетворення та перегляд даних з пристроїв та інтеграція платформи Watson IoT з іншими сервісами.
Analytics – означення правил, які за даними реального часу пристрою можуть викликати сповіщення та дії.
Керування ризиками - налаштування безпечного підключення та архітектури з контролем доступу для користувачів і застосунків.
Загальна архітектура рішення IoT на базі Watson IoT Platform матиме вигляд як на рис.1.
рис.1.
Передбачається, що кінцеві Edge пристрої або шлюзи (Gateway) взаємодіють з сервісами IoT Platform з використанням MQTT, хоч можливий і варіант взаємодії через REST API. Слід звернути увагу, що додаткового MQTT-брокеру не потрібно, по суті він реалізований в самому сервісі IoT Platform.
Сервіси аналітики та кінцеві за стосунки взаємодіють з IoT Platform з використанням REST API. Вони можуть бути як частиною інфраструктури IBM Cloud, так і застосунками чи сервісами інших платформ. Тим не менше, слід відмітити, що інтеграція багатьох сервісів IBM Cloud з IoT Platform досить просто налаштовується.
У даній лабораторній роботі будуть використовуватися технології та рішення, які були досліджені в минулих лабораторних роботах. Основна ідея роботи – розробити цифрового двійника (digital twin) для привода насосу, що має в своєму складі перетворювач частоти Altivar (надалі ПЧ). Цифровий двійник на даному етапі повинен забезпечити наступні функції:
збір даних для аналізу стану приводу в реальному часі та формування повідомлень (пошта, SMS, месенжер) у випадку тривог;
накопичення даних про роботу приводу для подальшого аналізу;
доступ до даних про привід: документація, моделі і т.п. з можливістю доступу до них у необхідному місті, наприклад через WEB інтерфейс.
В подальшому, розроблений двійник використовуватиметься для більш глибокої аналітики.
Структура рішення, яке пропонується, показана на рис.2. Розглянемо його більш детально.
1.IIoT Edge.
На стороні процесу знаходиться сам привод з ПЧ, збір даних з якого відбувається по Modbus TCP/IP. Слід зазначити, що при невеликих змінах, можливий також варіант збору даних по Modbus RTU. Збір даних відбувається в IIoT Edge, функцію якого виконує Raspbery PI з використанням Node-RED. На етапах первинного налагодження, замість плати Raspbery PI може використовуватися ПК, а замість ПЧ – імітатор Modbus TCP Server, як це робилося в ЛР №1.
Для керування ПЧ можна використати його вбудовані засоби, або ВЕБ-інтерфейс сумісно з Node-RED.
Увага! В лабораторній роботі використовується засоби для керування ПЧ, які не рекомендується використовувати в реальних проектах! Це небезпечно і може привести до пошкодження технічних засобів, зашкодити здоров’ю або життю людини а також навколишньому середовищу! Це зроблено виключно в навчальних цілях! При реалізації рішень IIoT необхідно скрупульозно продумувати структуру з точки зору функціональної та інформаційної безпеки!
рис.2.
Дані від IIoT Edge надходять до хмарних сервісів IoT Platform з використанням протоколу MQTT.
2.IBM Cloud.
Сервіс IoT Platform в даній лабораторній роботі забезпечує наступні функції:
збір даних з IIoT Edge
первинна обробка даних для Device Twin та Asset Twin
відправка даних та повідомлень іншим компонентам інфраструктури
формування Device Twin та Asset Twin з усією необхідною інформацією для подальшої обробки, включаючи метадані;
Слід зазначити, що в даній лабораторній роботі використовується не усі можливості IBM Bluemix IoT Platform.
Сервіс Cloudant слугує для збереження архівування зібраних даних з можливістю подальшого їх аналізу.
Сервіс COS слугує для збереження інформації про цифровий двійник, зокрема усіх необхідних файлів допомоги, інструкцій, моделей
3.Applications
Застосунок Node-RED слугує для додаткової обробки та побудови усієї необхідної логіки взаємодії з користувачем через ВЕБ-інтерфейс. Кінцеві клієнтські застосунки в даній лабораторній роботі будуть представлені тільки звичайним Веб-браузером, який буде використовуватися для доступу до необхідної інформації в зручному вигляді.
У першій частині лабораторної роботи проводяться роботи по побудові основних функцій збору даних з IIoT Edge їх перетворення та взаємодію з клієнтськими застосунками. Друга частина зосереджена на прикладі реалізації невеликого проекту, описаного вище з за діянням додаткових сервісів збереження даних та оповіщення.
Мета: Навчитись створювати застосунки з використанням цифрових двійників з хмарними сервісами на прикладі Watson IoT Platform.
Цілі:
1) реалізувати архівування IoT в Cloudant;
2) реалізувати вбудовані IoT Dashboards для аналізу роботи обладнання;
3) реалізувати збір даних з ПЧ та передачу їх в хмару;
4) використовуючи Node-RED, реалізувати застосунок для цифрового двійника: відображення поточного стану обладнання (ПЧ), історії за останні 5 хвилин, документації, 3D моделі, та доступ до сторінки двійника з телефону по QR-коду ;
Зовнішній вигляд інтерфейсу налаштування IBM Cloud постійно змінюється! Увага, набір наданих сервісів та політика ліцензування IBM Cloud може змінитися. У будь якому випадку, без використання угоди та реєстрації кредитної картки ніякі кошти за використання стягуватися не можуть.
Для ведення історії даних, отриманих з IoT Edge, в даній частині лабораторної роботи використовується сервіс IBM Cloudant.
Налаштуйте підключення IoT до Cloudnat, відповідно до вказаному рецепті в цій статті.
Запустіть локальний Node-RED. Відкрийте Веб-інтерфейс налагодження імітатора ATV, змініть значення кожного поля. Відкрийте вкладку з реалізацією Edge. Зробіть кілька раз ініціювання відправки даних в хмарний сервіс IoT (аналогічно як в п.3.2 л.р.4.1). За допомогою вікна State в IBM IoT Browse Devices перевірте, що дані дійсно дійшли до двійника.
Відкрийте вікно адміністрування Cloudant. Серед баз даних повинна з’явитися база даних з назвою у форматі iotp_<orgID>_<dbname>_<bucket_name>
, наприклад
iotp_ytaf20_default_2019-04-07
Відкрийте цю БД. Перегляньте перелік записів упорядкованих по даті (рис.5)
рис.5
Відкрийте самий останній за часом запис (документ). Він матиме приблизно такий формат, як на рис.6.
рис.6
Перейдіть до розділу бази даних «Design Documents». Там повинен бути документ з назвою “_design/iotp”, відкрийте його. Перегляньте структуру індексів і view (рис.6.а).
рис.6.а
Подібно до створюваного файлу в лабораторній роботі 3.1, IBM Cloud IoT створив документ з індексами. Серед індексів є два: «search» і «state-search». В індексі search є усі поля, які пишуться в документи від IoT двійника. Таким чином пошук можна проводити як за часом, так і за іншими полями, у тому числі ідентифікатором пристрою. При цьому документ/ключ треба буде вказувати як
iotp/search
У консолі налаштування IBM Watson IoT Platform перейдіть на вкладку Boards. Там вже будуть доступні два дашбоарди: моніторингу використання ресурсів і перегляд ризиків та безпеки (рис.7). Перегляньте ці дашбоарди.
рис.7
На вкладці Boards натисніть «+» для добавлення нового дашбоарда. Впишіть ім’я «ATV630» та натисніть «Next». На наступній вкладці натисніть «Submit».
рис.8
рис.9
Після проведення усіх дій на дашбоарді повинен з’явитися індикатор струму. У локальному Node-RED змініть значення струму через веб інтерфейс на значення 23.5 та ініціюйте відправку даних в хмарний сервіс IoT. Значення в індикаторі повинно змінитися.
Для імітації періодичної зміни індикатору струму модифікуйте програму в локальному Node-RED, як це показано на рис.10.
рис.10
Тепер значення струму (I) буде змінюватися кожні 5 секунд і кожні 5 секунд воно буде відправлятися до хмарного IoT сервісу. Зробіть розгортання, перевірте що індикатор на новому дашбоарді оновлюється.
Добавте нову карту - «Add New Card». Виберіть тип «Line Chart» - тренд. Налаштуйте тренд таким чином, щоб він відображав струм (рис.11).
рис.11
При відображенні тренду виберіть діапазон відображення 5 хвилин. На рис.12 показано як відображатиметься тренд.
Змініть програму в локальному Node-RED для імітації зміни частоти, як це показано на рис.12.
рис.12
Добавте на тренд IoT Dashboard ще одну криву RFR, як це показано на рис.13.
рис.13.
Результат повинен вийти, як на рис.14.
рис.14.
Зверніть увагу, що інтерфейс тренда передбачає вибір іншої дати відображення через кнопку “Now”.
Увага! Керування реальним перетворювачем частоти може відбуватися тільки під наглядом викладача!
Увага! В лабораторній роботі використовується засоби для керування ПЧ, які не рекомендується використовувати в реальних проектах! Це небезпечно і може привести до пошкодження технічних засобів, зашкодити здоров’ю або життю людини а також навколишньому середовищу! Керування ПЧ зроблено виключно в навчальних цілях! При реалізації рішень IIoT необхідно скрупульозно продумувати структуру з точки зору функціональної та інформаційної безпеки!
Увага! В один момент часу тільки один пристрій може керувати ПЧ! Після завершення частини лабораторної роботи, що відповідає за керування ПЧ, відключіть з’єднання вузла ATV з Write , для того щоб інші студенти могли ним керувати.
Завантажте код за цим посиланням , та у локальному Node-RED імпортуйте його в окремий потік «ATV_CTRL» для керування ПЧ. Програма матиме вигляд як на рис.15.
рис.15.
За необхідності (якщо IP пристрою відрізняється) змініть налаштування конфігураційного вузлу Modbus/TCP (рис.16)
рис.16.
рис.17.
рис.18.
Модифікований потік “Edge” показаний на рис.19.
рис.19.
Аналогічно п.4.6 лабораторної роботи 3.1 можна отримати всі записані дані за одну добу. Для цього необхідно дізнатися назву БД.
Відкрийте хмарний Node-RED,створіть нову вкладку з назвою LAB4_2. Створіть тестову програму аналогічно, як це показано на рис.20. Зверніть увагу, що назва сервісу вибирається зі списку, там повинен бути Ваш екземпляр сервісу Cloudant. В поле Database необхідно вказати Вашу БД за сьогоднішній день.
рис.20.
Зробіть розгортання проекту, зробіть ініціювання зчитування. В полі Debug повинно бути виведене повідомлення з усіма отриманими записами (документами).
Хоч реалізація зчитування записаних історичних даних з використанням вузлу «Cloudant In» налаштовується досить просто, у нього є суттєве обмеження, яке не дозволяє динамічно задавати ім’я бази даних. Тому для реалізації задачі зчитування історичних даних необхідно скористатися HTTP API та використовувати вузол HTTP Request, який був апробований в лабораторній роботі №2.
Для початку сформуйте фрагмент, який буде формувати назву БД по сьогоднішній даті. Для цього добавте фрагмент в програму в хмарному Node-RED, як це показано на рис.21. Функція “DB Name” буде формувати назву БД по теперішній даті. Зверніть увагу, що у Вашому випадку префікс (prefix) буде іншим (див.п.1.2).
Зробіть розгортання, ініціюйте виклик, в полі Debug повинно відобразитися повідомлення з назвою БД.
рис.21.
Документація по API Cloudant доступна за цим посиланням.
Коротка стаття, що допомагає ввести в тему - Query and Process Watson IoT Device Data from Cloudant NoSQL DB
Для отримання потрібних даних необхідно сформувати запит, подібно до того, як це робилося в лабораторній роботі 3.1. Однак структура даних та ключ в даному випадку відрізняються, що треба врахувати при реалізації. Також необхідно врахувати, що цей фрагмент програми буде використовувати поля повідомлення, в яких будуть вказані параметри запиту: дата та час початку, глибина відображення та ідентифікатор пристрою. Це дозволить реалізувати навігацію в майбутніх проектах.
Як вже було зазначено, для доступу до сервісів Cloudant використовуватиметься HTTP API та вузол «HTTP Request». Для початку треба дізнатися про користувача та пароль, за ким відбувається доступ а також правила формування URL для доступу. Ця інформація в хмарному Node-RED доступна через змінні середовища, тому її можна отримати двома шляхами: через налаштування Cloudant і через змінні середовища хмарного застосунку Node-RED.
Використовуючи командний рядок за допомогою команди cf env відобразіть змінні середовища затосунку Node-RED. Пригадати як це робиться ви зможете з п.2.6 з ЛР3.3.
У змінній “VCAP_SERVICES” в об’єкті “cloudantNoSQLDB” скопіюйте в блокнот значення host, password і username (див. рис.22).
рис.22.
Проконтролюйте, що ті самі значення ви бачите в Service credentials в налаштуваннях Cloudant.
Змінні середовища також можна вивести в Node-RED з використанням наприклад Inject, JSONATA або через JS. Таким чином, можна не вписувати значення host, password і username а просто взяти їх з VCAP_SERVICES.
Модифікуйте програму в хмарному Node-RED, щоб він мав вигляд як на рис.23. Зверніть увагу, що host, password і username треба вказувати відповідно до Ваших налаштувань, визначених в попередньому пункті.
Код функції «Пошуковий запит» доступний за посиланням.
рис.23.
Зробіть розгортання, ініціюйте відправку запиту. На панелі Debug повинні з’явитися два повідомлення з запитом і відповіддю. У відповіді в Payload, повинна знаходитися інформація отримана за останні 5 хвилин з IBM Cloudant, подібно до рис.24.
рис.24.
Код функції пошуковий запит:
var result = msg.payload.rows;
var strRecord ="";
var record = {};
var ts = 0;
var chart = [{
"series":["I","RFR", "U", "M"],
"data":[],
"labels":[""]
}];
chart[0].data[0]=[];
chart[0].data[1]=[];
chart[0].data[2]=[];
chart[0].data[3]=[];
for (var i = 0; i < result.length; i++) {
strRecord = result[i].fields.data;
record = JSON.parse (strRecord);
ts = result[i].fields.timestamp;
chart[0].data[0][i] = {"x":ts,"y":record.d.I};
chart[0].data[1][i] = {"x":ts,"y":record.d.RFR};
chart[0].data[2][i] = {"x":ts,"y":record.d.U};
chart[0].data[3][i] = {"x":ts,"y":record.d.M};
}
msg.payload = chart;
return msg;
рис.25.
У хмарному Node-RED на UI створіть додаткові групи на вкладці «ATV630».
рис.26.
По аналогії з Л.Р.4.1 п.3.5, на хмарному Node-RED зробіть зчитування даних з Input Type = «Device State Event».
Самостійно реалізуйте відображення даних на вкладці «ATV630» групі «RTIME» користувацького інтерфейсу.
Зробіть копію екрану для звіту.
Завантажте файл 3D-моделі за цим посиланням.
Завантажте файл документації для ATV630 за цим посиланням.
Завантажте ці файли в сховище даних COS, як це робили в лабораторній роботі 3.2.
В консолі IBM Watson IoT Platform перейдіть в режим редагування пристрою «SIC101». Після чого натисніть «Edit metadata» (рис.26a)
рис.26a.
В редагованому полі метаданих впишіть шлях до фалів, аналогічно як Ви це робили в п.3.6 лабораторної роботи 3.2 (див. рис.27, необхідно замінити othermannodered на Вашу назву ). Натисніть «Update», після чого «Save».
{
"Doc": "https://othermannodered.eu-gb.mybluemix.net/files/ATV600_Programming_Manual_EN_EAV64318_06.pdf",
"Model": "https://othermannodered.eu-gb.mybluemix.net/files/atv630u07m3.stl"
}
рис.27.
Детальний опис HTTP API наведений за посиланням. Опис Device Bulk Configuration за цим посиланням.
Для виконання даного пункту Вам необхідно визначити:
orgId , вказується в правому верхньому кутку екрану консолі IBM IoT, наприклад ytaf20
APIKey – взяти з п.3.4 ЛР4.1
Token - взяти з п.3.4 ЛР4.1
Модифікуйте програму в хмарному Node-RED, добавивши туди фрагмент, наведений на рис.28. Замініть orgId , APIKey та Token Вашими значеннями. Зробіть розгортання, ініціюйте запит. Результат повинен бути як на рис.28 (справа). Проаналізуйте, яка інформація Вам доступна і знайдіть метадані пристрою.
https://ytaf20.internetofthings.ibmcloud.com/api/v0002/bulk/devices
рис.28.
У хмарному сервісі Node-RED активуйте вкладку, що відповідала за зчитування об’єктів COS через веб-запит в п.3.5 ЛР3.2 (якщо вона була деактивована).
Модифікуйте програму в хмарному Node-RED для відображення документації та 3D-моделі по продукту, як це показано на рис.29.
<iframe id="vs_iframe" src="https://www.viewstl.com/?embedded&url=" style="border:0;margin:0;width:100%;height:100%;"></iframe>
<embed src="" width="500" height="600" />
рис.29.
Зверніть увагу, що для коректної роботи PDF-переглядача необхідно щоб на ПК був встановлений Adobe Reader, а перевірку проводити в Google Chrome або Internet Explorer.
Зробіть копію екрану, де відображається веб-інтерфейсу хмарного двійника.
Використовуючи один із сервісів генерування QR-кода (наприклад цей ), сформуйте код по тексту URL Вашої сторінки. Використовуючи смартфон або планшет перейдіть по QR-коду на сторінку цифрового двійника.
Деактивуйте вкладки з вузами IBMIoT в хмарному сервісі, інакше вони споживатимуть оплачувані ресурси.
IBM Cloud Docs Solution Tutorials ->Gather, visualize, analyze and detect anomalies in IoT data