Plánování úloh na několika zařízeních
Azure IoT Hub umožňuje řadu stavebních bloků, jako jsou vlastnosti a značky dvojčat zařízení a přímé metody. Back-endové aplikace obvykle umožňují správcům a operátorům zařízení aktualizovat zařízení IoT a pracovat s nimi hromadně a v naplánovaném čase. Úlohy provádějí aktualizace dvojčete zařízení a přímé metody vůči sadě zařízení v naplánovaném čase. Operátor by například použil back-endovou aplikaci, která inicializuje a sleduje úlohu k restartování sady zařízení v budově 43 a patře 3 najednou, což by nenarušovalo provoz budovy.
Poznámka
Funkce popsané v tomto článku jsou dostupné jenom na standardní úrovni IoT Hub. Další informace o IoT Hub úrovně Basic a Standard/Free najdete v tématu Volba správné IoT Hub úrovně pro vaše řešení.
Použití úloh zvažte, pokud potřebujete naplánovat a sledovat průběh některé z následujících aktivit na sadě zařízení:
- Aktualizace požadovaných vlastností
- Aktualizace značek
- Vyvolání přímých metod
Životní cyklus úlohy
Úlohy jsou inicializovány back-endem řešení a udržovány IoT Hub. Úlohu můžete zahájit prostřednictvím identifikátoru URI pro službu (PUT https://<iot hub>/jobs/v2/<jobID>?api-version=2021-04-12
) a dotazovat se na průběh spouštěné úlohy prostřednictvím identifikátoru URI určeného ke službě (GET https://<iot hub>/jobs/v2/<jobID?api-version=2021-04-12
). Pokud chcete aktualizovat stav spuštěných úloh po zahájení úlohy, spusťte dotaz úlohy. Historie úloh se explicitně nevyprázdní, ale hodnota TTL je 30 dnů.
Poznámka
Při zahájení úlohy můžou názvy vlastností a hodnoty obsahovat pouze tisknutelné alfanumerické znaky US-ASCII, s výjimkou libovolných v následující sadě: $ ( ) < > @ , ; : \ " / [ ] ? = { } SP HT
Poznámka
Pole jobId
musí mít maximálně 64 znaků a může obsahovat pouze písmena US-ASCII, číslice a pomlčku (-
).
Úlohy pro spouštění přímých metod
Následující fragment kódu ukazuje podrobnosti o požadavku HTTPS 1.1 pro spuštění přímé metody na sadě zařízení pomocí úlohy:
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>
}
Podmínka dotazu může být také na jednom ID zařízení nebo v seznamu ID zařízení, jak je znázorněno v následujících příkladech:
"queryCondition" = "deviceId = 'MyDevice1'"
"queryCondition" = "deviceId IN ['MyDevice1','MyDevice2']"
"queryCondition" = "deviceId IN ['MyDevice1']"
IoT Hub dotazovací jazyk se podrobněji věnuje IoT Hub dotazovacímu jazyku.
Následující fragment kódu ukazuje požadavek a odpověď na úlohu naplánovanou na volání přímé metody s názvem testMethod na všech zařízeních v 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"}
Úlohy pro aktualizaci vlastností dvojčete zařízení
Následující fragment kódu ukazuje podrobnosti o požadavku HTTPS 1.1 pro aktualizaci vlastností dvojčete zařízení pomocí úlohy:
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>
}
Poznámka
Vlastnost vyžaduje platnou shodu etag; například etag="*"
.
Následující fragment kódu ukazuje požadavek a odpověď na úlohu naplánovanou na aktualizaci vlastností dvojčete zařízení pro test-device v 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"}
Dotazování na průběh úloh
Následující fragment kódu ukazuje podrobnosti požadavku HTTPS 1.1 pro dotazování úloh:
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
Z odpovědi je poskytnutý token continuationToken.
Pomocí IoT Hub dotazovacího jazyka pro dvojčata zařízení, úlohy a směrování zpráv můžete zadat dotaz na stav spuštění úlohy na každém zařízení.
Vlastnosti úloh
Následující seznam obsahuje vlastnosti a odpovídající popisy, které se dají použít při dotazování na úlohy nebo výsledky úlohy.
Vlastnost | Popis |
---|---|
ID úlohy | Aplikace poskytla ID pro úlohu. |
Starttime | Aplikace poskytla čas spuštění (ISO-8601) pro úlohu. |
Endtime | IoT Hub zadané datum (ISO-8601) pro dokončení úlohy. Platnost je platná až po dokončení úlohy. |
Typ | Typy úloh: |
scheduleUpdateTwin: Úloha sloužící k aktualizaci sady požadovaných vlastností nebo značek. | |
scheduleDeviceMethod: Úloha použitá k vyvolání metody zařízení v sadě dvojčat zařízení. | |
Stav | Aktuální stav úlohy. Možné hodnoty stavu: |
pending: Naplánováno a čeká na vyzvednutí službou úloh. | |
scheduled: Naplánováno na čas v budoucnu. | |
spuštěno: Aktuálně aktivní úloha. | |
zrušeno: Úloha byla zrušena. | |
selhalo: Úloha se nezdařila. | |
completed(dokončeno): Úloha byla dokončena. | |
deviceJobStatistics | Statistika provádění úlohy |
vlastnosti deviceJobStatistics : | |
deviceJobStatistics.deviceCount: Počet zařízení v úloze. | |
deviceJobStatistics.failedCount: Počet zařízení, u kterých úloha selhala. | |
deviceJobStatistics.succeededCount: Počet zařízení, ve kterých byla úloha úspěšná. | |
deviceJobStatistics.runningCount: Počet zařízení, na kterých je úloha aktuálně spuštěná. | |
deviceJobStatistics.pendingCount: Počet zařízení čekajících na spuštění úlohy. |
Další referenční materiály
Mezi další referenční témata v příručce pro vývojáře IoT Hub patří:
IoT Hub koncových bodů popisuje různé koncové body, které každé centrum IoT zpřístupňuje pro běhové operace a operace správy.
Omezení a kvóty popisují kvóty, které se vztahují na službu IoT Hub, a chování omezování, které můžete očekávat při používání služby.
Sady SDK pro zařízení a služby Azure IoT obsahuje seznam různých jazykových sad SDK, které můžete použít při vývoji aplikací zařízení i služeb, které komunikují s IoT Hub.
IoT Hub dotazovací jazyk pro dvojčata zařízení, úlohy a směrování zpráv popisuje IoT Hub dotazovací jazyk. Tento dotazovací jazyk slouží k načtení informací z IoT Hub o dvojčatech a úlohách zařízení.
IoT Hub podpora MQTT poskytuje další informace o podpoře IoT Hub pro protokol MQTT.
Další kroky
Pokud si chcete vyzkoušet některé koncepty popsané v tomto článku, projděte si následující IoT Hub kurzu: