Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Центр Интернета вещей Azure включает ряд строительных блоков, таких как свойства двойника устройства и теги и прямые методы. Как правило, внутренние приложения позволяют администраторам устройств и операторам обновлять устройства и взаимодействовать с устройствами Интернета вещей массово и в запланированное время. Задания выполняют обновления цифровых двойников устройств и методы управления для набора устройств в запланированное время. Например, оператор будет использовать серверное приложение, которое инициирует и отслеживает задание для перезагрузки набора устройств в здании 43 на 3 этаже в такое время, которое не нарушит работу здания.
Примечание.
Функции, описанные в этой статье, доступны только на стандартном уровне Центра Интернета вещей. Дополнительные сведения о базовых и стандартных и бесплатных уровнях Центра Интернета вещей см. в разделе Выберите нужный уровень и размер Центра Интернета вещей для вашего решения.
Рассмотрите возможность использования заданий, когда необходимо запланировать и отслеживать ход выполнения любой из следующих действий на наборе устройств:
- Обновление требуемых свойств
- Обновление тегов
- Вызов прямых методов
Жизненный цикл заданий
Задания инициируются внутренней частью решения и поддерживаются Центром Интернета вещей. Задание можно инициировать с помощью URI для обслуживания (PUT https://<iot hub>/jobs/v2/<jobID>?api-version=2021-04-12) и запросить ход выполнения задания с помощью URI для обслуживания (GET https://<iot hub>/jobs/v2/<jobID?api-version=2021-04-12). Чтобы обновить состояние выполнения заданий после запуска задания, запустите запрос задания. Нет явной очистки журнала заданий, но они имеют срок жизни 30 дней.
Примечание.
При запуске задания имена и значения свойств могут содержать только US-ASCII печатные буквенно-цифровые символы, за исключением любого из следующих элементов: $ ( ) < > @ , ; : \ " / [ ] ? = { } SP HT
Примечание.
Поле jobId должно быть 64 символами или меньше и может содержать только US-ASCII буквы, цифры и тире (-).
Задачи для реализации прямых методов
В следующем фрагменте кода показаны сведения о запросе HTTPS 1.1 для выполнения прямого метода на наборе устройств с помощью задания:
PUT /jobs/v2/<jobId>?api-version=2021-04-12
Authorization: <config.sharedAccessSignature>
Content-Type: application/json; charset=utf-8
{
"jobId": "<jobId>",
"type": "scheduleDeviceMethod",
"cloudToDeviceMethod": {
"methodName": "<methodName>",
"payload": <payload>,
"responseTimeoutInSeconds": methodTimeoutInSeconds
},
"queryCondition": "<queryOrDevices>", // query condition
"startTime": <jobStartTime>, // as an ISO-8601 date string
"maxExecutionTimeInSeconds": <maxExecutionTimeInSeconds>
}
Условие запроса также может находиться на одном идентификаторе устройства или в списке идентификаторов устройств, как показано в следующих примерах:
"queryCondition" = "deviceId = 'MyDevice1'"
"queryCondition" = "deviceId IN ['MyDevice1','MyDevice2']"
"queryCondition" = "deviceId IN ['MyDevice1']"
Язык запросов Центра Интернета вещей охватывает язык запросов Центра Интернета вещей более подробно.
В следующем фрагменте кода показаны запрос и ответ задания, запланированного для выполнения прямого вызова метода testMethod на всех устройствах на contoso-hub-1:
PUT https://contoso-hub-1.azure-devices.net/jobs/v2/job01?api-version=2021-04-12 HTTP/1.1
Authorization: SharedAccessSignature sr=contoso-hub-1.azure-devices.net&sig=68iv------------------------------------v8Hxalg%3D&se=1556849884&skn=iothubowner
Content-Type: application/json; charset=utf-8
Host: contoso-hub-1.azure-devices.net
Content-Length: 317
{
"jobId": "job01",
"type": "scheduleDeviceMethod",
"cloudToDeviceMethod": {
"methodName": "testMethod",
"payload": {},
"responseTimeoutInSeconds": 30
},
"queryCondition": "*",
"startTime": "2019-05-04T15:53:00.077Z",
"maxExecutionTimeInSeconds": 20
}
HTTP/1.1 200 OK
Content-Length: 65
Content-Type: application/json; charset=utf-8
Vary: Origin
Server: Microsoft-HTTPAPI/2.0
Date: Fri, 03 May 2019 01:46:18 GMT
{"jobId":"job01","type":"scheduleDeviceMethod","status":"queued"}
Задания для обновления свойств двойника устройства
В следующем фрагменте кода показаны сведения о запросе HTTPS 1.1 для обновления свойств двойника устройства с помощью задания:
PUT /jobs/v2/<jobId>?api-version=2021-04-12
Authorization: <config.sharedAccessSignature>
Content-Type: application/json; charset=utf-8
{
"jobId": "<jobId>",
"type": "scheduleUpdateTwin",
"updateTwin": <patch> // Valid JSON object
"queryCondition": "<queryOrDevices>", // query condition
"startTime": <jobStartTime>, // as an ISO-8601 date string
"maxExecutionTimeInSeconds": <maxExecutionTimeInSeconds>
}
Примечание.
Для свойства updateTwin требуется действительное совпадение по etag; например, etag="*".
В следующем фрагменте кода показаны запрос и ответ для задания, запланированного на обновление свойств двойника устройства для тестового устройства на contoso-hub-1.
PUT https://contoso-hub-1.azure-devices.net/jobs/v2/job02?api-version=2021-04-12 HTTP/1.1
Authorization: SharedAccessSignature sr=contoso-hub-1.azure-devices.net&sig=BN0U-------------------------------------RuA%3D&se=1556925787&skn=iothubowner
Content-Type: application/json; charset=utf-8
Host: contoso-hub-1.azure-devices.net
Content-Length: 339
{
"jobId": "job02",
"type": "scheduleUpdateTwin",
"updateTwin": {
"properties": {
"desired": {
"test1": "value1"
}
},
"etag": "*"
},
"queryCondition": "deviceId = 'test-device'",
"startTime": "2019-05-08T12:19:56.868Z",
"maxExecutionTimeInSeconds": 20
}
HTTP/1.1 200 OK
Content-Length: 63
Content-Type: application/json; charset=utf-8
Vary: Origin
Server: Microsoft-HTTPAPI/2.0
Date: Fri, 03 May 2019 22:45:13 GMT
{"jobId":"job02","type":"scheduleUpdateTwin","status":"queued"}
Запрос информации о ходе выполнения задач
В следующем фрагменте кода показаны сведения о запросе HTTPS 1.1 для запроса заданий:
GET /jobs/v2/query?api-version=2021-04-12[&jobType=<jobType>][&jobStatus=<jobStatus>][&pageSize=<pageSize>][&continuationToken=<continuationToken>]
Authorization: <config.sharedAccessSignature>
Content-Type: application/json; charset=utf-8
Токен продолжения (continuationToken) получен из ответа.
Вы можете запросить состояние выполнения задания на каждом устройстве с помощью языка запросов Центра Интернета вещей для двойников устройств, заданий и маршрутизации сообщений.
Свойства заданий
В следующем списке показаны свойства и соответствующие описания, которые можно использовать при запросе на задания или результаты задания.
| Недвижимость | Описание |
|---|---|
| jobId | Идентификатор, предоставленный приложением для задания. |
| startTime | Предоставленное приложением время начала (ISO-8601) для задания. |
| endTime | Дата завершения задания в Центре Интернета вещей (ISO-8601). Допустимо только после того, как задание достигнет состояния "завершено". |
| maxExecutionTimeInSeconds | Приложение предоставило максимально допустимое общее время, начиная с момента запуска задания, пока оно не завершится. |
| тип | Типы заданий: |
| scheduleUpdateTwin: задание, используемое для обновления набора требуемых свойств или тегов. | |
| scheduleDeviceMethod: задание, используемое для вызова метода устройства в наборе двойников устройств. | |
| состояние | Текущее состояние задания. Возможные значения для состояния: |
| ожидание: запланирован и ожидает для обработки службой заданий. | |
| запланировано: запланировано на некоторое время в будущем. | |
| выполнение: текущее активное задание. | |
| отменено: задание отменено. | |
| сбой: задание не выполнено. | |
| завершено: задание завершено. | |
| deviceJobStatistics | Статистика выполнения задания. |
| свойства deviceJobStatistics: | |
| deviceJobStatistics.deviceCount: количество устройств в задании. | |
| deviceJobStatistics.failedCount: количество устройств, на которых задание завершилось сбоем. | |
| deviceJobStatistics.succeededCount: количество устройств, где задание выполнено успешно. | |
| deviceJobStatistics.runningCount: количество устройств, которые в настоящее время выполняют задание. | |
| deviceJobStatistics.pendingCount: количество устройств, ожидающих выполнения задания. |
Дополнительные справочные материалы
Другие справочные статьи в руководстве разработчика Центра Интернета вещей:
Конечные точки Центра Интернета вещей описывают различные конечные точки, которые каждый центр Интернета вещей предоставляет для операций в реальном времени и управления.
Регулирование и квоты описывают ограничения, применяемые к службе Центра Интернет вещей, и ожидаемое поведение регулирования при использовании этой службы.
В статье о пакетах SDK для устройств и служб Azure IoT указаны различные языковые пакеты SDK, которые можно использовать при разработке приложений для устройств и служб, взаимодействующих с Центром Интернета вещей.
Язык запросов Центра Интернета вещей для двойников устройств, заданий и маршрутизации сообщений описывает язык запросов Центра Интернета вещей. Используйте этот язык запросов для получения сведений из Центра Интернета вещей о двойниках устройств и заданиях.
Статья Взаимодействие с Центром Интернета вещей с помощью протокола MQTT содержит дополнительные сведения о поддержке протокола MQTT в Центре Интернета вещей.
Дальнейшие действия
Сведения о некоторых концепциях, описанных в этой статье, см. в следующем руководстве по Центру Интернета вещей: