Интеграция модулей Telit в Azure IoT Hub
Практическая реализация
Компания Telit производит модули передачи данных, предназначенные, с одной стороны, для интеграции с устройствами Интернета вещей (Internet of Things, IoT), а с другой -для взаимодействия с облачными сервисами IoT. Рассмотрим возможности совместной работы модулей сотовой связи Telit (в частности, UE866-EU) с облачным сервисом Microsoft Azure -Центром Интернета вещей (Azure IoT Hub) на практическом примере.
Сервис Microsoft Azure IoT Hub позволяет получать данные практически с любого количества различных устройств, реализующих на практике принципы IoT, в реальном времени и отправлять команды на устройства, а также управлять устройствами.
Для начала работы с Azure IoT Hub необходимо иметь учетную запись Microsoft. Получение такой учетной записи тривиально и выходит за рамки данной статьи. После этого необходимо зайти на портал Microsoft Azure [1] и создать собственный Центр Интернета вещей (рис. 1).
В нашем примере он будет называться RuCenter, соответственно, имя узла будет RuCenter.azure-devices.net (оно потребуется чуть позже, при привязке устройства). Далее необходимо создать само устройство в Центре, для этого проще всего воспользоваться Обозревателем устройств (рис. 2).
При желании Microsoft предлагает использовать вместо веб-интерфейса приложение Device Explorer, выполняющее аналогичные функции. Назовем наше устройство my_first_device. После создания устройства система автоматически создаст два симметричных ключа общего доступа, которые также потребуются для привязки устройства. После этого Центр уже готов к передаче сообщений в устройство и приему сообщений из устройства в IoT Hub. Для контроля переданных и принятых сообщений может использоваться несколько различных методов. Самым простым является использование уже упомянутого приложения Device Explorer, где можно непосредственно увидеть сами сообщения. Для того чтобы Device Explorer привязался к созданному ранее Центру Интернета вещей, необходимо его сконфигурировать. Для этого на вкладке Configuration необходимо ввести строку подключения к Azure IoT Hub, полученную из веб-интерфейса (рис. 3). На этом первичное конфигурирование IoT Hub заканчивается, и можно переходить к собственно устройству.
В качестве устройства будем использовать модуль UMTS/HSPA Telit UE866-EU [2]. Этот самый малогабаритный в мире модуль UMTS/HSPA с возможностью работы как в 3G-, так и в 2G-сетях уже рассматривался нами ранее [3]. Российский дистрибьютор Telit выпускает оригинальную отладочную плату Telit UE866-EU + SE868V3 bundle [4] (рис. 4), позволяющую испытать большинство функций UE866-EU без использования дополнительного оборудования (базовой платы, блока питания и пр.).
Существенным преимуществом модулей передачи данных Telit является то, что все они содержат в составе прошивки протокол MQTT [5] -один из протоколов IoT, который поддерживается также и Azure IoT Hub. Кроме того, во все модули сотовой связи Telit, включая UE866-EU, имплементирован протокол SSL/TLS, требующийся для обеспечения безопасности передаваемых данных. Основываясь на этих наработках, специалисты Telit разработали приложение AppZone [6], работающее непосредственно с Azure IoT Hub и управляемое со стороны модуля UE866-EU AT-командами. AT-команды UE866 для работы с Azure IoT Hub приведены в таблице.
#AIHCFG — конфигурирование клиента «Центра «Интернета вещей» |
|
AT#AIHCFG=<iothub_name>, |
Параметры: <iothub_name> — имя узла IoT Hub (первая часть). <iothub_suffix> — вторая часть имени узла. В примере выше будет azure-devices.net. <device_id> — имя устройства. Ранее было создано устройство my_first_device. <device_shared_key> — первичный (или вторичный) симметричный ключ общего доступа. |
AT#AIHCFG? |
По команде возвращается текущее состояние конфигурации в формате: #AIHCFG: <iothub_name>,<iothub_suffix>, <device_id>,<device_shared_key> |
AT#AIHCFG=? |
Возвращается диапазон допустимых значений параметров. |
#AIHCONN — установить/разорвать соединение с Azure IoT Hub |
|
AT#AIHCONN=<op> |
<op> — операция: «0» — разорвать соединение, «1» — установить соединение. Примечание 1: перед выполнением команды должно быть произведено конфигурирование командой AT#AIHCFG. Примечание 2: PDP-контент должен быть активным перед выполнением команды. Он может быть активирован командой AT#SGACT=1,1 (предварительно нужно сконфигурировать контент командой AT+CGDCONT). После установления соединения модуль формирует сообщение #AIH: CONNECTED. После разрыва соединения модуль формирует сообщение #AIH: DISCONNECTED. |
AT#AIHCONN? |
По команде возвращается текущее состояние соединения в формате: #AIHCONN: <status>, где <status>: «0» — неправильный PDP-контент; «1» — соединение неактивно; «2» — попытка соединения; «3» — соединение установлено; «4» — готовность к соединению. |
AT#AIHCONN=? |
Возвращается диапазон допустимых значений параметров. |
#AIHSND — отправить данные в Azure IoT Hub |
|
AT#AIHSND=<data_len> |
Команда отправляет данные в «Центр «Интернета вещей», соединение с которым было установлено ранее. <data_len> — длина сообщения в байтах, допустимый диапазон 1–1500. Модуль отвечает приглашением > и ожидает приема данных. По достижении заданной длины сообщение автоматически отправляется. |
AT#AIHSND=? |
Возвращается диапазон допустимых значений параметров. |
#AIHVER — версия приложения AppZone |
|
AT#AIHVER |
По команде возвращается версия приложения, записанная в модуль. |
AT#AIHVER? |
Идентично AT#AIHVER. |
В качестве примера отправим тестовое сообщение из UE866-EU в Azure IoT Hub. Ниже приведен лог AT-команд модуля, необходимый для инициализации соединения с Центром и передачи сообщения от устройства:
AT+CGDCONT=1,”IP”,”INTERNET” // параметры PDP-контента, необходимые для активации пакетного соединения OK AT#SGACT=1,1 // активация пакетного соединения #SGACT: 100.82.125.252 // IP-адрес, выданный оператором AT#AIHCFG=”RuCenter”,”azure-devices.net”,”my_first_device”,”sZKk/1pio2CU2qL4fegdT2WoOnpmnVwERi7y13hYZWo=”,2 // конфигурирование устройства OK at#aihconn=1 // установка соединения с Центром Интернета вещей OK #AIH: CONNECTED // соединение установлено at#aihsnd=6 // отправка сообщения длиной 6 байт > test77 // тело сообщения OK
Полученное в IoT Hub сообщение отображается во вкладке Data приложения Device Explorer (рис. 5). Как видим, сообщение доставлено в том же виде, что было отправлено из устройства.
Сообщения из Azure IoT Hub, отправленные на устройство, отображаются в виде URC (Unsolicited Result Code):
#AIH:<messageId>,<correlationId>,<userDefinedContentType>,<userDefinedContentEncoding > [,PROPS,<key1>,<value1> [,<key2>,<value2>] [,DATA,<user_message>]
Все поля URC идентичны свойствам сообщения, которые можно увидеть в приложении Device Explorer (рис. 6). В нашем примере на устройство приходит строка:
#AIH: 67b73dec-22f4-422b-800d-36a4ddf5d3d3,<null>,<null>,<null>,DATA,Hello, World!
Как и в случае передачи из устройства в IoT Hub, сообщение передано без искажений.
Таким образом, Telit реализовал в своих модулях простой и удобный интерфейс взаимодействия с Azure IoT Hub. Реализация рассчитана на модули сотовой связи с поддержкой AppZone, но легко может быть портирована и на другие модули передачи данных -Bluetooth, Wi-Fi, LoRa и другие, поскольку поддержка MQTT и SSL имеется во всех модулях Telit. Это еще раз подтверждает лидерство Telit как производителя модулей для Интернета вещей.
- https://portal.azure.com
- http://www.telit.com/wp-content/uploads/2017/09/Telit_UE866_Datasheet_AG.pdf
- Рудневский А. Новая концепция унификации Telit: гнездовая система в семействе xE866 // Беспроводные технологии. 2016. № 2.
- http://atoma.spb.ru/catalog/4118/otladochnaja-plata-telit-ue866-eu-se868v3-bundle
- http://i-o-t.ru/protokol-mqtt/
- Рудневский А. AppZone от Telit: практическое создание приложений // Беспроводные технологии. 2016. № 1.