Kembangkan modul IoT Edge Anda sendiri

Berlaku untuk:Tanda centang IoT Edge 1.5 IoT Edge 1.5 Tanda centang IoT Edge 1.4 IoT Edge 1.4

Penting

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

Modul Azure IoT Edge dapat terhubung dengan layanan Azure lainnya dan berkontribusi pada saluran data cloud Anda yang lebih besar. Artikel ini menjelaskan cara Anda mengembangkan modul untuk berkomunikasi dengan runtime IoT Edge dan IoT Hub, dan seluruh cloud Azure.

Lingkungan runtime 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 dikemas sebagai modul IoT Edge. Untuk memanfaatkan sepenuhnya fungsi komunikasi dan manajemen IoT Edge, program yang berjalan dalam modul dapat menggunakan Azure IoT Device SDK untuk terhubung ke hub IoT Edge lokal.

Mengemas program Anda sebagai modul IoT Edge

Untuk menyebarkan program Anda pada perangkat IoT Edge, program harus terlebih dahulu dimasukkan kontainer dan dijalankan dengan mesin yang kompatibel dengan Docker. IoT Edge menggunakan Moby,proyek open-source di belakang Docker, sebagai mesin yang kompatibel dengan Docker. Parameter yang sama dengan yang biasa Anda gunakan dengan Docker dapat diteruskan ke modul IoT Edge Anda. Untuk informasi selengkapnya, lihat Cara mengonfigurasi opsi pembuatan kontainer untuk modul IoT Edge.

Menggunakan IoT Edge hub

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

Menyambungkan ke hub IoT Edge dari modul

Menghubungkan ke hub IoT Edge lokal dari modul melibatkan langkah-langkah koneksi yang sama seperti untuk klien mana pun. Untuk informasi selengkapnya, lihat Menghubungkan 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 Hub IoT. Untuk informasi selengkapnya tentang kelas ModuleClient dan metode komunikasinya, lihat referensi API untuk bahasa SDK pilihan Anda: C#, C, Python, Java, atau Node.js.

Primitif IoT Hub

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

  • Mengirim pesan perangkat ke cloud
  • Menerima metode langsung yang ditargetkan secara 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 menyebarkan 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 akan mengirim pesan baru dengan data yang diproses. Rangkaian modul IoT Edge dengan demikian dapat dibuat untuk membangun saluran pemrosesan lokal.

Untuk mengirim pesan telemetri perangkat ke cloud menggunakan rute:

  • Gunakan kelas Klien Modul dari Azure IoT SDK. Setiap modul memiliki titik akhir input dan output .
  • Gunakan metode kirim pesan dari kelas Klien Modul Anda untuk mengirim pesan pada titik akhir output modul Anda.
  • Siapkan rute di modul edgeHub perangkat Anda untuk mengirim titik akhir output ini ke IoT Hub.

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, fungsi pemanggilan balik dipicu oleh Azure IoT SDK.
  • Proses pesan Anda dengan fungsi panggilan balik ini dan (opsional) kirim pesan baru dalam antrean titik akhir modul Anda.

Catatan

Untuk mempelajari selengkapnya tentang mendeklarasikan rute, lihat Mempelajari cara menyebarkan modul dan membuat rute di IoT Edge

Kembar

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

  • Untuk mendapatkan modul kembar dengan Azure IoT SDK, panggil ModuleClient.getTwin metode .

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

Terima metode langsung

Untuk menerima metode langsung dengan Azure IoT SDK, terapkan fungsi panggilan balik dan daftarkan dengan ModuleClient.methodCallback metode dari Azure IoT SDK 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 lebih lanjut tentang dukungan alat dan persyaratan untuk setiap bahasa dalam Mempersiapkan 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. Ada dukungan untuk kontainer Debian 11 ARM32 juga.

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 ARM32 IoT Edge pada komputer pengembangan AMD64, Anda perlu mengonfigurasi komputer pengembangan untuk mengkompilasi kode pada arsitektur perangkat target yang cocok dengan modul IoT Edge. Untuk informasi selengkapnya tentang arsitektur perangkat target, lihat Mengembangkan modul Azure IoT Edge menggunakan Visual Studio Code.

Windows

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

Keamanan modul

Anda harus mengembangkan modul Anda dengan mempertimbangkan keamanan. Untuk mempelajari lebih lanjut tentang mengamankan modul Anda, lihat Keamanan Docker.

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 config pada perangkat IoT Edge, ada parameter yang disebut allow_elevated_docker_permissions. Ketika diatur ke true, bendera ini memungkinkan --privileged bendera dan kemampuan tambahan apa pun yang Anda tentukan di CapAdd bidang Docker HostConfig di opsi pembuatan kontainer.

Catatan

Saat ini, bendera ini true secara default, yang memungkinkan penerapan memberikan izin istimewa ke modul. Kami menyarankan Anda menyetel pengantar 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 digunakan untuk menulis untuk mengamankan file di perangkat host dan berpotensi mendapatkan akses root.

Jika Anda memerlukan kemampuan ini, Anda dapat mengaktifkannya kembali secara manual menggunakan CapADD di opsi pembuatan wadah.

Langkah berikutnya

Menyiapkan lingkungan pengembangan dan pengujian Anda untuk IoT Edge

Mengembangkan modul Azure IoT Edge menggunakan Visual Studio Code

Men-debug modul Azure IoT Edge menggunakan Visual Studio Code

Memahami dan menggunakan SDK Hub Azure IoT