La plateforme IoT d'Alibaba Cloud propose des services de configuration et de gestion pour les tâches sur les appareils. Elle utilise le protocole Alink pour les tâches d'invocation de service par lot et les tâches de définition de propriété par lot sur les appareils. Cette rubrique décrit la personnalisation du sujet de message de mise à jour des tâches et du format de données Alink, y compris la mise à jour de l'état des tâches sur les appareils, les demandes des appareils pour obtenir les dernières informations sur les tâches et les mises à jour de l'état des sous-tâches.
Contexte
Pour mettre en œuvre des tâches personnalisées, vous devez développer des capacités de gestion des tâches côté appareil. Pour plus de détails, reportez-vous à la section Tâches sur les appareils.
-
Pour les tâches d'invocation de service par lot et les tâches de définition de propriété par lot sur les appareils, si le SDK Link côté appareil intègre déjà les fonctions d'invocation de service et de définition de propriété, il n'est pas nécessaire de développer des capacités de gestion des tâches supplémentaires pour exécuter les tâches sur les appareils.
Pour connaître les méthodes d'intégration des fonctions d'invocation de service et de définition de propriété dans le SDK Link côté appareil, consultez les méthodes de développement du langage de spécification des objets (Thing Specification Language) pour le SDK Link correspondant dans la section Présentation de l'accès aux appareils.
Pour une explication du protocole Alink utilisé pour l'invocation de service et la définition de propriété, consultez la section Propriétés, événements et services des appareils.
Notification de mise à jour de l'état de la tâche sur l'appareil
Les notifications sont envoyées à l'appareil uniquement lorsque l'état de la tâche sur l'appareil passe à « en cours », « annulé » ou « supprimé ».
Flux descendant.
Sujet : /sys/${productKey}/${deviceName}/thing/job/notify.
Exemple de requête au format JSON Alink :
{
"id": "7542940",
"version": "1.0",
"params": {
"task": {
"taskId": "i5Ks6***pF010101",
"status": "SENT",
"jobDocument": {},
"jobFile":{
"signMethod":"Md5",
"sign":"wssxff56dhdsd***",
"fileUrl": "https://iotx-***.oss-cn-shanghai.aliyuncs.com/***.zip"
}
}
}
}
Tableau 1. Description des paramètres de la requête
Paramètre | Type | Description |
id | String | The message ID. Must be a unique numeric string on the device. Valid values: 0 to 4294967295. |
version | String | The protocol version. Set this parameter to 1.0. |
params | Object | The business request parameters. |
task | Object | Paramètres de la sous-tâche. |
taskId | String | ID de la sous-tâche, qui est un identifiant globalement unique. |
status | String | État de la sous-tâche.
|
jobDocument | Object | Document de tâche décrivant les règles d'exécution de la tâche. Remarque Si status est REMOVED ou CANCELLED, ce champ est vide. |
jobFile | Object | Informations sur le fichier téléchargé lors de la création d'une tâche personnalisée.
Remarque ```html Si status est REMOVED ou CANCELLED, ce champ est vide. |
Exemple de réponse au format JSON Alink :
{
"id": "7542940",
"code": 200,
"data": {}
}
Tableau 2. Description des paramètres de la réponse
Paramètre | Type | Description |
id | String | The message ID. Must be a unique numeric string on the device. Valid values: 0 to 4294967295. |
code | Integer | The result code. 200 indicates success. Other values indicate failure. For more information, see Error codes received by devices. |
data | Object | Données renvoyées par l'appareil. Les données de résultat renvoyées par la notification de mise à jour de la tâche sur l'appareil sont vides. |
Obtention des détails d'une tâche sur l'appareil
Flux ascendant.
Sujet de la requête :
/sys/${productKey}/${deviceName}/thing/job/get.Sujet de la réponse :
/sys/${productKey}/${deviceName}/thing/job/get_reply.
Exemple de requête au format JSON Alink :
{
"id": "123",
"version": "1.0",
"params": {
"taskId": "i5Ks***F010101"
}
}
Tableau 3. Description des paramètres de la requête
Paramètre | Type | Description |
id | String | The message ID. Must be a unique numeric string on the device. Valid values: 0 to 4294967295. |
version | String | The protocol version. Set this parameter to 1.0. |
params | Object | The business request parameters. |
taskId | String | Trois méthodes de valeur peuvent renvoyer des informations sur les tâches avec différents états.
|
Les valeurs de taskId diffèrent, et le format des données de réponse Alink varie également.
-
taskId est l'ID de la sous-tâche :
{ "id": "1234", "code": 200, "data": { "statusDetails":{"devs":"test","status":"init"}, "taskId": "i5Ks***F010101", "task":{ "taskId": "i5Ks***F010101", "status": "IN_PROGRESS", "jobDocument": {}, "jobFile":{ "signMethod":"Md5", "sign":"wssxff56dhdsd***", "fileUrl": "https://iotx-***.oss-cn-shanghai.aliyuncs.com/***.zip" } } } } -
taskId est
$next:{ "id": "1234", "code": 200, "data": { "statusDetails":{"devs":"test","status":"init"}, "taskId": "$next", "task":{ "taskId": "i5Ks***F010101", "status": "IN_PROGRESS", "jobDocument": {}, "jobFile":{ "signMethod":"Md5", "sign":"wssxff56dhdsd***", "fileUrl": "https://iotx-***.oss-cn-shanghai.aliyuncs.com/***.zip" } } } } -
taskId est
$list:{ "id": "1234", "code": 200, "data": { "statusDetails":{"devs":"test","status":"init"}, "taskId": "$list", "task":[ { "taskId": "i5Ks***", "status": "IN_PROGRESS" }, { "taskId": "i61s***", "status": "IN_PROGRESS" } ] } }
Tableau 4. Description des paramètres de la réponse
Paramètre | Type | Description |
id | String | The message ID. Must be a unique numeric string on the device. Valid values: 0 to 4294967295. |
code | Integer | The result code. 200 indicates success. Other values indicate failure. For more information, see Error codes received by devices. |
data | Object | Données renvoyées par l'appareil. |
task | Object | Parameters of the subtask. |
taskId | String | The ID of the subtask, which is a globally unique identifier. |
status | String | État de la sous-tâche.
|
statusDetails | JSON | Configuration définie par l'utilisateur lors de la création d'une tâche sur l'appareil. |
jobDocument | Object | Document de tâche décrivant les règles d'exécution de la tâche. |
jobFile | Object | Informations sur le fichier téléchargé lors de la création d'une tâche personnalisée.
|
Mise à jour de l'état de la sous-tâche
Flux ascendant.
Sujet de la requête :
/sys/${productKey}/${deviceName}/thing/job/update.Sujet de la réponse :
/sys/${productKey}/${deviceName}/thing/job/update_reply.
Exemple de requête au format JSON Alink :
{
"id": "123",
"version": "1.0",
"params": {
"taskId": "i5Ks***F010101",
"status": "IN_PROGRESS",
"statusDetails": {
"key": "value"
},
"progress": 50
}
}
Tableau 5. Description des paramètres de la requête
Paramètre | Type | Description |
id | String | The message ID. Must be a unique numeric string on the device. Valid values: 0 to 4294967295. |
version | String | The protocol version. Set this parameter to 1.0. |
params | Object | The business request parameters. |
taskId | String | The ID of the subtask, which is a globally unique identifier. |
status | String | État de la sous-tâche. Valeurs valides :
|
statusDetails | Object | Détails d'état personnalisables définis par l'utilisateur. Ces détails sont consultables sur la page de la console IoT Platform. |
progress | Integer | Pourcentage de progression de l'exécution de la sous-tâche. |
Exemple de réponse au format JSON Alink :
{
"id":"123",
"code":200,
"data":{
"taskId":"i5Ks***F010101"
}
}
Tableau 6. Description des paramètres de la réponse
Paramètre | Type | Description |
id | String | The message ID. Must be a unique numeric string on the device. Valid values: 0 to 4294967295. |
code | Integer | The result code. 200 indicates success. Other values indicate failure. For more information, see Error codes received by devices. |
data | Object | Données renvoyées par l'appareil. |
taskId | String | The ID of the subtask, which is a globally unique identifier. |