全部产品
Search
文档中心

IoT Platform:Pendaftaran dinamis berbasis MQTT

更新时间:Jul 02, 2025

Jika Anda mengaktifkan pendaftaran dinamis di konsol IoT Platform, Anda dapat memverifikasi perangkat yang terhubung langsung menggunakan metode sertifikat-unik-per-produk. Dengan cara ini, perangkat dapat terhubung ke IoT Platform melalui Message Queuing Telemetry Transport (MQTT). Perangkat membentuk koneksi Transport Layer Security (TLS) ke IoT Platform untuk mendapatkan DeviceSecret yang diperlukan untuk koneksi MQTT. Kemudian, perangkat menutup koneksi TLS dan membentuk koneksi MQTT untuk komunikasi. Topik ini menjelaskan proses pendaftaran dinamis.

Prasyarat

Langkah-langkah berikut yang dijelaskan dalam topik Verifikasi Sertifikat-Unik-Per-Produk telah dilakukan:

Penting

Metode verifikasi sertifikat-unik-per-produk tanpa prapendaftaran hanya tersedia di wilayah China (Shanghai).

  1. Buat produk.

  2. Aktifkan pendaftaran dinamis.

  3. Tambahkan perangkat.

  4. Instal sertifikat perangkat pada perangkat.

Proses pendaftaran dinamis

流程

  1. Perangkat mengirim pesan CONNECT yang mencakup parameter pendaftaran dinamis untuk membentuk koneksi.

    Catatan

    Pendaftaran dinamis hanya mendukung koneksi TLS. Selama pendaftaran dinamis, IoT Platform tidak memverifikasi waktu keep-alive dari koneksi MQTT. Oleh karena itu, Anda tidak perlu menentukan waktu keep-alive.

    • Titik akhir MQTT untuk instance publik dan instance Enterprise Edition: Untuk informasi lebih lanjut, lihat Kelola Titik Akhir Suatu Instance.

      Catatan

      Jika Anda ingin memverifikasi perangkat yang terhubung langsung menggunakan metode sertifikat-unik-per-produk tanpa prapendaftaran, ganti ${YourRegionId} dengan cn-shanghai.

    • Parameter pendaftaran dinamis dari pesan CONNECT:

      • Jika perangkat terhubung ke instance publik versi baru atau instance Enterprise Edition, konfigurasikan parameter pendaftaran dinamis berikut:

        mqttClientId:clientId+"|securemode=-2,authType=xxxx,random=xxxx,signmethod=xxxx,instanceId=xxxx|"
        mqttUserName: deviceName+"&"+productKey
        mqttPassword:sign_hmac(productSecret,content)
      • Jika perangkat terhubung ke instance publik versi lama, konfigurasikan parameter pendaftaran dinamis berikut:

        mqttClientId:clientId+"|securemode=2,authType=xxxx,random=xxxx,signmethod=xxxx|"
        mqttUserName: deviceName+"&"+productKey
        mqttPassword:sign_hmac(productSecret,content)
      Catatan

      Untuk informasi lebih lanjut, lihat Ikhtisar Instance IoT Platform.

      Parameter:

      • mqttClientId

        Tabel berikut menjelaskan parameter yang termasuk dalam parameter mqttClientId.

        Parameter

        Deskripsi

        clientId

        ID klien. ID klien harus memiliki panjang 1 hingga 64 karakter. Kami merekomendasikan agar Anda menggunakan alamat Media Access Control (MAC) atau nomor seri (SN) perangkat sebagai ID klien.

        securemode

        Mode keamanan. Nilai valid:

        authType

        Metode verifikasi. Parameter yang dikembalikan bervariasi berdasarkan metode verifikasi. Nilai valid:

        • register: metode verifikasi sertifikat-unik-per-produk dengan prapendaftaran. Jika Anda menetapkan parameter ini ke nilai tersebut, DeviceSecret akan dikembalikan.

        • regnwl: metode verifikasi sertifikat-unik-per-produk tanpa prapendaftaran. Jika Anda menetapkan parameter ini ke nilai tersebut, DeviceToken dan ClientID akan dikembalikan.

        random

        Nomor acak. Anda dapat menentukan nomor acak.

        signMethod

        Algoritma tanda tangan. Nilai valid: hmacmd5, hmacsha1, dan hmacsha256.

        instanceId

        ID instance IoT. Anda dapat masuk ke konsol IoT Platform dan melihat ID instance di tab Overview.

      • mqttUserName

        Format: deviceName+"&"+productKey

        Contoh: device1&al123456789

      • mqttPassword

        Metode perhitungan: sign_hmac(productSecret,content)

        Nilai parameter content adalah string gabungan dari parameter dan nilai yang sesuai yang harus dikirimkan ke IoT Platform. Parameter tersebut mencakup deviceName, productKey, dan random. Parameter-parameter tersebut diurutkan secara alfabetis dan digabungkan tanpa menggunakan operator penggabungan. Kemudian, nilai parameter content dienkripsi berdasarkan algoritma yang ditentukan oleh signMethod dalam parameter mqttClientId. ProductSecret dari produk digunakan sebagai kunci rahasia algoritma.

        Contoh: hmac_sha1(h1nQFYPZS0mW****, deviceNamedevice1productKeyal123456789random123)

  2. IoT Platform mengembalikan pesan CONNECT ACK.

    • Nilai 0 menunjukkan bahwa pendaftaran dinamis berhasil.

    • Nilai lainnya menunjukkan bahwa pendaftaran dinamis gagal. Anda dapat mengidentifikasi penyebab kegagalan berdasarkan kode kesalahan yang dikembalikan dalam pesan ACK.

    Tabel berikut menjelaskan kode respons yang mungkin dikembalikan setelah perangkat mengirim permintaan koneksi ke IoT Platform.

    Kode respons

    Pesan

    Deskripsi

    0

    CONNECTION_ACCEPTED

    Pendaftaran dinamis berhasil.

    2

    IDENTIFIER_REJECTED

    Parameter tidak valid. Kesalahan ini dapat terjadi karena salah satu dari penyebab berikut:

    • Satu atau lebih parameter yang diperlukan tidak ditentukan atau dalam format yang tidak valid.

    • Anda membentuk koneksi TCP langsung untuk registrasi. Pendaftaran dinamis hanya mendukung koneksi TLS.

    3

    SERVER_UNAVAILABLE

    Kesalahan terjadi di IoT Platform. Coba lagi nanti.

    4

    BAD_USERNAME_OR_PASSWORD

    Pendaftaran dinamis gagal. Perangkat tidak diverifikasi.

    Periksa apakah nilai parameter input mqttUserName dan mqttPassword valid.

  3. Setelah koneksi dibentuk, IoT Platform menggunakan topik yang digunakan untuk mendorong sertifikat perangkat untuk mengembalikan parameter verifikasi. Parameter verifikasi bervariasi berdasarkan parameter authType dalam pesan CONNECT.

    Catatan

    Perangkat tidak perlu berlangganan topik yang digunakan untuk mendorong sertifikat.

    • Jika Anda menggunakan metode sertifikat-unik-per-produk dengan prapendaftaran, tetapkan parameter authType ke register. Dalam hal ini, topik /ext/register digunakan untuk mengembalikan DeviceSecret.

      Payload pesan yang didorong oleh IoT Platform berada dalam format berikut:

      {
        "productKey" : "***",
        "deviceName" : "***",
        "deviceSecret" : "***"
      }
    • Jika Anda menggunakan metode sertifikat-unik-per-produk tanpa prapendaftaran, tetapkan parameter authType ke regnwl. Dalam hal ini, topik /ext/regnwl digunakan untuk mengembalikan ClientID dan DeviceToken.

      Payload pesan yang didorong oleh IoT Platform berada dalam format berikut:

      {
        "productKey" : "***",
        "deviceName" : "***",
        "clientId" : "***",
        "deviceToken" : "***"
      }
  4. Perangkat menerima dan menyimpan DeviceSecret atau kombinasi ClientID dan DeviceToken, dan menutup koneksi MQTT saat ini.

    Perangkat dapat menutup koneksi saat ini dengan mengirim pesan DISCONNECT atau dengan menutup koneksi TCP.

    Jika perangkat tidak menutup koneksi, IoT Platform akan memutus perangkat setelah 15 detik.

    Jika Anda menggunakan klien MQTT Eclipse Paho, gunakan fungsi MqttConnectOptions.setAutomaticReconnect(false) untuk menonaktifkan rekoneksi otomatis. Jika tidak, permintaan baru untuk pendaftaran dinamis akan dihasilkan berdasarkan logika rekoneksi setelah pendaftaran selesai dan koneksi TCP ditutup.

  5. Jika Anda menggunakan metode dengan prapendaftaran sertifikat-unik-per-produk, perangkat menggunakan DeviceSecret untuk memulai ulang permintaan untuk membentuk koneksi MQTT antara perangkat dan IoT Platform untuk komunikasi pesan. Jika Anda menggunakan metode tanpa prapendaftaran sertifikat-unik-per-produk, perangkat mengubah ClientID menjadi mqttClientId, lalu menggunakan kombinasi mqttClientId dan DeviceToken untuk membentuk koneksi MQTT. Untuk informasi lebih lanjut, lihat Bentuk Koneksi MQTT melalui TCP.

Contoh

Untuk informasi tentang contoh cara mendaftarkan perangkat yang terhubung langsung secara dinamis, lihat Pendaftaran Dinamis Berbasis MQTT.