IoT Platform proporciona la función de actualización y gestión OTA. Este tema describe los temas y los formatos de datos que se usan para transmitir mensajes durante las actualizaciones OTA. Los mensajes se transmiten cuando los dispositivos envían versiones de módulos OTA, IoT Platform envía paquetes de actualización a los dispositivos, los dispositivos envían el progreso de actualización y los dispositivos solicitan información sobre los paquetes de actualización más recientes.
Para obtener más información sobre cómo aplicar actualizaciones OTA, consulte OTA update procedure.
Envío de versiones de módulos OTA a IoT Platform
A continuación se muestra el tema que se usa cuando un dispositivo envía datos a IoT Platform:
Tema: /ota/device/inform/${productKey}/${deviceName}.
Un dispositivo envía la versión de un módulo OTA a este tema.
Este tema permite que el dispositivo envíe la versión de un solo módulo a la vez. Si el dispositivo necesita enviar las versiones de varios módulos OTA, debe enviar varios mensajes. Cada mensaje contiene la versión de un módulo.
Solicitud de ejemplo:
{
"id": "123",
"params": {
"version": "1.0.1",
"module": "MCU"
}
}
| Parámetro | Tipo | Descripción |
| id | String | El ID del mensaje. Valores válidos: 0 a 4294967295. Cada ID de mensaje debe ser único para el dispositivo. |
| version | String | La versión del módulo OTA. |
| module | String | El nombre del módulo OTA. Nota
|
Envío de información sobre un paquete de actualización OTA a un dispositivo
A continuación se muestra el tema que se usa cuando IoT Platform envía datos a un dispositivo:
Tema: /ota/device/upgrade/${productKey}/${deviceName}.
IoT Platform envía la información sobre un paquete de actualización OTA al tema anterior. Un dispositivo puede suscribirse al tema para obtener la información.
-
Información de ejemplo sobre un paquete de actualización OTA que contiene un solo archivo:
-
Descarga del paquete de actualización OTA mediante HTTPS:
{ "code": "1000", "data": { "size": 432945, "version": "2.0.0", "isDiff": 1, "url": "https://***/nop***.tar.gz?Expires=1502955804&OSSAccessKeyId=***&Signature=XfgJu7P6DW***qAKU%3D&security-token=***Tz2IHtIf3***", "md5": "93230c3bde425a9d***", "digestsign":"A4WOP***SYHJ6DDDJD9***", "sign": "93230c3bde425a9d***", "signMethod": "MD5", "module": "MCU", "extData":{ "key1":"value1", "key2":"value2", "_package_udi":"{\"ota_notice\":\"Update the camera driver to prevent blurry videos. \"}" } }, "id": 1626969597470, "message": "success" } -
Descarga del paquete de actualización OTA mediante MQTT:
{ "code":"1000", "data":{ "size":432945, "version":"2.0.0", "isDiff":1, "signMethod":"MD5", "dProtocol":"mqtt", "streamId":1397345, "streamFileId":1, "md5":"93230c3bde425***", "digestsign":"A4WOP***SYHJ6DDDJD9***", "sign":"93230c3bde425***", "module":"MCU", "extData":{ "key1":"value1", "key2":"value2" } }, "id":1507707025, "message":"success" }
-
-
Un paquete de actualización OTA que contiene varios archivos se puede descargar únicamente mediante HTTP. Información de ejemplo:
{ "code": "1000", "data": { "version": "2.0.0", "isDiff": 1, "signMethod": "MD5", "files":[ { "fileSize":432944, "fileName":"file1-name", "fileUrl":"https://***/nop***.tar.gz?Expires=1502955804&OSSAccessKeyId=***&Signature=***XJEH0qAKU%3D&security-token=CAISuQJ***", "fileMd5":"93230c3bde425a9d***", "fileSign":"93230c3bde425a9d****" }, { "fileSize":432945, "fileName":"file2-name", "fileUrl":"https://***/no***.tar.gz?Expires=1502955804&OSSAccessKeyId=***&Signature=***qAKU%3D&security-token=***q6Ft5B2y***", "fileMd5":"93230c3bde425a92***", "fileSign":"93230c3bde425a92****" } ], "module": "MCU", "extData":{ "key1":"value1", "key2":"value2", "_package_udi":"{\"ota_notice\":\"Update the camera driver to prevent blurry videos. \"}" } }, "id": 1626969597470, "message": "success" }
| Parámetro | Tipo | Descripción |
| id | Long | El ID del mensaje. Cada ID de mensaje es único para el dispositivo. |
| message | String | El mensaje de respuesta. |
| code | String | El código de estado HTTP. |
| version | String | La versión del paquete de actualización OTA. |
| size | Long | El tamaño del paquete de actualización. Unidad: bytes. Este parámetro está disponible si el paquete de actualización OTA contiene un solo archivo. |
| url | String | La URL de Object Storage Service (OSS) del paquete de actualización OTA. Este parámetro está disponible si el paquete de actualización OTA contiene un solo archivo y el protocolo de descarga es HTTPS. |
| dProtocol | String | El protocolo que se usa para descargar el paquete de actualización OTA. Este parámetro está disponible si el protocolo de descarga es MQTT. |
| streamId | Long | El ID único generado al descargar el paquete de actualización OTA mediante MQTT. Este parámetro está disponible si el protocolo de descarga es MQTT. |
| streamFileId | Integer | El ID único del paquete de actualización OTA que contiene un solo archivo. Este parámetro está disponible si el protocolo de descarga es MQTT. |
| isDiff | Long | Este parámetro está disponible si un paquete de actualización es un paquete de actualización delta. Establezca el valor en 1. Este valor especifica que el paquete de actualización contiene solo las diferencias entre la nueva versión y la versión anterior. En este caso, se aplica una actualización delta. |
| digestsign | String | La firma del paquete de actualización OTA después de aplicar una actualización segura. Este parámetro está disponible si la función de actualización segura está habilitada para un paquete de actualización OTA. Para obtener más información sobre cómo habilitar la función de actualización segura, consulte Add an update package. |
| sign | String | La firma del paquete de actualización OTA. Este parámetro está disponible si el paquete de actualización OTA contiene un solo archivo. |
| signMethod | String | El algoritmo de firma. Valores válidos:
|
| md5 | String | Si el algoritmo de firma es MD5, IoT Platform especifica valores para los parámetros sign y md5. Este parámetro está disponible si el paquete de actualización OTA contiene un solo archivo. |
| module | String | El nombre del módulo al que se aplica el paquete de actualización OTA. Nota Si el paquete de actualización OTA se aplica al módulo predeterminado, IoT Platform no envía el parámetro module. |
| extData | Object | Las etiquetas del lote de actualización y la información personalizada que desea que IoT Platform envíe al dispositivo. _package_udi especifica la información personalizada. Formato de cada etiqueta: |
| files | Array | La información sobre los archivos de un paquete de actualización. Este parámetro está disponible si el paquete de actualización OTA contiene varios archivos. Información de un solo archivo:
|
Envío del progreso de actualización a IoT Platform
A continuación se muestra el tema que se usa cuando un dispositivo envía datos a IoT Platform:
Tema: /ota/device/progress/${productKey}/${deviceName}.
Durante una actualización OTA, el dispositivo envía el progreso de actualización como porcentaje al tema anterior.
Se recomienda que establezca la frecuencia de notificación del progreso en una vez cada 3 segundos como máximo. Si la frecuencia real supera el límite, es posible que no pueda consultar toda la información de progreso en la página
Batch Details
del paquete de actualización OTA en la consola de IoT Platform.
Solicitud de ejemplo:
{
"id": "123",
"params": {
"step": "-1",
"desc": "OTA update failed because no update package information is found.",
"module": "MCU"
}
}
| Parámetro | Tipo | Descripción |
| id | String | El ID del mensaje. Valores válidos: 0 a 4294967295. Cada ID de mensaje debe ser único para el dispositivo. |
| step | String | El progreso de la actualización OTA. Valores válidos:
El valor de progreso y la descripción de las actualizaciones OTA se pueden configurar en el dispositivo según los requisitos reales. Para obtener más información sobre cómo desarrollar la función de actualización OTA en un dispositivo, consulte Sample code. |
| desc | String | La descripción del paso actual. La descripción no puede exceder 128 caracteres. Si se produce una excepción, este parámetro contiene el mensaje de error. |
| module | String | El nombre del módulo al que se aplica el paquete de actualización OTA. Para obtener más información, consulte Add an update package. Nota Si el dispositivo envía el progreso de actualización del módulo predeterminado, el parámetro module es opcional. |
Solicitud de información sobre un paquete de actualización OTA
A continuación se muestran los temas que se usan cuando un dispositivo envía datos a IoT Platform:
Tema de solicitud: /sys/${productKey}/${deviceName}/thing/ota/firmware/get.
Tema de respuesta: /sys/${productKey}/${deviceName}/thing/ota/firmware/get_reply.
Solicitud de ejemplo:
{
"id": "123",
"version": "1.0",
"params": {
"module": "MCU"
},
"method": "thing.ota.firmware.get"
}
| Parámetro | Tipo | Descripción |
| id | String | El ID del mensaje. Valores válidos: 0 a 4294967295. Cada ID de mensaje debe ser único para el dispositivo. |
| version | String | La versión del protocolo. Establezca el valor en 1.0. |
| params | Object | Los parámetros de la solicitud. |
| module | String | El nombre del módulo al que se aplica el paquete de actualización OTA. Nota Si no configura este parámetro, se solicita la información del paquete de actualización del módulo predeterminado. |
| method | String | El método de solicitud. Establezca el valor en thing.ota.firmware.get. |
Después de que IoT Platform recibe una solicitud del dispositivo, envía una respuesta.
-
IoT Platform envía al dispositivo la información sobre el paquete de actualización más reciente. Respuestas de ejemplo:
-
Información de ejemplo sobre un paquete de actualización OTA que contiene un solo archivo:
-
Descarga del paquete de actualización OTA mediante HTTPS:
{ "id": "123", "code": 200, "data": { "size": 93796291, "sign": "f8d85b250d4d787a9f483d89a974***", "version": "10.0.1.9.20171112.1432", "isDiff": 1, "url": "https://the_firmware_url", "signMethod": "MD5", "md5": "f8d85b250d4d787a9f48***", "module": "MCU", "extData":{ "key1":"value1", "key2":"value2", "_package_udi":"{\"ota_notice\":\"Update the camera driver to prevent blurry videos. \"}" } } } -
Descarga del paquete de actualización OTA mediante MQTT:
{ "id": "123", "code": 200, "data":{ "size":432945, "digestsign":"A4WOP***SYHJ6DDDJD9***", "version":"2.0.0", "isDiff":1, "signMethod":"MD5", "dProtocol":"mqtt", "streamId":1397345, "streamFileId":1, "md5":"93230c3bde***", "sign":"93230c3bde42***", "module":"MCU", "extData":{ "key1":"value1", "key2":"value2" } } }
-
-
Un paquete de actualización OTA que contiene varios archivos se puede descargar únicamente mediante HTTP. Información de ejemplo:
{ "id": "123", "code": 200, "data": { "version": "2.0.0", "isDiff": 1, "signMethod": "MD5", "files":[ { "fileSize":432944, "fileName":"file1-name", "fileUrl":"https://iotx***.aliyuncs.com/nop***.tar.gz?Expires=1502955804&OSSAccessKeyId=***&Signature=XfgJu7***U%3D&security-token=CAISu***", "fileMd5":"93230c3bde425a9d7984a594ac55ea1e", "fileSign":"93230c3bde425a9d7984a594ac55****" }, { "fileSize":432945, "fileName":"file2-name", "fileUrl":"https://iotx-***.aliyuncs.com/no***.tar.gz?Expires=1502955804&OSSAccessKeyId=***&Signature=XfgJu7P***KU%3D&security-token=CAISuQJ***", "fileMd5":"93230c3bde425a9d7984a594ac56ea1f", "fileSign":"93230c3bde425a9d7984a594ac56****" } ], "module": "MCU", "extData":{ "key1":"value1", "key2":"value2", "_package_udi":"{\"ota_notice\":\"Update the camera driver to prevent blurry videos. \"}" } } }
Tabla 5. Parámetros Parámetro
Tipo
Descripción
id
String
El ID del mensaje. Valores válidos: 0 a 4294967295. Cada ID de mensaje debe ser único para el dispositivo.
El ID del mensaje en la respuesta es el mismo que en la solicitud. Consulte el parámetro
iden los datos que se envían al tema /sys/${productKey}/${deviceName}/thing/ota/firmware/get.code
Integer
El código de estado. Un valor de 200 indica una solicitud correcta.
data
Object
La información sobre el paquete de actualización OTA. Para obtener más información, consulte Push the information about an OTA update package to a device.
-
-
IoT Platform envía una respuesta si no existe información de paquetes de actualización. Respuesta de ejemplo:
{ "id": "123", "code": 200, "data": { } }
Inicio de solicitudes para descargar segmentos del paquete
Si el protocolo de descarga del paquete de actualización OTA es MQTT, un dispositivo puede descargar el paquete de actualización OTA por segmentos. A continuación se muestran los temas que se usan:
Un paquete de actualización descargado mediante el protocolo MQTT puede tener un tamaño máximo de 16 MB.
Tema de solicitud:
/sys/${productKey}/${deviceName}/thing/file/download.Tema de respuesta:
/sys/${productKey}/${deviceName}/thing/file/download_reply.
Solicitud de ejemplo:
{
"id": "123456",
"version": "1.0",
"params": {
"fileToken":"1bb8***",
"fileInfo":{
"streamId":1234565,
"fileId":1
},
"fileBlock":{
"size":256,
"offset":2
}
}
}
| Parámetro | Tipo | Descripción |
| id | String | El ID del mensaje. Valores válidos: 0 a 4294967295. Cada ID de mensaje debe ser único para el dispositivo. |
| version | String | La versión del protocolo. Establezca el valor en 1.0. |
| params | Object | Los parámetros de la solicitud. |
| fileToken | String | Opcional. El token único que se usa para identificar el paquete de actualización. El valor puede tener una longitud de hasta 16 caracteres y puede contener dígitos, letras, guiones bajos (_) y puntos (.). Notas de uso:
|
| fileInfo | Object | La información sobre el paquete de actualización OTA. |
| streamId | Long | El ID único generado al descargar el paquete de actualización OTA mediante MQTT. |
| fileId | Integer | El ID único del paquete de actualización OTA. |
| fileBlock | Object | La información sobre cada segmento. |
| size | Integer | El tamaño de cada segmento que se descargará. Unidad: bytes. Valores válidos: 256 a 131072. Para el último segmento, el valor está entre 1 y 131072. |
| offset | Integer | La posición inicial del último segmento en el paquete de actualización que se descarga por segmentos. Unidad: bytes. Valores válidos: 0 a 16777216. |
Respuestas de ejemplo:
-
A continuación se muestra la estructura de datos de una respuesta.

Campo
Descripción
Longitud de bytes JSON
Especifica la longitud de la matriz de bytes que se convierte de la cadena JSON en la respuesta. La matriz de bytes debe tener dos bytes de longitud. El primer byte es el byte alto y el segundo es el byte bajo.
Por ejemplo, la cadena JSON codificada en UTF-8 de la respuesta se convierte en una matriz de bytes. La longitud de la matriz de bytes es el dígito decimal 87, que corresponde al dígito hexadecimal 57. El byte alto es 0x00 y el byte bajo es 0x57.
Bytes de cadena JSON
Especifica la matriz de bytes que se convierte de la cadena JSON en la respuesta. El formato de codificación es UTF-8. Para obtener más información, consulte la sección "Respuesta JSON de ejemplo" de este tema.
Bytes de bloque de archivo
Especifica la matriz de bytes del segmento. Los bytes se ordenan de forma ascendente según el desplazamiento entre cada byte y el encabezado del paquete.
CRC16/IBM
Especifica el valor de comprobación del segmento. El valor de comprobación debe tener dos bytes de longitud. Solo CRC-16-IBM es compatible. El primer byte es el byte alto y el segundo es el byte bajo.
Por ejemplo, si el valor de comprobación de un segmento es 0x0809, el byte alto es 0x08 y el byte bajo es 0x09.
-
Respuesta JSON de ejemplo:
{ "id": "123456", "code":200, "msg":"file size has exceeded the limit 16 MB", "data": { "fileToken":"1bb8***", "fileLength":1238848, "bSize":1491, "bOffset":2 } }
|
Parámetro |
Tipo |
Descripción |
|
id |
String |
El ID del mensaje. Valores válidos: 0 a 4294967295. Cada ID de mensaje debe ser único para el dispositivo. El ID del mensaje en la respuesta es el mismo que el ID del mensaje en la solicitud. Consulte el ID del mensaje en el parámetro id de los datos enviados al tema |
|
code |
Integer |
El código de estado. El valor 200 indica una solicitud correcta. |
|
msg |
String |
El mensaje de error que se devuelve si la llamada falla. |
|
data |
Object |
Los datos devueltos al dispositivo. |
|
fileToken |
String |
El token único del paquete de actualización. Si especifica un valor para el parámetro fileToken, este parámetro se devuelve. |
|
fileLength |
Integer |
El tamaño total del paquete de actualización. Unidad: bytes. |
|
bSize |
Integer |
El tamaño del segmento actual. Unidad: bytes. |
|
bOffset |
Integer |
La posición inicial del segmento actual en el paquete de actualización. Este valor es el mismo que el valor del parámetro de solicitud offset. Unidad: bytes. |
Referencias
Para obtener más información sobre códigos de error y métodos de solución de problemas, consulte Error codes received by devices.