Kembangkan modul IoT Edge Anda sendiri

Berlaku untuk ikon:yes IoT Edge 1.1 Versi lain: IoT Edge 1.2, IoT Edge 1.3

Berlaku untuk:IoT Edge 1.2 checkmark IoT Edge 1.2 IoT Edge 1.3 checkmark IoT Edge 1.3 Versi lain:IoT Edge 1.1

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 buat kontainer untuk modul IoT Edge.

Menggunakan IoT Edge hub

Hub IoT Edge menyediakan dua fungsi utama: proksi ke Hub IoT, 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 dianalogikan dengan perangkat, dalam arti:

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 Anda harus merujuk ke identitas modul daripada 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 memungkinkan pemrosesan pesan perangkat ke cloud yang kompleks, modul IoT Edge juga dapat mencegat dan memproses pesan yang dikirim oleh modul atau perangkat lain ke hub IoT Edge lokalnya dan 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 perutean, gunakan ModuleClient dari Azure IoT SDK. Dengan Azure IoT SDK, setiap modul memiliki konsep titik akhir input dan output modul. Gunakan metode ModuleClient.sendMessageAsync dan itu akan mengirim pesan pada titik akhir output modul Anda. Kemudian konfigurasikan rute di edgeHub untuk mengirim titik akhir output ini ke IoT Hub.

Untuk memproses pesan menggunakan perutean, pertama-tama siapkan rute untuk mengirim pesan yang berasal dari titik akhir (modul atau perangkat) lain ke titik akhir input modul Anda, lalu dengarkan pesan di titik akhir input modul Anda. Setiap kali pesan baru kembali, fungsi pemanggilan balik dipicu oleh Azure IoT SDK. Proses pesan Anda dengan fungsi pemanggilan balik ini dan secara opsional mengirim pesan baru pada antrean titik akhir modul Anda.

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, hubungi metode ModuleClient.getTwin ini.

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

Terima metode langsung

Untuk menerima metode langsung dengan Azure IoT SDK, terapkan fungsi menelpon balik dan daftarkan dengan metode ModuleClient.methodCallback dari Azure IoT SDK sehingga fungsi menelpon 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 Linux AMD64 dan ARM32.

Bahasa pengembangan Alat pengembangan
C Visual Studio Code
Visual Studio 2017/2019
C# Visual Studio Code
Visual Studio 2017/2019
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 perlu mengonfigurasi komputer pengembangan untuk mengkompilasi kode pada arsitektur perangkat target yang cocok dengan modul IoT Edge. Untuk informasi selengkapnya, lihat Membangun dan men-debug modul IoT Edge di perangkat jarak jauh Anda untuk mengonfigurasi komputer pengembangan untuk mengkompilasi kode pada arsitektur perangkat target yang cocok dengan modul IoT Edge.

Selain itu, dukungan untuk kontainer Linux ARM64 ada di pratinjau publik. Untuk mengetahui informasi selengkapnya, lihat Mengembangkan dan menelusuri kesalahan modul IoT Edge ARM64 di Visual Studio Code (pratinjau).

Windows

Untuk semua bahasa dalam tabel berikut, IoT Edge mendukung pengembangan untuk kontainer AMD64 Windows.

Bahasa pengembangan Alat pengembangan
C Visual Studio 2017/2019
C# Visual Studio Code (tanpa kemampuan debugging)
Visual Studio 2017/2019

IoT Edge 1.1 LTS adalah saluran rilis terakhir yang mendukung kontainer Windows. Mulai versi 1.2, kontainer Windows tidak lagi didukung.

Untuk informasi tentang mengembangkan dengan kontainer Windows, lihat versi IoT Edge 1.1 dari artikel ini.

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. Bila disetel ke true, tanda ini memungkinkan tanda --privileged serta kemampuan tambahan apa pun yang Anda tetapkan di bidang CapAdd HostConfig Docker 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. Di masa mendatang, tanda ini akan disetel ke false secara default.

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

Menggunakan Visual Studio untuk mengembangkan modul C# untuk IoT Edge

Menggunakan Visual Studio Code untuk mengembangkan modul untuk IoT Edge

Memahami dan menggunakan SDK Hub Azure IoT