Друкувати книгуДрукувати книгу

ЛР3.Ч1. Основи роботи з хмарними сервісами

Сайт: Школа автоматики
Курс: Технології індустрії 4.0
Книга: ЛР3.Ч1. Основи роботи з хмарними сервісами
Надруковано: Guest user
Дата: Saturday 28 November 2020 3:02 PM

1. Створення власного IBM Cloud Account з безкоштовною ліцензією

Частина 1. Основи роботи з хмарною платформою IBM Cloud

Мета: Освоїти базові функції хмарних платформ на прикладі IBM Cloud.

Цілі:

1)      створити власний IBM Cloud Account з безкоштовною ліцензією ;

2)      створити сервіси: застосунок Node-RED, СУБД Cloudant з використанням стартового набору   “Node-RED starter”;

3)      використати  хмарний застосунок Node-RED разом з СУБД Cloudant для:

  • збору даних з Edge, використовуючи один із протоколів, наприклад WEB Socket 
  • збереження даних в базі даних
  • відображення даних у вигляді тренду 

Увага, зовнішній вигляд інтерфейсу налаштування IBM Cloud постійно змінюється!

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

Хмарна платформа IBM об'єднує платформу як послугу (PaaS) з інфраструктурою як послуга (IaaS) для забезпечення інтегрованої взаємодії. Платформа масштабує і підтримує як невеликі команди розробників, так і великі підприємства.

Хмарна платформа надає доступ до керування хмарними ресурсами. Ресурс - це все, що можна створити, керувати і містити в групі ресурсів. Деякі приклади ресурсів – це програми, екземпляри сервісів, контейнерні кластери, томи зберігання та віртуальні сервери. Детально про платформу IBM Cloud можна прочитати за цим посиланням     

1. Створення власного IBM Cloud Account з безкоштовною ліцензією  

Хмарні сервіси платформи IBM Cloud доступні за попередньої реєстрації. Мінімальним тарифним планом, що потребується в цій лабораторній роботі є Lite. Реєстрація в тарифному плані Lite потребує тільки адреси електронної пошти, ім’я та прізвища і не потребує кредитної картки.  Зареєструвавшись, у Вас буде можливість використовувати певний набір сервісів безкоштовно у означеному обсязі. Обсяг та набір сервісів можуть змінюватися час від часу. Передбачається, що використовувані в лабораторній роботі сервіси використовуються безкоштовно.

1.1.  Реєстрація аккаунту

Відкрийте в браузері сторінку реєстрації  IBM Cloud https://cloud.ibm.com/registration/  (рис.1)

рис.1.

Введіть адресу пошти в поле Email і натисніть Enter. У випадку, якщо на вказану адресу немає зареєстрованого користувача, активуються інші поля для вводу (рис.2). Після вводу усіх полів натисніть «Create Account».

рис.2.

Якщо усі поля були заповнені вірно, з’явиться вікно на кшталт показаного на рис.3.

1.2. Підтвердження аккаунту

 На вказану пошту повинно прийти повідомлення з пропозицією підтвердження (рис.4).

Для підтвердження аккаунту натисніть «Confirm Account».  Після вдалого підтвердження, повинно з’явитися вікно підтвердження (рис.5) з якого можна перейти на сторінку входу натиснувши “Log In”. На цьому реєстрація аккаунту в IBM Cloud вважається завершеною.

рис.5.

1.3. Вхід в аккаунт, ознайомлення з інтерфейсом консолі

Скориставшись посиланням https://cloud.ibm.com/login  зайдіть в свій аккаунт.

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

Інтерфейс консолі постійно змінюється. На момент створення даної лабораторної роботи він мав вигляд, як на рис.6.

рис.6.

Огляньте головне меню, яке знаходиться вгорі сторінки. Коли ви входите в систему IBM Cloud, першою сторінкою, яку можна переглянути, є інформаційна панель, на якій відображаються віджети, що узагальнюють інформацію про стан вашого облікового запису. Далі можна керувати своїми ресурсами, перейшовши на піктограму Меню навігації -> Resource List. (рис.7)

рис.7.

• посилання Catalog (Каталог) використовується для створення нових ресурсів.
• посилання Docs - для доступу до корисної інформації про IBM Cloud.
• посилання Support  (Підтримка) - для доступу до Центру підтримки.
• у меню Manage (керування) можна отримати доступ до облікового запису, виставлення рахунків та використання коштів, а також параметрів керування ідентифікацією та доступом.
• калькулятора витрат використовується для виклику оцінювача витрат.

1.4. Перегляд каталогу

Перейдіть до каталогу. За замовченням там відобразяться тільки ті ресурси, які можна використовувати (добавляти) для Вашого тарифного плану, тобто lite (рис.8). Використовуючи кнопку «filter» можна змінювати налаштування фільтру.   

рис.8.

1.5. Налаштувань аккаунту

Перейдіть в меню Manage ->Account->Account Settings для перегляду налаштувань свого аккаунту (рис.9).

рис.9.

2. Створення та адміністрування сервісів з комплекту Node-RED starter

Стартовий комплект (starter kit)  «Node-RED starter» дає можливість легко створити мінімальний сервісів для роботи з Node-RED в хмарі, а саме:

  • застосунок JavaScript® (Node.js) з виділеною 256 Мб пам’яті , на якому буде встановлений  Node-RED
  • Cloudant - масштабована база даних документів JSON для веб-, мобільних, IoT та безсерверних програм   

2.1. Створення стартового набору Node-RED starter 

Перейдіть в каталог IBM Cloud і виберіть пункт Starter Kit. Серед показаних пропозицій виберіть Node-RED Starter (рис.10).

рис.10.

 Заповніть сторінку аналогічно як на рис.11, зокрема вкажіть AppName та HostName. Зверніть увагу на те, що HostName має бути унікальним, тому для даної лабораторної роботи це поле повинно включати ваше прізвище (наприклад Ivanenko) і ім’я (наприклад Ivan) англійською мовою без пробілів за наступним шаблоном:

 IvanenkoIvanNodeRED

рис.11.

Після заповнення натисніть “Create”. Повинно відкритися вікно з оглядом хмарного застосунку Node-RED (рис.12). Дочекайтеся кілька хвилин, поки сервіс створиться і запуститься, що буде  видно на рис.12 з стану.  

рис.12.

2.2. Перегляд станів сервісів набору Node-RED starter 

При виборі Node-RED starter   створилися два сервіси:

–        хмарний застосунок Node.js з наперед встановленим Node-RED 

–        та не-SQL СУБД Cloudant, що використовує формат JSON.

Крім того, автоматично створюється зв'язок між цими сервісами, що дозволяє вже використовувати СУБД Cloudant в додатках Node-RED. У даному пункті необхідно подивитися стан цих сервісів. Нагадаємо, що перелік всіх доступних сервісів можна знайти через список ресурсів «Меню навігації» -> «Resource List».

Відкрийте вікно списку ресурсів. У Вас повинно бути доступно 3 ресурси (рис.13). 

 рис.13.

 Відкрийте кожний ресурс в окремій вкладці браузеру. Усі сервіси мають вкладку Manage, через який ними можна керувати, окрім ресурсу Node-RED-cloudantNoSQLDB який по суті є псевдонімом Cloudant-uu.  

2.3. Перегляд стану сервісу Cloudant   

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

рис.14.

2.4. Перегляд стану та керування виконанням сервісу Node-RED   

Використовуючи ліву бічну панель передивіться усі закладки ресурсу Node-RED (рис.15).

Зокрема на закладці «Overview» можна подивитися стан сервісу. Наприклад «Stopped» вказує на те, що сервіс зупинено. Слід звернути увагу, що при невикористанні сервісу протягом певного періоду він автоматично зупиняється, про що буде повідомлено листом на пошту, яка використовувалась при реєстрації.  Запуск, зупинка та перезапуск сервісу відбувається через праве меню  керування сервісом (див. рис.15).

Якщо сервіс не виконується – запустіть його.

рис.15.

 Перейдіть на закладку бічної панелі Runtime. Передивіться зміст усіх можливостей: Memory and Instance, Environment variables та SSH. Зверніть увагу, що SSH дає можливість керувати віртуальною машиною, на якій завантажений Node.js (рис.16).  

рис.16.

Передивіться вміст інших вікон налаштувань переходячи на усі інші закладки бічної панелі. 

3. Перший запуск і робота з хмарним сервісом Node-RED

Робота з хмарним застосунком  Node-RED аналогічна як і з локальним. Слід зазначити, що в ньому вже інтегровано багато функцій, які стосуються роботи з хмарними сервісами IBM Cloud, що робить його зручним і простим інструментом інтеграції застосунків IIoT та Industry 4.0. У даному підрозділі показано як перший раз запускати сервіс Node-RED, та як створити простий розподілений додаток Node-RED local <-> Node-RED Clud.

У першій лабораторній роботі була наведена одна із структур рішень IIoT (рис.16.а). В даній частині лабораторної роботи пропонується використовувати зв'язок Node-RED з боку Edge (наприклад на базі Raspberry PI) та хмарного застосунку Node-RED з використанням протоколу WEB Socket.

рис.16.а

3.1. Перший запуск Node-RED   

На вкладці Overview керування ресурсами Node-RED, натисніть «Visit App Url» (див.рис.16).

При першому вході в систему, необхідно пройти процедуру налаштування. Це потрібно для створення користувача, що зможе розробляти додатки Node-RED.  

На сторінці привітання рис.17, натисніть “Next”.  Вкажіть ім’я та  пароль користувача, які зможуть редагувати застосунки в Node-RED (рис.17) також обов’язково виставить опцію «Allow anyone to view the editor» і натисніть “Next”.       

рис.17.

Використовуючи кнопку “Next” перейдіть до останньої вкладки і натисніть “Finish”.  На стартовому вікні Node-RED (рис.18) натисніть кнопку “Go to your Node-RED flow editor”. Введіть ім’я користувач і пароль, які Ви налаштували до цього.

рис.18.

 

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

Використовуючи меню Manage Palette встановіть пакет node-red-dashboard. Тепер у Вас є можливість розробляти користувацький інтерфейс для загального доступу з Інтернету.

3.3. Перевірка доступу до користувацького інтерфейсу Node-RED    

Створіть просту програму, яка виводить текст отриманий з вузла Inject (рис.19). Налаштуйте одну закладку та групу для Веб-інтерфейсу, зробіть розгортання проекту. Відкрийте інтерфейс користувача.

Скопіюйте посилання на сторінку Вашого інтерфейсу, відкрийте його на іншому ПК, смартфоні або, якщо такої можливості немає – в іншому браузері.

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

рис.19.

3.4. Передача даних з локального Node-RED на віддалений з використанням WEB-socket   

Модифікуйте програму в хмарному Node-RED, як це показано на рис.20.

рис.20.

Запустіть Node-RED на локальному ПК. Створіть новий потік з назвою «Laba3_1», всі інші потоки деактивуйте. Створіть програму, яка показана на рис.21. При цьому першу частину шляху (яка замальована на рис.21) скопіюйте з Вашого хмарного UI.

рис.21.

 Зробіть розгортання на локальному і віддаленому Node-RED. Активуючи Inject на локальному ПК перевірте роботу зв’язку між локальним та хмарним застосунком Node-RED.

Модифікуйте програму в локальному Node-RED, як це показано на рис.21.а. Ця програма імітує змінні ramp та sin кожні 5 секунд. Перевірте її роботу.

рис.21.a.

 

Використовуючи усі розглянуті в минулій лабораторній роботі протоколи можна інтегрувати сервіси хмарного Node-RED як з Edge так і з іншими хмарними сервісами чи застосунками Інтернету. Таким чином, хмарний Node-RED можна використовувати в якості основного сервісу, що забезпечує з’єднання між Edge та іншими сервісами.

Тим не менше в наступній частині лабораторної роботи в якості базового сервісу IIoT буде використовуватися IBM Internet of Things Platform.

4. Перший запуск і робота з хмарним сервісом Cloudant

IBM Cloudant - це документно-орієнтована база даних як служба (DBaaS). Вона зберігає дані у вигляді  документів формату JSON.

4.1. Запуск сторінки адміністрування Cloudant (Cloudant Dashboard)      

Використовуючи список ресурсів перейдіть на вікно керування сервісом Cloudant (Cloudant Dashboard). У вікні Manage, натисніть “Launch Cloudant Dashboard” для запуску сторінки адміністрування сервісу.

4.2. Вікна налаштування та адміністрування Cloudant      

Після запуску вікна адміністрування Cloudant,  автоматично відкриється вкладка Databases (рис.23). На цій вкладці видно всі бази даних (документи)  Cloudant. Після першого запуску Cloudant в переліку буде тільки база даних nodered. 

рис.23.

      Передивіться усі сторінки зі вкладок лівої бічної панелі (рис.23). Зокрема подивіться на обмеження підписки на вкладці Account.

4.3. Створення БД       

На вкладці Databases натисніть кнопку «Create Database». Назвіть цю БД  «db1».   

рис.24.

4.4. Запис в БД з хмарного Node-RED      

У даному пункті для запису отриманих даних з пристрою Edge використовуватимуться вузли Cloudant.   

Ознайомтеся з роботою вузлів Cloudant  довідника Node-RED.

Змініть програму у хмарному Node-RED, як це показано на рис.25.

рис.25.

Зробіть розгортання проекту і запустіть на виконання. Перевірте чи пишуться дані в БД.  Запустіть Cloudant Dashboard. В переліку БД зайдіть в базу даних “db1”, натисніть її для перегляду.  У списку документів повинні з’явитися записи, як на рис. 26.

рис.26.

4.5. Перегляд БД з Cloudant Dashboard       

У списку документів виберіть табличне представлення (кнопка Table). Як видно дані відображаються у вигляді таблиці, я якій є поля _id, ramp та sin (рис.27).   

рис.27.

Перегляньте перелік у вигляді списку документів JSON (рис.28). Намагайтеся розібратися в структурі документу.   Детальний опис структури документу наведений за цим і за цим посиланням.  Нижче описані тільки деякі основні поля.

Усі документи повинні мати унікальні поля  _id  та _rev. Поле _id  може формуватися автоматично. Поле _rev є  номером версії. Окрім цих 2-х полів, документ може вміщувати будь які інші поля, відповідно до правил JSON. Поля, що починаються з «_» зарезервовані як службові.

рис.28.

4.6. Читання записів даних БД Cloudant з Node-RED        

Вставте в хмарному Node-RED вузол Cloudant in і модифікуйте програму, як це показані на рис.29.  

Зробіть розгортання проекту і перевірте його роботу.  У вікні відлагодження після запуску Inject повинен сформуватися масив документів за весь час роботи.

 рис.29.

4.7. Добавлення в документи відмітки часу       

Для того, щоб мати можливість заходити дані за часом, необхідно  в записи вставляти також відмітки часу.  Модифікуйте локальну програму в Node-RED так, як це показано на рис.30.

рис.30

Зробіть розгортання та перевірте його роботу.

 

4.8. Формування та перевірка користувацьких запитів find в Cloudant Dashboard        

Для доступу до документів (а також для створення, видалення, модифікації) БД Cloudant використовується HTTP API. Як і всі СУБД, Cloudant приймає запити від клієнтів і повертає відповідь на них. 

  • Для доступу до необхідного документу необхідно вказати його  _id. Це можна зробити, використовуючи запит GET:

https://$ACCOUNT.cloudant.com/$DATABASE/$DOCUMENT_ID

  • Якщо ідентифікатор невідомий можна прочитати усі документи з бази даних задавши параметр _all_docs

https://$ACCOUNT.cloudant.com/$DATABASE/_all_docs

Саме такий механізм використовується в вузлі Cloudant in в Node-RED  в п.6.  

  • Крім цього, IBM Cloudant підтримує пошук документів по індексам з використанням методу POST та параметру _find .

https://$ACCOUNT.cloudant.com/$DATABASE/_find

  • Ще одним механізмом доступу до документів є використання пошукового індексу (search indexes).

https://$ACCOUNT.cloudant.com/$DATABASE/_design/$DDOC/_search/$INDEX_NAME

Для перевірки користувацьких запитів з використанням параметру _find можна скористатися вбудованим редактором запитів Query.  З сторінки Cloudant Dashboard зайдіть в db1. Відкрийте Query і введіть запит, як на рис.31. і натисніть “RUN QUERY”. В результаті повинен буде виданий результат запиту.

рис.31

4.9. Створення пошукових індексів в Cloudant      

Вузол Node-RED “cloudant in” не вміє формувати запити з параметром «find» (але є бібліотеки з вузлами, які вміють), замість цього можна користуватися відбором за пошуковим індексом, який необхідно попередньо створити. У пошуковому індексі необхідно вказати перелік усіх полів, за яким відбувається пошук. У нашому випадку – це поле «ts», за яким необхідно робити вибірку документів з БД.

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

На сторінці БД db1 створіть новий Search index, як це показано на рис.32. Натисніть “Search Document and Build Index”.

рис.32

 

4.10. Формування користувацьких запитів  в Node-RED        

Модифікуйте програму в в хмарному Node-RED, як це показані на рис.33. Зробіть розгортання проекту і перевірте його роботу.  У вікні відлагодження після запуску Inject повинен сформуватися масив документів за останні 5 хвилин роботи (60 записів). 

рис.33

4.11. Перегляд відібраних даних  в Node-RED за допомогою трендів       

Історичні дані, що записані в Cloudant можна відобразити з використанням Dashboard. Модифікуйте програму, як це показано на рис.34, нижче наведений лістинг функції “->Trend”, яку можне скопіювати для пришвидшення розробки.  Зробіть розгортання проекту і перевірте його роботу.  Відкрийте Веб-інтерфейс і перевірте, там повинні відображатися дані за останні 5 хвилин.

 

var result = msg.payload;

var chart = [{

    "series":["ramp","sin"],

    "data":[],

    "labels":[""]

}];

chart[0].data[0]=[];

chart[0].data[1]=[];

for (var i = 0; i < result.length; i++) {

    chart[0].data[0][i] = {"x":result[i].ts,"y":result[i].ramp};

    chart[0].data[1][i] = {"x":result[i].ts,"y":result[i].sin};

}

msg.payload = chart;

return msg;

рис.34

 

 

Скопіюйте адресу вашої Веб сторінки і відправте її викладачу, це буде звітом до Вашої роботи.

Необов’язкове завдання для самостійного виконання.

4.12. Перегляд даних за вказаний інтервал       

Спробуйте модифікувати програму в хмарному Node-RED так, щоб в користувацькому інтерфейсі вводився початковий час відображення тренду і була можливість змінювати глибину відображення.