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.
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"
}
}
| 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. |
| version | String | Version du module OTA. |
| module | String | Nom du module OTA. Remarque
|
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" }
| Paramètre | Type | Description |
| id | Long | ID du message. Chaque ID de message est unique pour l'appareil. |
| message | String | Message de réponse. |
| code | String | Code d'état HTTP. |
| version | String | Version du package de mise à jour OTA. |
| size | Long | Taille du package de mise à jour, en octets. Ce paramètre est disponible si le package de mise à jour OTA contient un seul fichier. |
| url | String | URL 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. |
| dProtocol | String | Protocole 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. |
| streamId | Long | ID 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. |
| streamFileId | Integer | ID 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. |
| isDiff | Long | Ce 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. |
| digestsign | String | Signature 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. |
| sign | String | Signature du package de mise à jour OTA. Ce paramètre est disponible si le package de mise à jour OTA contient un seul fichier. |
| signMethod | String | Algorithme de signature. Valeurs valides :
|
| md5 | String | Si 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. |
| module | String | Nom 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. |
| extData | Object | Tags 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 : |
| files | Array | Informations 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 :
|
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.
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"
}
}
| 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. |
| step | String | Progression de la mise à jour OTA. Valeurs valides :
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. |
| desc | String | Description 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. |
| module | String | Nom 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"
}
| 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. |
| version | String | Version du protocole. Définissez la valeur sur 1.0. |
| params | Object | Paramètres de la requête. |
| module | String | Nom 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. |
| method | String | Mé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ètreiddans 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 :
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
}
}
}
| 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. |
| version | String | Version du protocole. Définissez la valeur sur 1.0. |
| params | Object | Paramètres de la requête. |
| fileToken | String | Facultatif. 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 :
|
| fileInfo | Object | Informations relatives au package de mise à jour OTA. |
| streamId | Long | ID unique généré lors du téléchargement du package de mise à jour OTA via MQTT. |
| fileId | Integer | ID unique du package de mise à jour OTA. |
| fileBlock | Object | Informations relatives à chaque segment. |
| size | Integer | Taille de chaque segment à télécharger, en octets. Valeurs valides : de 256 à 131072. Pour le dernier segment, la valeur varie de 1 à 131072. |
| offset | Integer | Position 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.

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