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


Планирование и широковещательная рассылка заданий (Azure CLI)

Центр Интернета вещей Azure позволяет планировать и отслеживать задания по обновлению для миллионов устройств. Что можно сделать с помощью заданий?

  • Обновление требуемых свойств
  • Обновление тегов
  • Вызов прямых методов

По сути, задание заключает одно из этих действий и отслеживает ход выполнения на наборе устройств. Набор устройств, с которыми взаимодействует задание, определяется запросом двойника устройства. Например, с помощью задания внутреннее приложение может вызывать метод перезагрузки на 10 000 устройств, определенных запросом двойника устройства и запланированных в будущем. Затем это приложение может отследить ход выполнения задания по мере получения и выполнения метода перезагрузки на каждом из этих устройств.

Дополнительные сведения о каждой из этих возможностей см. в следующих статьях:

Примечание

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

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

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

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

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

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

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

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

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

Если вы хотите использовать Cloud Shell Azure, необходимо сначала запустить и настроить его. Если интерфейс командной строки используется локально, перейдите к разделу Подготовка двух сеансов 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 job create , заменив следующие заполнители соответствующими значениями. В этом примере нет существующего метода для устройства. Команда планирует задание, которое вызывает пример имени метода на имитированном устройстве, предоставляя значение NULL для полезных данных метода. Метод предоставляет код состояния и полезные данные в ответе.

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

    {JobName}. Имя запланированного задания. Имена заданий уникальны, поэтому при каждом выполнении этой команды выбирайте другое имя задания.

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

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

    az iot hub job create --hub-name {HubName} --job-id {JobName} \
                          --job-type scheduleDeviceMethod \
                          --method-name {MethodName} --method-payload 'null' \
                          --query-condition "deviceId = '{DeviceName}'"
    

    Совет

    При планировании команды задания az iot hub job create , которая вызывает прямой метод, необходимо указать значения для и --method-name--method-payload необязательных параметров. Для прямых методов, которые не принимают полезные данные, укажите null для --method-payload параметра .

  3. В первом сеансе CLI убедитесь, что в выходных данных отображается вызов метода. На следующем снимке экрана мы использовали SampleDevice иSampleMethod для {DeviceName} заполнителей и {MethodName} соответственно в команде az iot hub job create CLI из предыдущего шага.

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

Планирование задания для обновления свойств двойника устройства

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

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

  2. Во втором сеансе CLI выполните команду az iot hub job create , заменив следующие заполнители соответствующими значениями. В этом примере мы запланируем задание для задания требуемого свойства BuildingNo двойника равным 45 для имитированного устройства.

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

    {JobName}. Имя запланированного задания. Имена заданий уникальны, поэтому при каждом выполнении этой команды выбирайте другое имя задания.

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

    az iot hub job create --hub-name {HubName} --job-id {JobName} \
                          --job-type scheduleUpdateTwin \
                          --twin-patch '{"properties":{"desired": {"BuildingNo": 45}}}' \
                          --query-condition "deviceId = '{DeviceName}'"
    
  3. В первом сеансе CLI убедитесь, что выходные данные успешно обновлены для сообщаемого свойства двойника устройства, указывая, что нужное свойство двойника устройства также было обновлено.

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

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

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

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