Planifier des travaux sur plusieurs appareils
Azure IoT Hub utilise un certain nombre de blocs de construction, tels que les balises et propriétés de jumeau d’appareil et les méthodes directes. Généralement, les applications principales permettent aux administrateurs et opérateurs d’appareil de mettre à jour et d’interagir avec les appareils IoT par lots et à une heure planifiée. Les travaux assurent l’exécution des mises à jour des jumeaux d’appareil et des méthodes directes sur un ensemble d’appareils à une heure planifiée. Par exemple, un opérateur peut utiliser une application principale qui lance et suit un travail pour le redémarrage d’un ensemble d’appareils dans le bâtiment 43 à l’étage 3 à une heure qui ne perturbera pas les opérations du bâtiment.
Notes
Les fonctionnalités décrites dans cet article sont uniquement disponibles au niveau Standard d’IoT Hub. Pour plus d’informations sur les niveaux de base et standard/gratuit d’IoT Hub, consultez Choisir le niveau IoT Hub correspondant à votre solution.
Envisagez d’utiliser les travaux quand vous devez planifier et suivre la progression des activités suivantes sur un ensemble d’appareils :
- Mettre à jour les propriétés souhaitées
- Mettre à jour les balises
- Appeler des méthodes directes
Cycle de vie de tâche
Les travaux sont lancés par l’application principale de la solution et maintenus par IoT Hub. Vous pouvez lancer un travail via une URI de service (PUT https://<iot hub>/jobs/v2/<jobID>?api-version=2021-04-12
) et vérifier la progression d’un travail en cours via une URI de service (GET https://<iot hub>/jobs/v2/<jobID?api-version=2021-04-12
). Pour actualiser l’état des travaux en cours d’exécution une fois qu’un travail a démarré, exécutez une requête de travail. Il n’y a aucune vidange explicite de l’historique des travaux, mais ils ont une durée de vie de 30 jours.
Notes
Lorsque vous initiez un travail, les noms et valeurs de propriété peuvent contenir uniquement des caractères alphanumériques US-ASCII imprimables, à l’exception des caractères suivants : $ ( ) < > @ , ; : \ " / [ ] ? = { } SP HT
Notes
Le champ jobId
doit comporter 64 caractères au maximum et ne peut contenir que des lettres US-ASCII, des chiffres et des tirets (-
).
Tâches pour exécuter des méthodes directes
L’extrait suivant montre les détails de la requête HTTPS 1.1 pour exécuter une méthode directe sur un ensemble d’appareils en utilisant un travail :
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>
}
La condition de requête peut également être un ID d’appareil unique ou figurer sur une liste d’ID comme illustré dans les exemples suivants :
"queryCondition" = "deviceId = 'MyDevice1'"
"queryCondition" = "deviceId IN ['MyDevice1','MyDevice2']"
"queryCondition" = "deviceId IN ['MyDevice1']"
Le langage de requête IoT Hub couvre le langage de requête IoT Hub de façon plus détaillée.
L’extrait suivant montre la demande et la réponse d’une tâche planifiée pour appeler une méthode directe nommée testMethod sur tous les appareils sur 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"}
Travaux pour mettre à jour les propriétés d’un jumeau d’appareil
L’extrait suivant montre les détails de la requête HTTPS 1.1 pour mettre à jour les propriétés d’un jumeau d’appareil à l’aide d’un travail :
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>
}
Notes
La propriété updateTwin nécessite une correspondance etag valide ; par exemple, etag="*"
.
L’extrait suivant montre la demande et la réponse d’une tâche planifiée pour mettre à jour les propriétés de jumeau d’appareil de test sur 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"}
Vérification de la progression des travaux
L’extrait de code suivant montre les détails de la requête HTTPS 1.1 pour interroger des travaux :
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
Le paramètre continuationToken est fourni dans la réponse.
Vous pouvez interroger l’état d’exécution du travail sur chaque appareil à l’aide du langage de requête IoT Hub pour les jumeaux d’appareil, les travaux et le routage des messages.
Propriétés des travaux
La liste suivante montre les propriétés et les descriptions correspondantes qui peuvent être utilisées lors de la vérification de travaux ou de résultats de travaux.
Propriété | Description |
---|---|
jobId | L’application a fourni un ID pour le travail. |
startTime | L’application a fourni l’heure de début (ISO-8601) pour le travail. |
endTime | IoT Hub a fourni la date (ISO-8601) de fin du travail. Valide uniquement lorsque la tâche atteint l’état « terminé ». |
type | Types de tâches : |
scheduleUpdateTwin : travail permettant de mettre à jour un ensemble de propriétés souhaitées ou de balises. | |
scheduleDeviceMethod : travail permettant d’appeler une méthode d’appareil sur un ensemble de jumeaux d’appareil. | |
statut | État actuel du travail. Valeurs possibles pour l'état : |
pending : planifié et en attente de récupération par le service du travail. | |
scheduled : planifié pour une date ultérieure. | |
running : le travail est actuellement actif. | |
canceled : le travail a été annulé. | |
failed : le travail a échoué. | |
completed : le travail est terminé. | |
deviceJobStatistics | Statistiques relatives à l’exécution du travail. |
Propriétés deviceJobStatistics : | |
deviceJobStatistics.deviceCount : Nombre d’appareils du travail. | |
deviceJobStatistics.failedCount : Nombre d’appareils sur lesquels le travail a échoué. | |
deviceJobStatistics.succeededCount : Nombre d’appareils sur lesquels le travail a réussi. | |
deviceJobStatistics.runningCount : Nombre d’appareils qui exécutent actuellement le travail. | |
deviceJobStatistics.pendingCount : Nombre d’appareils en attente d’exécution du travail. |
Matériel de référence supplémentaire
Les autres rubriques de référence dans le Guide du développeur IoT Hub comprennent :
La rubrique Points de terminaison IoT Hub, qui décrit les différents points de terminaison que chaque hub IoT expose pour les opérations d’exécution et de gestion.
La rubrique Quotas et limitation décrit les quotas appliqués au service IoT Hub, et le comportement de limitation auquel s’attendre en cas d’utilisation du service.
La rubrique SDK des services et appareils Azure IoT, qui répertorie les SDK en différents langages que vous pouvez utiliser pour le développement d’applications d’appareil et de service qui interagissent avec IoT Hub.
La rubrique Langage de requête IoT Hub pour les jumeaux d’appareil, les travaux et le routage des messages décrit le langage de requête IoT Hub. Ce langage vous permet de récupérer à partir d’IoT Hub des informations sur des jumeaux d’appareil et des travaux.
La rubrique Prise en charge de MQTT au niveau d’IoT Hub, qui fournit des informations supplémentaires sur la prise en charge du protocole MQTT par IoT Hub.
Étapes suivantes
Pour mettre en pratique certains des concepts décrits dans cet article, consultez le didacticiel IoT Hub suivant :