Bagikan melalui


Mengembangkan modul IoT Edge Anda sendiri

Berlaku untuk:IoT Edge 1.5 dengan tanda centang IoT Edge 1.5

Penting

IoT Edge 1.5 LTS adalah rilis didukung. IoT Edge 1.4 LTS mencapai akhir masa pakai pada 12 November 2024. Jika Anda menggunakan rilis sebelumnya, lihat Update IoT Edge.

Azure IoT Edge modul dapat terhubung dengan layanan Azure lain dan berkontribusi pada alur data cloud Anda yang lebih besar. Artikel ini menjelaskan bagaimana Anda dapat mengembangkan modul untuk berkomunikasi dengan IoT Edge runtime dan IoT Hub, serta seluruh bagian lain dari cloud Azure.

Lingkungan operasi IoT Edge

Runtime IoT Edge menyediakan infrastruktur untuk mengintegrasikan fungsionalitas beberapa modul IoT Edge dan untuk menyebarkannya ke perangkat IoT Edge. Program apa pun dapat dimas sebagai modul IoT Edge. Untuk memanfaatkan sepenuhnya fungsi komunikasi dan manajemen IoT Edge, program yang berjalan dalam modul dapat menggunakan SDK Perangkat Azure IoT untuk terhubung ke hub IoT Edge lokal.

Mengemas program Anda sebagai modul IoT Edge

Untuk menyebarkan program pada perangkat IoT Edge, Anda harus terlebih dahulu menampungnya dan menjalankannya menggunakan mesin yang kompatibel dengan Docker. IoT Edge menggunakan Moby, proyek sumber terbuka di belakang Docker, sebagai mesin yang kompatibel dengan Docker. Anda dapat meneruskan parameter yang sama dengan docker ke modul IoT Edge Anda. Untuk informasi selengkapnya, lihat Cara mengonfigurasi opsi pembuatan kontainer untuk modul IoT Edge.

Menggunakan hub IoT Edge

Hub IoT Edge menyediakan dua fungsi utama: proksi untuk IoT Hub dan komunikasi lokal.

Menyambungkan ke hub IoT Edge dari modul

Menyambungkan ke hub IoT Edge lokal dari sebuah modul melibatkan langkah-langkah koneksi yang sama seperti untuk klien lainnya. Untuk informasi selengkapnya, lihat Hubungkan ke hub IoT Edge.

Untuk menggunakan perutean IoT Edge melalui AMQP, Anda dapat menggunakan ModuleClient dari Azure IoT SDK. Buat instans ModuleClient untuk menghubungkan modul Anda ke hub IoT Edge yang berjalan di perangkat, mirip dengan cara instans DeviceClient menghubungkan perangkat IoT ke IoT Hub. Untuk informasi selengkapnya tentang kelas ModuleClient dan metode komunikasinya, lihat referensi API untuk bahasa SDK pilihan Anda: C#, C, Python, Java, atau Node.js.

IoT Hub elemen dasar

IoT Hub melihat instans modul yang mirip dengan perangkat. Instans modul dapat:

  • Mengirim pesan perangkat ke cloud.
  • Menerima metode langsung yang ditargetkan khusus pada identitasnya.
  • Memiliki modul kembar yang berbeda dan terisolasi dari perangkat kembar dan modul kembar lainnya dari perangkat tersebut.

Saat ini, modul tidak dapat menerima pesan cloud ke perangkat atau menggunakan fitur unggah file.

Saat menulis modul, Anda dapat terhubung ke hub IoT Edge dan menggunakan primitif IoT Hub seperti yang Anda lakukan saat menggunakan IoT Hub dengan aplikasi perangkat. Satu-satunya perbedaan antara modul IoT Edge dan aplikasi perangkat IoT adalah bahwa dengan modul Anda harus merujuk ke identitas modul alih-alih identitas perangkat.

Pesan perangkat ke cloud

Modul IoT Edge dapat mengirim pesan ke cloud melalui hub IoT Edge yang bertindak sebagai broker lokal dan menyebarluaskan pesan ke cloud. Untuk mengaktifkan pemrosesan pesan perangkat ke cloud yang kompleks, modul IoT Edge dapat mencegat dan memproses pesan yang dikirim oleh modul atau perangkat lain ke hub IoT Edge lokalnya. Modul IoT Edge kemudian mengirim pesan baru dengan data yang diproses. Dengan cara ini, Anda dapat membuat rantai modul IoT Edge untuk membangun alur pemrosesan lokal.

Untuk mengirim pesan telemetri perangkat ke cloud menggunakan rute:

  • Gunakan kelas ModuleClientAzure IoT SDK. Setiap modul memiliki titik akhir input dan output .
  • Untuk mengirim pesan pada titik akhir output modul Anda, gunakan metode kirim pesan dari kelas Anda ModuleClient .
  • Untuk mengirim titik akhir output ini ke IoT Hub, siapkan rute di modul edgeHub perangkat Anda.

Untuk memproses pesan menggunakan rute:

  • Siapkan rute untuk mengirim pesan yang berasal dari titik akhir lain (modul atau perangkat) ke titik akhir input modul Anda.
  • Dengarkan pesan pada titik akhir input modul Anda. Setiap kali pesan baru kembali, Azure IoT SDK memicu fungsi panggilan balik.
  • Proses pesan Anda menggunakan fungsi panggilan balik ini dan (opsional) kirim pesan baru dalam antrean titik akhir modul Anda.

Catatan

Untuk informasi selengkapnya tentang mendeklarasikan rute, lihat Pelajari cara menyebarkan modul dan membuat rute di IoT Edge.

Kembar

Twins adalah salah satu primitif yang disediakan oleh IoT Hub. Kembar adalah dokumen JSON yang menyimpan informasi status termasuk metadata, konfigurasi, dan kondisi. Setiap modul atau perangkat memiliki kembarannya sendiri.

  • Untuk mendapatkan modul kembar menggunakan Azure IoT SDK, panggil metode ModuleClient.getTwin.
  • Untuk menerima patch kembar modul menggunakan Azure IoT SDK, terapkan fungsi panggilan balik dan daftarkan dengan menggunakan metode ModuleClient.moduleTwinCallback sehingga fungsi panggilan balik Anda dipicu setiap kali patch kembar masuk.

Terima metode langsung

Untuk menerima metode langsung menggunakan Azure IoT SDK, terapkan fungsi panggilan balik dan daftarkan dengan menggunakan metode ModuleClient.methodCallback sehingga fungsi panggilan balik Anda dipicu setiap kali metode langsung masuk.

Dukungan bahasa dan arsitektur

IoT Edge mendukung beberapa sistem operasi, arsitektur perangkat, dan bahasa pengembangan sehingga Anda dapat membangun skenario yang sesuai dengan kebutuhan Anda. Gunakan bagian ini untuk memahami opsi Anda untuk mengembangkan modul IoT Edge kustom. Anda dapat mempelajari selengkapnya tentang dukungan dan persyaratan alat untuk setiap bahasa dalam Menyebarkan lingkungan pengembangan dan pengujian Anda untuk IoT Edge.

Linux

Untuk semua bahasa dalam tabel berikut, IoT Edge mendukung pengembangan untuk kontainer AMD64 dan sebagian besar ARM64 Linux. Ini juga mendukung kontainer Debian 11 ARM32.

Bahasa pengembangan Alat pengembangan
C Visual Studio Code
Visual Studio 2019/2022
C# Visual Studio Code
Visual Studio 2019/2022
Java Visual Studio Code
Node.js Visual Studio Code
Python Visual Studio Code

Catatan

Untuk kompilasi lintas platform, seperti mengkompilasi modul IoT Edge ARM32 pada komputer pengembangan AMD64, Anda harus mengonfigurasi komputer pengembangan untuk mengkompilasi kode pada arsitektur perangkat target yang cocok dengan modul IoT Edge. Untuk informasi selengkapnya tentang arsitektur perangkat target, lihat Tutorial: Mengembangkan modul Azure IoT Edge menggunakan Visual Studio Code.

Windows

Microsoft tidak lagi mendukung kontainer Windows. IoT Edge untuk Linux di Windows adalah cara yang disarankan untuk menjalankan IoT Edge di perangkat Windows.

Keamanan modul

Kembangkan modul Anda dengan mengingat keamanan. Untuk mempelajari selengkapnya tentang mengamankan modul Anda, lihat Keamanan Docker Engine.

Untuk membantu meningkatkan keamanan modul, IoT Edge menonaktifkan beberapa fitur kontainer secara default. Anda dapat mengganti default untuk memberikan kemampuan istimewa ke modul Anda jika perlu.

Izinkan izin Docker yang ditingkatkan

Dalam file konfigurasi pada perangkat IoT Edge, parameter yang disebut allow_elevated_docker_permissions mengontrol izin Docker yang ditingkatkan. Ketika diatur ke true, flag ini mengaktifkan --privileged flag dan kemampuan lain yang Anda tentukan di CapAdd bidang Docker HostConfig pada opsi pembuatan kontainer.

Catatan

Saat ini, bendera ini benar secara default, yang memberikan izin istimewa untuk penyebaran. Atur bendera ini ke false untuk meningkatkan keamanan perangkat.

Aktifkan CAP_CHOWN dan CAP_SETUID

Kemampuan Docker CAP_CHOWN dan CAP_SETUID dinonaktifkan secara default. Kemampuan ini dapat menulis untuk mengamankan file pada perangkat host dan berpotensi mendapatkan akses root.

Jika Anda memerlukan kemampuan ini, aktifkan kembali secara manual dengan menggunakan CapADD opsi buat kontainer.

Langkah berikutnya