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
Topik
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
Ikuti petunjuk di Generator Kode untuk Model Data untuk menghasilkan kode C tingkat rendah.
Ikuti petunjuk dalam Mengintegrasikan SDK perangkat Akhir ke:
-
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 -
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; } -
Siapkan titik akhir dan kaitkan fungsi panggilan balik perangkat keras
Setelah mengimplementasikan fungsi, buat titik akhir dan daftarkan callback Anda. Selesaikan tugas-tugas ini:
-
Buat agen perangkat
-
Isi poin fungsi callback untuk setiap struct cluster yang ingin Anda dukung
-
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.
-
Pindahkan kode yang dihasilkan file ke
examplefolder:cp codegen/out/* example/dm -
Untuk membangun kontrol hub, jalankan perintah berikut:
cd <hub-control-root-folder>mkdir buildcd buildcmake -DBUILD_EXAMPLE_WITH_MQTT_PROXY=ON -DIOTMI_USE_MANAGED_INTEGRATIONS_DEVICE_LOG=ON ..cmake -build . -
Jalankan contoh dengan
MQTTProxykomponen di hub, denganMQTTProxykomponenHubOnboardingdan 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 |