Планирование и трансляция заданий (Azure CLI)
Центр Интернета вещей Azure позволяет планировать и отслеживать задания по обновлению для миллионов устройств. Что можно сделать с помощью заданий?
- Обновление требуемых свойств
- Обновление тегов
- Вызов прямых методов
Концептуально задание упаковывает одно из этих действий и отслеживает ход выполнения для набора устройств. Набор устройств, с которыми взаимодействует задание, определяется запросом двойника устройства. Например, с помощью задания внутреннее приложение может вызывать метод перезагрузки на 10 000 устройств, определенных запросом двойника устройства и запланированных в будущем. Затем это приложение может отследить ход выполнения задания по мере получения и выполнения метода перезагрузки на каждом из этих устройств.
Дополнительные сведения о каждой из этих возможностей см. в следующих статьях:
Двойники устройств и свойства: Начало работы с двойниками устройств и Общие сведения о двойниках устройств и их использование в Центре Интернета вещей.
Прямые методы: руководство разработчика Центр Интернета вещей — прямые методы
Примечание.
Функции, описанные в этой статье, доступны только на стандартном уровне Центра Интернета вещей. Дополнительные сведения о базовых и бесплатных уровнях Центр Интернета вещей см. в разделе "Выбор подходящего уровня Центр Интернета вещей" для решения.
В этой статье показано, как создать два сеанса 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".
Щелкните значок Cloud Shell в заголовке страницы в портал Azure.
Примечание.
Если вы используете Cloud Shell в первый раз, вам будет предложено создать хранилище, необходимое для использования Cloud Shell. Выберите подписку для создания учетной записи хранения и общей папки для службы файлов Microsoft Azure.
Используйте селектор среды на панели инструментов Cloud Shell, чтобы выбрать предпочтительную среду CLI. В этой статье используется среда Bash . Вы также можете использовать среду PowerShell .
Примечание.
Для некоторых команд требуется другой синтаксис или форматирование в средах Bash и PowerShell . Дополнительные сведения см. в советах по использованию Azure CLI.
Подготовка двух сеансов CLI
Затем необходимо подготовить два сеанса Azure CLI. Если вы используете Cloud Shell, выполните эти сеансы на отдельных вкладках Cloud Shell. При использовании локального клиента CLI следует запускать отдельные экземпляры ИНТЕРФЕЙСА командной строки. Используйте отдельные сеансы CLI для следующих задач:
- Первый сеанс имитирует устройство Интернета вещей, которое взаимодействует с центром Интернета вещей.
- Второй сеанс планирует задания для имитированного устройства с центром Интернета вещей.
Примечание.
Azure CLI требуется вход в учетную запись Azure. Если вы используете Cloud Shell, вы автоматически войдете в учетную запись Azure. Если вы используете локальный клиент CLI, необходимо войти в каждый сеанс CLI. Вся связь между сеансом Azure CLI и центром IoT аутентифицируется и шифруется. В результате в этой статье не требуется дополнительная проверка подлинности, которую вы будете использовать с реальным устройством, например строка подключения. Дополнительные сведения о входе с помощью Azure CLI см. в статье "Вход с помощью Azure CLI".
В первом сеансе 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
.Откройте второй сеанс CLI. Если вы используете Cloud Shell в браузере, щелкните значок "Открыть новый сеанс " на панели инструментов первого сеанса CLI. Если вы используете CLI локально, откройте второй экземпляр CLI.
Создание и имитация устройства
В этом разделе описано, как создать удостоверение устройства для центра Интернета вещей в первом сеансе CLI, а затем имитировать устройство с помощью этого удостоверения устройства. Имитированное устройство реагирует на задания, запланированные во втором сеансе CLI.
Чтобы создать и запустить имитированное устройство, выполните указанные ниже действия.
В первом сеансе CLI запустите команду az iot hub device-identity create , заменив следующие заполнители соответствующими значениями. Эта команда создает удостоверение устройства для имитированного устройства.
{DeviceName}. Имя имитированного устройства.
{HubName}. Имя центра Интернета вещей.
az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName}
В первом сеансе 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.
Убедитесь, что имитированное устройство в первом сеансе CLI выполняется. Если нет, перезапустите его, выполнив команду az iot device simulate из create and simulate a device.
Во втором сеансе CLI выполните команду создания задания az iot hub, заменив следующие заполнители соответствующими значениями. В этом примере для устройства нет существующего метода. Команда планирует задание, которое вызывает имя метода примера на имитированном устройстве, предоставляя значение NULL для полезных данных метода. Метод предоставляет код состояния и полезные данные в ответе.
{HubName}. Имя центра Интернета вещей.
{JobName}. Имя запланированного задания. Имена заданий уникальны, поэтому каждый раз при выполнении этой команды выберите другое имя задания.
{MethodName}. Имя прямого метода. У имитированного устройства нет существующего метода, поэтому вы можете выбрать любое имя, которое требуется для этой команды.
{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 command, которая вызывает прямой метод, необходимо указать значения для обоих
--method-name
и--method-payload
необязательных параметров. Для прямых методов, которые не принимают полезные данные, укажитеnull
для--method-payload
параметра.В первом сеансе CLI убедитесь, что выходные данные показывают вызов метода. На следующем снимке экрана мы использовали
SampleDevice
иSampleMethod
{MethodName}
заполнители{DeviceName}
соответственно в командеaz iot hub job create
CLI на предыдущем шаге.
Планирование задания для обновления свойств двойника устройства
В этом разделе описано, как запланировать задание во втором сеансе CLI, чтобы обновить нужное свойство двойника устройства на имитированном устройстве, работающем в первом сеансе CLI.
Убедитесь, что имитированное устройство в первом сеансе CLI выполняется. Если нет, перезапустите его, выполнив команду az iot device simulate из create and simulate a device.
Во втором сеансе CLI выполните команду создания задания az iot hub, заменив следующие заполнители соответствующими значениями. В этом примере мы планируем задание, чтобы задать значение требуемого свойства
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}'"
В первом сеансе CLI убедитесь, что выходные данные показывают успешное обновление для сообщаемого свойства двойника устройства, указывая, что нужное свойство двойника устройства также было обновлено.
Следующие шаги
В этой статье вы использовали Azure CLI для имитации устройства и планирования заданий для запуска прямого метода и обновления свойств двойника устройства для этого имитированного устройства.
Чтобы продолжить изучение шаблонов центра Интернета вещей и управления устройствами, обновите образ в обновлении устройств для Центр Интернета вещей Azure руководства с помощью образа Raspberry Pi 3 B+ Reference Image.