Skenario penggunaan C SDK dan Embedded C SDK

Microsoft menyediakan SDK perangkat Azure IoT dan middleware untuk skenario perangkat yang disematkan dan dibatasi. Artikel ini membantu pengembang perangkat memutuskan mana yang akan digunakan untuk aplikasi Anda.

Diagram berikut menunjukkan empat skenario umum di mana pelanggan menghubungkan perangkat ke Azure IoT, menggunakan SDK berbasis C (C99). Sisa artikel ini memberikan detail selengkapnya tentang setiap skenario.

Diagram skenario SDK umum.

Skenario 1 – Azure IoT C SDK (untuk Linux dan Windows)

Mulai tahun 2015, Azure IoT C SDK adalah Azure SDK pertama yang dibuat untuk menyambungkan perangkat ke layanan IoT. Ini adalah platform stabil yang dibangun untuk menyediakan kemampuan berikut untuk menghubungkan perangkat ke Azure IoT:

  • Layanan IoT Hub
  • Klien Device Provisioning Service
  • Tiga pilihan transportasi komunikasi (MQTT, AMQP, dan HTTP), yang dibuat dan dikelola oleh Microsoft
  • Beberapa pilihan tumpukan TLS umum (OpenSSL, Schannel, dan Bed TLS sesuai dengan platform target)
  • Soket TCP (Win32, Berkeley, atau Mbed)

Menyediakan transportasi komunikasi, TLS dan abstraksi soket memiliki biaya performa. Banyak jalur membutuhkan malloc dan memcpy memanggil antara berbagai lapisan abstraksi. Biaya performa ini kecil dibandingkan dengan desktop atau perangkat Raspberry Pi. Namun pada perangkat yang benar-benar dibatasi, biaya menjadi overhead yang signifikan dengan kemungkinan fragmentasi memori. Lapisan transportasi komunikasi juga memerlukan doWork fungsi untuk dipanggil setidaknya setiap 100 milidetik. Panggilan yang sering ini mempersulit pengoptimalan SDK untuk perangkat bertenaga baterai. Keberadaan beberapa lapisan abstraksi juga menyulitkan pelanggan untuk menggunakan atau mengubah ke pustaka tertentu.

Skenario 1 direkomendasikan untuk perangkat Windows atau Linux, yang biasanya kurang sensitif terhadap penggunaan memori atau konsumsi daya. Namun, perangkat berbasis Windows dan Linux juga dapat menggunakan SDK C Tersemat seperti yang ditunjukkan dalam Skenario 2. Opsi lain untuk perangkat berbasis Windows dan Linux termasuk SDK perangkat Azure IoT lainnya: Java SDK, .NET SDK, Node SDK , dan Python SDK.

Skenario 2 - SDK C Tersemat (untuk skenario Bare Metal dan pengontrol mikro)

Pada tahun 2020, Microsoft merilis Azure SDK untuk Embedded C (juga dikenal sebagai Embedded C SDK). SDK ini dibangun berdasarkan umpan balik pelanggan dan kebutuhan yang berkembang untuk mendukung perangkat pengontrol mikro yang dibatasi. Biasanya, pengontrol mikro yang dibatasi telah mengurangi daya memori dan pemrosesan.

SDK C Tersemat memiliki karakteristik utama berikut:

  • Tidak ada alokasi memori dinamis. Pelanggan harus mengalokasikan struktur data di mana mereka inginkan seperti dalam memori global, tumpukan, atau tumpukan. Kemudian mereka harus meneruskan alamat struktur yang dialokasikan ke dalam fungsi SDK untuk menginisialisasi dan melakukan berbagai operasi.
  • MQTT saja. Penggunaan khusus MQTT sangat ideal untuk perangkat yang dibatasi karena merupakan protokol jaringan yang efisien dan ringan. Saat ini hanya MQTT v3.1.1 yang didukung.
  • Bawa tumpukan jaringan Anda sendiri. SDK C Tersemat tidak melakukan operasi I/O. Pendekatan ini memungkinkan pelanggan untuk memilih klien MQTT, TLS, dan Socket yang paling sesuai dengan platform target mereka.
  • Fitur serupa diatur sebagai C SDK. Embedded C SDK menyediakan fitur serupa seperti Azure IoT C SDK, dengan pengecualian berikut yang tidak disediakan Embedded C SDK:
    • Unggah ke blob
    • Kemampuan untuk berjalan sebagai modul IoT Edge
    • Fitur berbasis AMQP seperti batching pesan konten dan multipleks perangkat
  • Jejak keseluruhan yang lebih kecil. Embedded C SDK, seperti yang terlihat dalam sampel yang menunjukkan cara terhubung ke IoT Hub, dapat mengambil ROM 74 KB dan RAM 8,26 KB.

SDK Embedded C mendukung pengontrol mikro tanpa sistem operasi, pengontrol mikro dengan sistem operasi real time (seperti Eclipse ThreadX), Linux, dan Windows. Pelanggan dapat menerapkan lapisan platform kustom untuk menggunakan SDK pada perangkat kustom. SDK juga menyediakan beberapa lapisan platform seperti Arduino, dan Swift. Microsoft mendorong komunitas untuk mengirimkan lapisan platform lain untuk meningkatkan platform yang didukung di luar kotak. Wind River VxWorks adalah contoh lapisan platform yang diajukan oleh komunitas.

SDK Embedded C menambahkan beberapa manfaat pemrograman karena fleksibilitasnya dibandingkan dengan Azure IoT C SDK. Secara khusus, aplikasi yang menggunakan perangkat yang dibatasi akan mendapat manfaat dari penghematan sumber daya yang sangat besar dan kontrol terprogram yang lebih besar. Sebagai perbandingan, jika Anda menggunakan Eclipse ThreadX atau FreeRTOS, Anda dapat memiliki manfaat yang sama ini bersama dengan fitur lain per implementasi RTOS.

Skenario 3 – Eclipse ThreadX dengan middleware Azure IoT (untuk proyek berbasis Eclipse ThreadX)

Skenario 3 melibatkan penggunaan Eclipse ThreadX dan middleware Azure IoT. Eclipse ThreadX dibangun di atas Embedded C SDK, dan menambahkan Dukungan MQTT dan TLS. Middleware untuk Eclipse ThreadX mengekspos API untuk aplikasi yang mirip dengan API Eclipse ThreadX asli. Pendekatan ini memudahkan pengembang untuk menggunakan API dan menghubungkan perangkat berbasis Eclipse ThreadX mereka ke Azure IoT. Eclipse ThreadX adalah platform tersemat real time yang terintegrasi sepenuhnya, efisien, dan real time, yang menyediakan semua fitur jaringan dan IoT yang Anda butuhkan untuk solusi Anda.

Sampel untuk beberapa kit pengembang populer dari ST, NXP, Renesas, dan Microchip, tersedia. Sampel ini berfungsi dengan Azure IoT Hub atau Azure IoT Central, dan tersedia sebagai proyek IAR Workbench atau IDE semikonduktor di GitHub.

Karena didasarkan pada SDK C Tersemat, middleware Azure IoT untuk Eclipse ThreadX bukan memori yang dialokasikan. Pelanggan harus mengalokasikan struktur data SDK dalam memori global, atau tumpukan, atau tumpukan. Setelah pelanggan mengalokasikan struktur data, mereka harus meneruskan alamat struktur ke dalam fungsi SDK untuk menginisialisasi dan melakukan berbagai operasi.

Skenario 4 – FreeRTOS dengan middleware FreeRTOS (untuk digunakan dengan proyek berbasis FreeRTOS)

Skenario 4 membawa middleware C yang disematkan ke FreeRTOS. Middleware C yang disematkan dibangun di atas Embedded C SDK dan menambahkan dukungan MQTT melalui pustaka sumber terbuka coreMQTT. Middleware untuk FreeRTOS ini beroperasi di tingkat MQTT. Ini menetapkan koneksi MQTT, berlangganan dan berhenti berlangganan dari topik, dan mengirim dan menerima pesan. Pemutusan ditangani oleh pelanggan melalui API middleware.

Pelanggan mengontrol konfigurasi TLS/TCP dan koneksi ke titik akhir. Pendekatan ini memungkinkan fleksibilitas antara implementasi perangkat lunak atau perangkat keras dari salah satu tumpukan. Tidak ada tugas latar belakang yang dibuat oleh middleware Azure IoT untuk FreeRTOS. Pesan dikirim dan diterima secara sinkron.

Implementasi inti disediakan dalam repositori GitHub ini. Sampel untuk beberapa kit pengembang populer tersedia, termasuk NXP1060, STM32, dan ESP32. Sampel berfungsi dengan Azure IoT Hub, Azure IoT Central, dan Azure Device Provisioning Service, dan tersedia di repositori GitHub ini.

Karena didasarkan pada Azure Embedded C SDK, middleware Azure IoT untuk FreeRTOS juga mengalokasikan non-memori. Pelanggan harus mengalokasikan struktur data SDK dalam memori global, atau tumpukan, atau tumpukan. Setelah pelanggan mengalokasikan struktur data, mereka harus meneruskan alamat struktur yang dialokasikan ke dalam fungsi SDK untuk menginisialisasi dan melakukan berbagai operasi.

Skenario penggunaan teknis SDK berbasis C

Diagram berikut ini meringkas opsi teknis untuk setiap skenario penggunaan SDK yang dijelaskan dalam artikel ini.

Diagram dengan detail pengembang untuk empat skenario penggunaan C SDK.

Perbandingan SDK berbasis C dengan memori dan protokol

Tabel berikut membandingkan empat skenario pengembangan SDK perangkat berdasarkan memori dan penggunaan protokol.

  Memori
Alokasi
Memori
Penggunaan
Protokol
Didukung
Disarankan untuk
Azure IoT C SDK Sebagian Besar Dinamis Unrestricted. Dapat menjangkau
hingga 1 MB atau lebih dalam RAM.
AMQP
HTTP
MQTT v3.1.1
Sistem berbasis microprocessor
Microsoft Windows
Linux
Apple OS X
Azure SDK untuk Embedded C Hanya statis Dibatasi oleh jumlah
aplikasi data mengalokasikan.
MQTT v3.1.1 Pengontrol mikro
Implementasi Bare-metal
Implementasi berbasis RTOS
Middleware Azure IoT untuk Eclipse ThreadX Hanya statis Terbatas MQTT v3.1.1 Pengontrol mikro
Implementasi berbasis RTOS
Middleware Azure IoT untuk FreeRTOS Hanya statis Terbatas MQTT v3.1.1 Pengontrol mikro
Implementasi berbasis RTOS

Fitur Azure IoT Didukung oleh setiap SDK

Tabel berikut membandingkan empat skenario pengembangan SDK perangkat berdasarkan dukungan untuk fitur Azure IoT.

  Azure IoT C SDK Azure SDK untuk
C Tersemat
Azure IoT
middleware untuk
Eclipse ThreadX
Azure IoT
middleware untuk
FreeRTOS
Autentikasi Klien SAS Ya Ya Ya Ya
Autentikasi Klien x509 Ya Ya Ya Ya
Penyediaan Perangkat Ya Ya Ya Ya
telemetri Ya Ya Ya Ya
Pesan Cloud-ke-Perangkat Ya Ya Ya Ya
Metode Langsung Ya Ya Ya Ya
Kembar Perangkat Ya Ya Ya Ya
IoT Plug-And-Play Ya Ya Ya Ya
Batching telemetri
(AMQP, HTTP)
Ya No No Tidak
Mengunggah ke Azure Blob Ya No No Tidak
Integrasi otomatis di
Kontainer yang dihosting IoT Edge
Ya No No Tidak

Langkah berikutnya

Untuk mempelajari selengkapnya tentang pengembangan perangkat dan SDK yang tersedia untuk Azure IoT, lihat tabel berikut ini.