...

среда, 2 ноября 2016 г.

[Перевод] Подключение шлюзов 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://ift.tt/1ZVn8wW
    

  3. На компьютере откройте браузер, и, введя IP-адрес шлюза в адресную строку, подключитесь к Intel IoT Gateway Developer Hub. Для того, чтобы выяснить IP-адрес шлюза, можно воспользоваться командой 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: http://ift.tt/1W2OJgE

    Затем щёлкните по кнопке 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 http://ift.tt/1jfbAoC aws iot create-keys-and-certificate --set-as-active --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 [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.

    Сообщения от Python-скрипта
  4. Для того, чтобы проверить, действительно ли AWS эти сообщения получает, нужно вернуться к окну сообщений на сайте AWS. Там должны появляться новые сообщения.

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

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


Выводы


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

Комментарии (0)

    Let's block ads! (Why?)

    Комментариев нет:

    Отправить комментарий