TI40

**Технології індустрії 4.0. Лабораторний практикум. ** Автор і лектор: Олександр Пупена

<- до лаборних робіт на основну сторінку курсу
   

Лабораторна робота №4. Xмарні сервіси IIoT

У частині 1 лабораторної роботи 3 (Л.Р 3.1) в якості варіанту реалізації IIoT рішення пропонувалося використання хмарного застосунку Node-RED, який взаємодіяв з пристроєм Edge з використанням WEB Socket. Перевагами такої архітектури є відсутність потреби в спеціальних IoT сервісах, які, між іншим, як правило оплачуються по кількості використаного трафіку. Тим не менше, такий варіант має ряд недоліків, зокрема:

Для побудови IoT та IIoT рішень на базі хмарних рішень IBM пропонує сервіс Watson IoT Platform. Платформа IBM Watson ™ IoT побудована на таких ключових засадах:

Загальна архітектура рішення 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 (надалі ПЧ). Цифровий двійник на даному етапі повинен забезпечити наступні функції:

В подальшому, розроблений двійник використовуватиметься для більш глибокої аналітики.

Структура рішення, яке пропонується, показана на рис.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 в даній лабораторній роботі забезпечує наступні функції:

Слід зазначити, що в даній лабораторній роботі використовується не усі можливості IBM Bluemix IoT Platform.

Сервіс Cloudant слугує для збереження архівування зібраних даних з можливістю подальшого їх аналізу.

Сервіс COS слугує для збереження інформації про цифровий двійник, зокрема усіх необхідних файлів допомоги, інструкцій, моделей

3.Applications

Застосунок Node-RED слугує для додаткової обробки та побудови усієї необхідної логіки взаємодії з користувачем через ВЕБ-інтерфейс. Кінцеві клієнтські застосунки в даній лабораторній роботі будуть представлені тільки звичайним Веб-браузером, який буде використовуватися для доступу до необхідної інформації в зручному вигляді.

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

Частина 2. Використання цифрового двійника.

Мета: Навчитись створювати застосунки з використанням цифрових двійників з хмарними сервісами на прикладі Watson IoT Platform.

Цілі:

1) реалізувати архівування IoT в Cloudant;

2) реалізувати вбудовані IoT Dashboards для аналізу роботи обладнання;

3) реалізувати збір даних з ПЧ та передачу їх в хмару;

4) використовуючи Node-RED, реалізувати застосунок для цифрового двійника: відображення поточного стану обладнання (ПЧ), історії за останні 5 хвилин, документації, 3D моделі, та доступ до сторінки двійника з телефону по QR-коду ;

Зовнішній вигляд інтерфейсу налаштування IBM Cloud постійно змінюється! Увага, набір наданих сервісів та політика ліцензування IBM Cloud може змінитися. У будь якому випадку, без використання угоди та реєстрації кредитної картки ніякі кошти за використання стягуватися не можуть.

1. Реалізація архівування даних з використанням IoT в Cloudant

Для ведення історії даних, отриманих з IoT Edge, в даній частині лабораторної роботи використовується сервіс IBM Cloudant.

1.1. Налаштування архівування в Cloudant

Налаштуйте підключення IoT до Cloudnat, відповідно до вказаному рецепті в цій статті.

1.2. Перевірка збережених даних в Cloudant

Запустіть локальний 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

1.3. Перевірка конфігурації індексів і виглядів (view) Cloudant

Перейдіть до розділу бази даних «Design Documents». Там повинен бути документ з назвою “_design/iotp”, відкрийте його. Перегляньте структуру індексів і view (рис.6.а).

рис.6.а

Подібно до створюваного файлу в лабораторній роботі 3.1, IBM Cloud IoT створив документ з індексами. Серед індексів є два: «search» і «state-search». В індексі search є усі поля, які пишуться в документи від IoT двійника. Таким чином пошук можна проводити як за часом, так і за іншими полями, у тому числі ідентифікатором пристрою. При цьому документ/ключ треба буде вказувати як

iotp/search

2. Використання вбудованих IoT Dashboards

2.1. Перегляд існуючих Dashboards

У консолі налаштування IBM Watson IoT Platform перейдіть на вкладку Boards. Там вже будуть доступні два дашбоарди: моніторингу використання ресурсів і перегляд ризиків та безпеки (рис.7). Перегляньте ці дашбоарди.

рис.7

2.2. Створення власного Dashboard для двійника IoT

На вкладці Boards натисніть «+» для добавлення нового дашбоарда. Впишіть ім’я «ATV630» та натисніть «Next». На наступній вкладці натисніть «Submit».

рис.8

2.3. Створення індикатору струму

рис.9

Після проведення усіх дій на дашбоарді повинен з’явитися індикатор струму. У локальному Node-RED змініть значення струму через веб інтерфейс на значення 23.5 та ініціюйте відправку даних в хмарний сервіс IoT. Значення в індикаторі повинно змінитися.

2.4. Імітація вимірювання струму

Для імітації періодичної зміни індикатору струму модифікуйте програму в локальному Node-RED, як це показано на рис.10.

рис.10

Тепер значення струму (I) буде змінюватися кожні 5 секунд і кожні 5 секунд воно буде відправлятися до хмарного IoT сервісу. Зробіть розгортання, перевірте що індикатор на новому дашбоарді оновлюється.

2.5. Створення панелі тренду

Добавте нову карту - «Add New Card». Виберіть тип «Line Chart» - тренд. Налаштуйте тренд таким чином, щоб він відображав струм (рис.11).

рис.11

При відображенні тренду виберіть діапазон відображення 5 хвилин. На рис.12 показано як відображатиметься тренд.

2.6. Імітація вимірювання частоти та виведення на тренд

Змініть програму в локальному Node-RED для імітації зміни частоти, як це показано на рис.12.

рис.12

Добавте на тренд IoT Dashboard ще одну криву RFR, як це показано на рис.13.

рис.13.

Результат повинен вийти, як на рис.14.

рис.14.

Зверніть увагу, що інтерфейс тренда передбачає вибір іншої дати відображення через кнопку “Now”.

3. Реалізація IIoT Edge з використанням Node-RED для локального керування та контролю перетворювачем частоти

Увага! Керування реальним перетворювачем частоти може відбуватися тільки під наглядом викладача!

Увага! В лабораторній роботі використовується засоби для керування ПЧ, які не рекомендується використовувати в реальних проектах! Це небезпечно і може привести до пошкодження технічних засобів, зашкодити здоров’ю або життю людини а також навколишньому середовищу! Керування ПЧ зроблено виключно в навчальних цілях! При реалізації рішень IIoT необхідно скрупульозно продумувати структуру з точки зору функціональної та інформаційної безпеки!

Увага! В один момент часу тільки один пристрій може керувати ПЧ! Після завершення частини лабораторної роботи, що відповідає за керування ПЧ, відключіть з’єднання вузла ATV з Write , для того щоб інші студенти могли ним керувати.

3.1. Імпорт та налаштування підпрограми керування ПЧ

Завантажте код за цим посиланням , та у локальному Node-RED імпортуйте його в окремий потік «ATV_CTRL» для керування ПЧ. Програма матиме вигляд як на рис.15.

рис.15.

За необхідності (якщо IP пристрою відрізняється) змініть налаштування конфігураційного вузлу Modbus/TCP (рис.16)

рис.16.

3.2. Перевірка роботи програми керування ПЧ

рис.17.

3.3. Взаємодія підпрограми керування ПЧ з підпрограмою Edge.

рис.18.

Модифікований потік “Edge” показаний на рис.19.

рис.19.

3.4. Перевірка отримання даних для цифрового двійника в IBM Cloud.

4. Створення переглядача трендів в хмарному Node-RED

4.1. Отримання всіх документів з записаних даних

Аналогічно п.4.6 лабораторної роботи 3.1 можна отримати всі записані дані за одну добу. Для цього необхідно дізнатися назву БД.

Відкрийте хмарний Node-RED,створіть нову вкладку з назвою LAB4_2. Створіть тестову програму аналогічно, як це показано на рис.20. Зверніть увагу, що назва сервісу вибирається зі списку, там повинен бути Ваш екземпляр сервісу Cloudant. В поле Database необхідно вказати Вашу БД за сьогоднішній день.

рис.20.

Зробіть розгортання проекту, зробіть ініціювання зчитування. В полі Debug повинно бути виведене повідомлення з усіма отриманими записами (документами).

4.2. Формування назви БД по сьогоднішній даті

Хоч реалізація зчитування записаних історичних даних з використанням вузлу «Cloudant In» налаштовується досить просто, у нього є суттєве обмеження, яке не дозволяє динамічно задавати ім’я бази даних. Тому для реалізації задачі зчитування історичних даних необхідно скористатися HTTP API та використовувати вузол HTTP Request, який був апробований в лабораторній роботі №2.

Для початку сформуйте фрагмент, який буде формувати назву БД по сьогоднішній даті. Для цього добавте фрагмент в програму в хмарному Node-RED, як це показано на рис.21. Функція “DB Name” буде формувати назву БД по теперішній даті. Зверніть увагу, що у Вашому випадку префікс (prefix) буде іншим (див.п.1.2).

Зробіть розгортання, ініціюйте виклик, в полі Debug повинно відобразитися повідомлення з назвою БД.

рис.21.

4.3. Визначення необхідних даних для використання REST API при доступі до IBM Cloudant.

Документація по 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.

4.4. Формування фрагменту програми запиту даних по вказаному ідентифікатору, даті та часу а також часовому відрізку

Модифікуйте програму в хмарному Node-RED, щоб він мав вигляд як на рис.23. Зверніть увагу, що host, password і username треба вказувати відповідно до Ваших налаштувань, визначених в попередньому пункті.

Код функції «Пошуковий запит» доступний за посиланням.

рис.23.

Зробіть розгортання, ініціюйте відправку запиту. На панелі Debug повинні з’явитися два повідомлення з запитом і відповіддю. У відповіді в Payload, повинна знаходитися інформація отримана за останні 5 хвилин з IBM Cloudant, подібно до рис.24.

рис.24.

4.5. Створення сторінки для IoT Digital Twin та відображення на ній тренду

Код функції пошуковий запит:

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.

5. Реалізація веб-інтерфейсу цифрового двійника Node-RED

5.1. Використовуючи вузол IBMIoT in реалізуйте відображення всіх даних, отриманих з цифрового двійника

У хмарному Node-RED на UI створіть додаткові групи на вкладці «ATV630».

рис.26.

По аналогії з Л.Р.4.1 п.3.5, на хмарному Node-RED зробіть зчитування даних з Input Type = «Device State Event».

Самостійно реалізуйте відображення даних на вкладці «ATV630» групі «RTIME» користувацького інтерфейсу.

Зробіть копію екрану для звіту.

5.2. Завантаження файлів цифрового двійника на COS.

Завантажте файл 3D-моделі за цим посиланням.

Завантажте файл документації для ATV630 за цим посиланням.

Завантажте ці файли в сховище даних COS, як це робили в лабораторній роботі 3.2.

5.3. Збереження даних в полі Meatadata пристрою для інформації про пристрій.

В консолі 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.

5.4. Доступ до інформації про пристрій через HTTP API.

Детальний опис 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.

5.5. Використання метаданих для відображення інформації про пристрій

У хмарному сервісі 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.

Зробіть копію екрану, де відображається веб-інтерфейсу хмарного двійника.

5.6. Генерування QR-коду для доступу до сторінки двійника

Використовуючи один із сервісів генерування QR-кода (наприклад цей ), сформуйте код по тексту URL Вашої сторінки. Використовуючи смартфон або планшет перейдіть по QR-коду на сторінку цифрового двійника.

Деактивуйте вкладки з вузами IBMIoT в хмарному сервісі, інакше вони споживатимуть оплачувані ресурси.

IBM Cloud Docs Solution Tutorials ->Gather, visualize, analyze and detect anomalies in IoT data

Питання до захисту

  1. Прокоментуйте загальну архітектуру рішення IoT на базі Watson IoT Platform.
  2. Розкажіть про сервіс Internet of Things Platform.
  3. Що означує тип пристрою IoT?
  4. Що означує екземпляр пристрою IoT?
  5. Яке призначення Edge-пристрою?
  6. Яким чином передаються події цифровому двійнику?
  7. Що таке двійник пристрою?
  8. Розкажіть про призначення логічного та фізичного інтерфейсу в IBM IoT.
  9. Розкажіть про принципи функціонування цифрового двійника в цій лабораторній роботі.
  10. Розкажіть про створення точки доступу API для застосунків.
  11. Які перетворення відбуваються у логічному інтерфейсі IoT в даній лабораторній роботі?
  12. Розкажіть про реалізацію цифрового двійника в лабораторній роботі.
  13. Яким чином використовуються вбудовані IoT Dashboards?
  14. Які принципи роботи переглядачів трендів в Node-RED?