Поделиться через


Начало работы с управлением устройствами (Azure CLI)

Внутренние приложения могут использовать Центр Интернета вещей Azure примитивы, такие как двойники устройств и прямые методы, для удаленного запуска и мониторинга действий управления устройствами на устройствах. В этой статье показано, как Azure CLI и устройство могут работать вместе, чтобы вызвать прямой метод для устройства с помощью Центр Интернета вещей.

Примечание.

Функции, описанные в этой статье, доступны только на стандартном уровне Центра Интернета вещей. Дополнительные сведения о базовых и бесплатных уровнях Центр Интернета вещей см. в разделе "Выбор подходящего уровня Центр Интернета вещей" для решения.

Используйте прямой метод для запуска действий управления устройствами (например, перезагрузки, сброса фабрики и обновления встроенного ПО) из сеанса Azure CLI. Устройство отвечает за следующие действия:

  • Обработка запроса метода, отправленного из Центра Интернета вещей.

  • Инициализация соответствующего действия на определенном устройстве.

  • Предоставление сведений об обновлении состояния в Центр Интернета вещей в сообщаемых свойствах.

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

В этой статье показано, как создать два сеанса Azure CLI:

  • Сеанс, создающий имитированное устройство. Имитированное устройство настраивается для возврата кода состояния и полезных данных JSON при вызове любого прямого метода.

  • Сеанс, вызывающий прямой метод на имитированном устройстве, созданном в другом сеансе.

Необходимые компоненты

  • Azure CLI. Вы также можете выполнить команды в этой статье с помощью Azure Cloud Shell, интерактивной оболочки CLI, которая выполняется в браузере или в приложении, например Терминал Windows. При использовании Cloud Shell вам не нужно ничего устанавливать. Если вы предпочитаете использовать интерфейс командной строки локально, для этой статьи требуется Azure CLI версии 2.36 или более поздней. Чтобы узнать версию, выполните команду az --version. Сведения о локальной установке или обновлении Azure CLI см. в статье "Установка Azure CLI".

  • Центр Интернета вещей в подписке Azure. Если у вас еще нет центра, выполните действия, описанные в разделе Создание центра Интернета вещей.

  • Убедитесь, что в брандмауэре открыт порт 8883. Пример устройства в этой статье использует протокол MQTT, который передает данные через порт 8883. В некоторых корпоративных и академических сетях этот порт может быть заблокирован. Дополнительные сведения и способы устранения этой проблемы см. в разделе о подключении к Центру Интернета вещей по протоколу MQTT.

Подготовка Cloud Shell

Если вы хотите использовать Azure Cloud Shell, необходимо сначала запустить и настроить его. Если вы используете интерфейс командной строки локально, перейдите к разделу "Подготовка двух сеансов CLI".

  1. Щелкните значок Cloud Shell в заголовке страницы в портал Azure.

    Снимок экрана: глобальные элементы управления из заголовка страницы портал Azure с выделением значка Cloud Shell.

    Примечание.

    Если вы используете Cloud Shell в первый раз, вам будет предложено создать хранилище, необходимое для использования Cloud Shell. Выберите подписку для создания учетной записи хранения и общей папки для службы файлов Microsoft Azure.

  2. Используйте селектор среды на панели инструментов Cloud Shell, чтобы выбрать предпочтительную среду CLI. В этой статье используется среда Bash . Вы также можете использовать среду PowerShell .

    Примечание.

    Для некоторых команд требуется другой синтаксис или форматирование в средах Bash и PowerShell . Дополнительные сведения см. в советах по использованию Azure CLI.

    Снимок экрана: окно Azure Cloud Shell с выделением селектора среды на панели инструментов.

Подготовка двух сеансов CLI

Затем необходимо подготовить два сеанса Azure CLI. Если вы используете Cloud Shell, выполните эти сеансы на отдельных вкладках Cloud Shell. При использовании локального клиента CLI следует запускать отдельные экземпляры ИНТЕРФЕЙСА командной строки. Используйте отдельные сеансы CLI для следующих задач:

  • Первый сеанс имитирует устройство Интернета вещей, которое взаимодействует с центром Интернета вещей.
  • Второй сеанс вызывает прямой метод с имитированного устройства с помощью Центра Интернета вещей.

Примечание.

Azure CLI требуется вход в учетную запись Azure. Если вы используете Cloud Shell, вы автоматически войдете в учетную запись Azure. Если вы используете локальный клиент CLI, необходимо войти в каждый сеанс CLI. Вся связь между сеансом Azure CLI и центром IoT аутентифицируется и шифруется. В результате в этой статье не требуется дополнительная проверка подлинности, которую вы будете использовать с реальным устройством, например строка подключения. Дополнительные сведения о входе с помощью Azure CLI см. в статье "Вход с помощью Azure CLI".

  1. В первом сеансе CLI выполните команду az extension add. Эта команда добавляет расширение Интернета вещей Microsoft Azure для Azure CLI в оболочку CLI. Расширение добавляет в Azure CLI определенные команды Центр Интернета вещей, IoT Edge и Службы подготовки устройств Интернета вещей . После установки расширения вам не нужно снова устанавливать его в сеансе Cloud Shell.

    az extension add --name azure-iot
    

    Примечание.

    В этой статье используется последняя версия расширения Azure IoT под названием azure-iot. Прежняя версия называется azure-cli-iot-ext. В каждый момент времени должна быть установлена только одна версия. Проверить установленные расширения можно с помощью команды az extension list.

    Используйте az extension remove --name azure-cli-iot-ext, чтобы удалить устаревшую версию расширения.

    Используйте az extension add --name azure-iot, чтобы добавить новую версию расширения.

    Чтобы узнать, какие расширения установлены, используйте az extension list.

  2. Откройте второй сеанс CLI. Если вы используете Cloud Shell в браузере, щелкните значок "Открыть новый сеанс " на панели инструментов первого сеанса CLI. Если вы используете CLI локально, откройте второй экземпляр CLI.

    Снимок экрана: окно Azure Cloud Shell, в котором выделен значок

Создание и имитация устройства

В этом разделе описано, как создать удостоверение устройства для центра Интернета вещей в первом сеансе CLI, а затем имитировать устройство с помощью этого удостоверения устройства. Имитированное устройство реагирует на прямые методы, вызываемые во втором сеансе CLI.

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

  1. В первом сеансе CLI запустите команду az iot hub device-identity create , заменив следующие заполнители соответствующими значениями. Эта команда создает удостоверение устройства для имитированного устройства.

    {DeviceName}. Имя имитированного устройства.

    {HubName}. Имя центра Интернета вещей.

    az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName} 
    
  2. В первом сеансе CLI выполните команду az iot device simulate , заменив следующие заполнители соответствующими значениями. Эта команда имитирует устройство с помощью удостоверения устройства, созданного на предыдущем шаге. Имитированное устройство настраивается для возврата кода состояния и полезных данных при вызове прямого метода.

    {DeviceName}. Имя имитированного устройства.

    {HubName}. Имя центра Интернета вещей.

    az iot device simulate --device-id {DeviceName} --hub-name {HubName} \
                           --method-response-code 201 \
                           --method-response-payload '{"result":"Direct method successful"}'
    

    Совет

    По умолчанию команда az iot device simulate отправляет 100 сообщений в облако с интервалом в 3 секунды между сообщениями. Имитация заканчивается после отправки всех сообщений. Если требуется, чтобы моделирование выполнялось дольше, можно использовать --msg-count параметр, чтобы указать больше сообщений или --msg-interval параметр, чтобы указать более длинный интервал между сообщениями. Вы также можете снова запустить команду, чтобы перезапустить имитированное устройство.

Вызов прямого метода

В этом разделе используется второй сеанс CLI для вызова прямого метода на имитированном устройстве, работающем в первом сеансе CLI.

  1. Убедитесь, что имитированное устройство в первом сеансе CLI выполняется. Если нет, перезапустите его, выполнив команду az iot device simulate из create and simulate a device.

  2. Во втором сеансе CLI выполните команду az iot hub invoke-device-method , заменив следующие заполнители соответствующими значениями. В этом примере для устройства нет существующего метода. Команда вызывает пример имени метода на имитированном устройстве. Метод предоставляет код состояния и полезные данные в ответе.

    {DeviceName}. Имя имитированного устройства.

    {HubName}. Имя центра Интернета вещей.

    {MethodName}. Имя прямого метода. У имитированного устройства нет существующего метода, поэтому вы можете выбрать любое имя, которое требуется для этой команды.

    az iot hub invoke-device-method --device-id {DeviceName} --hub-name {HubName} \
                                    --method-name {MethodName}
    
  3. В первом сеансе CLI убедитесь, что выходные данные показывают вызов метода. На следующем снимке экрана мы использовали SampleDevice и SampleMethod {MethodName} заполнители {DeviceName} соответственно в команде az iot hub invoke-device-method CLI.

    Снимок экрана: имитированное устройство, отображающее выходные данные после вызова метода.

  4. Во втором сеансе CLI убедитесь, что выходные данные показывают код состояния и полезные данные, полученные из вызываемого метода.

    Снимок экрана: окно Azure Cloud Shell, отображающее код состояния и полезные данные вызываемого прямого метода.

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

В этом разделе используется второй сеанс CLI для вызова прямого метода и предоставления полезных данных для имитированного устройства, работающего в первом сеансе CLI.

  1. Убедитесь, что имитированное устройство в первом сеансе CLI выполняется. Если нет, перезапустите его, выполнив команду az iot device simulate из create and simulate a device.

  2. Во втором сеансе CLI выполните команду az iot hub invoke-device-method , заменив следующие заполнители соответствующими значениями. В этом примере для устройства нет существующего метода. Команда вызывает пример имени метода на имитированном устройстве и предоставляет полезные данные для этого метода. Метод предоставляет код состояния и полезные данные в ответе.

    {DeviceName}. Имя имитированного устройства.

    {HubName}. Имя центра Интернета вещей.

    {MethodName}. Имя прямого метода. У имитированного устройства нет существующего метода, поэтому вы можете выбрать любое имя, которое требуется для этой команды.

    az iot hub invoke-device-method --device-id {DeviceName} --hub-name {HubName} \
                                    --method-name {MethodName} \
                                    --method-payload '{ "SamplePayload": "PayloadValue" }'
    
  3. В первом сеансе CLI убедитесь, что выходные данные показывают вызов метода. На следующем снимке экрана мы использовали SampleDevice и SampleMethod {MethodName} заполнители {DeviceName} соответственно в команде az iot hub invoke-device-method CLI.

    Снимок экрана: имитированное устройство, отображающее выходные данные после вызова метода с полезными данными.

  4. Во втором сеансе CLI убедитесь, что выходные данные показывают код состояния и полезные данные, полученные из вызываемого метода.

    Снимок экрана: окно Azure Cloud Shell, отображающее код состояния и полезные данные вызываемого прямого метода.

Следующие шаги

Сведения об использовании Azure CLI для расширения решения Интернета вещей и планирования вызовов методов на устройствах см. в статье "Расписание и широковещательные задания".

Чтобы продолжить работу с Центр Интернета вещей и шаблонами управления устройствами, такими как комплексное обновление на основе образов, см. статью "Обновление устройств" для Центр Интернета вещей Azure статьи с помощью эталонного образа Raspberry Pi 3 B+.