IoT Platform menyediakan fitur pembaruan dan manajemen over-the-air (OTA). Bagian ini menjelaskan topik-topik serta format data yang digunakan untuk mengirimkan pesan selama pembaruan OTA. Pesan dikirim ketika perangkat melaporkan versi modul OTA, IoT Platform mendorong paket pembaruan ke perangkat, perangkat mengirimkan kemajuan pembaruan, dan perangkat meminta informasi tentang paket pembaruan terbaru.
Untuk detail lebih lanjut tentang cara melakukan pembaruan OTA, lihat Proses.
Kirim versi modul OTA ke IoT Platform
Topik berikut digunakan saat perangkat mengirimkan data ke IoT Platform:
Topik: /ota/device/inform/${productKey}/${deviceName}.
Perangkat mengirimkan versi modul OTA ke topik ini.
Contoh permintaan:
{
"id": "123",
"params": {
"version": "1.0.1",
"module": "MCU"
}
}| Parameter | Tipe | Deskripsi |
| id | String | ID pesan. Nilai valid: 0 hingga 4294967295. Setiap ID pesan harus unik untuk perangkat. |
| version | String | Versi modul OTA. |
| module | String | Nama modul OTA. Catatan
|
Dorong informasi tentang paket pembaruan OTA ke perangkat
Topik berikut digunakan saat IoT Platform mengirimkan data ke perangkat:
Topik: /ota/device/upgrade/${productKey}/${deviceName}.
IoT Platform mengirimkan informasi tentang paket pembaruan OTA ke topik tersebut. Perangkat dapat berlangganan topik ini untuk mendapatkan informasi tersebut.
- Contoh informasi tentang paket pembaruan OTA yang berisi satu file:
- Unduh paket pembaruan OTA melalui 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" } - Unduh paket pembaruan OTA melalui 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" }
- Unduh paket pembaruan OTA melalui HTTPS:
- Anda dapat mengunduh paket pembaruan OTA yang berisi beberapa file hanya melalui HTTP. Contoh informasi:
{ "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" }
| Parameter | Tipe | Deskripsi |
| id | Long | ID pesan. Setiap ID pesan unik untuk perangkat. |
| message | String | Pesan respons. |
| code | String | Kode status HTTP. |
| version | String | Versi paket pembaruan OTA. |
| size | Long | Ukuran paket pembaruan. Unit: byte. Parameter ini tersedia jika paket pembaruan OTA berisi satu file. |
| url | String | URL Object Storage Service (OSS) dari paket pembaruan OTA. Parameter ini tersedia jika paket pembaruan OTA berisi satu file dan protokol unduhan adalah HTTPS. |
| dProtocol | String | Protokol yang digunakan untuk mengunduh paket pembaruan OTA. Parameter ini tersedia jika protokol unduhan adalah MQTT. |
| streamId | Long | ID unik yang dihasilkan saat Anda mengunduh paket pembaruan OTA melalui MQTT. Parameter ini tersedia jika protokol unduhan adalah MQTT. |
| streamFileId | Integer | ID unik dari paket pembaruan OTA yang berisi satu file. Parameter ini tersedia jika protokol unduhan adalah MQTT. |
| isDiff | Long | Parameter ini tersedia jika paket pembaruan adalah paket pembaruan delta. Atur nilainya menjadi 1. Nilai ini menentukan bahwa paket pembaruan hanya berisi perbedaan antara versi baru dan versi sebelumnya. Dalam hal ini, pembaruan delta dilakukan. |
| digestsign | String | Tanda tangan paket pembaruan OTA setelah pembaruan aman dilakukan. Parameter ini tersedia jika fitur pembaruan aman diaktifkan untuk paket pembaruan OTA. Untuk informasi lebih lanjut tentang cara mengaktifkan fitur pembaruan aman, lihat Tambahkan paket pembaruan. |
| sign | String | Tanda tangan paket pembaruan OTA. Parameter ini tersedia jika paket pembaruan OTA berisi satu file. |
| signMethod | String | Algoritma tanda tangan. Nilai valid:
|
| md5 | String | Jika algoritma tanda tangan adalah MD5, IoT Platform menentukan nilai untuk parameter sign dan md5. Parameter ini tersedia jika paket pembaruan OTA berisi satu file. |
| module | String | Nama modul tempat paket pembaruan OTA diterapkan. Catatan Jika paket pembaruan OTA diterapkan ke modul default, IoT Platform tidak mengirimkan parameter module. |
| extData | Object | Tag batch pembaruan dan informasi kustom yang ingin Anda dorong dari IoT Platform ke perangkat. _package_udi menentukan informasi kustom. Format setiap tag: |
| files | Array | Informasi tentang file dalam paket pembaruan. Parameter ini tersedia jika paket pembaruan OTA berisi beberapa file. Informasi tentang satu file:
|
Kirim kemajuan pembaruan ke IoT Platform
Topik berikut digunakan saat perangkat mengirimkan data ke IoT Platform:
Topik: /ota/device/progress/${productKey}/${deviceName}.
Selama pembaruan OTA, perangkat mengirimkan kemajuan pembaruan sebagai persentase ke topik ini.
Contoh permintaan:
{
"id": "123",
"params": {
"step": "-1",
"desc": "Pembaruan OTA gagal karena tidak ada informasi paket pembaruan yang ditemukan.",
"module": "MCU"
}
}| Parameter | Tipe | Deskripsi |
| id | String | ID pesan. Nilai valid: 0 hingga 4294967295. Setiap ID pesan harus unik untuk perangkat. |
| step | String | Kemajuan pembaruan OTA. Nilai valid:
Nilai kemajuan dan deskripsi pembaruan OTA dapat dikonfigurasi di perangkat berdasarkan kebutuhan aktual. Untuk informasi lebih lanjut tentang cara mengembangkan fitur pembaruan OTA di perangkat, lihat Contoh kode. |
| desc | String | Deskripsi langkah saat ini. Deskripsi tidak boleh melebihi 128 karakter. Jika terjadi pengecualian, parameter ini berisi pesan kesalahan. |
| module | String | Nama modul tempat paket pembaruan OTA diterapkan. Untuk informasi lebih lanjut, lihat Tambahkan paket pembaruan. Catatan Jika perangkat mengirimkan kemajuan pembaruan modul default, parameter module bersifat opsional. |
Minta informasi tentang paket pembaruan OTA
Topik berikut digunakan saat perangkat mengirimkan data ke IoT Platform:
Topik permintaan: /sys/${productKey}/${deviceName}/thing/ota/firmware/get.
Topik respons: /sys/${productKey}/${deviceName}/thing/ota/firmware/get_reply.
Contoh permintaan:
{
"id": "123",
"version": "1.0",
"params": {
"module": "MCU"
},
"method": "thing.ota.firmware.get"
}| Parameter | Tipe | Deskripsi |
| id | String | ID pesan. Nilai valid: 0 hingga 4294967295. Setiap ID pesan harus unik untuk perangkat. |
| version | String | Versi protokol. Atur nilainya menjadi 1.0. |
| params | Object | Parameter permintaan. |
| module | String | Nama modul tempat paket pembaruan OTA diterapkan. Catatan Jika Anda tidak mengonfigurasi parameter ini, informasi paket pembaruan modul default diminta. |
| method | String | Metode permintaan. Atur nilainya menjadi thing.ota.firmware.get. |
Setelah IoT Platform menerima permintaan dari perangkat, IoT Platform mengirimkan respons.
- IoT Platform mengirimkan informasi tentang paket pembaruan terbaru ke perangkat. Contoh respons:
- Contoh informasi tentang paket pembaruan OTA yang berisi satu file:
- Unduh paket pembaruan OTA melalui 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. \"}" } } } - Unduh paket pembaruan OTA melalui 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" } } }
- Unduh paket pembaruan OTA melalui HTTPS:
- Anda dapat mengunduh paket pembaruan OTA yang berisi beberapa file hanya melalui HTTP. Contoh informasi:
{ "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. \"}" } } }
Tabel 5. Parameter Parameter Tipe Deskripsi id String ID pesan. Nilai valid: 0 hingga 4294967295. Setiap ID pesan harus unik untuk perangkat. ID pesan dalam respons sama dengan ID pesan dalam permintaan. Anda dapat melihat parameter
iddalam data yang dikirimkan ke topik /sys/${productKey}/${deviceName}/thing/ota/firmware/get.code Integer Kode status. Nilai 200 menunjukkan permintaan berhasil. data Object Informasi tentang paket pembaruan OTA. Untuk informasi lebih lanjut, lihat Dorong informasi tentang paket pembaruan OTA ke perangkat. - Contoh informasi tentang paket pembaruan OTA yang berisi satu file:
- IoT Platform mengirimkan respons jika tidak ada informasi paket pembaruan. Contoh respons:
{ "id": "123", "code": 200, "data": { } }
Mulai permintaan untuk mengunduh segmen paket
Jika protokol unduhan paket pembaruan OTA adalah MQTT, perangkat dapat mengunduh paket pembaruan OTA secara segmen. Topik-topik berikut digunakan:
- Topik permintaan:
/sys/${productKey}/${deviceName}/thing/file/download. - Topik respons:
/sys/${productKey}/${deviceName}/thing/file/download_reply.
Contoh permintaan:
{
"id": "123456",
"version": "1.0",
"params": {
"fileToken":"1bb8***",
"fileInfo":{
"streamId":1234565,
"fileId":1
},
"fileBlock":{
"size":256,
"offset":2
}
}
}| Parameter | Tipe | Deskripsi |
| id | String | ID pesan. Nilai valid: 0 hingga 4294967295. Setiap ID pesan harus unik untuk perangkat. |
| version | String | Versi protokol. Atur nilainya menjadi 1.0. |
| params | Object | Parameter permintaan. |
| fileToken | String | Opsional. Token unik yang digunakan untuk mengidentifikasi paket pembaruan. Nilainya dapat mencapai 16 karakter dan dapat berisi angka, huruf, garis bawah (_), dan titik (.). Catatan penggunaan:
|
| fileInfo | Object | Informasi tentang paket pembaruan OTA. |
| streamId | Long | ID unik yang dihasilkan saat Anda mengunduh paket pembaruan OTA melalui MQTT. |
| fileId | Integer | ID unik dari paket pembaruan OTA. |
| fileBlock | Object | Informasi tentang setiap segmen. |
| size | Integer | Ukuran setiap segmen yang akan diunduh. Unit: byte. Nilai valid: 256 hingga 131072. Untuk segmen terakhir, nilai berkisar antara 1 hingga 131072. |
| offset | Integer | Posisi awal segmen terakhir pada paket pembaruan yang diunduh secara segmen. Unit: byte. Nilai valid: 0 hingga 16777216. |
Contoh respons:
- Gambar berikut menunjukkan struktur data dari respons.

Bidang Deskripsi Panjang Byte JSON Menentukan panjang larik byte yang dikonversi dari string JSON dalam respons. Larik byte harus dua byte panjangnya. Byte pertama adalah byte tinggi dan byte kedua adalah byte rendah. Sebagai contoh, string JSON yang dikodekan UTF-8 dalam respons dikonversi menjadi larik byte. Panjang larik byte adalah digit desimal 87, yang sesuai dengan digit heksadesimal 57. Byte tinggi adalah 0x00 dan byte rendah adalah 0x57.
Byte String JSON Menentukan larik byte yang dikonversi dari string JSON dalam respons. Format pengkodeannya adalah UTF-8. Untuk informasi lebih lanjut, lihat bagian "Contoh Respons JSON" dari topik ini. Byte Blok File Menentukan larik byte dari segmen. Byte diurutkan berdasarkan urutan naik berdasarkan offset antara setiap byte dan header paket. CRC16/IBM Menentukan nilai pemeriksaan segmen. Nilai pemeriksaan harus dua byte panjangnya. Hanya CRC-16-IBM yang didukung. Byte pertama adalah byte tinggi dan byte kedua adalah byte rendah. Sebagai contoh, jika nilai pemeriksaan suatu segmen adalah 0x0809, byte tinggi adalah 0x08 dan byte rendah adalah 0x09.
- Contoh respons JSON:
{ "id": "123456", "code":200, "msg":"ukuran file telah melebihi batas 16 MB", "data": { "fileToken":"1bb8***", "fileLength":1238848, "bSize":1491, "bOffset":2 } }
| Parameter | Tipe | Deskripsi |
| id | String | ID pesan. Nilai valid: 0 hingga 4294967295. Setiap ID pesan harus unik untuk perangkat. ID pesan dalam respons sama dengan ID pesan dalam permintaan. Anda dapat melihat ID pesan dalam parameter id dalam data yang dikirimkan ke topik |
| code | Integer | Kode status. Nilai 200 menunjukkan permintaan berhasil. |
| msg | String | Pesan kesalahan yang dikembalikan jika panggilan gagal. |
| data | Object | Data yang dikembalikan ke perangkat. |
| fileToken | String | Token unik dari paket pembaruan. Jika Anda menentukan nilai untuk parameter fileToken, parameter ini akan dikembalikan. |
| fileLength | Integer | Ukuran total paket pembaruan. Unit: byte. |
| bSize | Integer | Ukuran segmen saat ini. Unit: byte. |
| bOffset | Integer | Posisi awal segmen saat ini pada paket pembaruan. Nilai ini sama dengan nilai parameter permintaan offset. Unit: byte. |
Referensi
Untuk informasi lebih lanjut tentang kode kesalahan dan metode pemecahan masalah, lihat Kode Kesalahan untuk Perangkat.