Megosztás a következőn keresztül:


Azure IoT Hub-feladatok ütemezése több eszközön

Az Azure IoT Hub számos építőelem használatát teszi lehetővé, 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 -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 eszközkészletének újraindításához, amely nem zavarná az épület műveleteit.

Megjegyzés

A cikkben ismertetett funkciók csak az 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: Válassza ki a megoldásához a megfelelő IoT Hub-szintet és méretet.

Fontolja meg a feladatok használatát, ha az alábbi tevékenységek bármelyikét ütemezni és nyomon követni kell egy eszközök készletén:

  • A kívánt tulajdonságok 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 az IoT Hub tartja karban. A feladatokat egy szolgáltatással rendelkező URI-n (PUT https://<iot hub>/jobs/v2/<jobID>?api-version=2021-04-12) keresztül kezdeményezheti, és lekérdezheti a végrehajtási feladat előrehaladását egy szolgáltatásoldali URI-n (GET https://<iot hub>/jobs/v2/<jobID?api-version=2021-04-12). A feladat indítása után a futó feladatok állapotának frissítéséhez futtasson egy feladat-lekérdezést. A feladatelőzmények nincsenek explicit módon törölve, de 30 napos TTL-jük van. 

Megjegyzés

Feladat indításakor a tulajdonságnevek és -értékek csak US-ASCII nyomtatható alfanumerikus értéket tartalmazhatnak, kivéve az alábbi halmazok bármelyikét: $ ( ) < > @ , ; : \ " / [ ] ? = { } SP HT

Megjegyzés

A jobId mező legfeljebb 64 karakter hosszúságú lehet, é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 egy közvetlen metódus végrehajtásához, egy feladattal rendelkező eszközkészleten:

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óra vagy az eszközazonosítók listájára is, ahogyan az alábbi példákban látható:

"queryCondition" = "deviceId = 'MyDevice1'"
"queryCondition" = "deviceId IN ['MyDevice1','MyDevice2']"
"queryCondition" = "deviceId IN ['MyDevice1']"

Az IoT Hub lekérdezési nyelvével kapcsolatos további információkért tekintse meg az IoT Hub lekérdezési nyelvét eszköz- és modul-ikerpéldányokhoz, feladatokhoz és üzenet irányításhoz.

Az alábbi kódrészlet egy olyan feladat kérését és válaszát mutatja be, amely egy testMethod nevű közvetlen metódus meghívására van ütemezve 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 eszközkettős tulajdonságainak frissítésére szolgáló feladatok

Az alábbi kódrészlet a HTTPS 1.1 kérelem részleteit mutatja be az ikereszköz-tulajdonságok 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 HTTPS 1.1 kérelmek adatait jeleníti meg a feladatok lekérdezéséhez:

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.

Az IoT Hub lekérdezési nyelvével a modul- és ikereszközök, feladatok és üzenetek útválasztása esetén lekérdezheti az egyes eszközök feladatvégrehajtási állapotát.

Feladatok tulajdonságai

Az alábbi lista a feladatok vagy feladatok eredményeinek lekérdezéséhez használható tulajdonságokat és a hozzájuk tartozó leírásokat tartalmazza.

Ingatlan Leírás
jobId Az alkalmazás által megadott azonosító a feladathoz.
startTime Alkalmazás által megadott kezdési időpont (ISO-8601) a feladathoz.
endTime Az 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.
maxExecutionTimeInSeconds Az alkalmazás maximális engedélyezett teljes időt adott meg a feladat indításától a befejezésig.
típus Feladatok típusai:
scheduleUpdateTwin: A kívánt tulajdonságok vagy címkék készletének frissítésére szolgáló feladat.
scheduleDeviceMethod: Egy eszközmetódus meghívására használt feladat az ikereszköz-készleten.
állapot A feladat aktuális állapota. Az állapot lehetséges értékei:
függőben: Ütemezett és arra vár, hogy a feladat szolgáltatás átvegye.
ütemezett: Ütemezett egy jövőbeli időpontra.
futó: Jelenleg aktív munka.
törölve: A feladat törölve lett.
nem sikerült: A feladat nem sikerült.
befejezett: A feladat befejeződött.
eszközMunkaStatisztikák 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 sikeresen végrehajtásra került.
deviceJobStatistics.runningCount: A feladatot jelenleg futtató eszközök száma.
deviceJobStatistics.pendingCount: A feladat futtatására függőben lévő eszközök száma.

Egyéb referenciaanyag

Az IoT Hub fejlesztői útmutatójában található további referenciacikkek a következők:

Következő lépések

A cikkben ismertetett fogalmak megismeréséhez tekintse meg az alábbi IoT Hub-cikket: