Kontrol hub - 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.

Kontrol hub

Kontrol hub adalah ekstensi ke integrasi terkelola SDK perangkat akhir yang memungkinkannya berinteraksi dengan MQTTProxy komponen di Hub SDK. Dengan kontrol hub, Anda dapat menerapkan kode menggunakan SDK perangkat Akhir dan mengontrol hub Anda melalui cloud integrasi terkelola sebagai perangkat terpisah. SDK kontrol hub akan disediakan sebagai paket terpisah dengan Hub SDK, diberi label sebagai. iot-managed-integrations-hub-control-x.x.x

Prasyarat

Untuk mengatur kontrol hub, Anda memerlukan yang berikut ini:

  • Hub onboard ke Hub SDK, versi 0.4.0 atau lebih tinggi.

  • Unduh versi terbaru SDK perangkat Akhir dari file. Konsol Manajemen AWS

  • Komponen proxy MQTT yang berjalan di hub, versi 0.5.0 atau lebih tinggi.

Akhiri komponen SDK perangkat

Gunakan komponen berikut dari End device SDK:

  • Generator kode untuk model data

  • Penangan model data

Karena Hub SDK sudah memiliki proses orientasi dan koneksi ke cloud, Anda tidak memerlukan komponen berikut:

  • Penyedia

  • Antarmuka PKCS

  • Penangan pekerjaan

  • Agen MQTT

Integrasikan dengan SDK perangkat Akhir

  1. Ikuti petunjuk di Generator Kode untuk Model Data untuk menghasilkan kode C tingkat rendah.

  2. Ikuti petunjuk dalam Mengintegrasikan SDK perangkat Akhir ke:

    1. Siapkan lingkungan build

      Buat kode di Amazon Linux 2023/x86_64 sebagai host pengembangan Anda. Instal dependensi build yang diperlukan:

      dnf install make gcc gcc-c++ cmake
    2. Kembangkan fungsi panggilan balik perangkat keras

      Sebelum menerapkan fungsi callback perangkat keras, pahami cara kerja API. Contoh ini menggunakan On/Off cluster dan OnOff atribut untuk mengontrol fungsi perangkat. Untuk detail API, lihatFungsi C tingkat rendah APIs.

      struct DeviceState { struct iotmiDev_Agent *agent; struct iotmiDev_Endpoint *endpointLight; /* This simulates the HW state of OnOff */ bool hwState; }; /* This implementation for OnOff getter just reads the state from the DeviceState */ iotmiDev_DMStatus exampleGetOnOff(bool *value, void *user) { struct DeviceState *state = (struct DeviceState *)(user); *value = state->hwState; return iotmiDev_DMStatusOk; }
    3. Siapkan titik akhir dan kaitkan fungsi panggilan balik perangkat keras

      Setelah mengimplementasikan fungsi, buat titik akhir dan daftarkan callback Anda. Selesaikan tugas-tugas ini:

      1. Buat agen perangkat

      2. Isi poin fungsi callback untuk setiap struct cluster yang ingin Anda dukung

      3. Siapkan titik akhir dan daftarkan cluster yang didukung

      struct DeviceState { struct iotmiDev_Agent * agent; struct iotmiDev_Endpoint *endpoint1; /* OnOff cluster states*/ bool hwState; }; /* This implementation for OnOff getter just reads the state from the DeviceState */ iotmiDev_DMStatus exampleGetOnOff( bool * value, void * user ) { struct DeviceState * state = ( struct DeviceState * ) ( user ); *value = state->hwState; printf( "%s(): state->hwState: %d\n", __func__, state->hwState ); return iotmiDev_DMStatusOk; } iotmiDev_DMStatus exampleGetOnTime( uint16_t * value, void * user ) { *value = 0; printf( "%s(): OnTime is %u\n", __func__, *value ); return iotmiDev_DMStatusOk; } iotmiDev_DMStatus exampleGetStartUpOnOff( iotmiDev_OnOff_StartUpOnOffEnum * value, void * user ) { *value = iotmiDev_OnOff_StartUpOnOffEnum_Off; printf( "%s(): StartUpOnOff is %d\n", __func__, *value ); return iotmiDev_DMStatusOk; } void setupOnOff( struct DeviceState *state ) { struct iotmiDev_clusterOnOff clusterOnOff = { .getOnOff = exampleGetOnOff, .getOnTime = exampleGetOnTime, .getStartUpOnOff = exampleGetStartUpOnOff, }; iotmiDev_OnOffRegisterCluster( state->endpoint1, &clusterOnOff, ( void * ) state); } /* Here is the sample setting up an endpoint 1 with OnOff cluster. Note all error handling code is omitted. */ void setupAgent(struct DeviceState *state) { struct iotmiDev_Agent_Config config = { .thingId = IOTMI_DEVICE_MANAGED_THING_ID, .clientId = IOTMI_DEVICE_CLIENT_ID, }; iotmiDev_Agent_InitDefaultConfig(&config); /* Create a device agent before calling other SDK APIs */ state->agent = iotmiDev_Agent_new(&config); /* Create endpoint#1 */ state->endpoint1 = iotmiDev_Agent_addEndpoint( state->agent, 1, "Data Model Handler Test Device", (const char*[]){ "Camera" }, 1 ); setupOnOff(state); }

Contoh: Membangun kontrol hub

Kontrol hub disediakan sebagai bagian dari paket Hub SDK. Sub-paket kontrol hub diberi label iot-managed-integrations-hub-control-x.x.x dan berisi pustaka yang berbeda dari SDK perangkat yang tidak dimodifikasi.

  1. Pindahkan kode yang dihasilkan file ke example folder:

    cp codegen/out/* example/dm
  2. Untuk membangun kontrol hub, jalankan perintah berikut:

    cd <hub-control-root-folder>
    mkdir build
    cd build
    cmake -DBUILD_EXAMPLE_WITH_MQTT_PROXY=ON -DIOTMI_USE_MANAGED_INTEGRATIONS_DEVICE_LOG=ON ..
    cmake -build .
  3. Jalankan contoh dengan MQTTProxy komponen di hub, dengan MQTTProxy komponen HubOnboarding dan berjalan.

    ./examples/iotmi_device_sample_camera/iotmi_device_sample_camera

Lihat Model data integrasi terkelola untuk model data. Ikuti Langkah 5 Memulai dengan End device SDK untuk mengatur titik akhir dan mengelola komunikasi antara pengguna akhir dan. iot-managed-integrations

Contoh yang didukung

Contoh berikut telah dibangun dan diuji:

  • iotmi_device_dm_air_purifier_demo

  • iotmi_device_basic_diagnostics

  • iotmi_device_dm_camera_demo

Platform yang didukung

Tabel berikut menampilkan platform yang didukung untuk kontrol hub.

Arsitektur Sistem operasi Versi GCC Versi Binutils

X86_64

Linux

10.5.0

2.37

aarch64

Linux

10.5.0

2.37