All Products
Search
Document Center

IoT Platform:Contoh registrasi dinamis HTTPS

Last Updated:Jul 16, 2026

Topik ini menggunakan file demo ./demos/dynreg_basic_demo.c dalam C Link SDK sebagai contoh untuk menunjukkan cara memanggil API Link SDK guna mengirim permintaan HTTPS ke IoT Platform, mendaftarkan perangkat secara dinamis, dan memperoleh informasi otentikasi yang diperlukan untuk aktivasi perangkat.

Informasi latar belakang

Untuk informasi selengkapnya tentang registrasi dinamis HTTPS, lihat Ikhtisar registrasi dinamis HTTPS.

Langkah 1: Inisialisasi

  1. Tambahkan file header.

    #include "aiot_state_api.h"
    #include "aiot_sysdep_api.h"
    #include "aiot_dynreg_api.h"
  2. Konfigurasikan dependensi tingkat dasar dan output log.

        aiot_sysdep_set_portfile(&g_aiot_sysdep_portfile);
        aiot_state_set_logcb(demo_state_logcb);
  3. Panggil aiot_dynreg_init untuk membuat instans client dynreg dan menginisialisasi parameter default.

        dynreg_handle = aiot_dynreg_init();
        if (dynreg_handle == NULL) {
            printf("aiot_dynreg_init failed\n");
            return -1;
        }

Langkah 2: Konfigurasi fitur

Anda dapat memanggil aiot_dynreg_init untuk mengonfigurasi fitur-fitur berikut.

  1. Konfigurasi parameter koneksi.

  2. Konfigurasi callback pesan.

  3. Untuk informasi selengkapnya tentang item konfigurasi, lihat Item Konfigurasi Registrasi Dinamis HTTPS.

  4. Konfigurasi parameter koneksi.

    • Kode contoh:

          char       *url = "iot-auth.cn-shanghai.aliyuncs.com"; 
          ……
          char *product_key       = "a18wP******";
          char *product_secret    = "CpIlPVCXI7******";
          char *device_name       = "LightSwitch";
          ……
          ……
          /* Konfigurasi alamat server. */
          aiot_dynreg_setopt(dynreg_handle, AIOT_DYNREGOPT_HOST, (void *)host);
          /* Konfigurasi port server. */
          aiot_dynreg_setopt(dynreg_handle, AIOT_DYNREGOPT_PORT, (void *)&port);
          /* Konfigurasi ProductKey perangkat. */
          aiot_dynreg_setopt(dynreg_handle, AIOT_DYNREGOPT_PRODUCT_KEY, (void *)product_key);
          /* Konfigurasi ProductSecret perangkat. */
          aiot_dynreg_setopt(dynreg_handle, AIOT_DYNREGOPT_PRODUCT_SECRET, (void *)product_secret);
          /* Konfigurasi DeviceName perangkat. */
          aiot_dynreg_setopt(dynreg_handle, AIOT_DYNREGOPT_DEVICE_NAME, (void *)device_name);
          /* Konfigurasi kredensial keamanan untuk koneksi jaringan. */
          aiot_dynreg_setopt(dynreg_handle, AIOT_DYNREGOPT_NETWORK_CRED, (void *)&cred);
          ……
          ……
    • Parameter terkait:

      Parameter

      Contoh

      Deskripsi

      url

      iot-auth.cn-shanghai.aliyuncs.com

      Nama domain server untuk registrasi dinamis HTTPS.

      Anda dapat mengganti cn-shanghai pada contoh dengan ID wilayah tempat layanan Anda dideploy untuk memperoleh titik akhir bagi perangkat Anda.

      Di pojok kiri atas Konsol IoT Platform, lihat wilayah tempat layanan Anda dideploy. Untuk informasi selengkapnya tentang ID wilayah, lihat Wilayah yang didukung.

      Contoh ini menggunakan instans publik di wilayah Tiongkok (Shanghai).

      Catatan

      Wilayah Tiongkok (Beijing) dan Tiongkok (Shenzhen) tidak didukung.

      product_key

      a18wP******

      KunciProduk dan RahasiaProduk yang diperoleh saat Anda membuat Produk di Konsol IoT Platform. Untuk informasi selengkapnya, lihat Buat Produk.

      product_secret

      CpIlPVCXI7******

      device_name

      LightSwitch

      Nama perangkat. Nilai parameter ini harus sama dengan NamaPerangkat yang Anda tentukan saat menambahkan perangkat ke Produk di IoT Platform.

      IoT Platform memverifikasi NamaPerangkat selama aktivasi perangkat. Kami menyarankan agar Anda menggunakan ID yang dapat langsung dibaca dari perangkat, seperti alamat MAC, International Mobile Equipment Identity (IMEI), atau nomor seri (SN), sebagai NamaPerangkat.

      Penting

      Nama tersebut harus sama dengan yang ditentukan saat Anda membuat perangkat di IoT Platform.

  5. Konfigurasi callback pesan.

    1. Konfigurasi fungsi callback pesan.

      • Kode contoh:

         int main(int argc, char *argv[])
        {
            …… 
            ……
            aiot_dynreg_setopt(dynreg_handle, AIOT_DYNREGOPT_RECV_HANDLER, (void *)demo_dynreg_recv_handler);
            aiot_dynreg_setopt(dynreg_handle, AIOT_DYNREGOPT_USERDATA, (void *)&demo_info);
            …… 
            ……
        }
      • Parameter terkait:

        Item konfigurasi

        Nilai contoh

        Deskripsi

        AIOT_DYNREGOPT_RECV_HANDLER

        demo_dynreg_recv_handler

        Menetapkan callback pesan. Saat pesan diterima, pemrosesan yang sesuai dilakukan berdasarkan pengaturan fungsi callback ini.

        AIOT_DYNREGOPT_USERDATA

        &demo_info

        Menetapkan konteks yang akan dikembalikan saat demo_dynregmq_recv_handler dipanggil.

    2. Definisikan fungsi callback pesan.

      void demo_dynreg_recv_handler(void *handle, const aiot_dynreg_recv_t *packet, void *userdata)
      {
          demo_info_t *demo_info = (demo_info_t *)userdata;
          switch (packet->type) {
              case AIOT_DYNREGRECV_STATUS_CODE: {
                  demo_info->code = packet->data.status_code.code;
              }
              break;
              /* TODO: Di dalam callback, Anda harus menyimpan konten dari ruang yang ditunjuk oleh packet. Setelah callback dikembalikan, ruang ini dilepas. */
              case AIOT_DYNREGRECV_DEVICE_INFO: {
                  demo_info->device_secret = malloc(strlen(packet->data.device_info.device_secret) + 1);
                  if (demo_info->device_secret != NULL) {
                      memset(demo_info->device_secret, 0, strlen(packet->data.device_info.device_secret) + 1);
                      memcpy(demo_info->device_secret, packet->data.device_info.device_secret,
                             strlen(packet->data.device_info.device_secret));
                  }
              }
              break;
              default: {
              }
              break;
          }
      }

Langkah 3: Kirim permintaan

Panggil aiot_dynreg_send_request, yang menggunakan parameter koneksi untuk mengirim permintaan registrasi dinamis ke server.

/* Kirim permintaan registrasi dinamis. */
    res = aiot_dynreg_send_request(dynreg_handle);
    if (res < STATE_SUCCESS) {
        printf("aiot_dynreg_send_request failed: -0x%04X\n", -res);
        return -1;
    }

Langkah 4: Terima acknowledgement

Setelah pesan permintaan registrasi dikirim, IoT Platform mengembalikan acknowledgement. Perangkat kemudian memanggil aiot_dynreg_recv untuk menerima acknowledgement tersebut dan menjalankan aksi yang sesuai berdasarkan fungsi callback pesan.

    res = aiot_dynreg_recv(dynreg_handle);
    if (res < STATE_SUCCESS) {
        printf("aiot_dynreg_recv failed: -0x%04X\n", -res);
        return -1;
    }  

Program contoh hanya melakukan operasi pencetakan. Namun, di lingkungan produksi, Anda juga harus menyimpan informasi otentikasi identitas perangkat yang dikembalikan ke file lokal. Informasi ini digunakan untuk menghubungkan ke IoT Platform setiap kali perangkat login.

    if (demo_info.device_secret != NULL) {
        printf("device secret: %s\n", demo_info.device_secret);
        free(demo_info.device_secret);
    }

Langkah 5: Keluar dari program

Panggil aiot_dynreg_deinit untuk menghapus instans client dynreg dan melepas sumber daya.

    res = aiot_dynregmq_deinit(&dynregmq_handle);           

Langkah selanjutnya

  • Setelah Anda mengonfigurasi file contoh, kompilasi file tersebut untuk menghasilkan file yang dapat dieksekusi ./output/dynreg-basic-demo.

    Untuk informasi selengkapnya, lihat Kompilasi dan jalankan.

  • Untuk deskripsi hasil operasi secara rinci, lihat log operasional.