Tous les produits
Search
Centre de documentation

IoT Platform:Mise à jour OTA

Dernière mise à jour :Aug 10, 2026

IoT Platform propose une fonctionnalité de mise à jour et de gestion over-the-air (OTA). Cette rubrique décrit les topics et les formats de données utilisés pour transmettre les messages lors des mises à jour OTA. Ces messages sont échangés lorsque les appareils soumettent les versions des modules OTA, lorsqu'IoT Platform pousse les packages de mise à jour vers les appareils, lorsque les appareils transmettent la progression de la mise à jour et lorsqu'ils demandent des informations sur les derniers packages de mise à jour disponibles.

Pour plus d'informations sur la procédure de mise à jour OTA, consultez la section Procédure de mise à jour OTA.

Soumettre les versions des modules OTA à IoT Platform

Le topic suivant est utilisé lorsqu'un appareil envoie des données à IoT Platform :

Topic : /ota/device/inform/${productKey}/${deviceName}.

Un appareil soumet la version d'un module OTA via ce topic.

Important

Ce topic permet à l'appareil de soumettre la version d'un seul module à la fois. Si l'appareil doit soumettre les versions de plusieurs modules OTA, il doit envoyer plusieurs messages, chacun contenant la version d'un module distinct.

Exemple de requête :

{
    "id": "123",
    "params": {
        "version": "1.0.1",
        "module": "MCU"
    }
}
Tableau 1. Paramètres
ParamètreTypeDescription
idStringID du message. Les valeurs valides vont de 0 à 4294967295. Chaque ID de message doit être unique pour l'appareil.
versionStringVersion du module OTA.
moduleStringNom du module OTA.
Remarque
  • Si l'appareil soumet la version du module par défaut, le paramètre module est facultatif.
  • La version du module par défaut correspond à la version du firmware de l'appareil.

Pousser les informations d'un package de mise à jour OTA vers un appareil

Le topic suivant est utilisé lorsqu'IoT Platform envoie des données à un appareil :

Topic : /ota/device/upgrade/${productKey}/${deviceName}.

IoT Platform envoie les informations relatives au package de mise à jour OTA via le topic précédent. Un appareil peut s'abonner à ce topic pour obtenir ces informations.

  • Exemple d'informations pour un package de mise à jour OTA contenant un seul fichier :

    • Téléchargement du package de mise à jour 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"
      }
    • Téléchargement du package de mise à jour 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"
      }
  • Le téléchargement d'un package de mise à jour OTA contenant plusieurs fichiers n'est possible que via HTTP. Exemple d'informations :

    {
        "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"
    }
Tableau 2. Paramètres
ParamètreTypeDescription
idLongID du message. Chaque ID de message est unique pour l'appareil.
messageStringMessage de réponse.
codeStringCode d'état HTTP.
versionStringVersion du package de mise à jour OTA.
sizeLongTaille du package de mise à jour, en octets.

Ce paramètre est disponible si le package de mise à jour OTA contient un seul fichier.

urlStringURL Object Storage Service (OSS) du package de mise à jour OTA.

Ce paramètre est disponible si le package de mise à jour OTA contient un seul fichier et si le protocole de téléchargement est HTTPS.

dProtocolStringProtocole utilisé pour télécharger le package de mise à jour OTA.

Ce paramètre est disponible si le protocole de téléchargement est MQTT.

streamIdLongID unique généré lors du téléchargement du package de mise à jour OTA via MQTT.

Ce paramètre est disponible si le protocole de téléchargement est MQTT.

streamFileIdIntegerID unique du package de mise à jour OTA contenant un seul fichier.

Ce paramètre est disponible si le protocole de téléchargement est MQTT.

isDiffLongCe paramètre est disponible si le package de mise à jour est un package de mise à jour différentielle.

Définissez la valeur sur 1. Cette valeur indique que le package de mise à jour contient uniquement les différences entre la nouvelle version et la version précédente. Dans ce cas, une mise à jour différentielle est effectuée.

digestsignStringSignature du package de mise à jour OTA après exécution d'une mise à jour sécurisée. Ce paramètre est disponible si la fonctionnalité de mise à jour sécurisée est activée pour un package de mise à jour OTA. Pour plus d'informations sur l'activation de la fonctionnalité de mise à jour sécurisée, consultez la section Ajouter un package de mise à jour.
signStringSignature du package de mise à jour OTA.

Ce paramètre est disponible si le package de mise à jour OTA contient un seul fichier.

signMethodStringAlgorithme de signature. Valeurs valides :
  • SHA256
  • MD5
Les packages de mise à jour différentielle pour Android ne prennent en charge que l'algorithme MD5.
md5StringSi l'algorithme de signature est MD5, IoT Platform spécifie les valeurs des paramètres sign et md5.

Ce paramètre est disponible si le package de mise à jour OTA contient un seul fichier.

moduleStringNom du module auquel le package de mise à jour OTA est appliqué.
Remarque Si le package de mise à jour OTA est appliqué au module par défaut, IoT Platform n'envoie pas le paramètre module.
extDataObjectTags du lot de mise à jour et informations personnalisées qu'IoT Platform doit pousser vers l'appareil.

_package_udi spécifie les informations personnalisées.

Format de chaque tag : "key":"value".

filesArrayInformations sur les fichiers contenus dans un package de mise à jour.

Ce paramètre est disponible si le package de mise à jour OTA contient plusieurs fichiers. Informations relatives à un seul fichier :

  • fileSize : taille du fichier.
  • fileName : nom du fichier.
  • fileUrl, fileMd5 et fileSign : ces paramètres correspondent aux paramètres url, md5 et sign de ce tableau.

Soumettre la progression de la mise à jour à IoT Platform

Le topic suivant est utilisé lorsqu'un appareil envoie des données à IoT Platform :

Topic : /ota/device/progress/${productKey}/${deviceName}.

Lors d'une mise à jour OTA, l'appareil soumet la progression de la mise à jour sous forme de pourcentage via le topic précédent.

Remarque

Nous vous recommandons de définir la fréquence de rapport de progression à une fois toutes les 3 secondes maximum. Si la fréquence réelle dépasse cette limite, vous risquez de ne pas pouvoir afficher toutes les informations de progression sur la page

Batch Details

du package de mise à jour OTA dans la console IoT Platform.

Exemple de requête :

{
    "id": "123",
    "params": {
        "step": "-1",
        "desc": "OTA update failed because no update package information is found.",
        "module": "MCU"
    }
}
Tableau 3. Paramètres
ParamètreTypeDescription
idStringID du message. Les valeurs valides vont de 0 à 4294967295. Chaque ID de message doit être unique pour l'appareil.
stepString

Progression de la mise à jour OTA.

Valeurs valides :
  • Entier compris entre 1 et 100 : indique un pourcentage représentant la progression de la mise à jour.
  • -1 : indique un échec de la mise à jour.
  • -2 : indique un échec du téléchargement.
  • -3 : indique un échec de la vérification.
  • -4 : indique un échec du flashage du firmware.

La valeur de progression et la description des mises à jour OTA peuvent être configurées dans l'appareil selon les besoins réels. Pour plus d'informations sur le développement de la fonctionnalité de mise à jour OTA dans un appareil, consultez la section Exemple de code.

descStringDescription de l'étape actuelle. La description ne doit pas dépasser 128 caractères. En cas d'exception, ce paramètre contient le message d'erreur.
moduleStringNom du module auquel le package de mise à jour OTA est appliqué. Pour plus d'informations, consultez la section Ajouter un package de mise à jour.
Remarque Si l'appareil soumet la progression de la mise à jour du module par défaut, le paramètre module est facultatif.

Demander les informations d'un package de mise à jour OTA

Les topics suivants sont utilisés lorsqu'un appareil envoie des données à IoT Platform :

Topic de requête : /sys/${productKey}/${deviceName}/thing/ota/firmware/get.

Topic de réponse : /sys/${productKey}/${deviceName}/thing/ota/firmware/get_reply.

Exemple de requête :

{
    "id": "123",
    "version": "1.0",
    "params": {
        "module": "MCU"
    },
    "method": "thing.ota.firmware.get"
}
Tableau 4. Paramètres
ParamètreTypeDescription
idStringID du message. Les valeurs valides vont de 0 à 4294967295. Chaque ID de message doit être unique pour l'appareil.
versionStringVersion du protocole. Définissez la valeur sur 1.0.
paramsObjectParamètres de la requête.
moduleStringNom du module auquel le package de mise à jour OTA est appliqué.
Remarque Si vous ne configurez pas ce paramètre, les informations du package de mise à jour du module par défaut sont demandées.
methodStringMéthode de requête. Définissez la valeur sur thing.ota.firmware.get.

Après réception d'une requête de l'appareil, IoT Platform envoie une réponse.

  • IoT Platform envoie les informations du dernier package de mise à jour à l'appareil. Exemples de réponses :

    • Exemple d'informations pour un package de mise à jour OTA contenant un seul fichier :

      • Téléchargement du package de mise à jour 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. \"}"
                }
            }
        }
      • Téléchargement du package de mise à jour 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"
                }
            }
        }
    • Le téléchargement d'un package de mise à jour OTA contenant plusieurs fichiers n'est possible que via HTTP. Exemple d'informations :

      {
          "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. \"}"
              }
          }
      }
    Tableau 5. Paramètres
    Paramètre Type Description

    | id | String | ID du message. Les valeurs valides vont de 0 à 4294967295. Chaque ID de message doit être unique pour l'appareil.


    L'ID du message dans la réponse est identique à celui de la requête. Vous pouvez consulter le paramètre id dans les données soumises au topic /sys/${productKey}/${deviceName}/thing/ota/firmware/get.

    |

    code

    Integer

    Code d'état. Une valeur de 200 indique que la requête a abouti.

    data

    Object

    Informations relatives au package de mise à jour OTA. Pour plus d'informations, consultez la section Pousser les informations d'un package de mise à jour OTA vers un appareil.

  • IoT Platform envoie une réponse si aucune information de package de mise à jour n'existe. Exemple de réponse :

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

Initier des requêtes pour télécharger des segments de package

Si le protocole de téléchargement du package de mise à jour OTA est MQTT, un appareil peut télécharger le package par segments. Les topics suivants sont utilisés :

Important

Un package de mise à jour téléchargé via le protocole MQTT peut atteindre une taille maximale de 16 Mo.

  • Topic de requête : /sys/${productKey}/${deviceName}/thing/file/download.

  • Topic de réponse : /sys/${productKey}/${deviceName}/thing/file/download_reply.

Exemple de requête :

{
    "id": "123456",
    "version": "1.0",
    "params": {
        "fileToken":"1bb8***",
        "fileInfo":{
            "streamId":1234565,
            "fileId":1
        },
        "fileBlock":{
            "size":256,
            "offset":2
        }
    }
}
Tableau 6. Paramètres
ParamètreTypeDescription
idStringID du message. Les valeurs valides vont de 0 à 4294967295. Chaque ID de message doit être unique pour l'appareil.
versionStringVersion du protocole. Définissez la valeur sur 1.0.
paramsObjectParamètres de la requête.
fileTokenStringFacultatif. Jeton unique utilisé pour identifier le package de mise à jour. La valeur peut comporter jusqu'à 16 caractères et contenir des chiffres, des lettres, des traits de soulignement (_) et des points (.).

Remarques d'utilisation :

  • Si vous configurez ce paramètre, IoT Platform le renvoie dans la réponse. Cela vous permet d'identifier différents packages de mise à jour lors du téléchargement de plusieurs packages vers l'appareil.
  • Si vous n'avez pas besoin de télécharger plusieurs packages de mise à jour simultanément, vous pouvez laisser ce paramètre vide.
fileInfoObjectInformations relatives au package de mise à jour OTA.
streamIdLongID unique généré lors du téléchargement du package de mise à jour OTA via MQTT.
fileIdIntegerID unique du package de mise à jour OTA.
fileBlockObjectInformations relatives à chaque segment.
sizeIntegerTaille de chaque segment à télécharger, en octets. Valeurs valides : de 256 à 131072. Pour le dernier segment, la valeur varie de 1 à 131072.
offsetIntegerPosition de départ du dernier segment sur le package de mise à jour téléchargé par segments, en octets. Valeurs valides : de 0 à 16777216.

Exemples de réponses :

  • La figure suivante illustre la structure des données d'une réponse.

    Data structure

    Champ Description

    | JSON Bytes Length | Spécifie la longueur du tableau d'octets converti à partir de la chaîne JSON dans la réponse. Le tableau d'octets doit avoir une longueur de deux octets. Le premier octet est l'octet de poids fort et le second est l'octet de poids faible.


    Par exemple, la chaîne JSON encodée en UTF-8 dans la réponse est convertie en un tableau d'octets. La longueur du tableau d'octets est le chiffre décimal 87, qui correspond au chiffre hexadécimal 57. L'octet de poids fort est 0x00 et l'octet de poids faible est 0x57.

    |

    JSON String Bytes

    Spécifie le tableau d'octets converti à partir de la chaîne JSON dans la réponse. Le format d'encodage est UTF-8. Pour plus d'informations, consultez la section « Exemple de réponse JSON » de cette rubrique.

    File Block Bytes

    Spécifie le tableau d'octets du segment. Les octets sont triés par ordre croissant en fonction du décalage entre chaque octet et l'en-tête du package.

    | CRC16/IBM | Spécifie la valeur de contrôle du segment. La valeur de contrôle doit avoir une longueur de deux octets. Seule la norme CRC-16-IBM est prise en charge. Le premier octet est l'octet de poids fort et le second est l'octet de poids faible.


    Par exemple, si la valeur de contrôle d'un segment est 0x0809, l'octet de poids fort est 0x08 et l'octet de poids faible est 0x09.

    |

  • Exemple de réponse JSON :

    {
        "id": "123456",
        "code":200,
        "msg":"file size has exceeded the limit 16 MB",
        "data": {
            "fileToken":"1bb8***",
            "fileLength":1238848,
            "bSize":1491,
            "bOffset":2
        }
    }
Tableau 7. Paramètres
Paramètre Type Description

| id | String | ID du message. Les valeurs valides vont de 0 à 4294967295. Chaque ID de message doit être unique pour l'appareil.


L'ID du message dans la réponse est identique à celui de la requête. Vous pouvez consulter l'ID du message dans le paramètre id des données soumises au topic /sys/${productKey}/${deviceName}/thing/file/download.

|

code

Integer

Code d'état. La valeur 200 indique que la requête a abouti.

msg

String

Message d'erreur renvoyé en cas d'échec de l'appel.

data

Object

Données renvoyées à l'appareil.

fileToken

String

Jeton unique du package de mise à jour. Si vous spécifiez une valeur pour le paramètre fileToken, ce paramètre est renvoyé.

fileLength

Integer

Taille totale du package de mise à jour, en octets.

bSize

Integer

Taille du segment actuel, en octets.

bOffset

Integer

Position de départ du segment actuel sur le package de mise à jour. Cette valeur est identique à celle du paramètre de requête offset, en octets.

Références

Pour plus d'informations sur les codes d'erreur et les méthodes de dépannage, consultez la section Codes d'erreur reçus par les appareils.