Todos os produtos
Search
Central de documentação

IoT Platform:Atualização OTA

Última atualização: Jun 26, 2026

O IoT Platform oferece o recurso de atualização e gerenciamento over-the-air (OTA). Este tópico descreve os tópicos e formatos de dados usados para transmitir mensagens durante as atualizações OTA. A transmissão ocorre quando dispositivos enviam versões de módulos OTA, o IoT Platform distribui pacotes de atualização para os dispositivos, os dispositivos relatam o progresso da atualização e os dispositivos solicitam informações sobre os pacotes de atualização mais recentes.

Para obter mais informações sobre como executar atualizações OTA, consulte Procedimento de atualização OTA.

Enviar versões de módulos OTA para o IoT Platform

O tópico a seguir é utilizado quando um dispositivo envia dados para o IoT Platform:

Tópico: /ota/device/inform/${productKey}/${deviceName}.

Um dispositivo envia a versão de um módulo OTA para este tópico.

Importante

Este tópico permite que o dispositivo envie a versão de apenas um módulo por vez. Caso seja necessário enviar versões de vários módulos OTA, o dispositivo deve mandar múltiplas mensagens. Cada mensagem deve conter a versão de um único módulo.

Exemplo de solicitação:

{
    "id": "123",
    "params": {
        "version": "1.0.1",
        "module": "MCU"
    }
}
Tabela 1. Parâmetros
ParâmetroTipoDescrição
idStringID da mensagem. Valores válidos: 0 a 4.294.967.295. Cada ID de mensagem deve ser exclusivo para o dispositivo.
versionStringVersão do módulo OTA.
moduleStringNome do módulo OTA.
Nota
  • Se o dispositivo enviar a versão do módulo padrão, o parâmetro module será opcional.
  • A versão do módulo padrão corresponde à versão do firmware do dispositivo.

Distribuir informações de um pacote de atualização OTA para um dispositivo

O tópico abaixo é usado quando o IoT Platform envia dados para um dispositivo:

Tópico: /ota/device/upgrade/${productKey}/${deviceName}.

O IoT Platform publica as informações do pacote de atualização OTA no tópico mencionado. O dispositivo pode assinar esse tópico para receber os dados.

  • Exemplo de informações de um pacote de atualização OTA contendo um único arquivo:

    • Baixe o pacote de atualização OTA via 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"
      }
    • Baixe o pacote de atualização OTA via 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"
      }
  • Pacotes de atualização OTA com múltiplos arquivos só podem ser baixados via HTTP. Exemplo de informações:

    {
        "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"
    }
Tabela 2. Parâmetros
ParâmetroTipoDescrição
idLongID da mensagem. Cada ID de mensagem é exclusivo para o dispositivo.
messageStringMensagem de resposta.
codeStringCódigo de status HTTP.
versionStringVersão do pacote de atualização OTA.
sizeLongTamanho do pacote de atualização. Unidade: bytes.

Parâmetro disponível apenas se o pacote de atualização OTA contiver um único arquivo.

urlStringURL do Object Storage Service (OSS) do pacote de atualização OTA.

Parâmetro disponível apenas se o pacote contiver um único arquivo e o protocolo de download for HTTPS.

dProtocolStringProtocolo utilizado para baixar o pacote de atualização OTA.

Parâmetro disponível apenas se o protocolo de download for MQTT.

streamIdLongID exclusivo gerado ao baixar o pacote de atualização OTA via MQTT.

Parâmetro disponível apenas se o protocolo de download for MQTT.

streamFileIdIntegerID exclusivo do pacote de atualização OTA que contém um único arquivo.

Parâmetro disponível apenas se o protocolo de download for MQTT.

isDiffLongIndica se o pacote é uma atualização diferencial.

Defina o valor como 1. Isso especifica que o pacote contém apenas as diferenças entre a nova versão e a anterior, realizando uma atualização delta.

digestsignStringAssinatura do pacote de atualização OTA após a execução de uma atualização segura. Disponível quando o recurso de atualização segura está ativado para o pacote. Para saber como ativar esse recurso, consulte Adicionar um pacote de atualização.
signStringAssinatura do pacote de atualização OTA.

Parâmetro disponível apenas se o pacote de atualização OTA contiver um único arquivo.

signMethodStringAlgoritmo de assinatura. Valores válidos:
  • SHA256
  • MD5
Pacotes de atualização delta para Android suportam apenas o algoritmo MD5.
md5StringQuando o algoritmo de assinatura é MD5, o IoT Platform define valores para os parâmetros sign e md5.

Parâmetro disponível apenas se o pacote de atualização OTA contiver um único arquivo.

moduleStringNome do módulo ao qual o pacote de atualização OTA se aplica.
Nota Se o pacote de atualização OTA for aplicado ao módulo padrão, o IoT Platform não envia o parâmetro module.
extDataObjectTags do lote de atualização e informações personalizadas que o IoT Platform deve enviar ao dispositivo.

O campo _package_udi especifica as informações personalizadas.

Formato de cada tag: "key":"value".

filesArrayInformações sobre os arquivos em um pacote de atualização.

Parâmetro disponível se o pacote de atualização OTA contiver múltiplos arquivos. Detalhes de um único arquivo:

  • fileSize: tamanho do arquivo.
  • fileName: nome do arquivo.
  • fileUrl, fileMd5 e fileSign: Correspondem aos parâmetros url, md5 e sign desta tabela.

Relatar o progresso da atualização para o IoT Platform

Utilize o seguinte tópico quando um dispositivo enviar dados para o IoT Platform:

Tópico: /ota/device/progress/${productKey}/${deviceName}.

Durante uma atualização OTA, o dispositivo reporta a porcentagem de conclusão para o tópico acima.

Nota

Recomenda-se limitar a frequência de relato de progresso a no máximo uma vez a cada 3 segundos. Frequências superiores podem impedir a visualização completa das informações na página

Batch Details

do pacote de atualização OTA no console do IoT Platform.

Exemplo de solicitação:

{
    "id": "123",
    "params": {
        "step": "-1",
        "desc": "OTA update failed because no update package information is found.",
        "module": "MCU"
    }
}
Tabela 3. Parâmetros
ParâmetroTipoDescrição
idStringID da mensagem. Valores válidos: 0 a 4.294.967.295. Cada ID de mensagem deve ser exclusivo para o dispositivo.
stepString

Progresso da atualização OTA.

Valores válidos:
  • Inteiro de 1 a 100: representa a porcentagem de progresso da atualização.
  • -1: indica falha na atualização.
  • -2: indica falha no download.
  • -3: indica falha na verificação.
  • -4: indica falha na gravação do firmware.

Os valores de progresso e descrições podem ser configurados no dispositivo conforme a necessidade. Para detalhes sobre o desenvolvimento do recurso de atualização OTA no dispositivo, consulte Código de exemplo.

descStringDescrição da etapa atual. Limitado a 128 caracteres. Em caso de exceção, este campo contém a mensagem de erro.
moduleStringNome do módulo alvo da atualização OTA. Consulte Adicionar um pacote de atualização.
Nota O parâmetro module é opcional ao relatar o progresso do módulo padrão.

Solicitar informações sobre um pacote de atualização OTA

Os tópicos seguintes são usados quando um dispositivo envia dados para o IoT Platform:

Tópico de solicitação: /sys/${productKey}/${deviceName}/thing/ota/firmware/get.

Tópico de resposta: /sys/${productKey}/${deviceName}/thing/ota/firmware/get_reply.

Exemplo de solicitação:

{
    "id": "123",
    "version": "1.0",
    "params": {
        "module": "MCU"
    },
    "method": "thing.ota.firmware.get"
}
Tabela 4. Parâmetros
ParâmetroTipoDescrição
idStringID da mensagem. Valores válidos: 0 a 4.294.967.295. Cada ID de mensagem deve ser exclusivo para o dispositivo.
versionStringVersão do protocolo. Defina o valor como 1,0.
paramsObjectParâmetros da solicitação.
moduleStringNome do módulo ao qual o pacote de atualização OTA se aplica.
Nota Se este parâmetro não for configurado, as informações do pacote de atualização do módulo padrão serão solicitadas.
methodStringMétodo da solicitação. Defina o valor como thing.ota.firmware.get.

Após receber uma solicitação do dispositivo, o IoT Platform envia uma resposta.

  • O IoT Platform envia as informações do pacote de atualização mais recente para o dispositivo. Exemplos de resposta:

    • Exemplo de informações de um pacote de atualização OTA contendo um único arquivo:

      • Baixe o pacote de atualização OTA via 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. \"}"
                }
            }
        }
      • Baixe o pacote de atualização OTA via 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"
                }
            }
        }
    • Pacotes de atualização OTA com múltiplos arquivos só podem ser baixados via HTTP. Exemplo de informações:

      {
          "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. \"}"
              }
          }
      }
    Tabela 5. Parâmetros

    Parâmetro

    Tipo

    Descrição

    id

    String

    ID da mensagem. Valores válidos: 0 a 4.294.967.295. Cada ID de mensagem deve ser exclusivo para o dispositivo.

    O ID da mensagem na resposta é idêntico ao da solicitação. Verifique o parâmetro id nos dados enviados ao tópico /sys/${productKey}/${deviceName}/thing/ota/firmware/get.

    code

    Integer

    Código de status. O valor 200 indica sucesso na solicitação.

    data

    Object

    Informações do pacote de atualização OTA. Para mais detalhes, consulte Distribuir informações de um pacote de atualização OTA para um dispositivo.

  • O IoT Platform retorna uma resposta caso não existam informações de pacotes de atualização. Exemplo:

    {
        "id": "123",
        "code": 200,
        "data": {
        }
    }

Iniciar solicitações para download de segmentos de pacote

Se o protocolo de download do pacote de atualização OTA for MQTT, o dispositivo poderá baixar o pacote por segmentos. Utilize os seguintes tópicos:

Importante

Pacotes de atualização baixados via protocolo MQTT têm tamanho máximo de 16 MB.

  • Tópico de solicitação:/sys/${productKey}/${deviceName}/thing/file/download.

  • Tópico de resposta:/sys/${productKey}/${deviceName}/thing/file/download_reply.

Exemplo de solicitação:

{
    "id": "123456",
    "version": "1.0",
    "params": {
        "fileToken":"1bb8***",
        "fileInfo":{
            "streamId":1234565,
            "fileId":1
        },
        "fileBlock":{
            "size":256,
            "offset":2
        }
    }
}
Tabela 6. Parâmetros
ParâmetroTipoDescrição
idStringID da mensagem. Valores válidos: 0 a 4.294.967.295. Cada ID de mensagem deve ser exclusivo para o dispositivo.
versionStringVersão do protocolo. Defina o valor como 1,0.
paramsObjectParâmetros da solicitação.
fileTokenStringOpcional. Token exclusivo para identificar o pacote de atualização. Aceita até 16 caracteres, incluindo dígitos, letras, sublinhados (_) e pontos (.).

Observações de uso:

  • Ao configurar este parâmetro, o IoT Platform o retorna na resposta, facilitando a distinção entre diferentes pacotes durante downloads simultâneos.
  • Deixe este campo vazio se não houver necessidade de baixar múltiplos pacotes ao mesmo tempo.
fileInfoObjectInformações sobre o pacote de atualização OTA.
streamIdLongID exclusivo gerado durante o download do pacote de atualização OTA via MQTT.
fileIdIntegerID exclusivo do pacote de atualização OTA.
fileBlockObjectDetalhes de cada segmento.
sizeIntegerTamanho de cada segmento a ser baixado. Unidade: bytes. Valores válidos: 256 a 131.072. Para o último segmento, o intervalo é de 1 a 131.072.
offsetIntegerPosição inicial do último segmento no pacote de atualização baixado por partes. Unidade: bytes. Valores válidos: 0 a 16.777.216.

Exemplos de resposta:

  • A figura abaixo ilustra a estrutura de dados de uma resposta.

    Data structure

    Campo

    Descrição

    JSON Bytes Length

    Define o comprimento do array de bytes convertido a partir da string JSON na resposta. O array deve ter dois bytes, sendo o primeiro o byte alto e o segundo o byte baixo.

    Por exemplo, uma string JSON codificada em UTF-8 convertida para bytes resulta no valor decimal 87, equivalente a 0x57 em hexadecimal. Assim, o byte alto é 0x00 e o baixo é 0x57.

    JSON String Bytes

    Representa o array de bytes convertido da string JSON na resposta, utilizando codificação UTF-8. Consulte a seção "Exemplo de resposta JSON" neste tópico para mais detalhes.

    File Block Bytes

    Corresponde ao array de bytes do segmento. Os bytes são ordenados de forma crescente com base no deslocamento (offset) em relação ao cabeçalho do pacote.

    CRC16/IBM

    Valor de verificação do segmento. Deve ter dois bytes de comprimento. Apenas CRC-16-IBM é suportado. O primeiro byte é o alto e o segundo é o baixo.

    Por exemplo, se o valor de verificação for 0x0809, o byte alto será 0x08 e o baixo 0x09.

  • Exemplo de resposta JSON:

    {
        "id": "123456",
        "code":200,
        "msg":"file size has exceeded the limit 16 MB",
        "data": {
            "fileToken":"1bb8***",
            "fileLength":1238848,
            "bSize":1491,
            "bOffset":2
        }
    }
Tabela 7. Parâmetros

Parâmetro

Tipo

Descrição

id

String

ID da mensagem. Valores válidos: 0 a 4.294.967.295. Cada ID de mensagem deve ser exclusivo para o dispositivo.

O ID da mensagem na resposta corresponde ao ID da solicitação. Verifique o ID no parâmetro id dos dados enviados ao tópico /sys/${productKey}/${deviceName}/thing/file/download.

code

Integer

Código de status. O valor 200 indica sucesso na solicitação.

msg

String

Mensagem de erro retornada em caso de falha na chamada.

data

Object

Dados retornados ao dispositivo.

fileToken

String

Token exclusivo do pacote de atualização. Retornado apenas se o parâmetro fileToken tiver sido especificado na solicitação.

fileLength

Integer

Tamanho total do pacote de atualização. Unidade: bytes.

bSize

Integer

Tamanho do segmento atual. Unidade: bytes.

bOffset

Integer

Posição inicial do segmento atual no pacote de atualização. Este valor é idêntico ao do parâmetro de solicitação offset. Unidade: bytes.

Referências

Para consultar códigos de erro e métodos de solução de problemas, acesse Códigos de erro recebidos por dispositivos.