- PVSM.RU - https://www.pvsm.ru -
Расскажем о том, как подключить шлюз Intel для интернета вещей к Amazon Web Services (AWS) и приступить к созданию приложений, рассчитанных на работу с этой платформой, с использованием Node-RED и Python. В итоге мы придём к решению, в котором шлюз будет передавать в облако данные, используя протокол MQTT.
[1]
Для того, чтобы опробовать на практике то, о чём пойдёт речь, вам понадобится шлюз Intel для интернета вещей с IDP 3.1 или выше, подключённый к интернету, и компьютер, с которого можно организовать терминальный доступ к шлюзу.
Если ваш шлюз нуждается в настройке, обратитесь к этому материалу [2].
Начнём с подготовки шлюза и AWS к совместной работе.
Установим на шлюз репозиторий IoT Cloud.
rpm --import http://iotdk.intel.com/misc/iot_pub.key
ifconfig
.
Вход в IoT Gateway Developer Hub
Добавление репозитория IoT Cloud
Настройка параметров репозитория
Name: IoT_Cloud
URL: iotdk.intel.com/repos/iot-cloud/wrlinux7/rcpl13 [3]
Затем щёлкните по кнопке Add Repository.
Здесь рассмотрим шаги, необходимые для того, чтобы оснастить шлюз поддержкой служб Amazon Web Services.
Начало процесса установки пакета
Установка пакета
Настроим параметры учётной записи в Amazon Web Services. Это понадобится для подключения к облаку.
Настройка разрешений для учётной записи AWS
Предупреждающая надпись о доступе к параметрам безопасности
Если вы увидите всплывающее сообщение, показанное на рисунке выше, щёлкните по кнопке Continue to Security Credentials.
Добавление нового пользователя к учётной записи AWS
Начало назначения политики безопасности для пользователя
Назначение политики безопасности пользователю
Создание ключа доступа для устройства
После этого появится окно, в котором содержится уникальная для каждого пользователя ключевая пара. Ключ, который выводится в поле Secret Access Key, показывают лишь один раз, после закрытия окна его больше не увидеть. Это означает, что вам понадобится сгенерировать новый ключ для повторного доступа к системе, если старый, после того, как он был создан, вы нигде не сохранили.
Создание ключа доступа
Внимание! Не закрывайте это окно до тех пор, пока не выполните действия, описанные в следующем разделе.
Рекомендовано подключиться к шлюзу по SSH или пользоваться командной строкой с помощью интерфейса IoT Gateway Developer Hub для того, чтобы удобно было копировать команды. Если вы работаете с командной строкой, подключившись к шлюзу напрямую, используя монитор и клавиатуру, вам, в следующем разделе, придётся вручную вводить ключ доступа и секретный ключ.
aws configure
В ответ на неё система предложит ввести следующее:
aws iot create-thing --thing-name gateway-test-01
Если добавление «вещи» прошло успешно, в консоль будут выведены сведения, напоминающие те, что показаны на рисунке ниже.
Успешное создание «вещи»
aws iot create-policy --policy-name gateway-policy --policy-document '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action":["iot:*"], "Resource": ["*"] }] }'
Об успешном добавлении политики можно узнать по сообщению в консоли.
Успешное добавление политики
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, который находится в самом начале.
Успешное добавление ключей и сертификатов
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
Домашний экран AWS, переход к AWS IoT
Теперь в панели управления AWS IoT должна быть видна только что созданная «вещь», а также политика и сертификат, настройкой которых мы занимались выше.
Панель управления AWS
На данном этапе, после настройки шлюза, можно заниматься обменом данными с AWS. Сейчас рассмотрим два варианта взаимодействия шлюза и облака: с использованием Node-RED и Python. Если вам интересна лишь одна из вышеупомянутых платформ разработки приложений, вы вполне можете прочесть лишь раздел, посвящённый ей.
Для того, чтобы приступить к работе в среде Node-RED, нужно убедиться в том, что вы пользуетесь свежей версией ОС. Для работы с AWS требуется Node-RED 0.14.x.
Контролировать взаимодействие AWS и шлюза можно с помощью консоли AWS.
Ссылка MQTT Client
Подключение к «вещи»
Если AWS может взаимодействовать со шлюзом, сообщение о состоянии соединения изменится на Connected и окрасится в зелёный цвет.
Состояние подключения шлюза к AWS
Начало процесса подписки на MQTT-тему
sdk/test/nodered
и щёлкните по кнопке Subscribe.
Подписка на тему
Теперь сообщения, опубликованные шлюзом в теме sdk/test/nodered, будут появляться в окне сообщений.
Окно просмотра сообщений, полученных от шлюза
Для того, чтобы открыть окно Node-RED, нужно, в IoT Gateway Developer Hub, перейти в раздел Administration. Здесь, под значком Node-RED, надо щёлкнуть по кнопке Launch.
Запуск Node-RED
Узлы inject и mqtt
Схема расположения и связи узлов в Node-RED
Настройка узла inject
Начало настройки узла mqtt
Настройка узла mqtt, ввод сведений о сервере
aws iot describe-endpoint
В ответ на неё в консоль будут выведены сведения об адресе. А именно, параметр endpointAddress и будет содержать адрес сервера, который нужен нам для настройки MQTT-подключения.
Адрес сервера в консоли
Скопируйте URL, размещённый в кавычках, и вставьте его в поле Server. Обратите внимание на то, что поле Port должно быть пустым.
Теперь надо настроить параметры безопасности соединения. Прежде чем это сделать, нужно установить флаг Enable secure (SSL/TLS) connection, после чего щёлкнуть по значку Edit в конце раздела TLS Configuration.
Настройка путей к файлам ключей и сертификатов
cert.pem
, который был сгенерирован ранее.
privkey.pem
. Этот файл так же был сгенерирован.
rootCA.pem
, который должен был быть загружен.Все сертификаты и ключи должны храниться в одной и той же директории. По умолчанию, если вы ничего не меняли, подключившись к шлюзу, это /root.
Вот как выглядят заполненные поля из нашего примера.
Заполненные поля путей к файлам ключей и сертификатов
Завершение настройки
sdk/test/nodered
и щёлкнуть по кнопке Done.
Настройка MQTT-темы
Теперь приложение Node-RED настроено и готово к развёртыванию.
Развёртывание приложения Node-RED
Если узел MQTT был успешно сконфигурирован, ниже него можно будет видеть зелёный индикатор с надписью connected.
Состояние узла mqtt
Новые сообщения в окне MQTT-клиента AWS
Отправку данных в AWS с использованием Node-RED мы наладили. Займёмся теперь организацией того же процесса с использованием Python.
После того как шлюз настроен на взаимодействие с AWS, можно подготовить его к работе с облаком с использованием Python-скриптов. Существует немало примеров таких скриптов, их можно использовать в учебных целях и для тестирования системы.
Ссылка MQTT Client
Подключение к «вещи»
Если AWS может взаимодействовать со шлюзом, сообщение о состоянии соединения изменится на Connected и окрасится в зелёный цвет.
Состояние подключения шлюза к AWS
Начало подписки на тему MQTT
sdk/test/Python
и щёлкните по кнопке Subscribe.
Настройка подписки на тему MQTT
Сообщения, полученные со шлюза, можно будет просмотреть в окне сообщений.
Окно сообщений
aws iot describe-endpoint
В ответ вы получите значение параметра endpointAddress, которое и содержит то, что нам нужно. Скопируйте строку адреса, размещённую в кавычках.
Адрес сервера
cd /usr/share/awsiotsdk/samples/python/
python basicPubSub.py -e [ENDPOINT] -r [ROOTCA_PATH] -c [CERT_PATH] –k [PRIVATE_KEY_PATH]
Вот как задать параметры вызова скрипта:
Файлы сертификатов и ключей должны быть расположены в одной и той же директории. По умолчанию это /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-скрипта
Новые сообщения, отправленные со шлюза
В результате на шлюзе, подключённом к AWS IoT, можно исполнять Python-скрипты, взаимодействующие с облаком.
Облачная часть играет важнейшую роль во множестве IoT-систем. Теперь, освоив это руководство, вы можете подключать IoT-шлюзы Intel к Amazon Web Services и создавать, в среде Node-RED или на Python, приложения, которые могут работать с облачными службами.
Автор: Intel
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/205310
Ссылки в тексте:
[1] Image: https://habrahabr.ru/company/intel/blog/314282/
[2] этому материалу: https://software.intel.com/en-us/node/633284
[3] iotdk.intel.com/repos/iot-cloud/wrlinux7/rcpl13: http://iotdk.intel.com/repos/iot-cloud/wrlinux7/rcpl13
[4] консоли AWS: https://console.aws.amazon.com/
[5] здесь: http://docs.aws.amazon.com/general/latest/gr/rande.html#iot_
[6] Источник: https://habrahabr.ru/post/314282/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.