Menggunakan Visual Studio 2022 untuk mengembangkan dan men-debug modul untuk Azure IoT Edge
Berlaku untuk: IoT Edge 1.5
Penting
IoT Edge 1.5 LTS adalah rilis yang didukung. IoT Edge 1.4 LTS adalah akhir masa pakai per 12 November 2024. Jika Anda menggunakan rilis sebelumnya, lihat Memperbarui IoT Edge.
Artikel ini memperlihatkan kepada Anda cara menggunakan Visual Studio 2022 untuk mengembangkan, men-debug, dan menyebarkan modul Azure IoT Edge kustom. Visual Studio 2022 menyediakan templat untuk modul IoT Edge yang ditulis dalam C dan C#. Arsitektur perangkat yang didukung adalah Windows x64, Linux x64, ARM32, dan ARM64 (pratinjau). Untuk informasi selengkapnya tentang sistem operasi, bahasa, dan arsitektur yang didukung, lihat Dukungan bahasa dan arsitektur.
Artikel ini mencakup langkah-langkah untuk dua alat pengembangan IoT Edge.
- Antarmuka baris perintah (CLI) adalah alat pilihan untuk pengembangan.
- Alat Azure IoT Edge untuk ekstensi Visual Studio . Ekstensi dalam mode pemeliharaan.
Gunakan tombol pemilih alat di awal untuk memilih opsi alat Anda untuk artikel ini. Kedua alat memberikan manfaat berikut:
- Buat, edit, bangun, jalankan, dan debug solusi dan modul IoT Edge di komputer pengembangan lokal Anda.
- Kode modul Azure IoT Anda di C atau C# dengan manfaat pengembangan Visual Studio.
- Menyebarkan solusi IoT Edge Anda ke perangkat IoT Edge melalui Azure IoT Hub.
Prasyarat
Artikel ini mengasumsikan bahwa Anda menggunakan mesin yang menjalankan Windows sebagai mesin pengembangan Anda.
Instal atau ubah Visual Studio 2022 di komputer pengembangan Anda. Pilih pengembangan Azure dan Pengembangan desktop dengan opsi beban kerja C++.
Unduh dan instal Azure IoT Edge Tools dari Visual Studio Marketplace. Anda dapat menggunakan ekstensi Azure IoT Edge Tools untuk membuat dan membangun solusi IoT Edge Anda. Alat pengembangan yang disukai adalah command-line (CLI) Azure IoT Edge Dev Tool. Ekstensi ini mencakup templat proyek Azure IoT Edge yang digunakan untuk membuat proyek Visual Studio. Saat ini, Anda memerlukan ekstensi yang diinstal terlepas dari alat pengembangan yang Anda gunakan.
Penting
Ekstensi Azure IoT Edge Tools untuk VS 2022 berada dalam mode pemeliharaan. Alat pengembangan yang disukai adalah command-line (CLI) Azure IoT Edge Dev Tool.
Tip
Jika Anda menggunakan Visual Studio 2019, unduh dan instal Azure IoT Edge Tools untuk VS 2019 dari marketplace Visual Studio.
Menginstal manajer pustaka Vcpkg
git clone https://github.com/Microsoft/vcpkg cd vcpkg bootstrap-vcpkg.bat
Menginstal paket azure-iot-sdk-c untuk Windows
vcpkg.exe install azure-iot-sdk-c:x64-windows vcpkg.exe --triplet x64-windows integrate install
Unduh dan instal sistem manajemen kontainer yang kompatibel dengan Docker di komputer pengembangan Anda untuk membangun dan menjalankan gambar modul Anda. Misalnya, instal Docker Community Edition.
Untuk mengembangkan modul dengan kontainer Linux, gunakan komputer Windows yang memenuhi persyaratan untuk Dekstop Docker.
Buat Azure Container Registry atau Docker Hub untuk menyimpan gambar modul Anda.
Tip
Anda dapat menggunakan registri Docker lokal untuk tujuan prototipe dan pengujian alih-alih registri cloud.
Instal Azure CLI.
Untuk menguji modul di perangkat, Anda memerlukan IoT Hub aktif dengan setidaknya satu perangkat IoT Edge. Untuk membuat perangkat IoT Edge untuk pengujian, Anda dapat membuatnya di portal Azure atau dengan CLI:
Membuatnya di portal Azure adalah yang tercepat. Dari portal Azure, buka sumber daya IoT Hub Anda. Pilih Perangkat di bawah menu Manajemen perangkat lalu pilih Tambahkan Perangkat.
Di Buat perangkat, beri nama perangkat Anda menggunakan ID Perangkat, periksa Perangkat IoT Edge, lalu pilih Simpan di kiri bawah.
Terakhir, konfirmasikan bahwa perangkat baru Anda ada di IoT Hub Anda, dari menu Perangkat Manajemen > perangkat. Untuk informasi selengkapnya tentang membuat perangkat IoT Edge melalui portal Azure, baca Membuat dan memprovisikan perangkat IoT Edge di Linux menggunakan kunci konten.
Untuk membuat perangkat IoT Edge dengan CLI, ikuti langkah-langkah dalam mulai cepat untuk Linux atau Windows. Dalam proses mendaftarkan perangkat IoT Edge, Anda membuat perangkat IoT Edge.
Jika Menjalankan daemon IoT Edge di komputer pengembangan, Anda mungkin perlu menghentikan EdgeHub dan EdgeAgent sebelum memulai pengembangan di Visual Studio.
Buat perangkat Azure IoT Edge
Templat proyek IoT Edge di Visual Studio membuat solusi untuk disebarkan ke perangkat IoT Edge. Pertama, Anda membuat solusi Azure IoT Edge. Kemudian, Anda membuat modul dalam solusi tersebut. Setiap solusi IoT Edge dapat berisi lebih dari satu modul.
Peringatan
Alat Azure IoT Edge untuk ekstensi Visual Studio tidak memiliki templat proyek untuk modul C dan C#. Kami berupaya menyelesaikan masalah ini. Jika Anda tidak dapat membuat modul IoT Edge menggunakan ekstensi, gunakan solusi berikut.
Unduh file berikut dan letakkan di direktori templat Visual Studio yang tercantum:
File templat | Tambahkan ke direktori |
---|---|
azureiotedgemodule-v0.0.4.zip | %userprofile%\Documents\Visual Studio 2022\Templates\ProjectTemplates\Visual C# |
azureiotedgevcmodulevs17-v0.0.9.zip | %userprofile%\Documents\Visual Studio 2022\Templates\ProjectTemplates\Visual C++ Project |
Dalam solusi kami, kami akan membangun tiga proyek. Modul utama yang berisi EdgeAgent dan EdgeHub, selain modul sensor suhu. Selanjutnya, Anda menambahkan dua modul IoT Edge lagi.
Penting
Struktur proyek IoT Edge yang dibuat oleh Visual Studio tidak sama dengan yang ada di Visual Studio Code.
Saat ini, Azure IoT Edge Dev Tool CLI tidak mendukung pembuatan jenis proyek Visual Studio. Anda perlu menggunakan ekstensi Visual Studio IoT Edge untuk membuat proyek Visual Studio.
Di Visual Studio, buat proyek baru.
Di Buat proyek baru, cari Azure IoT Edge. Pilih proyek yang cocok dengan platform dan arsitektur untuk perangkat IoT Edge Anda, dan pilih Berikutnya.
Di Konfigurasikan proyek baru Anda, masukkan nama untuk proyek Anda, tentukan lokasi, dan pilih Buat.
Di Tambahkan Modul, pilih jenis modul yang ingin Anda kembangkan. Jika Anda memiliki modul yang sudah ada yang ingin Anda tambahkan ke penyebaran, pilih Modul yang sudah ada.
Di Nama Modul, masukkan nama untuk modul Anda. Pilih nama yang unik dalam registri kontainer Anda.
Di Url Repositori, berikan nama repositori gambar modul. Visual Studio secara otomatis mengisi nama modul dengan localhost:5000/<nama> modul Anda. Ganti dengan informasi registri Anda sendiri. Gunakan localhost jika Anda menggunakan registri Docker lokal untuk pengujian. Jika Anda menggunakan Azure Container Registry, gunakan server masuk dari pengaturan registri Anda. Server masuk terlihat seperti <nama> registri.azurecr.io. Hanya ganti bagian localhost:5000 dari string sehingga hasil akhir terlihat seperti< nama> registri.azurecr.io/< nama> modul Anda.
Pilih Tambahkan untuk menambahkan modul Anda ke proyek.
Catatan
Jika Anda memiliki proyek IoT Edge yang sudah ada, Anda dapat mengubah URL repositori dengan membuka file module.json . URL repositori terletak di properti repositori file JSON.
Sekarang, Anda memiliki proyek IoT Edge dan modul IoT Edge di solusi Visual Studio Anda.
Struktur proyek
Dalam solusi Anda, ada dua folder tingkat proyek termasuk folder proyek utama dan satu folder modul. Misalnya, Anda mungkin memiliki folder proyek utama bernama AzureIotEdgeApp1 dan folder modul bernama IotEdgeModule1. Folder proyek utama berisi manifes penyebaran Anda.
Folder proyek modul berisi file untuk kode modul Anda bernama atau Program.cs
main.c
tergantung pada bahasa yang Anda pilih. Folder ini juga berisi file bernama module.json
yang menjelaskan metadata modul Anda. Berbagai file Docker yang disertakan di sini menyediakan informasi yang diperlukan untuk membangun modul Anda sebagai kontainer Windows atau Linux.
Manifes penyebaran proyek Anda
Manifes penyebaran yang Anda edit diberi nama deployment.debug.template.json
. File ini adalah templat manifes penyebaran IoT Edge yang menentukan semua modul yang berjalan pada perangkat bersama dengan cara mereka berkomunikasi satu sama lain. Untuk informasi selengkapnya tentang manifes penyebaran, lihat Pelajari cara menyebarkan modul dan menetapkan rute.
Jika Anda membuka templat penyebaran ini, Anda akan melihat bahwa dua modul runtime, edgeAgent dan edgeHub disertakan, bersama dengan modul kustom yang Anda buat dalam proyek Visual Studio ini. Modul keempat bernama SimulatedTemperatureSensor juga disertakan. Modul default ini menghasilkan data simulasi yang dapat Anda gunakan untuk menguji modul Anda, atau menghapusnya jika tidak diperlukan. Untuk melihat cara kerja sensor suhu yang disimulasikan, lihat kode sumber SimulatedTemperatureSensor.csproj.
Menetapkan versi {i>runtime
Saat ini, versi runtime stabil terbaru adalah 1.5. Anda harus memperbarui versi runtime IoT Edge ke rilis stabil terbaru atau versi yang ingin Anda targetkan untuk perangkat Anda.
Di Penjelajah Solusi, klik kanan nama proyek utama Anda dan pilih Atur versi runtime IoT Edge.
Gunakan menu drop-down untuk memilih versi runtime yang dijalankan perangkat IoT Edge Anda, lalu pilih OK untuk menyimpan perubahan Anda. Jika tidak ada perubahan yang dilakukan, pilih Batal untuk keluar.
Saat ini, ekstensi tidak menyertakan pilihan untuk versi runtime terbaru. Jika Anda ingin mengatur versi runtime yang lebih tinggi dari 1.2, buka file manifes penyebaran deployment.debug.template.json . Ubah versi runtime untuk gambar modul runtime sistem edgeAgent dan edgeHub. Misalnya, jika Anda ingin menggunakan runtime IoT Edge versi 1.5, ubah baris berikut dalam file manifes penyebaran:
"systemModules": { "edgeAgent": { //... "image": "mcr.microsoft.com/azureiotedge-agent:1.5" //... "edgeHub": { //... "image": "mcr.microsoft.com/azureiotedge-hub:1.5", //...
Jika Anda mengubah versi, regenerasi manifes penyebaran Anda dengan mengklik kanan nama proyek Anda dan pilih Buat penyebaran untuk IoT Edge. Ini menghasilkan manifes penyebaran berdasarkan templat penyebaran Anda dan muncul di folder konfigurasi proyek Visual Studio Anda.
Buka file manifes penyebaran deployment.debug.template.json . Manifes penyebaran adalah dokumen JSON yang menjelaskan modul yang akan dikonfigurasi pada perangkat IoT Edge yang ditargetkan.
Ubah versi runtime untuk gambar modul runtime sistem edgeAgent dan edgeHub. Misalnya, jika Anda ingin menggunakan runtime IoT Edge versi 1.5, ubah baris berikut dalam file manifes penyebaran:
"systemModules": { "edgeAgent": { //... "image": "mcr.microsoft.com/azureiotedge-agent:1.5", //... "edgeHub": { //... "image": "mcr.microsoft.com/azureiotedge-hub:1.5", //...
Opsi infrastruktur & pengembangan modul
Saat Anda menambahkan modul baru, modul ini dilengkapi dengan kode default yang siap dibuat dan disebarkan ke perangkat sehingga Anda dapat memulai pengujian tanpa menyentuh kode apa pun. Kode modul terletak di dalam folder modul dalam file bernama Program.cs
(untuk C#) atau main.c
(untuk C).
Solusi default dibuat sehingga data simulasi dari modul SimulatedTemperatureSensor dirutekan ke modul Anda, yang mengambil input dan mengirimkannya ke IoT Hub.
Ketika Anda siap untuk menyesuaikan templat modul dengan kode Anda sendiri, gunakan Azure IoT Hub SDKs untuk membangun modul yang menangani kebutuhan utama untuk solusi IoT seperti keamanan, manajemen perangkat, dan keandalan.
Debug menggunakan simulator
Azure IoT EdgeHub Dev Tool memberikan pengalaman pengembangan dan debug lokal. Alat ini membantu memulai modul IoT Edge tanpa runtime IoT Edge sehingga Anda dapat membuat, mengembangkan, menguji, menjalankan, dan men-debug modul dan solusi IoT Edge secara lokal. Anda tidak perlu mendorong gambar ke registri kontainer dan menyebarkannya ke perangkat untuk pengujian.
Untuk informasi selengkapnya, lihat Alat Pengembang Azure IoT EdgeHub.
Untuk menginisialisasi alat di Visual Studio:
Ambil string koneksi perangkat IoT Edge Anda (ditemukan di IoT Hub Anda) dari portal Azure atau dari Azure CLI.
Jika menggunakan CLI untuk mengambil string koneksi Anda, gunakan perintah ini, ganti "[device_id]" dan "[hub_name]" dengan nilai Anda sendiri:
az iot hub device-identity connection-string show --device-id [device_id] --hub-name [hub_name]
Dari menu Alat di Visual Studio, pilih Azure IoT Edge Tools>Setup IoT Edge Simulator.
Tempelkan string koneksi dan pilih OK.
Catatan
Anda hanya perlu mengikuti langkah-langkah ini sekali di komputer pengembangan Anda karena hasilnya secara otomatis diterapkan ke semua solusi Azure IoT Edge berikutnya. Prosedur ini dapat diikuti lagi jika Anda perlu mengubah ke string koneksi yang berbeda.
Membangun dan men-debug satu modul
Biasanya, Anda ingin menguji dan men-debug setiap modul sebelum menjalankannya dalam seluruh solusi dengan beberapa modul. Alat simulator IoT Edge memungkinkan Anda menjalankan satu modul dalam isolasi mengirim pesan melalui port 53000.
Di Penjelajah Solusi, pilih dan sorot folder proyek modul (misalnya, IotEdgeModule1). Atur modul kustom sebagai proyek startup. Pilih Project>Set sebagai StartUp Project dari menu.
Tekan F5 atau pilih tombol toolbar jalankan untuk memulai simulator IoT Edge untuk satu modul. Mungkin perlu waktu 10 hingga 20 detik pada awalnya.
Anda akan melihat jendela aplikasi konsol .NET Core muncul jika modul telah berhasil diinisialisasi.
Tetapkan titik henti untuk memeriksa modul.
- Jika mengembangkan di C#, atur titik henti dalam
PipeMessage()
fungsi di ModuleBackgroundService.cs. - Jika menggunakan C, setel titik henti dalam fungsi
InputQueue1Callback()
di main.c.
- Jika mengembangkan di C#, atur titik henti dalam
Uji modul dengan mengirim pesan. Saat Anda men-debug satu modul, simulator mendengarkan port default 53000 untuk pesan. Untuk mengirim pesan ke modul Anda, jalankan perintah curl berikut dari shell perintah seperti Git Bash atau WSL Bash.
curl --header "Content-Type: application/json" --request POST --data '{"inputName": "input1","data":"hello world"}' http://localhost:53000/api/v1/messages
Jika Anda mendapatkan kesalahan close brace/bracket yang tidak cocok di URL, coba perintah berikut sebagai gantinya:
curl --header "Content-Type: application/json" --request POST --data "{\"inputName\": \"input1\", \"data\", \"hello world\"}" http://localhost:53000/api/v1/messages
Titik henti harus dipicu. Anda dapat menonton variabel di jendela Visual Studio Locals , yang ditemukan saat debugger berjalan. Buka Debug>Windows>Locals.
Di Bash atau shell Anda, Anda akan melihat
{"message":"accepted"}
konfirmasi.Di konsol .NET, Anda akan melihat:
IoT Hub module client initialized. Received message: 1, Body: [hello world]
Tekan Ctrl + F5 atau plih tombol stop untuk menghentikan penelusuran kesalahan.
Membangun dan men-debug beberapa modul
Setelah selesai mengembangkan satu modul, Anda mungkin ingin menjalankan dan melakukan debug seluruh solusi dengan beberapa modul. Alat simulator IoT Edge memungkinkan Anda menjalankan semua modul yang ditentukan dalam manifes penyebaran termasuk edgeHub simulasi untuk perutean pesan. Dalam contoh ini, Anda menjalankan dua modul kustom dan modul sensor suhu yang disimulasikan. Pesan dari modul sensor suhu yang disimulasikan dirutekan ke setiap modul kustom.
Di Penjelajah Solusi, tambahkan modul kedua ke solusi dengan mengklik kanan folder proyek utama. Pada menu, pilih Tambahkan>Modul IoT Edge Baru.
Di jendela
Add module
beri nama modul baru Anda dan gantilocalhost:5000
bagian URL repositori dengan server masuk Azure Container Registry Anda, seperti yang Anda lakukan sebelumnya.Buka file
deployment.debug.template.json
untuk melihat bahwa modul baru telah ditambahkan di bagian modul . Rute baru juga ditambahkan ke bagian rute diEdgeHub
untuk mengirim pesan dari modul baru ke IoT Hub. Untuk mengirim data dari sensor suhu yang disimulasikan ke modul baru, tambahkan rute lain dengan baris berikut .JSON
Ganti<NewModuleName>
(di dua tempat) dengan nama modul Anda sendiri."sensorTo<NewModuleName>": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/<NewModuleName>/inputs/input1\")"
Klik kanan proyek utama (misalnya, AzureIotEdgeApp1) dan pilih Atur sebagai Proyek StartUp. Dengan mengatur proyek utama sebagai proyek startup, semua modul dalam solusi berjalan. Ini termasuk kedua modul yang Anda tambahkan ke solusi, modul sensor suhu yang disimulasikan, dan hub Edge yang disimulasikan.
Tekan F5 atau pilih tombol jalankan toolbar untuk menjalankan solusi. Mungkin perlu waktu 10 hingga 20 detik pada awalnya. Pastikan Anda tidak memiliki kontainer Docker lain yang berjalan yang mungkin mengikat port yang Anda butuhkan untuk proyek ini.
Anda akan melihat dua jendela aplikasi konsol .NET Core muncul satu untuk setiap modul.
Atur titik henti untuk memeriksa modul.
- Jika mengembangkan di C#, atur titik henti dalam
PipeMessage()
fungsi di ModuleBackgroundService.cs. - Jika menggunakan C, setel titik henti dalam fungsi
InputQueue1Callback()
di main.c.
- Jika mengembangkan di C#, atur titik henti dalam
Buat titik henti di setiap modul lalu tekan F5 untuk menjalankan dan men-debug beberapa modul secara bersamaan. Anda akan melihat beberapa jendela aplikasi konsol .NET Core, dengan setiap jendela mewakili modul yang berbeda.
Tekan Ctrl + F5 atau plih tombol stop untuk menghentikan penelusuran kesalahan.
Membangun dan mendorong gambar ke registri
Setelah mengembangkan dan men-debug modul, Anda dapat membuat dan mendorong gambar modul ke Azure Container Registry Anda. Anda kemudian dapat menyebarkan modul ke perangkat IoT Edge Anda.
Atur proyek IoT Edge utama sebagai proyek start-up, bukan salah satu modul individual.
Pilih Debug atau Rilis sebagai konfigurasi yang akan dibangun untuk gambar modul Anda.
Catatan
Saat memilih Debug, Visual Studio menggunakan
Dockerfile.(amd64|windows-amd64).debug
untuk membuat gambar Docker. Ini termasuk debugger baris perintah .NET Core VSDBG dalam gambar kontainer Anda saat membangunnya. Untuk modul IoT Edge siap produksi, kami sarankan Anda menggunakan konfigurasi Rilis, yang menggunakanDockerfile.(amd64|windows-amd64)
tanpa VSDBG.Jika Anda menggunakan registri pribadi seperti Azure Container Registry (ACR), gunakan perintah Docker berikut untuk masuk ke dalamnya. Anda bisa mendapatkan nama pengguna dan kata sandi dari halaman Kunci akses registri Anda di portal Azure.
docker login <ACR login server>
Mari kita tambahkan informasi masuk Azure Container Registry ke pengaturan runtime yang ditemukan dalam file
deployment.debug.template.json
. Ada dua cara untuk melakukannya. Anda dapat menambahkan kredensial registri ke file Anda.env
(paling aman) atau menambahkannya langsung ke file Andadeployment.debug.template.json
.Tambahkan kredensial ke file Anda
.env
:Di Penjelajah Solusi, pilih tombol toolbar Perlihatkan Semua File. File
.env
muncul. Tambahkan nama pengguna dan kata sandi Azure Container Registry Anda ke file Anda.env
. Kredensial ini dapat ditemukan di halaman Kunci Akses Azure Container Registry Anda di portal Azure.DEFAULT_RT_IMAGE=1.2 CONTAINER_REGISTRY_USERNAME_myregistry=<my-registry-name> CONTAINER_REGISTRY_PASSWORD_myregistry=<my-registry-password>
Menambahkan kredensial langsung ke deployment.debug.template.json
Jika Anda lebih suka menambahkan kredensial langsung ke templat penyebaran, ganti tempat penampung dengan nama pengguna, kata sandi, dan nama registri admin ACR Anda.
"settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "registry1": { "username": "<username>", "password": "<password>", "address": "<registry name>.azurecr.io" } } }
Catatan
Artikel ini menggunakan kredensial login admin untuk Azure Container Registry, yang sesuai untuk skenario pengembangan dan pengujian. Saat Anda siap untuk skenario produksi, kami merekomendasikan opsi autentikasi dengan hak paling rendah seperti perwakilan layanan. Untuk informasi selengkapnya, lihat Kelola akses ke registri kontainer Anda.
Jika Anda menggunakan registri lokal, Anda dapat menjalankan registri lokal.
Terakhir, di Penjelajah Solusi, klik kanan folder proyek utama dan pilih Bangun dan Dorong Modul IoT Edge untuk membangun dan mendorong gambar Docker untuk setiap modul. Ini mungkin memakan waktu satu menit. Saat Anda melihat
Finished Build and Push IoT Edge Modules.
di konsol Output Visual Studio, Anda selesai.
Menyebarkan solusi
Setelah membuat dan mendorong gambar modul ke Azure Container Registry, Anda dapat menyebarkan solusi ke perangkat IoT Edge Anda. Anda sudah memiliki templat manifes penyebaran yang telah Anda amati sepanjang tutorial ini. Mari kita buat manifes penyebaran dari itu, lalu gunakan perintah Azure CLI untuk menyebarkan modul Anda ke perangkat IoT Edge Anda di Azure.
Klik kanan pada proyek utama Anda di Visual Studio Penjelajah Solusi dan pilih Buat Penyebaran untuk IoT Edge.
Buka folder proyek utama Visual Studio lokal Anda dan lihat di
config
folder . Jalur file mungkin terlihat seperti ini:C:\Users\<YOUR-USER-NAME>\source\repos\<YOUR-IOT-EDGE-PROJECT-NAME>\config
. Di sini Anda menemukan manifes penyebaran yang dihasilkan sepertideployment.amd64.debug.json
.Periksa file Anda
deployment.amd64.debug.json
untuk mengonfirmasiedgeHub
versi skema diatur ke 1.2."$edgeHub": { "properties.desired": { "schemaVersion": "1.2", "routes": { "IotEdgeModule2022ToIoTHub": "FROM /messages/modules/IotEdgeModule2022/outputs/* INTO $upstream", "sensorToIotEdgeModule2022": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/IotEdgeModule2022/inputs/input1\")", "IotEdgeModule2022bToIoTHub": "FROM /messages/modules/IotEdgeModule2022b/outputs/* INTO $upstream" }, "storeAndForwardConfiguration": { "timeToLiveSecs": 7200 } } }
Tip
Templat penyebaran untuk Visual Studio 2022 memerlukan versi skema 1.2. Jika Anda membutuhkannya menjadi 1.1 atau 1.0, tunggu hingga setelah penyebaran dihasilkan (jangan ubah di
deployment.debug.template.json
). Membuat penyebaran akan membuat skema 1.2 secara default. Namun, Anda dapat mengubahdeployment.amd64.debug.json
secara manual , manifes yang dihasilkan, jika diperlukan sebelum menyebarkannya ke Azure.Penting
Setelah perangkat IoT Edge Anda disebarkan, perangkat saat ini tidak akan ditampilkan dengan benar di portal Azure dengan skema versi 1.2 (versi 1.1 akan baik-baik saja). Ini adalah bug yang diketahui dan akan segera diperbaiki. Namun, ini tidak akan memengaruhi perangkat Anda, karena masih terhubung di IoT Hub dan dapat dikomunikasikan kapan saja menggunakan Azure CLI.
Sekarang mari kita sebarkan manifes kita dengan perintah Azure CLI. Buka Perintah Pengembang Visual Studio dan ubah ke direktori konfigurasi.
cd config
Sebarkan manifes untuk perangkat IoT Edge Anda ke IoT Hub. Perintah mengonfigurasi perangkat untuk menggunakan modul yang dikembangkan dalam solusi Anda. Manifes penyebaran dibuat pada langkah sebelumnya dan disimpan di folder konfigurasi . Dari folder konfigurasi Anda, jalankan perintah penyebaran berikut.
[device id]
Ganti ,[hub name]
, dan[file path]
dengan nilai Anda. Jika ID perangkat IoT Edge tidak ada di IoT Hub, ID tersebut harus dibuat.az iot edge set-modules --device-id [device id] --hub-name [hub name] --content [file path]
Misalnya, perintah Anda mungkin terlihat seperti ini:
az iot edge set-modules --device-id my-device-name --hub-name my-iot-hub-name --content deployment.amd64.debug.json
Setelah menjalankan perintah, Anda akan melihat konfirmasi penyebaran yang dicetak di
JSON
prompt perintah Anda.
Gambar Docker modul build
Setelah mengembangkan modul, Anda dapat membuat gambar modul untuk disimpan dalam registri kontainer untuk penyebaran ke perangkat IoT Edge Anda.
Gunakan Dockerfile modul untuk membangun gambar Docker modul.
docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>"
Misalnya, mari kita asumsikan shell perintah Anda ada di direktori proyek Anda dan nama modul Anda adalah IotEdgeModule1. Untuk membangun gambar untuk registri lokal atau registri kontainer Azure, gunakan perintah berikut:
# Build the image for the local registry
docker build --rm -f "./IotEdgeModule1/Dockerfile.amd64.debug" -t localhost:5000/iotedgemodule1:0.0.1-amd64 "./IotEdgeModule1"
# Or build the image for an Azure Container Registry
docker build --rm -f "./IotEdgeModule1/Dockerfile.amd64.debug" -t myacr.azurecr.io/iotedgemodule1:0.0.1-amd64 "./IotEdgeModule1"
Mendorong gambar Docker modul
Dorong gambar modul Anda ke registri lokal atau registri kontainer.
docker push <ImageName>
Contohnya:
# Push the Docker image to the local registry
docker push localhost:5000/iotedgemodule1:0.0.1-amd64
# Or push the Docker image to an Azure Container Registry
az acr login --name myacr
docker push myacr.azurecr.io/iotedgemodule1:0.0.1-amd64
Sebarkan modul ke perangkat IoT Edge.
Di Visual Studio, buka file manifes penyebaran deployment.debug.template.json di proyek utama. Manifes penyebaran adalah dokumen JSON yang menjelaskan modul yang akan dikonfigurasi pada perangkat IoT Edge yang ditargetkan. Sebelum penyebaran, Anda perlu memperbarui kredensial Azure Container Registry, gambar modul, dan nilai yang tepat createOptions
. Untuk informasi selengkapnya tentang nilai createOption, lihat Cara mengonfigurasi opsi pembuatan kontainer untuk modul IoT Edge.
Jika Anda menggunakan Azure Container Registry untuk menyimpan gambar modul, Anda perlu menambahkan kredensial ke deployment.debug.template.json di pengaturan edgeAgent . Contohnya,
"modulesContent": { "$edgeAgent": { "properties.desired": { "schemaVersion": "1.1", "runtime": { "type": "docker", "settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "myacr": { "username": "myacr", "password": "<your_acr_password>", "address": "myacr.azurecr.io" } } } }, //...
Ganti nilai properti gambar dengan nama gambar modul yang Anda dorong ke registri. Misalnya, jika Anda mendorong gambar yang ditandai
myacr.azurecr.io/iotedgemodule1:0.0.1-amd64
untuk modul kustom IotEdgeModule1, ganti nilai properti gambar dengan nilai tag.Tambahkan atau ganti nilai createOptions dengan konten yang di string untuk setiap sistem dan modul kustom dalam templat penyebaran.
Misalnya, gambar IotEdgeModule1 dan pengaturan createOptions akan mirip dengan yang berikut ini:
"IotEdgeModule1": { "version": "1.0.0", "type": "docker", "status": "running", "restartPolicy": "always", "settings": { "image": "myacr.azurecr.io/iotedgemodule1:0.0.1-amd64", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}" }
Gunakan perintah set-modul IoT Edge Azure CLI untuk menyebarkan modul ke Azure IoT Hub. Misalnya, untuk menyebarkan modul yang ditentukan dalam file deployment.debug.amd64.json ke IoT Hub my-iot-hub untuk perangkat IoT Edge perangkat saya, gunakan perintah berikut:
az iot edge set-modules --hub-name my-iot-hub --device-id my-device --content ./deployment.debug.template.json --login "HostName=my-iot-hub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=<SharedAccessKey>"
Tip
Anda dapat menemukan string koneksi IoT Hub Anda di portal Azure di bawah pengaturan>Keamanan Azure IoT Hub >Kebijakan akses bersama.
Mengonfirmasi penyebaran ke perangkat Anda
Untuk memeriksa apakah modul IoT Edge Anda disebarkan ke Azure, masuk ke perangkat Anda (atau komputer virtual), misalnya melalui SSH atau Azure Bastion, dan jalankan perintah daftar IoT Edge.
iotedge list
Anda akan melihat daftar modul yang berjalan di perangkat atau komputer virtual Anda.
NAME STATUS DESCRIPTION CONFIG
SimulatedTemperatureSensor running Up a minute mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0
edgeAgent running Up a minute mcr.microsoft.com/azureiotedge-agent:1.2
edgeHub running Up a minute mcr.microsoft.com/azureiotedge-hub:1.2
IotEdgeModule1 running Up a minute myacr.azurecr.io/iotedgemodule1:0.0.1-amd64.debug
myIotEdgeModule2 running Up a minute myacr.azurecr.io/myiotedgemodule2:0.0.1-amd64.debug
Debug menggunakan Docker Remote SSH
Mesin Docker dan Moby mendukung koneksi SSH ke kontainer yang memungkinkan Anda melampirkan dan men-debug kode pada perangkat jarak jauh menggunakan Visual Studio.
Menyambungkan dari jarak jauh ke Docker memerlukan hak istimewa tingkat akar. Ikuti langkah-langkah dalam Mengelola docker sebagai pengguna non-root untuk mengizinkan koneksi ke daemon Docker di perangkat jarak jauh. Setelah selesai men-debug, Anda mungkin ingin menghapus pengguna dari grup Docker.
Ikuti langkah-langkah untuk menggunakan Visual Studio untuk Melampirkan ke proses yang berjalan pada kontainer Docker di perangkat jarak jauh Anda.
Di Visual Studio, atur titik henti di modul kustom Anda.
Saat titik henti tertembak, Anda dapat memeriksa variabel, menelusuri kode, dan men-debug modul Anda.
Langkah berikutnya
Untuk mengembangkan modul kustom untuk perangkat IoT Edge Anda, Pahami dan gunakan SDK Hub Azure IoT.
Untuk memantau pesan perangkat ke cloud (D2C) untuk perangkat IoT Edge tertentu, tinjau Tutorial: Memantau perangkat IoT Edge untuk memulai.