Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Azure IoT Hub maakt een aantal bouwstenen mogelijk, zoals eigenschappen van digitale tweelingen 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 te gebruiken. Taken voeren updates van digitale tweelingen van apparaten en directe methodes uit op een set apparaten op een gepland tijdstip. 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 bewerkingen van het gebouw niet verstoren.
Notitie
De functies die in dit artikel worden beschreven, zijn alleen beschikbaar in de standaardlaag van de IoT Hub. Zie De juiste IoT Hub-laag en -grootte kiezen voor uw oplossing voor meer informatie over de Basic- en Standard/gratis IoT Hub-lagen.
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 een baan
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 een query uitvoeren op de voortgang van een taak via een servicegerichte URI (GET https://<iot hub>/jobs/v2/<jobID?api-version=2021-04-12). Als u de status van lopende taken wilt vernieuwen zodra een taak is gestart, voert u een query voor taken uit. Er is geen expliciete opschoning van de taakgeschiedenis, maar ze hebben een tijdslimiet (TTL) van 30 dagen.
Notitie
Wanneer u een taak initieert, kunnen eigenschapsnamen en -waarden alleen US-ASCII afdrukbare alfanumeriek bevatten, behalve in de volgende set: $ ( ) < > @ , ; : \ " / [ ] ? = { } SP HT
Notitie
Het jobId veld mag 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 zich ook op één apparaat-id of in een lijst met apparaat-id's bevinden, zoals wordt weergegeven in de volgende voorbeelden:
"queryCondition" = "deviceId = 'MyDevice1'"
"queryCondition" = "deviceId IN ['MyDevice1','MyDevice2']"
"queryCondition" = "deviceId IN ['MyDevice1']"
IoT Hub Query Language behandelt de Querytaal van IoT Hub in meer detail.
In het volgende codefragment ziet u 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 apparaat-tweelingen
In het volgende fragment ziet u de HTTPS 1.1-aanvraagdetails voor het bijwerken van eigenschappen van apparaat-tweelingen om een taak uit te voeren.
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 overeenkomst in etag vereist; bijvoorbeeld etag="*".
In het volgende fragment ziet u de aanvraag en het antwoord voor een taak die is gepland voor het bijwerken van apparaatdubbeleigenschappen 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"}
Queries uitvoeren naar voortgang van werkzaamheden
In het volgende fragment ziet u de details van de HTTPS 1.1-aanvraag voor het opvragen van banen.
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 vervolgtoken wordt meegegeven in het antwoord.
U kunt op elk apparaat een query uitvoeren op de uitvoeringsstatus van de taak 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.
| Vastgoed | Beschrijving |
|---|---|
| jobId | De applicatie leverde een id voor de opdracht. |
| startTime | Door de toepassing opgegeven begintijd (ISO-8601) voor de taak. |
| endTime | De door IoT Hub opgegeven datum (ISO-8601) voor wanneer de taak is voltooid. Alleen geldig nadat de taak de status Voltooid heeft bereikt. |
| maxExecutionTimeInSeconds | De toepassing heeft maximaal toegestane totale tijd opgegeven vanaf het moment dat de taak wordt gestart totdat deze is voltooid. |
| type | Soorten banen: |
| 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 op een set apparaat-tweelingen aan te roepen. | |
| status | Huidige status van de taak. Mogelijke waarden voor status: |
| in behandeling: Gepland en wachtend om te worden opgehaald door de jobservice. | |
| gepland: gepland voor een toekomstige tijd. | |
| wordt uitgevoerd: momenteel actieve taak. | |
| geannuleerd: De taak is geannuleerd. | |
| is mislukt: taak is mislukt. | |
| voltooid: Taak is voltooid. | |
| deviceJobStatistics | Statistieken over de uitvoering van de taak. |
| deviceJobStatistics eigenschappen: | |
| deviceJobStatistics.deviceCount: aantal apparaten in de taak. | |
| deviceJobStatistics.failedCount: aantal apparaten waarvoor de taak is mislukt. | |
| deviceJobStatistics.succeededCount: Aantal apparaten waarbij de taak is geslaagd. | |
| deviceJobStatistics.runningCount: aantal apparaten waarop de taak momenteel wordt uitgevoerd. | |
| deviceJobStatistics.pendingCount: aantal apparaten dat in afwachting is om de taak uit te voeren. |
Aanvullend referentiemateriaal
Andere naslagonderwerpen in de ontwikkelaarshandleiding voor IoT Hub zijn:
IoT Hub-eindpunten beschrijven de verschillende eindpunten die elke IoT-hub beschikbaar maakt voor runtime- en beheerbewerkingen.
Regulering en quota beschrijft de quota die van toepassing zijn op de IoT Hub-service en het reguleringsgedrag dat u kunt verwachten bij gebruik van de service.
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 apparaat tweelingen, taken en berichtroutering beschrijft de IoT Hub-querytaal. Gebruik deze querytaal om informatie op te halen uit IoT Hub over uw apparaatdubbels en -taken.
IoT Hub MQTT-ondersteuning biedt meer informatie over IoT Hub-ondersteuning voor het MQTT-protocol.
Volgende stappen
Raadpleeg de volgende IoT Hub-zelfstudie om een aantal van de concepten uit te proberen die in dit artikel worden beschreven: