全部产品
Search
文档中心

IoT Platform:Pembaruan OTA

更新时间:Jul 02, 2025

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.

Penting Topik ini hanya memungkinkan perangkat mengirimkan versi satu modul pada satu waktu. Jika perangkat perlu mengirimkan versi beberapa modul OTA, perangkat harus mengirimkan beberapa pesan, masing-masing berisi versi satu modul.

Contoh permintaan:

{
    "id": "123",
    "params": {
        "version": "1.0.1",
        "module": "MCU"
    }
}
Tabel 1. Parameter
ParameterTipeDeskripsi
idStringID pesan. Nilai valid: 0 hingga 4294967295. Setiap ID pesan harus unik untuk perangkat.
versionStringVersi modul OTA.
moduleStringNama modul OTA.
Catatan
  • Jika perangkat mengirimkan versi modul default, parameter module bersifat opsional.
  • Versi modul default menunjukkan versi firmware perangkat.

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"
      }
  • 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"
    }
Tabel 2. Parameter
ParameterTipeDeskripsi
idLongID pesan. Setiap ID pesan unik untuk perangkat.
messageStringPesan respons.
codeStringKode status HTTP.
versionStringVersi paket pembaruan OTA.
sizeLongUkuran paket pembaruan. Unit: byte.

Parameter ini tersedia jika paket pembaruan OTA berisi satu file.

urlStringURL Object Storage Service (OSS) dari paket pembaruan OTA.

Parameter ini tersedia jika paket pembaruan OTA berisi satu file dan protokol unduhan adalah HTTPS.

dProtocolStringProtokol yang digunakan untuk mengunduh paket pembaruan OTA.

Parameter ini tersedia jika protokol unduhan adalah MQTT.

streamIdLongID unik yang dihasilkan saat Anda mengunduh paket pembaruan OTA melalui MQTT.

Parameter ini tersedia jika protokol unduhan adalah MQTT.

streamFileIdIntegerID unik dari paket pembaruan OTA yang berisi satu file.

Parameter ini tersedia jika protokol unduhan adalah MQTT.

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

digestsignStringTanda 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.
signStringTanda tangan paket pembaruan OTA.

Parameter ini tersedia jika paket pembaruan OTA berisi satu file.

signMethodStringAlgoritma tanda tangan. Nilai valid:
  • SHA256
  • MD5
Paket pembaruan delta untuk Android hanya mendukung algoritma MD5.
md5StringJika algoritma tanda tangan adalah MD5, IoT Platform menentukan nilai untuk parameter sign dan md5.

Parameter ini tersedia jika paket pembaruan OTA berisi satu file.

moduleStringNama modul tempat paket pembaruan OTA diterapkan.
Catatan Jika paket pembaruan OTA diterapkan ke modul default, IoT Platform tidak mengirimkan parameter module.
extDataObjectTag batch pembaruan dan informasi kustom yang ingin Anda dorong dari IoT Platform ke perangkat.

_package_udi menentukan informasi kustom.

Format setiap tag: "key":"value".

filesArrayInformasi tentang file dalam paket pembaruan.

Parameter ini tersedia jika paket pembaruan OTA berisi beberapa file. Informasi tentang satu file:

  • fileSize: ukuran file.
  • fileName: nama file.
  • fileUrl, fileMd5, dan fileSign: Parameter ini sesuai dengan parameter url, md5, dan sign dalam tabel ini.

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.

Catatan Disarankan agar frekuensi pelaporan kemajuan tidak melebihi sekali setiap 3 detik. Jika frekuensi aktual melebihi batas ini, Anda mungkin tidak dapat melihat semua informasi kemajuan di halaman Batch Details paket pembaruan OTA di konsol IoT Platform.

Contoh permintaan:

{
    "id": "123",
    "params": {
        "step": "-1",
        "desc": "Pembaruan OTA gagal karena tidak ada informasi paket pembaruan yang ditemukan.",
        "module": "MCU"
    }
}
Tabel 3. Parameter
ParameterTipeDeskripsi
idStringID pesan. Nilai valid: 0 hingga 4294967295. Setiap ID pesan harus unik untuk perangkat.
stepString

Kemajuan pembaruan OTA.

Nilai valid:
  • Bilangan bulat dari 1 hingga 100: menunjukkan persentase yang mewakili kemajuan pembaruan.
  • -1: menunjukkan bahwa pembaruan gagal.
  • -2: menunjukkan bahwa unduhan gagal.
  • -3: menunjukkan bahwa verifikasi gagal.
  • -4: menunjukkan bahwa flashing firmware gagal.

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.

descStringDeskripsi langkah saat ini. Deskripsi tidak boleh melebihi 128 karakter. Jika terjadi pengecualian, parameter ini berisi pesan kesalahan.
moduleStringNama 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"
}
Tabel 4. Parameter
ParameterTipeDeskripsi
idStringID pesan. Nilai valid: 0 hingga 4294967295. Setiap ID pesan harus unik untuk perangkat.
versionStringVersi protokol. Atur nilainya menjadi 1.0.
paramsObjectParameter permintaan.
moduleStringNama modul tempat paket pembaruan OTA diterapkan.
Catatan Jika Anda tidak mengonfigurasi parameter ini, informasi paket pembaruan modul default diminta.
methodStringMetode 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"
                }
            }
        }
    • 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
    ParameterTipeDeskripsi
    idStringID 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 id dalam data yang dikirimkan ke topik /sys/${productKey}/${deviceName}/thing/ota/firmware/get.

    codeIntegerKode status. Nilai 200 menunjukkan permintaan berhasil.
    dataObjectInformasi tentang paket pembaruan OTA. Untuk informasi lebih lanjut, lihat Dorong informasi tentang paket pembaruan OTA ke perangkat.
  • 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:

Penting Paket pembaruan yang diunduh menggunakan protokol MQTT dapat berukuran maksimal 16 MB.
  • 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
        }
    }
}
Tabel 6. Parameter
ParameterTipeDeskripsi
idStringID pesan. Nilai valid: 0 hingga 4294967295. Setiap ID pesan harus unik untuk perangkat.
versionStringVersi protokol. Atur nilainya menjadi 1.0.
paramsObjectParameter permintaan.
fileTokenStringOpsional. Token unik yang digunakan untuk mengidentifikasi paket pembaruan. Nilainya dapat mencapai 16 karakter dan dapat berisi angka, huruf, garis bawah (_), dan titik (.).

Catatan penggunaan:

  • Jika Anda mengonfigurasi parameter ini, IoT Platform akan mengembalikan parameter ini dalam respons. Ini memungkinkan Anda mengidentifikasi paket pembaruan yang berbeda saat mengunduh beberapa paket pembaruan ke perangkat.
  • Jika Anda tidak perlu mengunduh beberapa paket pembaruan pada saat yang sama, Anda dapat membiarkan parameter ini kosong.
fileInfoObjectInformasi tentang paket pembaruan OTA.
streamIdLongID unik yang dihasilkan saat Anda mengunduh paket pembaruan OTA melalui MQTT.
fileIdIntegerID unik dari paket pembaruan OTA.
fileBlockObjectInformasi tentang setiap segmen.
sizeIntegerUkuran setiap segmen yang akan diunduh. Unit: byte. Nilai valid: 256 hingga 131072. Untuk segmen terakhir, nilai berkisar antara 1 hingga 131072.
offsetIntegerPosisi 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.Data structure
    BidangDeskripsi
    Panjang Byte JSONMenentukan 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 JSONMenentukan 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 FileMenentukan larik byte dari segmen. Byte diurutkan berdasarkan urutan naik berdasarkan offset antara setiap byte dan header paket.
    CRC16/IBMMenentukan 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
        }
    }
Tabel 7. Parameter
ParameterTipeDeskripsi
idStringID 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 /sys/${productKey}/${deviceName}/thing/file/download.

codeIntegerKode status. Nilai 200 menunjukkan permintaan berhasil.
msgStringPesan kesalahan yang dikembalikan jika panggilan gagal.
dataObjectData yang dikembalikan ke perangkat.
fileTokenStringToken unik dari paket pembaruan. Jika Anda menentukan nilai untuk parameter fileToken, parameter ini akan dikembalikan.
fileLengthIntegerUkuran total paket pembaruan. Unit: byte.
bSizeIntegerUkuran segmen saat ini. Unit: byte.
bOffsetIntegerPosisi 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.