Klien Hub SDK - Integrasi terkelola untuk AWS IoT Device Management

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Klien Hub SDK

Pustaka Klien SDK Hub berfungsi sebagai antarmuka antara integrasi terkelola Hub SDK dan tumpukan protokol Anda sendiri yang berjalan di hub yang sama. Ini mengekspos satu set publik APIs untuk memfasilitasi interaksi tumpukan protokol Anda dengan komponen Device Hub SDK. Kasus penggunaan termasuk kontrol plugin khusus, penyedia plugin khusus, dan pengontrol lokal.

Dapatkan integrasi terkelola Hub SDK

Klien Hub SDK dilengkapi dengan SDK integrasi terkelola. Hubungi kami dari konsol integrasi terkelola untuk mengakses SDK hub.

Tentang toolkit Hub SDK

Setelah mengunduh, Anda akan melihat IotMI-DeviceSDK-Toolkit folder, yang berisi semua file header publik dan .so file yang dapat Anda konsumsi dalam aplikasi Anda. Tim integrasi terkelola juga memberikan contoh main.cpp untuk tujuan demo, bersama dengan biner aplikasi demo di bawah bin/ yang dapat Anda jalankan secara langsung. Anda dapat secara opsional menggunakan ini sebagai titik awal untuk aplikasi Anda.

Buat aplikasi kustom Anda dengan klien Hub SDK

Gunakan langkah-langkah berikut untuk membuat aplikasi kustom Anda.

  1. Sertakan file header (.h) dan file objek bersama (.so) dalam aplikasi Anda.

    Anda harus menyertakan file header publik (.h) dan file objek bersama (.so) dalam aplikasi Anda. Untuk file.so, Anda dapat menempatkannya di folder lib. Tata letak akhir akan mirip dengan ini:

    ├── include │ ├── iotmi_device_sdk_client │ │ └── iotmi_device_sdk_client_common_types.h │ ├── iotmi_device_sdk_client.h │ └── iotshd_status.h ├── lib │ ├── libiotmi_devicesdk_client_module.so │ └── libiotmi_log_c.so
  2. Buat klien Hub SDK di aplikasi utama Anda.

    1. Di aplikasi utama Anda, Anda harus terlebih dahulu menginisialisasi klien Hub SDK sebelum dapat digunakan untuk memproses permintaan. Anda dapat dengan mudah membangun klien denganclientId.

    2. Setelah Anda memiliki klien, Anda dapat menghubungkannya ke integrasi terkelola Device SDK.

      Berikut ini adalah contoh pembuatan klien Hub SDK dan cara menghubungkannya.

      #include <cstdlib> #include <string> #include "iotshd_status.h" #include "iotmi_device_sdk_client.h" auto client = std::make_unique<DeviceSDKClient>(your_own_clientId); iotmi_statusCode_t status = client->connect();
      catatan

      your_own_clientIdharus sama dengan yang Anda tentukan start-device-discoverydalam pengaturan yang dipandu pengguna, atau untuk create-managed-thingdalam alur penyediaan pengaturan sederhana.

  3. Publikasikan dan berlangganan dengan melakukan langkah-langkah berikut.

    1. Setelah koneksi dibuat, Anda sekarang dapat berlangganan tugas masuk dari integrasi terkelola Hub SDK. Tugas yang masuk dapat berupa tugas kontrol atau tugas penyediaan. Anda juga perlu menentukan fungsi callback Anda sendiri pada tugas yang diterima, dan konteks kustom Anda sendiri untuk tujuan penelusuran Anda sendiri.

      // subscribe to provisioning tasks iotmi_statusCode_t status = client->iotmi_provision_subscribe_to_tasks( example_subscriber_callback, custom_context); // subscribe to control tasks iotmi_statusCode_t status = client->iotmi_control_subscribe_to_tasks( example_subscriber_callback, custom_context);
    2. Setelah koneksi dibuat, Anda sekarang dapat mempublikasikan permintaan dari aplikasi Anda ke integrasi terkelola Hub SDK. Anda dapat menentukan jenis pesan tugas Anda sendiri, dengan muatan yang berbeda untuk tujuan bisnis yang berbeda. Permintaan dapat mencakup permintaan kontrol dan permintaan ketentuan, mirip dengan alur berlangganan. Terakhir, Anda dapat menetapkan alamat rspPayload untuk mendapatkan respons dari integrasi terkelola Hub SDK dengan cara yang disinkronkan.

      // publish control request iotmi_client_request_t api_payload = { .messageType = C2MIMessageType::C2MI_CONTROL_EVENT, .reqPayload = (uint8_t *)"define_your_req_payload", .rspPayload = (uint8_t *)calloc(1000, sizeof(uint8_t)) }; status = client->iotmi_control_publish_request(&api_payload); // publish provision request iotmi_client_request_t api_payload = { .messageType = C2MIMessageType::C2MI_DEVICE_ONBOARDED, .reqPayload = (uint8_t *)"define_your_req_payload", .rspPayload = (uint8_t *)calloc(1000, sizeof(uint8_t)) }; status = client->iotmi_provision_publish_request(&api_payload);
  4. Bangun aplikasi Anda sendiri CMakeLists.txt dan bangun aplikasi Anda dari sana. Output akhir bisa berupa biner yang dapat dieksekusi seperti MyFirstApplication

Menjalankan aplikasi kustom Anda

Sebelum menjalankan aplikasi kustom, selesaikan langkah-langkah berikut untuk menyiapkan hub dan memulai integrasi terkelola Hub SDK:

Setelah prasyarat terpenuhi, Anda dapat menjalankan aplikasi kustom Anda. Misalnya:

./MyFirstApplication
penting

Anda harus memperbarui skrip awal yang tercantum secara manual Menerapkan Hub SDK dengan skrip dengan skrip untuk memulai aplikasi Anda sendiri. Urutannya penting, jangan ubah urutannya.

Perbarui yang berikut ini. Perubahan

./IotMI-DeviceSDK-Toolkit/bin/DeviceSDKClientDemo >> $LOGS_DIR/logDeviceSDKClientDemo_logs.txt &

kepada

./MyFirstApplication >> $LOGS_DIR/MyFirstApplication_logs.txtt &

Jenis Data

Bagian ini mendefinisikan tipe data yang digunakan untuk plugin protokol kustom.

iotmi_client_request_t

Merupakan permintaan untuk dipublikasikan ke komponen integrasi terkelola.

MessageType

Jenis pesan (CommonTypes: :C2 MIMessage Type). Daftar berikut menunjukkan nilai yang valid.

  • C2MI_DEVICE_ONBOARDED: Menunjukkan pesan orientasi perangkat dengan muatan terkait.

  • C2MI_DE_PROVISIONING_PRE_ASSOCIATED_COMPLETE: Menunjukkan pemberitahuan lengkap tugas de-penyediaan untuk perangkat yang telah dikaitkan sebelumnya.

  • C2MI_DE_PROVISIONING_ACTIVATED_COMPLETE: Menunjukkan pemberitahuan lengkap tugas de-penyediaan untuk perangkat yang diaktifkan.

  • C2MI_DE_PROVISIONING_COMPLETE_RESPONSE: Menunjukkan respons lengkap tugas de-penyediaan.

  • C2MI_CONTROL_EVENT: Menunjukkan peristiwa kontrol dengan potensi perubahan status perangkat.

  • C2MI_CONTROL_SEND_COMMAND: Menunjukkan perintah kontrol dari pengontrol lokal.

  • C2MI_CONTROL_SEND_DEVICE_STATE_QUERY: Menunjukkan kueri status perangkat kontrol dari pengontrol lokal.

ReqPayload

Payload permintaan, biasanya string berformat JSON.

RSPPayload

Payload respons, diisi oleh komponen integrasi terkelola.

iotmi_client_event_t

Merupakan peristiwa yang diterima dari komponen integrasi terkelola.

event_id

Pengidentifikasi unik acara tersebut.

panjang

Panjang data acara.

data

Sebuah pointer ke data peristiwa, termasuk. messageType Daftar berikut menunjukkan nilai yang mungkin.

  • C2MI_PROVISION_UGS_TASK: Menunjukkan tugas penyediaan untuk aliran UGS.

  • C2MI_PROVISION_SS_TASK: Menunjukkan tugas penyediaan untuk SimpleSetup aliran.

  • C2MI_DE_PROVISION_PRE_ASSOCIATED_TASK: Menunjukkan tugas de-penyediaan untuk perangkat yang telah dikaitkan sebelumnya.

  • C2MI_DE_PROVISION_ACTIVATED_TASK: Menunjukkan tugas de-penyediaan untuk perangkat yang diaktifkan.

  • C2MI_DEVICE_ONBOARDED_RESPONSE: Menunjukkan respons orientasi perangkat.

  • C2MI_CONTROL_TASK: Menunjukkan tugas kontrol.

  • C2MI_CONTROL_EVENT_NOTIFICATION: Menunjukkan pemberitahuan peristiwa kontrol untuk pengontrol lokal.

ctx

Konteks khusus yang terkait dengan acara tersebut.