IoT Platform de Alibaba Cloud ofrece servicios de configuración y gestión para trabajos de dispositivo. Utiliza el protocolo Alink tanto para tareas de invocación de servicios por lotes como para tareas de establecimiento de propiedades por lotes en dispositivos. Este tema describe la personalización del tema de mensaje de actualización de tareas y el formato de datos Alink, lo que incluye la actualización del estado del trabajo de dispositivo, las solicitudes de información más reciente sobre trabajos por parte del dispositivo y las actualizaciones de estado de subtareas.
Contexto
Para implementar tareas personalizadas, debe desarrollar capacidades de gestión de tareas en el lado del dispositivo. Para operaciones detalladas, consulte Device Jobs.
-
En las tareas de invocación de servicios por lotes y de establecimiento de propiedades por lotes, si el Link SDK del dispositivo ya integró las funciones de invocación de servicios y establecimiento de propiedades, no es necesario desarrollar capacidades adicionales de gestión de tareas para ejecutar los trabajos de dispositivo.
Para conocer los métodos de integración de funciones de invocación de servicios y establecimiento de propiedades en el Link SDK del dispositivo, consulte los métodos de desarrollo de Thing Specification Language correspondientes al Link SDK en Device Access Overview.
Para obtener una explicación del protocolo Alink utilizado en la invocación de servicios y el establecimiento de propiedades, consulte Device Properties, Events, and Services.
Notificación de actualización de estado de trabajo de dispositivo
Las notificaciones se envían al dispositivo únicamente cuando el estado del trabajo cambia a in progress, canceled o deleted.
Sentido descendente (downstream).
Tema: /sys/${productKey}/${deviceName}/thing/job/notify.
Ejemplo de solicitud en formato Alink JSON:
{
"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"
}
}
}
}
Tabla 1. Descripción de parámetros de solicitud
Parámetro | Tipo | Descripción |
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 | Parámetros de la subtarea. |
taskId | String | ID de la subtarea, que funciona como identificador único global. |
status | String | Estado de la subtarea.
|
jobDocument | Object | Documento de trabajo que describe las reglas de ejecución de la tarea. Nota Si status es REMOVED o CANCELLED, este campo permanece vacío. |
jobFile | Object | Información del archivo cargado al crear una tarea personalizada.
Nota ```html Si status es REMOVED o CANCELLED, este campo permanece vacío. |
Ejemplo de respuesta en formato Alink JSON:
{
"id": "7542940",
"code": 200,
"data": {}
}
Tabla 2. Descripción de parámetros de respuesta
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
The message ID. Must be a unique numeric string on the device. Valid values: 0 to 4294967295. |
|
code |
Integer |
Código de resultado. El valor 200 indica éxito; otros valores indican error. Para más información, consulte Error codes received by devices. |
|
data |
Object |
Datos devueltos por el dispositivo. La notificación de actualización de trabajo de dispositivo devuelve datos de resultado vacíos. |
Obtención de detalles del trabajo de dispositivo
Sentido ascendente (upstream).
Tema de solicitud:
/sys/${productKey}/${deviceName}/thing/job/get.Tema de respuesta:
/sys/${productKey}/${deviceName}/thing/job/get_reply.
Ejemplo de solicitud en formato Alink JSON:
{
"id": "123",
"version": "1.0",
"params": {
"taskId": "i5Ks***F010101"
}
}
Tabla 3. Descripción de parámetros de solicitud
Parámetro | Tipo | Descripción |
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 | Existen tres métodos de valor que permiten devolver información de tareas con distintos estados.
|
Los valores de taskId varían y el formato de datos de respuesta Alink también difiere.
-
Cuando taskId es el ID de la subtarea:
{ "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" } } } } -
Cuando taskId es
$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" } } } } -
Cuando taskId es
$list:{ "id": "1234", "code": 200, "data": { "statusDetails":{"devs":"test","status":"init"}, "taskId": "$list", "task":[ { "taskId": "i5Ks***", "status": "IN_PROGRESS" }, { "taskId": "i61s***", "status": "IN_PROGRESS" } ] } }
Tabla 4. Descripción de parámetros de respuesta
Parámetro | Tipo | Descripción |
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 | Datos devueltos por el dispositivo. |
task | Object | Parámetros de la subtarea. |
taskId | String | ID de la subtarea, que funciona como identificador único global. |
status | String | Estado de la subtarea.
|
statusDetails | JSON | Configuración definida por el usuario al crear una tarea en el dispositivo. |
jobDocument | Object | Documento de trabajo que describe las reglas de ejecución de la tarea. |
jobFile | Object | Información del archivo cargado al crear una tarea personalizada.
|
Actualización de estado de subtarea
Sentido ascendente (upstream).
Tema de solicitud:
/sys/${productKey}/${deviceName}/thing/job/update.Tema de respuesta:
/sys/${productKey}/${deviceName}/thing/job/update_reply.
Ejemplo de solicitud en formato Alink JSON:
{
"id": "123",
"version": "1.0",
"params": {
"taskId": "i5Ks***F010101",
"status": "IN_PROGRESS",
"statusDetails": {
"key": "value"
},
"progress": 50
}
}
Tabla 5. Descripción de parámetros de solicitud
Parámetro | Tipo | Descripción |
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 | ID de la subtarea, que funciona como identificador único global. |
status | String | Estado de la subtarea. Valores válidos:
|
statusDetails | Object | Detalles de estado personalizados definidos por el usuario. Se pueden consultar en la página de la consola de IoT Platform. |
progress | Integer | Porcentaje de progreso de ejecución de la subtarea. |
Ejemplo de respuesta en formato Alink JSON:
{
"id":"123",
"code":200,
"data":{
"taskId":"i5Ks***F010101"
}
}
Tabla 6. Descripción de parámetros de respuesta
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
The message ID. Must be a unique numeric string on the device. Valid values: 0 to 4294967295. |
|
code |
Integer |
Código de resultado. El valor 200 indica éxito; otros valores indican error. Para más información, consulte Error codes received by devices. |
|
data |
Object |
Datos devueltos por el dispositivo. |
|
taskId |
String |
ID de la subtarea, que funciona como identificador único global. |