Todos los productos
Search
Centro de documentos

IoT Platform:Actualización OTA

Última actualización: Sep 07, 2026

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.

Importante

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"
    }
}
Tabla 1. Parámetros
ParámetroTipoDescripción
idStringEl ID del mensaje. Valores válidos: 0 a 4294967295. Cada ID de mensaje debe ser único para el dispositivo.
versionStringLa versión del módulo OTA.
moduleStringEl nombre del módulo OTA.
Nota
  • Si el dispositivo envía la versión del módulo predeterminado, el parámetro module es opcional.
  • La versión del módulo predeterminado indica la versión del firmware del dispositivo.

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"
    }
Tabla 2. Parámetros
ParámetroTipoDescripción
idLongEl ID del mensaje. Cada ID de mensaje es único para el dispositivo.
messageStringEl mensaje de respuesta.
codeStringEl código de estado HTTP.
versionStringLa versión del paquete de actualización OTA.
sizeLongEl 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.

urlStringLa 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.

dProtocolStringEl protocolo que se usa para descargar el paquete de actualización OTA.

Este parámetro está disponible si el protocolo de descarga es MQTT.

streamIdLongEl 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.

streamFileIdIntegerEl 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.

isDiffLongEste 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.

digestsignStringLa 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.
signStringLa firma del paquete de actualización OTA.

Este parámetro está disponible si el paquete de actualización OTA contiene un solo archivo.

signMethodStringEl algoritmo de firma. Valores válidos:
  • SHA256
  • MD5
Los paquetes de actualización delta para Android admiten solo el algoritmo MD5.
md5StringSi 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.

moduleStringEl 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.
extDataObjectLas 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: "key":"value".

filesArrayLa 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:

  • fileSize: el tamaño del archivo.
  • fileName: el nombre del archivo.
  • fileUrl, fileMd5 y fileSign: Estos parámetros corresponden a los parámetros url, md5 y sign de esta tabla.

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.

Nota

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"
    }
}
Tabla 3. Parámetros
ParámetroTipoDescripción
idStringEl ID del mensaje. Valores válidos: 0 a 4294967295. Cada ID de mensaje debe ser único para el dispositivo.
stepString

El progreso de la actualización OTA.

Valores válidos:
  • Un entero de 1 a 100: indica un porcentaje que representa el progreso de la actualización.
  • -1: indica que la actualización terminó con errores.
  • -2: indica que la descarga terminó con errores.
  • -3: indica que la verificación terminó con errores.
  • -4: indica que la grabación del firmware terminó con errores.

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.

descStringLa 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.
moduleStringEl 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"
}
Tabla 4. Parámetros
ParámetroTipoDescripción
idStringEl ID del mensaje. Valores válidos: 0 a 4294967295. Cada ID de mensaje debe ser único para el dispositivo.
versionStringLa versión del protocolo. Establezca el valor en 1.0.
paramsObjectLos parámetros de la solicitud.
moduleStringEl 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.
methodStringEl 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 id en 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:

Importante

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
        }
    }
}
Tabla 6. Parámetros
ParámetroTipoDescripción
idStringEl ID del mensaje. Valores válidos: 0 a 4294967295. Cada ID de mensaje debe ser único para el dispositivo.
versionStringLa versión del protocolo. Establezca el valor en 1.0.
paramsObjectLos parámetros de la solicitud.
fileTokenStringOpcional. 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:

  • Si configura este parámetro, IoT Platform lo devuelve en la respuesta. Esto permite identificar distintos paquetes de actualización cuando descarga varios paquetes de actualización en el dispositivo.
  • Si no necesita descargar varios paquetes de actualización al mismo tiempo, puede dejar este parámetro vacío.
fileInfoObjectLa información sobre el paquete de actualización OTA.
streamIdLongEl ID único generado al descargar el paquete de actualización OTA mediante MQTT.
fileIdIntegerEl ID único del paquete de actualización OTA.
fileBlockObjectLa información sobre cada segmento.
sizeIntegerEl 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.
offsetIntegerLa 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.

    Data structure

    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
        }
    }
Tabla 7. 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 el ID del mensaje en la solicitud. Consulte el ID del mensaje en el parámetro id de los datos enviados al tema /sys/${productKey}/${deviceName}/thing/file/download.

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.