Taken op meerdere apparaten plannen
Azure IoT Hub maakt een aantal bouwstenen mogelijk, zoals eigenschappen van apparaatdubbels en tags en directe methoden. Normaal gesproken stellen back-end-apps apparaatbeheerders en operators in staat om IoT-apparaten bulksgewijs en op een gepland tijdstip bij te werken en ermee te communiceren. Taken voeren updates van apparaatdubbels uit en leiden methoden op een gepland tijdstip uit op een set apparaten. Een operator zou bijvoorbeeld een back-end-app gebruiken die een taak initieert en bijhoudt om een set apparaten in gebouw 43 en verdieping 3 opnieuw op te starten op een moment dat de werking van het gebouw niet zou verstoren.
Notitie
De functies die in dit artikel worden beschreven, zijn alleen beschikbaar in de standaardlaag van de IoT Hub. Zie Choose the right IoT Hub tier for your solution (De juiste IoT Hub laag voor uw oplossing kiezen) voor meer informatie over de lagen Basic en Standard/free IoT Hub.
Overweeg het gebruik van taken wanneer u de voortgang van een van de volgende activiteiten op een set apparaten wilt plannen en bijhouden:
- Gewenste eigenschappen bijwerken
- Tags bijwerken
- Directe methoden aanroepen
Levenscyclus van taak
Taken worden gestart door de back-end van de oplossing en onderhouden door IoT Hub. U kunt een taak initiëren via een servicegerichte URI (PUT https://<iot hub>/jobs/v2/<jobID>?api-version=2021-04-12
) en de voortgang van een uitgevoerde taak opvragen via een servicegerichte URI (GET https://<iot hub>/jobs/v2/<jobID?api-version=2021-04-12
). Als u de status van actieve taken wilt vernieuwen zodra een taak is gestart, voert u een taakquery uit. Er is geen expliciete opschoning van de taakgeschiedenis, maar ze hebben een TTL van 30 dagen.
Notitie
Wanneer u een taak start, kunnen eigenschapsnamen en -waarden alleen us-ASCII-afdrukbare alfanumeriek bevatten, met uitzondering van waarden in de volgende set: $ ( ) < > @ , ; : \ " / [ ] ? = { } SP HT
Notitie
Het jobId
veld moet maximaal 64 tekens bevatten en mag alleen US-ASCII-letters, cijfers en het streepje (-
) bevatten.
Taken voor het uitvoeren van directe methoden
In het volgende fragment ziet u de HTTPS 1.1-aanvraagdetails voor het uitvoeren van een directe methode op een set apparaten met behulp van een taak:
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>
}
De queryvoorwaarde kan ook op één apparaat-id of in een lijst met apparaat-id's staan, zoals wordt weergegeven in de volgende voorbeelden:
"queryCondition" = "deviceId = 'MyDevice1'"
"queryCondition" = "deviceId IN ['MyDevice1','MyDevice2']"
"queryCondition" = "deviceId IN ['MyDevice1']"
IoT Hub Querytaal bevat meer informatie over IoT Hub querytaal.
Het volgende codefragment toont de aanvraag en het antwoord voor een taak die is gepland om een directe methode met de naam testMethod aan te roepen op alle apparaten op 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"}
Taken voor het bijwerken van eigenschappen van apparaatdubbels
In het volgende fragment ziet u de HTTPS 1.1-aanvraagdetails voor het bijwerken van eigenschappen van apparaatdubbels met behulp van een taak:
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>
}
Notitie
Voor de eigenschap updateTwin is een geldige etag-overeenkomst vereist; bijvoorbeeld etag="*"
.
In het volgende codefragment ziet u de aanvraag en het antwoord voor een taak die is gepland om eigenschappen van apparaatdubbels bij te werken voor testapparaat op 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"}
Query's uitvoeren op de voortgang van taken
In het volgende fragment ziet u de HTTPS 1.1-aanvraagdetails voor het uitvoeren van query's op taken:
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
Het continuationToken wordt opgegeven vanuit het antwoord.
U kunt de taakuitvoeringsstatus op elk apparaat opvragen met behulp van de IoT Hub querytaal voor apparaatdubbels, taken en berichtroutering.
Eigenschappen van taken
De volgende lijst bevat de eigenschappen en bijbehorende beschrijvingen, die kunnen worden gebruikt bij het uitvoeren van query's op taken of taakresultaten.
Eigenschap | Beschrijving |
---|---|
jobId | De toepassing heeft de id voor de taak opgegeven. |
Starttime | De toepassing heeft de begintijd (ISO-8601) voor de taak opgegeven. |
Eindtijd | IoT Hub opgegeven datum (ISO-8601) waarop de taak is voltooid. Alleen geldig nadat de taak de status 'voltooid' heeft bereikt. |
type | Typen taken: |
scheduleUpdateTwin: een taak die wordt gebruikt om een set gewenste eigenschappen of tags bij te werken. | |
scheduleDeviceMethod: een taak die wordt gebruikt om een apparaatmethode aan te roepen op een set apparaatdubbels. | |
status | Huidige status van de taak. Mogelijke waarden voor status: |
in behandeling: gepland en wachtend om te worden opgehaald door de taakservice. | |
gepland: gepland voor een tijdstip in de toekomst. | |
wordt uitgevoerd: Momenteel actieve taak. | |
geannuleerd: taak is geannuleerd. | |
mislukt: taak is mislukt. | |
voltooid: taak is voltooid. | |
deviceJobStatistics | Statistieken over de uitvoering van de taak. |
eigenschappen van deviceJobStatistics : | |
deviceJobStatistics.deviceCount: aantal apparaten in de taak. | |
deviceJobStatistics.failedCount: het aantal apparaten waarop de taak is mislukt. | |
deviceJobStatistics.succeededCount: het aantal apparaten waarop de taak is geslaagd. | |
deviceJobStatistics.runningCount: het aantal apparaten waarop de taak momenteel wordt uitgevoerd. | |
deviceJobStatistics.pendingCount: het aantal apparaten dat in behandeling is om de taak uit te voeren. |
Aanvullend referentiemateriaal
Andere naslagonderwerpen in de IoT Hub ontwikkelaarshandleiding zijn:
IoT Hub-eindpunten beschrijft de verschillende eindpunten die elke IoT-hub beschikbaar maakt voor runtime- en beheerbewerkingen.
Beperking en quota beschrijft de quota die van toepassing zijn op de IoT Hub service en het beperkingsgedrag dat u kunt verwachten wanneer u de service gebruikt.
Azure IoT-apparaat- en service-SDK's bevat de verschillende taal-SDK's die u kunt gebruiken wanneer u zowel apparaat- als service-apps ontwikkelt die communiceren met IoT Hub.
IoT Hub querytaal voor apparaatdubbels, taken en berichtroutering beschrijft de IoT Hub querytaal. Gebruik deze querytaal om informatie op te halen uit IoT Hub over de dubbels en taken van uw apparaat.
IoT Hub MQTT-ondersteuning biedt meer informatie over IoT Hub ondersteuning voor het MQTT-protocol.
Volgende stappen
Zie de volgende IoT Hub zelfstudie om enkele van de concepten uit te proberen die in dit artikel worden beschreven: