Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure IoT Hub umožňuje řadu stavebních bloků, jako jsou vlastnosti dvojčete zařízení a značky a přímé metody. Back-endové aplikace obvykle umožňují správcům a operátorům zařízení hromadně a v naplánovaném čase aktualizovat a interagovat se zařízeními IoT. Úlohy spouštějí aktualizace dvojčat zařízení a přímé metody pro sadu 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 3. patra v době, která by nenarušovala provoz budovy.
Poznámka:
Funkce popsané v tomto článku jsou k dispozici pouze na úrovni Standard služby IoT Hub. Další informace o úrovních Basic a Standard/Free IoT Hub najdete v tématu Volba správné úrovně a velikosti služby IoT Hub pro vaše řešení.
Zvažte použití úloh, 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 spravovány službou IoT Hub. Úlohu můžete zahájit prostřednictvím identifikátoru URI (PUT https://<iot hub>/jobs/v2/<jobID>?api-version=2021-04-12) a dotazovat se na průběh provádění úlohy prostřednictvím identifikátoru URI (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. Neexistuje zřejmé odstranění historie úloh, ale mají nastavení životnosti (TTL) 30 dnů.
Poznámka:
Při zahájení úlohy můžou názvy vlastností a hodnoty obsahovat pouze US-ASCII tisknutelné alfanumerické znaky s výjimkou některé z následujících množiny: $ ( ) < > @ , ; : \ " / [ ] ? = { } SP HT
Poznámka:
Pole jobId musí obsahovat maximálně 64 znaků a může obsahovat pouze US-ASCII písmena, číslice a znak pomlčky (-).
Úlohy pro spouštění přímých metod
Následující fragment kódu ukazuje podrobnosti 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ínkou dotazu může být také jedno ID zařízení nebo seznam 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']"
Dotazovací jazyk IoT Hubu se podrobněji zabývá dotazovacím jazykem ioT Hubu.
Následující fragment kódu ukazuje požadavek a odpověď pro úlohu naplánovanou tak, aby volala přímou metodu s názvem testMethod na všech zařízeních na 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 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 updateTwin vyžaduje platnou shodu etag; například etag="*".
Následující úryvek ukazuje požadavek a odpověď pro úlohu naplánovanou k aktualizaci vlastností zařízení twin pro testovací zařízení na 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 úkolů
Následující fragment kódu ukazuje podrobnosti požadavku HTTPS 1.1 pro dotazování na úlohy:
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
Token pokračování je poskytnut z odpovědi.
Pomocí dotazovacího jazyka ioT Hubu pro dvojčata zařízení, úlohy a směrování zpráv můžete zadat dotaz na stav provádění úlohy na každém zařízení.
Vlastnosti úloh
Následující seznam obsahuje vlastnosti a jejich odpovídající popisy, které lze použít při dotazování na úlohy nebo výsledky úlohy.
| Vlastnictví | Popis |
|---|---|
| jobId | Aplikace poskytla ID pro úlohu. |
| časZačátku | Aplikace poskytla čas zahájení (ISO-8601) pro úlohu. |
| endTime | Datum (ISO-8601) poskytnutý IoT Hubem pro dokončení úlohy. Platné pouze poté, co úloha dosáhne stavu 'dokončeno'. |
| maxExecutionTimeInSeconds | Aplikace poskytla maximální povolenou celkovou dobu od okamžiku, kdy se úloha spustí, dokud se neskončí. |
| typ | Typy úloh: |
| scheduleUpdateTwin: Úloha použitá k aktualizaci sady požadovaných vlastností nebo značek. | |
| scheduleDeviceMethod: Úloha používaná k vyvolání metody zařízení v sadě dvojčat zařízení. | |
| stav | Aktuální stav úlohy Možné hodnoty pro stav: |
| čekající: Čekající a naplánované na vyzvednutí úlohovou službou. | |
| naplánované: Naplánováno na dobu v budoucnosti. | |
| běžící: Aktuálně aktivní úloha. | |
| zrušena: Úloha byla zrušena. | |
| se nezdařila: Úloha se nezdařila. | |
| dokončeno: Úloha byla dokončena. | |
| deviceJobStatistics | Statistiky o provádění úlohy |
| deviceJobStatistics – vlastnosti: | |
| 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í, u kterých byla úloha úspěšná. | |
| deviceJobStatistics.runningCount: Počet zařízení, na kterých se úloha právě spouští. | |
| deviceJobStatistics.pendingCount: Počet zařízení, která čekají na spuštění úlohy. |
Další referenční materiál
Mezi další referenční témata v příručce pro vývojáře ioT Hubu patří:
Koncové body IoT Hubu popisují různé typy koncových bodů, které každé centrum IoT poskytuje pro provozní a správní operace.
Omezení a kvóty popisují kvóty, které se vztahují na službu IoT Hub, a chování omezování, které se má očekávat při použití služby.
Sady SDK pro zařízení a služby Azure IoT uvádí seznam různých jazykových sad SDK, které můžete použít při vývoji aplikací pro zařízení i služby, které pracují se službou IoT Hub.
Dotazovací jazyk ioT Hubu pro dvojčata zařízení, úlohy a směrování zpráv popisuje dotazovací jazyk ioT Hubu. Pomocí tohoto dotazovacího jazyka můžete získávat informace ze služby IoT Hub o dvojčatech zařízení a úlohách.
Podpora IoT Hubu pro MQTT poskytuje další informace o podpoře IoT Hubu pro protokol MQTT.
Další kroky
Pokud si chcete vyzkoušet některé koncepty popsané v tomto článku, projděte si následující kurz služby IoT Hub: