python

Кроссплатформенный IoT: Операции с устройствами

  • пятница, 12 января 2018 г. в 03:15:19
https://habrahabr.ru/company/microsoft/blog/343802/
  • Разработка для интернета вещей
  • Python
  • Microsoft Azure
  • Блог компании Microsoft


Привет, Хабр! IoT Hub Explorer — это кроссплатформенный инструмент на базе node.js по управлению устройствами в использующемся IoT Hub, который может работать в среде Windows, Mac или Linux. Сегодня поговорим о нем в рамках диагностики и усовершенствования IoT Hub Azure. Заглядывайте под кат за подробностями!



Цикл статей «Кроссплатформенный IoT»


1. Кроссплатформенный IoT: Использование Azure CLI и Azure IoT Hub
2. Кроссплатформенный IoT: Операции с устройствами
3. Loading…

IoT Hub Explorer упрощает выполнение таких операций в IoT Hub, как: создание устройства, отправка сообщений на существующее устройство и т. д. При тестировании разработки или даже демонстрации возможностей Интернета вещей Azure эта функция оказывается особенно полезной. Теоретически, ее можно использовать и для диагностики рабочей среды. Однако для выполнения этих сценариев нужны подходящие данные телеметрии, а также канал операционного управления. Одна из моих любимых функций инструмента — проведение мониторинга сообщений об устройствах IoT Hub, получение данные о событиях и статистики по операциям устройств центра. Мы будем использовать этот инструмент для создания устройства и просмотра сообщений IoT Hub. IoT Hub Explorer доступен в GitHub здесь.

Следует учесть, что Azure IoT CLI, которому была посвящена предыдущая публикация, также поддерживает управление устройствами и его функциональные возможности будут частично совпадать с возможностями IoT Hub Explorer. Если такое произойдет, Azure CLI будет считаться главным инструментом для работы со всеми операциями IoT Hub.

Давайте воспользуемся обозревателем IoT Hub для создания и мониторинга устройства. Прежде чем сделать это, его необходимо установить. Так как это пакет node, его можно установить с помощью npm.

npm install -g iothub-explorer

Так как IoT Hub Explorer является отдельной программой, нам необходимо сначала выполнить вход, используя для этого строку подключения нашего IoT Hub. Откройте терминал bash и введите следующее:

iothub-explorer login "HostName=yourhub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=yourkey"

Если у вас под рукой нет строки подключения, вы можете ввести команду az iot hub show-connection-string -g youresourcegroup, описанную в предыдущем разделе, и получить строку подключения вашего IoT Hub. Команда авторизации должна открыть временную сессию с закрепленной политикой права доступа к центру IoT. По умолчанию срок жизни данной сессии составляет 1 час.

Session started, expires on Wed Mar 15 2017 19:59:05 GMT-0500 (CDT)
Session file: /Users/niksac/Library/Application Support/iothub-explorer/config

Учтите, что приведенная выше команда использует строку подключения для политики iothubowner, которая предоставляет полное управление вашим центром IoT.

Создание нового устройства


Чтобы создать новое устройство с помощью IoT Hub Explorer введите следующую команду:

iothub-explorer create -a

Символ -a служит для автоматического генерирования Id и учетных данных устройства при его создании. Вы также можете указать самостоятельно Id устройства или добавить JSON-файл устройства, чтобы индивидуально настроить процесс его создания. Есть и другие способы указать учетные данные, например, симметричный ключ и сертификаты X.509. Мы опубликуем отдельную статью о безопасности IoT Hub, в которой рассмотрим эти способы. На данный момент используем стандартные учетные данные, сгенерированные IoT Hub.

Если все прошло успешно, вы должны увидеть ответ следующего содержания:

deviceId:                   youdeviceId
generationId:               63624558311459675
connectionState:            Disconnected
status:                     enabled
statusReason:               null
connectionStateUpdatedTime: 0001-01-01T00:00:00
statusUpdatedTime:          0001-01-01T00:00:00
lastActivityTime:           0001-01-01T00:00:00
cloudToDeviceMessageCount:  0
authentication: 
  symmetricKey: 
    primaryKey:   symmetrickey1=
    secondaryKey: symmetrickey2=
  x509Thumprint: 
    primaryThumbprint:   null
    secondaryThumbprint: null
connectionString:           HostName=youriothub.azure-devices.net;DeviceId=youdeviceId;SharedAccessKey=symmetrickey=

Здесь есть несколько важных вещей, и одна из них, очевидно, это connectionString. Она предоставляет уникальную строку подключения устройства и позволяет связываться с ним. Привилегии для строки подключения устройства основаны на политике, определенной для устройства в центре IoT, права ограничиваются только функцией DeviceConnect. Доступ, основанный на политике, защищает наши конечные точки и ограничивает область использования конкретным устройством. Подробнее о безопасности устройства IoT Hub можно узнать здесь. Также обратите внимание, что устройство активировано, а статус — отключено. Это означает, что устройство было успешно зарегистрировано в центре IoT, но у него нет активных подключений.

Отправка и получение сообщений


Давайте инициируем подключение, отправив запрос на прием устройства. В обозревателе IoT Hub доступно несколько способов отправки и получения сообщений. Один из эффективных вариантов — команда simulate-device. Команда simulate-device позволяет инструменту выполнять роль имитатора команды устройству и имитатора приема устройством. Это может применяться для отправки определенных пользователем телеметрических сообщений или команд от имени устройства. Удобство данных функциональных возможностей проявляется при тестировании интегрированности разработок на вашем устройстве, так как это позволит сократить объем кода. Вы можете одновременно создавать сообщения и отслеживать поток отправки / получения. Команда также предоставляет такие возможности, как send-interval, send-count и receive-count, позволяющие конфигурировать симуляцию. Стоит учесть, что это не инструмент для тестирования нагрузки или проникновения, с его помощью можно провести начальные тесты, предваряющие более углубленные испытания. Давайте отправим набор сообщений на созданное нами устройство (из части 1) и затем примем сообщение с командой.

Отправка сообщения


Следующая команда отправляет 5 сообщений каждые 2 минуты на устройство с определенным Id.

niksac$ iothub-explorer simulate-device --send "Hello from IoT Hub Explorer" --device-connection-string "HostName=youriothubname.azure-devices.net;DeviceId=D1234;SharedAccessKey==" --send-count 5 --send-interval 2000  

Конечное сообщение будет выглядеть следующим образом:

Message #0 sent successfully
Message #1 sent successfully
Message #2 sent successfully
Message #3 sent successfully
Message #4 sent successfully
Device simulation finished.

Мониторинг сообщений


Другой полезной функцией IoT Hub Explorer является возможность производить мониторинг события вашего устройства или IoT Hub в целом. Это очень удобно, если вы хотите провести диагностику экземпляра вашего IoT Hub. Например, вы хотите проверить корректность доставки сообщений в IoT Hub. Вы можете использовать команду monitor-events для регистрирования всех событий, связанных с устройством, в терминале; вы также можете применить команду monitor-ops для отслеживания конечной точки операций в центре IoT.

Для мониторинга событий введите следующее:

iothub-explorer monitor-events --login "HostName=youriothub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=="

В результате создается прослушиватель, фиксирующий активность во всем центре IoT. Как отмечалось ранее, вы можете указать строку подключения устройства для мониторинга конкретного устройства.

Теперь при отправке сообщения или команды на любое устройство вашего IoT Hub конечный результат будет отображаться в терминале. Например, если вы открыли прослушиватель monitor-event в окне терминала и затем повторно выполнили команду simulate-device --send, следующий результат должен отобразиться в терминале:

Monitoring events from all devices...
==== From: D1234 ====
Hello from IoT Hub Explorer
====================
==== From: D1234 ====
Hello from IoT Hub Explorer
====================
==== From: D1234 ====
Hello from IoT Hub Explorer
====================
==== From: D1234 ====
Hello from IoT Hub Explorer
====================
==== From: D1234 ====
Hello from IoT Hub Explorer
====================

В IoT Hub Explorer доступно множество других команд, таких как: импорт / экспорт устройств, повторное создание прав доступа в SAS, команды по управлению устройством. Вам необходимо в ознакомительных целях попробовать применить различные опции и команды IoT Hub Explorer; это поможет вам избежать прописывания кода для стандартных операций.