Підключення шлюзів Intel для інтернету речей до AWS і обмін даними з хмарою за допомогою Node-RED або Python

Розповімо про те, як підключити шлюз Intel для інтернету речей до Amazon Web Services (AWS) і приступити до створення додатків, розрахованих на роботу з цією платформою, з використанням Node-RED та Python. У результаті ми прийдемо до рішення, в якому шлюз буде передавати в хмару дані, використовуючи протокол MQTT.



Для того, щоб випробувати на практиці те, про що піде мова, вам знадобиться шлюз Intel для інтернету речей з IDP 3.1 або вище, підключений до інтернету, і комп'ютер, з якого можна організувати термінальний доступ до шлюзу.

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

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

▍Установка репозиторію IoT Cloud на шлюз
Встановимо на шлюз репозиторій IoT Cloud.

  1. Зайдіть в консоль шлюзу, використовуючи або монітор і клавіатуру, підключені до нього безпосередньо, або, і краще вчинити саме так, по SSH з віддаленого комп'ютера.

  2. Додайте ключ GPG для хмарного сховища, ввівши таку команду:

    rpm --import http://iotdk.intel.com/misc/iot_pub.key

  3. На комп'ютері відкрийте браузер, і, ввівши IP-адреса шлюзу в адресний рядок, підключіться до Intel IoT Gateway Developer Hub. Для того, щоб з'ясувати ІР-адресу шлюзу, можна скористатися командою
    ifconfig
    .

  4. Увійдіть у IoT Gateway Developer Hub, використавши дані вашого облікового запису. Стандартні ім'я користувача і пароль root.


    Вхід у IoT Gateway Developer Hub

  5. Додайте в систему репозиторій IoT Cloud.


    Додавання репозиторію IoT Cloud

  6. Перейдіть в розділ Packages і клацніть по кнопці Add Repo +.


    Налаштування параметрів репозиторію

  7. Заповніть поля вікна, що з'явилося наступним чином:

    Name: IoT_Cloud
    URL: iotdk.intel.com/repos/iot-cloud/wrlinux7/rcpl13
    Потім клацніть по кнопці Add Repository.

  8. І, нарешті, клацніть по кнопці Update Repositories для того, щоб оновити список пакетів.
▍Налаштування підтримки AWS на шлюзі
Тут розглянемо кроки, необхідні для того, щоб оснастити шлюз підтримкою служб Amazon Web Services.

  1. Натисніть кнопку Add Packages +. Це викличе список пакетів, які можна встановити.


    Початок процесу інсталяції пакета

  2. Виконайте пошук за ключовою фразою cloud-aws, ввівши її в поле, розташоване у верхній частині вікна додавання нового пакету. Потім, коли потрібний пакет буде знайдений, клацніть по кнопці Install, яка розташована правіше запису packagegroup-cloud-aws.


    Установка пакета
▍Налаштування користувача в AWS
Налаштуємо параметри облікового запису в Amazon Web Services. Це знадобиться для підключення до хмари.

  1. У браузері перейдіть за адресою консолі AWS, увійдіть у свій обліковий запис Amazon Web Sevices.

  2. Налаштуйте політику AWSIoTFullAccess.


    Налаштування дозволів облікового запису AWS

  3. Виберіть ім'я облікового запису в правій верхній частині вікна і виберіть команду Security Credentials з випадаючого меню.


    Попереджувальний напис про доступ до параметрів безпеки

    Якщо ви побачите спливаюче повідомлення, показане на малюнку вище, клацніть по кнопці Continue to Security Credentials.

  4. У лівій частині вікна клацніть по посиланню Users для того, щоб побачити список користувачів у вашій облікового запису AWS. Якщо користувачів в списку немає, клацніть по кнопці Create New Users, введіть ім'я нового користувача і клацніть по кнопці Create. Після цього запис створеного користувача з'явиться в списку.


    Додавання нового користувача до облікового запису AWS

  5. Клацніть по імені користувача для виведення сторінки з відомостями про нього. Виберіть вкладку Permissions і клацніть по кнопці Attach Policy.


    Початок призначення політики безпеки для користувача

  6. Знайдіть у списку політику AWSIoTFullAccess. Поставте прапорець у полі навпроти назви політики і клацніть по кнопці Attach Policy для того, щоб призначити її користувачеві.


    Призначення політики безпеки користувачеві

  7. Створіть ключ доступу для пристрою.

  8. Поверніться на екран відомостей про користувача і клацніть по кнопці Create Access Key на вкладці Security Credentials.


    Створення ключа доступу для пристрою

    Після цього з'явиться вікно, в якому міститься унікальна для кожного користувача ключова пара. Ключ, який відображається в полі Secret Access Key, показують лише один раз, після закриття вікна його більше не побачити. Це означає, що вам знадобиться згенерувати новий ключ для повторного доступу до системи, якщо старий, після того, як він був створений, ви ніде не зберегли.


    Створення ключа доступу

    Увага! Не закривайте це вікно до тих пір, поки не виконайте дії, описані в наступному розділі.
▍Налаштування шлюзу
Рекомендовано підключитися до шлюзу по SSH або користуватися командним рядком за допомогою інтерфейсу IoT Gateway Developer Hub для того, щоб зручно було копіювати команди. Якщо ви працюєте з командним рядком, підключившись до шлюзу безпосередньо, використовуючи монітор і клавіатуру, вам, в наступному розділі, доведеться вручну вводити ключ доступу і секретний ключ.

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

    aws configure

    У відповідь на неї система запропонує ввести наступне:

    • AWS Access Key ID: Тільки що згенерований Access Key ID, ключ доступу.
    • AWS Secret Access Key: Secret Access Key, секретний ключ, який відповідає згенеровані ключа доступу.
    • Регіон за замовчуванням: тут можна знайти список регіонів (наприклад, eu-west-1)
    • Формат виводу: тут підійдуть стандартні налаштування, тому натисніть Enter.
  2. Створіть «річ», прив'язану до вашого примірника AWS. Для цього введіть на шлюзі наступні команди:

    aws iot create-thing --thing-name gateway-test-01

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


    Успішне створення «речі»

  3. Виберіть дозволу. Для цього введіть в консолі наступні команди для того, щоб створити нову політику дозволів для вашого примірника AWS.

    aws iot create-policy --policy-name gateway-policy --policy-document '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action":["iot:*"], "Resource": [".*"] }] }'

    Про успішне додавання політики можна дізнатися за повідомленням в консолі.


    Успішне додавання політики

  4. Створіть ключі і сертифікат для «речі». Для цього потрібно ввести наступні команди, які створять ключі і сертифікати, необхідні для організації взаємодії з AWS.

    wget -O rootCA.pem https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem aws iot create-keys-and-certificate --set-as-ad --certificate-pem-outfile cert.pem --private-key-outfile privkey.pem

    Якщо все йде як треба, в консолі з'являться повідомлення, що нагадують ті, що показані нижче. За ними буде йти великий фрагмент JSON-даних. Для того, щоб продовжити роботу, нам потрібен лише параметр certificateArn, який знаходиться на самому початку.


    Успішне додавання ключів і сертифікатів

  5. Тепер треба зв'язати політику і сертифікат. Для цього скористайтеся наступною командою:

    aws iot attach-principal-policy --policy-name ${POLICY_NAME} –principal ${CERTIFICATE_ARN}

    Перевірте, чи вірно ви вводите ім'я політики (наприклад, gateway-policy) і значення certificateArn, отримане на попередньому кроці. Виглядати все це може так:

    aws iot attach-principal-policy --policy-name gateway-policy --principal arn:aws:iot:eu-west-1:681450608718:cert/122c86b84c6e0b919353882c03ca37385855897e16804438a20d44b3f9934cb3

  6. Перевірте пристрій в консолі AWS IoT. Для цього перейдіть до домашнього екрану консолі, клацнувши по значку AWS у верхній частині сторінки зліва. Потім перевірте, щоб у верхньому правому кутку був обраний той регіон, який використаний при налаштуванні шлюзу (наприклад, Ireland). Тепер клацніть по значку служби AWS IoT у списку.


    Домашній екран AWS, перехід до AWS IoT

    Тепер в панелі управління AWS IoT повинна бути видна тільки що створена «річ», а також політика і сертифікат, налаштуванням яких ми займалися вище.


    Панель управління AWS
На даному етапі, після установки шлюзу, можна займатися обміном даними з AWS. Зараз розглянемо два варіанти взаємодії шлюзу і хмари: з використанням Node-RED та Python. Якщо вам цікава лише одна з вищезазначених платформ розробки додатків, ви цілком можете прочитати лише розділ, присвячений їй.

Взаємодія з AWS IoT. Node-RED
Для того, щоб приступити до роботи в середовищі Node-RED, потрібно переконатися в тому, що ви користуєтеся свіжою версією ОС. Для роботи з AWS потрібно Node-RED 0.14.x.

▍Налаштування AWS
Контролювати взаємодію AWS і шлюзу можна за допомогою консолі AWS.

  1. В консолі AWS IoT клацніть по посиланню MQTT Client, яка розташована в правій верхній частині вікна.


    Посилання MQTT Client

  2. У вікні MQTT Client введіть ім'я «речі», яку призначали раніше (наприклад, gateway-test-01) і клацніть по кнопці Connect.


    Підключення до «речі»

    Якщо AWS може взаємодіяти зі шлюзом, повідомлення про стан з'єднання зміниться на Connected і забарвиться в зелений колір.


    Стан підключення шлюзу до AWS

  3. Клацніть по посиланню Subscribe to topic у розділі MQTT Client Actions.


    Початок процесу підписки на MQTT-тему

  4. У полі Subscription topic введіть
    sdk/test/nodered
    і клацніть по кнопці Subscribe.


    Передплата на тему

    Тепер повідомлення, опубліковані шлюзом в темі sdk/test/nodered, будуть з'являтися у вікні повідомлень.


    Вікно перегляду повідомлень, отриманих від шлюзу
▍Завантаження інтерфейсу Node-RED
Для того, щоб відкрити вікно Node-RED, потрібно, в IoT Gateway Developer Hub, перейти в розділ Administration. Тут, під значком Node-RED, треба клацнути по кнопці Launch.


Запуск Node-RED

▍Налаштування блок-схеми програми
  1. Перетягніть на поточний лист вузли mqtt та inject з панелі вузлів, яка розташована ліворуч. Якщо потрібного сайту не видно, перейдіть панель.


    Вузли inject і mqtt

  2. Розташуйте вузли у вікні і з'єднайте їх так, як показано на малюнку нижче. Тут є вузол inject, перейменований у timestamp, який буде, з заданим інтервалом, надсилати відомості про поточному часу вузла mqtt. Вузол mqtt відповідає за відправку отриманих даних MQTT-брокеру. В даному випадку це буде AWS IoT. Після того, як вузли розміщені на блок-схемі і пов'язані, їх треба настроїти.


    Схема розташування та вузлів зв'язку в Node-RED

  3. Для налаштування вузла inject (який, в результаті, став вузлом timestamp), треба зробити по ньому подвійне клацання, який викликає діалогове вікно. Його треба привести у відповідність малюнку, показаному нижче, і натиснути на кнопку Done. Завдяки цим налаштувань вузол буде відправляти дані кожні 5 секунд.


    Налаштування вузла inject

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


    Початок налаштування вузла mqtt

  5. Заповніть поля налаштування MQTT-підключення так, як показано на малюнку нижче. Вам знадобиться ввести власний URL сервера. Зараз ви дізнаєтеся про те, де його взяти.


    Налаштування вузла mqtt, введення відомостей про сервер

  6. Введіть наступну команду для того, щоб отримати адресу сервера для передачі повідомлень AWS.

    aws iot describe-endpoint

    У відповідь на неї в консоль будуть виведені відомості про адресу. А саме, параметр endpointAddress і буде містити адресу сервера, який потрібен нам для налаштування MQTT-підключення.


    Адреса сервера в консолі

    Скопіюйте URL, розміщений в лапках, і вставте його в поле Server. Зверніть увагу на те, що поле Port повинно бути порожнім.

    Тепер треба налаштувати параметри безпеки з'єднання. Перш ніж це зробити, потрібно встановити прапорець Enable secure (SSL/TLS) connection, після чого клацнути по значку Edit в кінці розділу TLS Configuration.

  7. У вікні, показаному нижче, треба налаштувати параметри. А саме, в них потрібно вказати шляхи до згенерованим раніше файлів ключів і сертифікатів.


    Налаштування шляхів до файлів ключів і сертифікатів

    • У полі Certificate потрібно ввести шлях до файлу
      cert.pem
      , який був згенерований раніше.
    • У полі Private Key – шлях до
      privkey.pem
      . Цей файл був створений.
    • У полі CA Certificate – шлях до файлу
      rootCA.pem
      , який повинен був бути завантажений.
    Всі сертифікати та ключі повинні зберігатися в одній і тій же директорії. За замовчуванням, якщо ви нічого не змінювали, підключившись до шлюзу, це /root.

    Ось як виглядають заповнені поля з нашого прикладу.


    Заповнені поля шляхів до файлів ключів і сертифікатів

  8. Після того, як завершити настроювання, клацніть по кнопці Add для того, щоб зберегти конфігурацію TLS. Екран налаштування повинен виглядати приблизно так, як показано на малюнку нижче.


    Завершення налаштування

  9. Тепер майже все готово. Залишилося лише ввести назву теми, яку планується відправляти повідомлення. Введена тема повинна відповідати тій, на яку ми підписалися раніше, налаштовуючи MQTT-клієнт в панелі управління AWS, тому потрібно ввести в поле Topic рядок
    sdk/test/nodered
    і клацнути по кнопці Done.


    Налаштування MQTT-теми

    Тепер додаток Node-RED налаштовано і готове до розгортання.
▍Розгортання і перевірка програми
  1. Натисніть кнопку Deploy у правому верхньому куті вікна Node-RED. Якщо з'явиться вікно запиту на підтвердження розгортання, натисніть у ньому кнопку Confirm deploy.


    Розгортання програми Node-RED

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


    Стан вузла mqtt

  2. Для того, щоб остаточно переконатися в тому, що все працює правильно, поверніться до вікна повідомлень клієнта MQTT в панелі управління AWS. Там повинні з'явитися нові повідомлення.


    Нові повідомлення в вікні MQTT-клієнта AWS
Надсилання даних AWS з використанням Node-RED ми налагодили. Займемося тепер організацією того ж процесу з використанням Python.

Взаємодія з AWS IoT. Python
Після того як шлюз налаштований на взаємодію з AWS, можна підготувати його до роботи з хмарою з використанням Python-скриптів. Існує чимало прикладів таких скриптів, їх можна використовувати в навчальних цілях та для тестування системи.

▍Налаштування AWS
  1. В консолі AWS IoT клацніть по посиланню MQTT Client, яка розташована в правій верхній частині вікна програми.


    Посилання MQTT Client

  2. У вікні MQTT Client введіть ім'я «речі», призначений шлюзу раніше (наприклад, gateway-test-01) і клацніть по кнопці Connect.


    Підключення до «речі»

    Якщо AWS може взаємодіяти зі шлюзом, повідомлення про стан з'єднання зміниться на Connected і забарвиться в зелений колір.


    Стан підключення шлюзу до AWS

  3. У розділі MQTT Client Actions клацніть по пункту Subscribe to topic


    Початок підписки на тему MQTT

  4. У полі Subscription topic введіть
    sdk/test/Python
    і клацніть по кнопці Subscribe.


    Налаштування передплати на тему MQTT

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


    Вікно повідомлень
▍Надсилання повідомлення зі шлюзу
  1. Для того, щоб довідатися адресу сервера, необхідний для надсилання MQTT-повідомлень зі шлюзу, виконайте наступну команду:

    aws iot describe-endpoint

    У відповідь ви отримаєте значення параметра endpointAddress, яке і містить те, що нам потрібно. Скопіюйте рядок адреси, розміщену в лапках.


    Адреса сервера

  2. виберіть папку, яка містить приклади роботи з AWS. Наприклад, у нашому випадку для цього потрібна була така команда:

    cd /usr/share/awsiotsdk/samples/python/

  3. Запустіть один із прикладів коду, скориставшись командою такого виду:

    python basicPubSub.py -e [SECURITY] -r [ROOTCA_PATH] -c [CERT_PATH] –k [PRIVATE_KEY_PATH]

    Ось як задати параметри виклику скрипта:

    • ENDPOINT: Адреса сервера, який ви з'ясували вище.
    • ROOTCA_PATH: Шлях до завантаженого раніше файлу rootCA.pem.
    • CERT_PATH: Шлях до згенеровані раніше файлу cert.pem.
    • PRIVATE_KEY_PATH: Шлях до згенеровані раніше файлу privkey.pem.
    Файли сертифікатів і ключів повинні бути розташовані в одній і тій же директорії. За замовчуванням це /root або $HOME, якщо ви нічого не змінювали, підключившись до шлюзу.

    У нашому випадку вказана команда виглядала так:

    python basicPubSub.py -e a1gx5hswnkj6kf.iot.eu-west-1.amazonaws.com -r $HOME/rootCA.pem -c $HOME/cert.pem -k $HOME/privkey.pem

    Якщо додаток-приклад запрацювало, в консоль будуть виводиться дані, на зразок тих, що показані на малюнку нижче. Це вказує на те, що MQTT-повідомлення відправляються в тему sdk/test/Python.


    Повідомлення від Python-скрипта

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


    Нові повідомлення, надіслані зі шлюзу

    В результаті на шлюзі, підключеному до AWS IoT, можна виконувати Python-скрипти, які взаємодіють з хмарою.
Висновки
Хмарна частина відіграє найважливішу роль у безлічі IoT-систем. Тепер, освоївши це керівництво, ви можете підключати IoT-шлюзи Intel до Amazon Web Services і створювати, в середовищі Node-RED або на Python, програми, які можуть працювати з хмарними службами.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.