Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python

в 14:19, , рубрики: Amazon Web Services, node-red, python, Блог компании Intel, Разработка для интернета вещей, шлюзы Intel для интернета вещей, метки:

Расскажем о том, как подключить шлюз Intel для интернета вещей к Amazon Web Services (AWS) и приступить к созданию приложений, рассчитанных на работу с этой платформой, с использованием Node-RED и Python. В итоге мы придём к решению, в котором шлюз будет передавать в облако данные, используя протокол MQTT.

Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 1

Для того, чтобы опробовать на практике то, о чём пойдёт речь, вам понадобится шлюз 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. Для того, чтобы выяснить IP-адрес шлюза, можно воспользоваться командой ifconfig.
  4. Войдите в IoT Gateway Developer Hub, использовав данные вашей учётной записи. Стандартные имя пользователя и пароль – root.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 2

    Вход в IoT Gateway Developer Hub

  5. Добавьте в систему репозиторий IoT Cloud.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 3

    Добавление репозитория IoT Cloud

  6. Перейдите в раздел Packages и щёлкните по кнопке Add Repo +.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 4

    Настройка параметров репозитория

  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 +. Это вызовет список пакетов, которые можно установить.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 5

    Начало процесса установки пакета

  2. Выполните поиск по ключевой фразе cloud-aws, введя её в поле, расположенное в верхней части окна добавления нового пакета. Затем, когда нужный пакет будет найден, щёлкните по кнопке Install, которая расположена правее записи packagegroup-cloud-aws.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 6

    Установка пакета

▍Настройка пользователя в AWS

Настроим параметры учётной записи в Amazon Web Services. Это понадобится для подключения к облаку.

  1. В браузере перейдите по адресу консоли AWS и войдите в свою учётную запись Amazon Web Sevices.
  2. Настройте политику AWSIoTFullAccess.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 7

    Настройка разрешений для учётной записи AWS

  3. Щёлкните по имени учётной записи в правой верхней части окна и выберите команду Security Credentials из выпадающего меню.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 8

    Предупреждающая надпись о доступе к параметрам безопасности

    Если вы увидите всплывающее сообщение, показанное на рисунке выше, щёлкните по кнопке Continue to Security Credentials.

  4. В левой части окна щёлкните по ссылке Users для того, чтобы вывести список пользователей в вашей учётной записи AWS. Если пользователей в списке нет, щёлкните по кнопке Create New Users, введите имя нового пользователя и щёлкните по кнопке Create. После этого запись созданного пользователя появится в списке.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 9

    Добавление нового пользователя к учётной записи AWS

  5. Щёлкните по имени пользователя для вывода страницы со сведениями о нём. Выберите вкладку Permissions и щёлкните по кнопке Attach Policy.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 10

    Начало назначения политики безопасности для пользователя

  6. Найдите в списке политику AWSIoTFullAccess. Поставьте флажок в поле напротив названия политики и щёлкните по кнопке Attach Policy для того, чтобы назначить её пользователю.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 11

    Назначение политики безопасности пользователю

  7. Создайте ключ доступа для устройства.
  8. Вернитесь на экран сведений о пользователе и щёлкните по кнопке Create Access Key на вкладке Security Credentials.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 12

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

    После этого появится окно, в котором содержится уникальная для каждого пользователя ключевая пара. Ключ, который выводится в поле Secret Access Key, показывают лишь один раз, после закрытия окна его больше не увидеть. Это означает, что вам понадобится сгенерировать новый ключ для повторного доступа к системе, если старый, после того, как он был создан, вы нигде не сохранили.

    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 13

    Создание ключа доступа

    Внимание! Не закрывайте это окно до тех пор, пока не выполните действия, описанные в следующем разделе.

▍Настройка шлюза

Рекомендовано подключиться к шлюзу по 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

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

    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 14

    Успешное создание «вещи»

  3. Задайте разрешения. Для этого введите в консоли следующие команды для того, чтобы создать новую политику разрешений для вашего экземпляра AWS.
    aws iot create-policy --policy-name gateway-policy --policy-document '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action":["iot:*"], "Resource": ["*"] }] }'

    Об успешном добавлении политики можно узнать по сообщению в консоли.

    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 15

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

  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-active --certificate-pem-outfile cert.pem --private-key-outfile privkey.pem

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

    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 16

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

  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 в списке.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 17

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

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

    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 18

    Панель управления 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, которая расположена в верхней правой части окна.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 19

    Ссылка MQTT Client

  2. В окне MQTT Client введите имя «вещи», которое назначали ранее (например, gateway-test-01) и щёлкните по кнопке Connect.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 20

    Подключение к «вещи»

    Если AWS может взаимодействовать со шлюзом, сообщение о состоянии соединения изменится на Connected и окрасится в зелёный цвет.

    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 21

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

  3. Щёлкните по ссылке Subscribe to topic в группе MQTT Client Actions.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 22

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

  4. В поле Subscription topic введите sdk/test/nodered и щёлкните по кнопке Subscribe.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 23

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

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

    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 24

    Окно просмотра сообщений, полученных от шлюза

▍Загрузка интерфейса Node-RED

Для того, чтобы открыть окно Node-RED, нужно, в IoT Gateway Developer Hub, перейти в раздел Administration. Здесь, под значком Node-RED, надо щёлкнуть по кнопке Launch.

Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 25

Запуск Node-RED

▍Настройка блок-схемы приложения

  1. Перетащите на текущий лист узлы mqtt и inject из панели узлов, которая расположена слева. Если нужного узла не видно, прокрутите панель.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 26

    Узлы inject и mqtt

  2. Расположите узлы в окне и соедините их так, как показано на рисунке ниже. Здесь имеется узел inject, переименованный в timestamp, который будет, с заданным интервалом, отправлять сведения о текущем времени узлу mqtt. Узел mqtt отвечает за отправку полученных данных MQTT-брокеру. В данном случае это будет AWS IoT. После того, как узлы размещены на блок-схеме и связаны, их надо настроить.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 27

    Схема расположения и связи узлов в Node-RED

  3. Для настройки узла inject (который, в итоге, стал узлом timestamp), нужно сделать по нему двойной щелчок, который вызовет диалоговое окно. Его надо привести в соответствие рисунку, показанному ниже, и нажать на кнопку Done. Благодаря этим настройкам узел будет отправлять данные каждые 5 секунд.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 28

    Настройка узла inject

  4. Для настройки узла mqtt выполните по нему двойной щелчок, после чего, в окне настроек, щёлкните по кнопке редактирования у поля Server.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 29

    Начало настройки узла mqtt

  5. Заполните поля настройки MQTT-подключения так, как показано на рисунке ниже. Вам понадобится ввести собственный URL сервера. Сейчас вы узнаете о том, где его взять.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 30

    Настройка узла mqtt, ввод сведений о сервере

  6. Введите следующую команду для того, чтобы получить адрес сервера для передачи сообщений AWS.
    aws iot describe-endpoint

    В ответ на неё в консоль будут выведены сведения об адресе. А именно, параметр endpointAddress и будет содержать адрес сервера, который нужен нам для настройки MQTT-подключения.

    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 31

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

    Скопируйте URL, размещённый в кавычках, и вставьте его в поле Server. Обратите внимание на то, что поле Port должно быть пустым.

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

  7. В окне, показанном ниже, надо настроить параметры. А именно, в них нужно указать пути к сгенерированным ранее файлам ключей и сертификатов.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 32

    Настройка путей к файлам ключей и сертификатов

    • В поле Certificate нужно ввести путь к файлу cert.pem, который был сгенерирован ранее.
    • В поле Private Key – путь к privkey.pem. Этот файл так же был сгенерирован.
    • В поле CA Certificate – путь к файлу rootCA.pem, который должен был быть загружен.

    Все сертификаты и ключи должны храниться в одной и той же директории. По умолчанию, если вы ничего не меняли, подключившись к шлюзу, это /root.

    Вот как выглядят заполненные поля из нашего примера.

    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 33

    Заполненные поля путей к файлам ключей и сертификатов

  8. После того, как завершите настройку, щёлкните по кнопке Add для того, чтобы сохранить конфигурацию TLS. Экран настройки должен выглядеть примерно так, как показано на рисунке ниже.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 34

    Завершение настройки

  9. Теперь почти всё готово. Осталось лишь ввести имя темы, в которую планируется отправлять сообщения. Введённая тема должна соответствовать той, на которую мы подписались ранее, настраивая MQTT-клиент в панели управления AWS, поэтому нужно ввести в поле Topic строку sdk/test/nodered и щёлкнуть по кнопке Done.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 35

    Настройка MQTT-темы

    Теперь приложение Node-RED настроено и готово к развёртыванию.

▍Развёртывание и проверка приложения

  1. Щёлкните по кнопке Deploy в правом верхнем углу окна Node-RED. Если появится окно запроса на подтверждение развёртывания, нажмите в нём кнопку Confirm deploy.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 36

    Развёртывание приложения Node-RED

    Если узел MQTT был успешно сконфигурирован, ниже него можно будет видеть зелёный индикатор с надписью connected.

    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 37

    Состояние узла mqtt

  2. Для того, чтобы окончательно убедиться в том, что всё работает правильно, вернитесь к окну сообщений клиента MQTT в панели управления AWS. Там должны появиться новые сообщения.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 38

    Новые сообщения в окне MQTT-клиента AWS

Отправку данных в AWS с использованием Node-RED мы наладили. Займёмся теперь организацией того же процесса с использованием Python.

Взаимодействие с AWS IoT. Python

После того как шлюз настроен на взаимодействие с AWS, можно подготовить его к работе с облаком с использованием Python-скриптов. Существует немало примеров таких скриптов, их можно использовать в учебных целях и для тестирования системы.

▍Настройка AWS

  1. В консоли AWS IoT щёлкните по ссылке MQTT Client, которая расположена в правой верхней части окна программы.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 39

    Ссылка MQTT Client

  2. В окне MQTT Client введите имя «вещи», назначенное шлюзу ранее (например, gateway-test-01) и щёлкните по кнопке Connect.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 40

    Подключение к «вещи»

    Если AWS может взаимодействовать со шлюзом, сообщение о состоянии соединения изменится на Connected и окрасится в зелёный цвет.

    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 41

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

  3. В разделе MQTT Client Actions щёлкните по пункту Subscribe to topic
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 42

    Начало подписки на тему MQTT

  4. В поле Subscription topic введите sdk/test/Python и щёлкните по кнопке Subscribe.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 43

    Настройка подписки на тему MQTT

    Сообщения, полученные со шлюза, можно будет просмотреть в окне сообщений.

    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 44

    Окно сообщений

▍Отправка сообщения со шлюза

  1. Для того, чтобы узнать адрес сервера, необходимый для отправки MQTT-сообщений со шлюза, выполните следующую команду:
    aws iot describe-endpoint

    В ответ вы получите значение параметра endpointAddress, которое и содержит то, что нам нужно. Скопируйте строку адреса, размещённую в кавычках.

    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 45

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

  2. Перейдите в папку, которая содержит примеры работы с AWS. Например, в нашем случае для этого потребовалась такая команда:
    cd /usr/share/awsiotsdk/samples/python/

  3. Запустите один из примеров кода, воспользовавшись командой такого вида:
    python basicPubSub.py -e [ENDPOINT] -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.

    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 46

    Сообщения от Python-скрипта

  4. Для того, чтобы проверить, действительно ли AWS эти сообщения получает, нужно вернуться к окну сообщений на сайте AWS. Там должны появляться новые сообщения.
    Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python - 47

    Новые сообщения, отправленные со шлюза

    В результате на шлюзе, подключённом к AWS IoT, можно исполнять Python-скрипты, взаимодействующие с облаком.

Выводы

Облачная часть играет важнейшую роль во множестве IoT-систем. Теперь, освоив это руководство, вы можете подключать IoT-шлюзы Intel к Amazon Web Services и создавать, в среде Node-RED или на Python, приложения, которые могут работать с облачными службами.

Автор: Intel

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js