Бөлісу құралы:


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

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

Примечание

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

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

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

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

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

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

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

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

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

Предварительные требования

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

  • Центр Интернета вещей. Создайте его с помощью CLI или портал Azure.

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

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

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

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

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

    Примечание

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

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

    Примечание

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

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

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

Затем необходимо подготовить два сеанса Azure CLI. Если вы используете Cloud Shell, эти сеансы запускаются на отдельных вкладках Cloud Shell. При использовании локального клиента CLI вы запускаете отдельные экземпляры 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 и службы подготовки устройств Интернета вещей (DPS). После установки расширения его больше не нужно устанавливать в сеансе 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.

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

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

В этом разделе вы создадите удостоверение устройства для Центра Интернета вещей в первом сеансе 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 еще раз из раздела Создание и имитация устройства.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Дальнейшие действия

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

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