Feladatok ütemezése több eszközön
Azure IoT Hub számos építőelemet engedélyez, például az ikereszköz tulajdonságait, a címkéket és a közvetlen metódusokat. A háttéralkalmazások általában lehetővé teszik az eszközgazdák és az operátorok számára az IoT-eszközök tömeges és ütemezett frissítését és használatát. A feladatok ütemezett időpontban hajtanak végre ikereszköz-frissítéseket és közvetlen metódusokat egy eszközkészleten. Egy operátor például egy háttéralkalmazást használna, amely elindít és nyomon követ egy feladatot a 43- és a 3. épület egy olyan eszközkészletének újraindításához, amely nem zavarná az épület működését.
Megjegyzés
A cikkben ismertetett funkciók csak a IoT Hub standard szintjén érhetők el. Az alapszintű és standard/ingyenes IoT Hub szintekkel kapcsolatos további információkért lásd: A megoldáshoz megfelelő IoT Hub szint kiválasztása.
Fontolja meg a feladatok használatát, ha az alábbi tevékenységek bármelyikét ütemeznie és nyomon kell követnie egy eszközkészleten:
- Eszköz kívánt tulajdonságainak frissítése
- Címkék frissítése
- Közvetlen metódusok meghívása
Feladat életciklusa
A feladatokat a megoldás háttérrendszere kezdeményezi, és IoT Hub tartja karban. A feladatokat egy szolgáltatásoldali URI-n (PUT https://<iot hub>/jobs/v2/<jobID>?api-version=2021-04-12
) keresztül indíthatja el, és lekérdezheti a végrehajtási feladat előrehaladását egy szolgáltatáshoz kapcsolódó URI-n keresztül (GET https://<iot hub>/jobs/v2/<jobID?api-version=2021-04-12
). Ha egy feladat elindítása után frissíteni szeretné a futtatott feladatok állapotát, futtasson egy feladat-lekérdezést. A feladatelőzmények nincsenek explicit módon törölve, de 30 napos TTL-juk van.
Megjegyzés
Feladat indításakor a tulajdonságnevek és -értékek csak az US-ASCII nyomtatható alfanumerikus elemeket tartalmazhatják, kivéve az alábbi készlet bármelyikét: $ ( ) < > @ , ; : \ " / [ ] ? = { } SP HT
Megjegyzés
A jobId
mezőnek legfeljebb 64 karakterből állhat, és csak US-ASCII betűket, számokat és kötőjelet (-
) tartalmazhat.
Közvetlen metódusok végrehajtására használható feladatok
Az alábbi kódrészlet a HTTPS 1.1 kérelem részleteit mutatja be a közvetlen metódusok feladatokat használó eszközkészleten való végrehajtásához:
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>
}
A lekérdezési feltétel lehet egyetlen eszközazonosító vagy az eszközazonosítók listája is, ahogy az alábbi példákban látható:
"queryCondition" = "deviceId = 'MyDevice1'"
"queryCondition" = "deviceId IN ['MyDevice1','MyDevice2']"
"queryCondition" = "deviceId IN ['MyDevice1']"
IoT Hub lekérdezési nyelv további részletekben ismerteti IoT Hub lekérdezési nyelvet.
Az alábbi kódrészlet egy testMethod nevű közvetlen metódus meghívására ütemezett feladat kérését és válaszát mutatja be a contoso-hub-1 összes eszközén:
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"}
Az ikereszköz tulajdonságainak frissítésére használt feladatok
Az alábbi kódrészlet a HTTPS 1.1 kérelem részleteit mutatja be az ikereszköz tulajdonságainak feladattal történő frissítéséhez:
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>
}
Megjegyzés
Az updateTwin tulajdonsághoz érvényes etag-egyezés szükséges; például: etag="*"
.
Az alábbi kódrészlet a contoso-hub-1 teszteszköz ikereszköz-tulajdonságainak frissítésére ütemezett feladat kérését és válaszát mutatja be:
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"}
Feladatok előrehaladásának lekérdezése
Az alábbi kódrészlet a feladatok lekérdezésének HTTPS 1.1-beli kérésadatait mutatja be:
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
A folytatásToken a válaszból származik.
A feladat-végrehajtási állapotot minden eszközön lekérdezheti az ikereszközök, feladatok és üzenetek útválasztásának IoT Hub lekérdezési nyelvével.
Feladatok tulajdonságai
Az alábbi listában láthatók a tulajdonságok és a megfelelő leírások, amelyek a feladatok vagy a feladatok eredményeinek lekérdezéséhez használhatók.
Tulajdonság | Leírás |
---|---|
jobId | Az alkalmazás megadta a feladat azonosítóját. |
startTime | Az alkalmazás megadta a feladat kezdési időpontját (ISO-8601). |
endTime | IoT Hub a feladat befejezésének dátumát (ISO-8601) adta meg. Csak akkor érvényes, ha a feladat elérte a "befejezett" állapotot. |
típus | Feladatok típusai: |
scheduleUpdateTwin: A kívánt tulajdonságok vagy címkék készletének frissítésére használt feladat. | |
scheduleDeviceMethod: Eszközmetódus meghívására használt feladat ikereszköz-halmazon. | |
Állapot | A feladat aktuális állapota. Az állapot lehetséges értékei: |
függőben: Ütemezett és várakozás arra, hogy a feladatszolgáltatás átvehesse. | |
ütemezett: A jövőbeli időpontra van ütemezve. | |
futtatás: Jelenleg aktív feladat. | |
megszakítva: A feladat megszakadt. | |
sikertelen: A feladat nem sikerült. | |
befejeződött: A feladat befejeződött. | |
deviceJobStatistics | A feladat végrehajtásának statisztikái. |
deviceJobStatistics tulajdonságai: | |
deviceJobStatistics.deviceCount: A feladatban lévő eszközök száma. | |
deviceJobStatistics.failedCount: Azon eszközök száma, ahol a feladat meghiúsult. | |
deviceJobStatistics.succeededCount: Azon eszközök száma, ahol a feladat sikeres volt. | |
deviceJobStatistics.runningCount: A feladatot jelenleg futtató eszközök száma. | |
deviceJobStatistics.pendingCount: A feladat futtatásához függőben lévő eszközök száma. |
További referenciaanyag
A IoT Hub fejlesztői útmutató további referenciatémakörök a következők:
IoT Hub végpontok ismertetik azokat a végpontokat, amelyeket az egyes IoT Hubok a futásidejű és felügyeleti műveletekhez elérhetővé tesz.
A szabályozás és a kvóták a IoT Hub szolgáltatásra vonatkozó kvótákat és a szolgáltatás használatakor várható szabályozási viselkedést ismertetik.
Az Azure IoT-eszköz- és szolgáltatásoldali SDK-k felsorolják a különböző nyelvi SDK-kat, amelyeket a IoT Hub használó eszköz- és szolgáltatásalkalmazások fejlesztésekor is használhat.
IoT Hub ikereszközök, feladatok és üzenet-útválasztás lekérdezési nyelve a IoT Hub lekérdezési nyelvet ismerteti. Ezzel a lekérdezési nyelvvel adatokat kérdezhet le az ikereszközökkel és feladatokkal kapcsolatos IoT Hub.
IoT Hub MQTT-támogatás további információt nyújt az MQTT protokoll IoT Hub támogatásáról.
Következő lépések
A cikkben ismertetett fogalmak kipróbálásához tekintse meg az alábbi IoT Hub oktatóanyagot: