全部产品
Search
文档中心

IoT Platform:Contoh

更新时间:Jul 02, 2025

Topik ini menjelaskan cara memanggil operasi API dari Link SDK untuk C guna mengirim permintaan HTTPS ke IoT Platform dan mendaftarkan perangkat secara dinamis serta mendapatkan informasi verifikasi yang diperlukan untuk mengaktifkan perangkat. Dalam contoh ini, digunakan file kode contoh bernama ./demos/dynreg_basic_demo.c.

Informasi latar belakang

Untuk detail lebih lanjut tentang pendaftaran dinamis berbasis HTTPS, lihat Ikhtisar.

Langkah 1: Inisialisasi instance klien

  1. Tambahkan file header.

    #include "aiot_state_api.h"
    #include "aiot_sysdep_api.h"
    #include "aiot_dynreg_api.h"
  2. Tambahkan dependensi dasar dan konfigurasikan fitur output log.

        aiot_sysdep_set_portfile(&g_aiot_sysdep_portfile);
        aiot_state_set_logcb(demo_state_logcb);
  3. Panggil fungsi aiot_dynreg_init untuk membuat instance klien bernama dynreg dan mengonfigurasi parameter default.

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

Langkah 2: Konfigurasikan fitur yang diperlukan

Gunakan fungsi aiot_dynreg_init untuk mengonfigurasi item berikut:

  1. Konfigurasikan parameter koneksi.

  2. Konfigurasikan callback pesan.

  3. Untuk informasi lebih lanjut, lihat Pendaftaran Dinamis Berbasis HTTPS.

  4. Konfigurasikan parameter koneksi.

    • Contoh kode:

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

      Parameter

      Contoh

      Deskripsi

      url

      iot-auth.cn-shanghai.aliyuncs.com

      Titik akhir server HTTPS.

      Ganti cn-shanghai dalam kode contoh dengan ID wilayah tempat IoT Platform diaktifkan untuk mendapatkan titik akhir yang ingin Anda hubungkan dengan perangkat Anda.

      Anda dapat melihat wilayah di pojok kiri atas konsol IoT Platform. Untuk informasi lebih lanjut tentang ID wilayah, lihat .Wilayah yang didukung.

      Dalam contoh ini, digunakan instans publik yang berada di wilayah China (Shanghai).

      Catatan

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

      product_key

      a18wP******

      ProductKey dan ProductSecret yang Anda simpan saat membuat produk di konsol IoT Platform. Untuk informasi lebih lanjut, lihat Buat produk.

      product_secret

      CpIlPVCXI7******

      device_name

      LightSwitch

      DeviceName perangkat. Nilai parameter ini harus sama dengan DeviceName yang Anda tentukan saat menambahkan perangkat ke produk di IoT Platform.

      IoT Platform memeriksa DeviceName ketika perangkat memulai permintaan aktivasi. Kami merekomendasikan menggunakan pengenal yang dapat diperoleh dari perangkat sebagai DeviceName. Pengenal tersebut bisa berupa alamat MAC, Identitas Peralatan Bergerak Internasional (IMEI), atau nomor seri (SN) perangkat.

      Penting

      Nilai parameter ini harus sama dengan DeviceName yang Anda tentukan saat menambahkan perangkat di konsol IoT Platform.

  5. Konfigurasikan callback pesan.

    1. Tentukan fungsi callback untuk pesan.

      • Contoh Kode:

         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:

        Parameter

        Contoh

        Deskripsi

        AIOT_DYNREGOPT_RECV_HANDLER

        demo_dynreg_recv_handler

        Fungsi callback pesan. Ketika pesan diterima, fungsi callback dipanggil untuk melakukan operasi yang diperlukan.

        AIOT_DYNREGOPT_USERDATA

        &demo_info

        Konteks. Ketika fungsi demo_dynregmq_recv_handler dipanggil, nilai yang diperoleh dari fungsi dikembalikan.

    2. Definisikan fungsi callback untuk 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: Anda harus menyimpan ruang ke mana parameter paket dalam callback menunjuk. Setelah callback diimplementasikan, ruang tersebut dilepaskan.  */
              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 operasi aiot_dynregmq_send_request untuk mengirim permintaan pendaftaran dinamis ke server. Untuk detail konfigurasi parameter, lihat Konfigurasikan parameter koneksi.

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

Langkah 4: Terima respons

Setelah permintaan pendaftaran dikirim, IoT Platform mengembalikan respons. Perangkat memanggil operasi aiot_dynreg_recv untuk menerima data respons, lalu memanggil fungsi callback pesan guna memproses data tersebut.

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

Dalam contoh ini, data respons dicetak. Anda perlu menentukan logika untuk menyimpan informasi verifikasi perangkat yang dikembalikan. Informasi ini digunakan saat perangkat terhubung ke IoT Platform.

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

Langkah 5: Keluar dari program

Panggil fungsi aiot_dynreg_deinit untuk menghapus instance klien dynreg dan melepaskan sumber daya terkait.

    res = aiot_dynregmq_deinit(&dynregmq_handle);
            

Apa yang harus dilakukan selanjutnya

  • Setelah mengonfigurasi file kode contoh, kompilasikan file tersebut untuk menghasilkan file yang dapat dieksekusi. Dalam contoh ini, file yang dihasilkan adalah ./output/mqtt-basic-demo.

    Untuk informasi lebih lanjut, lihat Siapkan Lingkungan.

  • Untuk informasi lebih lanjut mengenai hasil eksekusi, lihat Lihat log.