Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunun için geçerlidir:
IoT Edge 1.6
Önemli
IoT Edge 1.6 LTS desteklenen sürümdür. IoT Edge 1.5 LTS desteği 10 Kasım 2026'da sona erer; IoT Edge 1.4 LTS, 12 Kasım 2024'te ömrünün sonuna ulaştı. Önceki bir sürümü kullanıyorsanız bkz. Update IoT Edge.
Bu makalede özel Azure IoT Edge modülleri geliştirmek, hatalarını ayıklamak ve dağıtmak için Visual Studio 2022'yi nasıl kullanacağınız gösterilmektedir. Visual Studio 2022, C ve C# dilinde yazılmış IoT Edge modülleri için şablonlar sağlar. Desteklenen cihaz mimarileri Windows x64, Linux x64, ARM32 ve ARM64 (önizleme) içerir. Desteklenen işletim sistemleri, diller ve mimariler hakkında daha fazla bilgi için bkz . Dil ve mimari desteği.
Bu makale, iki IoT Edge geliştirme aracına yönelik adımları içerir:
- Geliştirme için tercih edilen araç olan komut satırı arabirimi (CLI)
- Visual Studio için Azure IoT Edge araçları uzantısı (bakım modunda)
Bu makale için araç seçeneğinizi belirlemek için başlangıçtaki araç seçici düğmesini kullanın. Her iki araç da şu avantajları sağlar:
- Yerel geliştirme bilgisayarınızda IoT Edge çözümlerini ve modüllerini oluşturun, düzenleyin, inşa edin, çalıştırın ve hata ayıklayın.
- Azure IoT modüllerinizi C veya C# dilinde Visual Studio geliştirmenin avantajlarıyla kodlayın.
- IoT Edge çözümünüzü Azure IoT Hub aracılığıyla IoT Edge bir cihaza dağıtın.
Önkoşullar
Bu makalede, geliştirme makineniz olarak Windows çalıştıran bir makine kullandığınız varsayılır.
Geliştirme makinenize Visual Studio 2022'yi yükleyin veya değiştirin.
Azure geliştirme veC++ ile Desktop geliştirme iş yükleri seçeneklerini belirleyin.Visual Studio Market'ten Azure IoT Edge Araçları indirip yükleyin. IoT Edge çözümünüzü tasarlayıp geliştirmek için Azure IoT Edge Araçları uzantısını kullanın. Tercih edilen geliştirme aracı, komut satırı (CLI) Azure IoT Edge Geliştirme Aracı'dır. Uzantı, Visual Studio projesini oluşturmak için kullanılan Azure IoT Edge proje şablonlarını içerir. Kullandığınız geliştirme aracından bağımsız olarak uzantının yüklü olması gerekir.
Önemli
VS 2022 için Azure IoT Edge Araçları uzantısı bakım modundadır. Tercih edilen geliştirme aracı, komut satırı (CLI) Azure IoT Edge Geliştirme Aracı'dır.
İpucu
Visual Studio 2019 kullanıyorsanız, Visual Studio marketten VS 2019 için
Azure IoT Edge Araçları'nı indirip yükleyin. Vcpkg kitaplık yöneticisini yükleme
git clone https://github.com/Microsoft/vcpkg cd vcpkg bootstrap-vcpkg.batWindows için azure-iot-sdk-c paketini yükleyin
vcpkg.exe install azure-iot-sdk-c:x64-windows vcpkg.exe --triplet x64-windows integrate installModül görüntülerinizi derlemek ve çalıştırmak için geliştirme makinenize Docker uyumlu bir kapsayıcı yönetim sistemi indirip yükleyin. Örneğin Docker Community Edition'ı yükleyin.
Linux kapsayıcıları ile modüller geliştirmek için, Docker Desktop gereksinimlerini karşılayan bir Windows bilgisayar kullanın.
Modül görüntülerinizi depolamak için bir Azure Container Registry veya Docker Hub oluşturun.
İpucu
Bulut kayıt defteri yerine prototip oluşturma ve test için yerel bir Docker kayıt defteri kullanın.
Azure CLI yükleyin.
Modülünüzü bir cihazda test etmek için en az bir IoT Edge cihazı olan etkin bir IoT Hub gerekir. Test için IoT Edge bir cihaz oluşturmak için Azure portalında veya CLI ile bir cihaz oluşturun:
Azure portalında oluşturmak en hızlı yoldur. Azure portalında IoT Hub kaynağınıza gidin. Cihaz yönetimi menüsünün altında Cihazlar'ı ve ardından Cihaz Ekle'yi seçin.
Cihaz oluştur bölümünde Device ID kullanarak cihazınızı adlandırın, IoT Edge Device'ı işaretleyin ve sol alttaki Save seçin.
yeni cihazınızın IoT Hub Device management > Devices menüsünden mevcut olduğunu onaylayın. Azure portalı aracılığıyla IoT Edge cihaz oluşturma hakkında daha fazla bilgi için bkz. Simetrik anahtarları kullanarak Linux'ta IoT Edge cihazı oluşturma ve sağlama.
CLI ile IoT Edge cihaz oluşturmak için hızlı başlangıçtaki Linux veya Windows adımlarını izleyin. Bir IoT Edge cihazını kaydetme sürecinde, bir IoT Edge cihazı oluşturursunuz.
Geliştirme makinenizde IoT Edge daemon çalıştırıyorsanız, Visual Studio'da geliştirmeye başlamadan önce EdgeHub ve EdgeAgent'ı durdurmanız gerekebilir.
Azure IoT Edge projesi oluşturma
Visual Studio'daki IoT Edge proje şablonu, IoT Edge cihazlara dağıtmak için bir çözüm oluşturur. İlk olarak bir Azure IoT Edge çözümü oluşturursunuz. Ardından, bu çözümde bir modül oluşturursunuz. Her IoT Edge çözümü birden fazla modül içerebilir.
Uyarı
Visual Studio uzantısına yönelik Azure IoT Edge araçlarında C ve C# modüllerine yönelik proje şablonları eksik. Uzantıyı kullanarak IoT Edge modülleri oluşturamıyorsanız aşağıdaki geçici çözümü kullanın.
Aşağıdaki dosyaları indirin ve listelenen Visual Studio şablon dizinine yerleştirin:
| Şablon dosyası | Dizine ekle |
|---|---|
| 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 |
Çözümümüzde üç proje oluşturacağız. Sıcaklık sensörü modülüne ek olarak EdgeAgent ve EdgeHub'ı içeren ana modül. Ardından iki IoT Edge modülü daha ekleyeceksiniz.
Önemli
Visual Studio'nin oluşturduğu IoT Edge proje yapısı, Visual Studio Code'dakiyle aynı değildir.
Şu anda Azure IoT Edge Geliştirme Aracı CLI'sı Visual Studio proje türünün oluşturulmasını desteklemez. Visual Studio projesini oluşturmak için Visual Studio IoT Edge uzantısını kullanın.
Visual Studio'da yeni bir proje oluşturun.
Yeni proje oluştur içinde Azure IoT Edge için arama yapın. IoT Edge cihazınızın platformu ve mimarisiyle eşleşen projeyi seçin ve ardından İleri öğesini seçin.
Yeni projenizi yapılandırın bölümünde projeniz için bir ad girin, konumu belirtin ve oluştur'u seçin.
Modül Ekle bölümünde geliştirmek istediğiniz modül türünü seçin. Dağıtımınıza eklemek istediğiniz mevcut bir modül varsa Mevcut modül'e tıklayın.
Modül Adı alanına modülünüz için bir ad girin. Kapsayıcı kayıt defterinizde benzersiz bir ad seçin.
Depo Url'sinde modülün görüntü deposunun adını belirtin. Visual Studio, modül adını localhost:5000/<sizinki ile> otomatik olarak doldurur. Bunu kendi kayıt defteri bilgilerinizle değiştirin. Test için yerel bir Docker kayıt defteri kullanıyorsanız localhost kullanın. Azure Container Registry kullanıyorsanız kayıt defterinizin ayarlarından oturum açma sunucusunu kullanın. Oturum açma sunucusu <kayıt defteri adı>.azurecr.io gibi görünür. Sonuçta olarak görünmesini sağlamak için yalnızca dizedeki < kısmını değiştirin.
Modülünüzü projeye eklemek için Ekle'yi seçin.
Not
Mevcut bir IoT Edge projesindeki depo URL'sini değiştirmek için module.json dosyasını açın. Depo URL'si, JSON dosyasının depo özelliğindedir.
Artık Visual Studio çözümünüzde bir IoT Edge projeniz ve bir IoT Edge modülünüz var.
Proje yapısı
Çözümünüz iki proje düzeyinde klasöre sahiptir: bir ana proje klasörü ve tek bir modül klasörü. Örneğin, AzureIotEdgeApp1 adlı bir ana proje klasörünüz ve IotEdgeModule1 adlı bir modül klasörünüz olabilir. Ana proje klasöründe dağıtım bildiriminiz bulunur.
Modül projesi klasöründe, seçtiğiniz dile bağlı olarak, kodunuz için Program.cs veya main.c adlı bir dosya bulunur. Bu klasörde modülünüzün meta verilerini açıklayan adlı module.json bir dosya da bulunur. Buradaki farklı Docker dosyaları, modülünüzü Windows veya Linux kapsayıcısı olarak oluşturmak için gereken bilgileri sağlar.
Projenizin dağıtım bildirimi
adlı deployment.debug.template.jsondağıtım bildirimini düzenleyin. Bu dosya, bir cihazda çalışan tüm modülleri ve birbirleriyle nasıl iletişim kuracaklarını tanımlayan bir IoT Edge dağıtım bildirimi şablonudur. Dağıtım bildirimleri hakkında daha fazla bilgi için bkz . Modülleri dağıtmayı ve yolları belirlemeyi öğrenin.
Bu dağıtım şablonunu açtığınızda, bu Visual Studio projesinde oluşturduğunuz özel modülün yanı sıra edgeAgent ve edgeHub çalışma zamanı modüllerinin de eklendiğini görürsünüz. SimulatedTemperatureSensor adlı dördüncü modül de dahildir. Bu varsayılan modül, modüllerinizi test etmek veya gerekli değilse silmek için kullanabileceğiniz sanal veriler oluşturur. Simülasyon sıcaklık algılayıcısının nasıl çalıştığını öğrenmek için bkz. SimulatedTemperatureSensor.csproj kaynak kodu.
IoT Edge çalışma zamanı sürümünü ayarlama
En son kararlı çalışma süresi sürümü 1.6'dır. IoT Edge çalışma zamanı sürümünü en son kararlı sürüme veya cihazlarınız için hedeflemek istediğiniz sürüme güncelleştirin.
Çözüm Gezgini'da ana projenizin adına sağ tıklayın ve ardından Set IoT Edge runtime version öğesini seçin.
Ekran görüntüsü: 'IoT Edge Çalışma Zamanı Sürümünü Ayarla' adlı menü öğesini bulma ve seçme.
IoT Edge cihazlarınızın çalıştırılan çalışma zamanı sürümünü seçmek için açılan menüyü kullanın, ardından değişikliklerinizi kaydetmek için OK seçin. Değişiklik yapılmadıysa çıkmak için İptal'i seçin.
Uzantı, en son çalışma zamanı sürümleri için bir seçim içermez. Çalışma zamanı sürümünü 1.2'den yüksek ayarlamak için deployment.debug.template.json dağıtım bildirim dosyasını açın. edgeAgent ve edgeHub sistem çalışma zamanı modülü görüntülerinin çalışma zamanı sürümünü değiştirin. Örneğin, IoT Edge çalışma zamanı sürüm 1.6'yı kullanmak için, dağıtım manifesto dosyasında aşağıdaki satırları değiştirin:
"systemModules": { "edgeAgent": { //... "image": "mcr.microsoft.com/azureiotedge-agent:1.6" //... "edgeHub": { //... "image": "mcr.microsoft.com/azureiotedge-hub:1.6", //...Sürümü değiştirdiyseniz, projenizin adına sağ tıklayarak dağıtım bildiriminizi yeniden üretin ve ardından IoT Edge için dağıtımı oluştur'u seçin. Bu, dağıtım şablonunuzu temel alan bir dağıtım bildirimi oluşturur ve bunu Visual Studio projenizin config klasörüne yerleştirir.
deployment.debug.template.json dağıtım bildirim dosyasını açın. deployment manifest hedeflenen IoT Edge cihazında yapılandırılan modülleri açıklayan bir JSON belgesidir.
edgeAgent ve edgeHub sistem çalışma zamanı modülü görüntülerinin çalışma zamanı sürümünü değiştirin. Örneğin, IoT Edge çalışma zamanı sürüm 1.6'yı kullanmak için, dağıtım manifesto dosyasında aşağıdaki satırları değiştirin:
"systemModules": { "edgeAgent": { //... "image": "mcr.microsoft.com/azureiotedge-agent:1.6", //... "edgeHub": { //... "image": "mcr.microsoft.com/azureiotedge-hub:1.6", //...
Modül altyapısı ve geliştirme seçenekleri
Yeni bir modül eklediğinizde, herhangi bir koda dokunmadan test etmeye başlayabilmeniz için bir cihaza derlenip dağıtılmaya hazır varsayılan kodla birlikte gelir. Modül kodu modül klasöründe (C#için) veya Program.cs (C için) adlı main.c bir dosyada bulunur.
Varsayılan çözüm, SimulatedTemperatureSensor modülündeki simülasyon verilerinin modülünüze yönlendirilmesi için oluşturulur ve bu da girişi alır ve ardından IoT Hub'e gönderir.
Modül şablonunu kendi kodunuzla özelleştirmeye hazır olduğunuzda Azure IoT Hub SDK'ları kullanarak güvenlik, cihaz yönetimi ve güvenilirlik gibi IoT çözümlerinin temel gereksinimlerini karşılayan modüller oluşturun.
Simülatörü kullanarak hata ayıklama
Azure IoT EdgeHub Geliştirme Aracı, yerel bir geliştirme ve hata ayıklama deneyimi sağlar. Araç, IoT Edge çalışma zamanı olmadan IoT Edge modüllerin başlatılmasına yardımcı olur; böylece yerel olarak IoT Edge modülleri ve çözümleri oluşturabilir, geliştirebilir, test edebilir, çalıştırabilir ve hatalarını ayıklayabilirsiniz. Görüntüleri kapsayıcı kayıt defterine göndermeniz ve test için bir cihaza dağıtmanız gerekmez.
Daha fazla bilgi için bkz. Azure IoT EdgeHub Geliştirme Aracı.
Visual Studio'da aracı başlatmak için:
IoT Edge cihazınızın bağlantı dizesini (IoT Hub'ınızda bulunur) Azure portalından veya Azure CLI'dan alabilirsiniz.
bağlantı dizesi almak için CLI kullanıyorsanız, "[device_id]" ve "[hub_name]" değerlerini kendi değerlerinizle değiştirerek şu komutu kullanın:
az iot hub device-identity connection-string show --device-id [device_id] --hub-name [hub_name]Visual Studio Tools menüsünden Azure IoT Edge Tools>Setup IoT Edge Simulator öğesini seçin.
bağlantı dizesi yapıştırın ve OK öğesini seçin.
Not
Sonuçlar sonraki tüm Azure IoT Edge çözümlerine otomatik olarak uygulandığından bu adımları geliştirme bilgisayarınızda yalnızca bir kez izlemeniz gerekir. Farklı bir bağlantı dizesi değiştirmeniz gerekiyorsa bu yordam yeniden izlenebilir.
Tek bir modül oluşturma ve hata ayıklama
Genellikle, birden çok modül içeren bir çözümün tamamında çalıştırmadan önce her modülü test etmek ve hatalarını ayıklamak istersiniz. IoT Edge simülatörü aracı, 53000 numaralı bağlantı noktası üzerinden ileti göndermeyi yalıtarak tek bir modül çalıştırmanızı sağlar.
Çözüm Gezgini'da modül proje klasörünü seçin ve vurgulayın (örneğin, IotEdgeModule1). Özel modülü başlangıç projesi olarak ayarlayın. Menüden Proje>Başlangıç Projesi Olarak Ayarla öğesini seçin.
F5 tuşlarına basın veya tek bir modülün IoT Edge simülatörünü başlatmak için araç çubuğu düğmesini çalıştırın. Başlangıçta 10-20 saniye sürebilir.
Modül başarıyla başlatıldıysa bir .NET Core konsol uygulaması penceresi görmeniz gerekir.
Modülü incelemek için bir kesme noktası ayarlayın.
- C# dilinde geliştiriyorsanız, ModuleBackgroundService.cs işlevinde
PipeMessage()bir kesme noktası ayarlayın. - C kullanıyorsanız main.c dosyasındaki
InputQueue1Callback()işlevinde bir kesme noktası ayarlayın.
- C# dilinde geliştiriyorsanız, ModuleBackgroundService.cs işlevinde
bir ileti göndererek modülü test edin. Tek bir modülde hata ayıklarken, simülatör iletiler için varsayılan bağlantı noktası 53000'i dinler. Modülünüze ileti göndermek için Git Bash veya WSL Bash gibi bir komut kabuğundan aşağıdaki curl komutunu çalıştırın.
curl --header "Content-Type: application/json" --request POST --data '{"inputName": "input1","data":"hello world"}' http://localhost:53000/api/v1/messagesURL'de eşleşmeyen kapatma ayracı/köşeli ayraç hatası alırsanız, bunun yerine aşağıdaki komutu deneyin:
curl --header "Content-Type: application/json" --request POST --data "{\"inputName\": \"input1\", \"data\": \"hello world\"}" http://localhost:53000/api/v1/messagesKesme noktası tetiklenmelidir. Hata ayıklayıcı çalışırken bulunan Visual Studio Locals penceresinde değişkenleri izleyebilirsiniz. Debug>Windows>Locals adresine gidin.
Bash veya kabuğunuzda
{"message":"accepted"}olarak bir onayı görmeniz gerekir..NET konsolunuzda şunu görmeniz gerekir:
IoT Hub module client initialized. Received message: 1, Body: [hello world]Hata ayıklamayı durdurmak için Ctrl + F5 tuşlarına basın veya durdur düğmesini seçin.
Birden çok modül oluşturma ve hata ayıklama
Tek bir modül geliştirmeyi tamamladıktan sonra birden çok modülle çözümün tamamını çalıştırmak ve hata ayıklamak isteyebilirsiniz. IoT Edge simülatörü aracı, ileti yönlendirme için sanal edgeHub da dahil olmak üzere dağıtım bildiriminde tanımlanan tüm modülleri çalıştırmanıza olanak tanır. Bu örnekte iki özel modül ve simülasyon sıcaklık sensörü modülünü çalıştıracaksınız. Simülasyon sıcaklık sensörü modülünden gelen iletiler her özel modüle yönlendirilir.
Çözüm Gezgini içinde, ana proje klasörüne sağ tıklayarak çözüme ikinci bir modül ekleyin. Menüde Add>Yeni IoT Edge Modülü öğesini seçin.
Menünün 'Yeni IoT Edge Modülü' ekleme seçeneğinden ekran görüntüsü. Add modulepenceresinde yeni modülünüze bir ad verin ve depo URL'sininlocalhost:5000bölümünü daha önce yaptığınız gibi Azure Container Registry oturum açma sunucunuzla değiştirin.Dosya
deployment.debug.template.jsonaçarak modüller bölümüne yeni modülün eklendiğini görebilirsiniz. Yeni modülden IoT Hub ileti göndermek içinEdgeHubbölümüne de yeni bir yol eklendi. Simülasyon sıcaklık sensöründen yeni modüle veri göndermek için aşağıdaki satırıylaJSONbaşka bir yol ekleyin.<NewModuleName>öğesini (iki yerde) kendi modül adınızla değiştirin."sensorTo<NewModuleName>": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/<NewModuleName>/inputs/input1\")"Ana projeye (örneğin AzureIotEdgeApp1) sağ tıklayın ve StartUp Projesi Olarak Ayarla'yı seçin. Ana projeyi başlangıç projesi olarak ayarlayarak çözümdeki tüm modüller çalıştırılır. Bu, çözüme eklediğiniz her iki modülü, simülasyon sıcaklık sensörü modülünü ve sanal Edge hub'ını içerir.
Çözümü çalıştırmak için F5 tuşuna basın veya araç çubuğunu çalıştır düğmesini seçin. Başlangıçta 10-20 saniye sürebilir. Bu proje için ihtiyacınız olan bağlantı noktasını bağlayacak başka Docker kapsayıcılarınız olmadığından emin olun.
Her modül için bir tane .NET Core konsol uygulaması penceresinin göründüğünü görmeniz gerekir.
Modülleri incelemek için bir kesme noktası ayarlayın.
- C# dilinde geliştiriyorsanız, ModuleBackgroundService.cs işlevinde
PipeMessage()bir kesme noktası ayarlayın. - C kullanıyorsanız main.c dosyasındaki
InputQueue1Callback()işlevinde bir kesme noktası ayarlayın.
- C# dilinde geliştiriyorsanız, ModuleBackgroundService.cs işlevinde
Her modülde kesme noktaları oluşturun ve aynı anda birden çok modülü çalıştırmak ve hatalarını ayıklamak için F5 tuşuna basın. Her pencere farklı bir modülü temsil eden birden çok .NET Core konsol uygulaması penceresi görmeniz gerekir.
Hata ayıklamayı durdurmak için Ctrl + F5 tuşlarına basın veya durdur düğmesini seçin.
Görüntüleri oluşturma ve kayıt deposuna gönderme
Modülünüzü geliştirip hatalarını ayıkladıktan sonra, modül görüntüsünü derleyip Azure Container Registry gönderme. Ardından modülü IoT Edge cihazınıza dağıtın.
Ana IoT Edge projesini tek tek modüllerden biri değil, başlangıç projesi olarak ayarlayın.
Modül görüntüleriniz için derlemek üzere yapılandırma olarak Hata Ayıkla veya Serbest Bırak'ı seçin.
Not
Debug'yi seçtiğinizde Visual Studio Docker görüntüleri oluşturmak için
Dockerfile.(amd64|windows-amd64).debugkullanır. Bu, kapsayıcı görüntünüzdeki .NET Core komut satırı hata ayıklayıcısı VSDBG'yi içerir. Üretime hazır IoT Edge modülleri için VSDBG olmadan kullananDockerfile.(amd64|windows-amd64)yapılandırmasını kullanın.Azure Container Registry (ACR) gibi özel bir kayıt defteri kullanıyorsanız oturum açmak için aşağıdaki Docker komutunu kullanın. Azure portalındaki kayıt defterinizin Access anahtarları sayfasından kullanıcı adını ve parolayı alın.
docker login <ACR login server>Azure Container Registry oturum açma bilgilerini
deployment.debug.template.jsondosyasındaki çalışma zamanı ayarlarına ekleyin. Kayıt defteri kimlik bilgilerinizi dosyanıza.env(en güvenli) veya doğrudan dosyanızadeployment.debug.template.jsonekleyebilirsiniz.Dosyanıza
.envkimlik bilgileri ekleyin:Çözüm Gezgini'da Tüm Dosyaları Göster araç çubuğu düğmesini seçin. Dosya
.envgörüntülenir..envdosyanıza Azure Container Registry kullanıcı adınızı ve parolanızı ekleyin. Bu kimlik bilgilerini Azure portalındaki Azure Container Registry Access Keys sayfasında bulabilirsiniz.
DEFAULT_RT_IMAGE=1.6 CONTAINER_REGISTRY_USERNAME_myregistry=<my-registry-name> CONTAINER_REGISTRY_PASSWORD_myregistry=<my-registry-password>Kimlik bilgilerini doğrudan deployment.debug.template.json ekleme
Kimlik bilgilerinizi doğrudan dağıtım şablonunuza eklemek istiyorsanız, yer tutucuları ACR yönetici kullanıcı adınız, parolanız ve kayıt defteri adınızla değiştirin.
"settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "registry1": { "username": "<username>", "password": "<password>", "address": "<registry name>.azurecr.io" } } }Not
Bu makalede, geliştirme ve test senaryoları için uygun olan Azure Container Registry için yönetici oturum açma kimlik bilgileri kullanılır. Üretim senaryolarına hazır olduğunuzda, hizmet sorumluları gibi en az ayrıcalıklı bir kimlik doğrulama seçeneği öneririz. Daha fazla bilgi için bkz. Kapsayıcı kayıt defterinize erişimi yönetme.
Yerel kayıt defteri kullanıyorsanız , yerel bir kayıt defteri çalıştırın.
Son olarak, Çözüm Gezgini içinde ana proje klasörüne sağ tıklayın ve Build ve Push IoT Edge Modules'i seçerek her modül için Docker görüntüsünü derleyip gönderebilirsiniz. Bu işlem bir dakika sürebilir. Visual Studio Çıkış konsolunuzda
Finished Build and Push IoT Edge Modules.gördüğünüzde işiniz biter.
Çözümü dağıt
Modül görüntülerinizi derleyip Azure Container Registry gönderin, çözümü IoT Edge cihazınıza dağıtın. Bu öğreticide zaten bir dağıtım bildirimi şablonunuz var. Bu bildirimden bir dağıtım bildirimi oluşturun, ardından modüllerinizi Azure'daki IoT Edge cihazınıza dağıtmak için bir Azure CLI komutu kullanın.
Visual Studio Çözüm Gezgini'da ana projenize sağ tıklayın ve IoT Edge için Dağıtım Oluştur'u seçin.
Yerel Visual Studio ana proje klasörünüze gidin ve
configklasörüne bakın. Dosya yolu şöyle görünebilir:C:\Users\<YOUR-USER-NAME>\source\repos\<YOUR-IOT-EDGE-PROJECT-NAME>\config. Buradadeployment.amd64.debug.jsongibi oluşturulan dağıtım bildirimini bulabilirsiniz.Dosyanızı
deployment.amd64.debug.jsonaçın ve şema sürümününedgeHub1.2 olarak ayarlandığını onaylayın."$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 } } }İpucu
Visual Studio 2022 için dağıtım şablonu 1.2 şema sürümünü gerektirir. 1.1 veya 1.0 olması gerekiyorsa, dağıtım oluşturulana kadar bekleyin (bunu
deployment.debug.template.jsoniçinde değiştirmeyin). Dağıtım oluşturmak varsayılan olarak bir 1.2 şeması oluşturur. Ancak gerekirse, Azure'a dağıtmadan önce oluşturulan bildirimideployment.amd64.debug.jsonel ile değiştirebilirsiniz.Önemli
IoT Edge cihazınız dağıtıldıktan sonra şu anda şema sürümü 1.2 (sürüm 1.1 uygun) ile Azure portalında düzgün görüntülenmez. Bununla birlikte, cihazınız IoT Hub bağlı olduğundan ve istediğiniz zaman Azure CLI kullanılarak iletişim kuraabildiği için bu durum cihazınızı etkilemez.
Şimdi bildirimimizi bir Azure CLI komutuyla dağıtalım. Visual Studio Geldirici Komut İstemi açın ve config dizinine geçin.
cd configIoT Edge cihazınızın bildirimini IoT Hub dağıtın. komutu, cihazı çözümünüzde geliştirilen modülleri kullanacak şekilde yapılandırıyor. Dağıtım bildirimi önceki adımda oluşturulmuş ve yapılandırma klasöründe depolanmış. Yapılandırma klasörünüzden aşağıdaki dağıtım komutunu yürütür. ,
[device id]ve[hub name]değerlerini[file path]değerlerinizle değiştirin. IoT Edge cihaz kimliği IoT Hub'da mevcut değilse, oluşturulması gerekir.az iot edge set-modules --device-id [device id] --hub-name [hub name] --content [file path]Örneğin, komutunuz şu şekilde görünebilir:
az iot edge set-modules --device-id my-device-name --hub-name my-iot-hub-name --content deployment.amd64.debug.jsonKomutu çalıştırdıktan sonra, komut isteminizde JSON'da dağıtım onayının yazdırıldığını görürsünüz.
Docker imajı oluştur
Modülünüzü geliştirdikten sonra, IoT Edge cihazınıza dağıtım için kapsayıcı kayıt defterinde depolamak üzere modül görüntüsünü oluşturun.
Modül Docker görüntüsünü oluşturmak için modülün Dockerfile dosyasını kullanın.
docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>"
Örneğin, komut kabuğunuz proje dizininizdeyse ve modülünüzün adı IotEdgeModule1 ise, yerel kayıt defteri veya Azure kapsayıcı kayıt defteri için görüntüyü oluşturmak için aşağıdaki komutları kullanın:
# 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"
Gönderme modülü Docker görüntüsü
Modül görüntünüzü yerel kayıt defterine veya kapsayıcı kayıt defterine gönderin.
docker push <ImageName>
Örneğin:
# 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
Modülü IoT Edge cihazına dağıtın.
Visual Studio'da ana projede deployment.debug.template.json dağıtım bildirim dosyasını açın.
deployment manifest hedeflenen IoT Edge cihazında yapılandırılacak modülleri açıklayan bir JSON belgesidir. Dağıtımdan önce Azure Container Registry kimlik bilgilerinizi, modül görüntülerinizi ve uygun createOptions değerlerini güncelleştirmeniz gerekir. createOption değerleri hakkında daha fazla bilgi için bkz. IoT Edge modülleri için kapsayıcı oluşturma seçeneklerini yapılandırma.
Modül görüntünüzü depolamak için bir Azure Container Registry kullanıyorsanız kimlik bilgilerinizi edgeAgent ayarlarına deployment.debug.template.json eklemeniz gerekir. Örneğin,
"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" } } } }, //...Görüntü özelliği değerini kayıt defterine iletmiş olduğunuz modül görüntüsü adıyla değiştirin. Örneğin,
myacr.azurecr.io/iotedgemodule1:0.0.1-amd64etiketine sahip özel modül IotEdgeModule1 için bir görüntü gönderdiyseniz, görüntü özelliği değerini etiket değeriyle değiştirin.createOptions değerini dağıtım şablonundaki her sistem ve özel modül için dizeli içerikle ekleyin veya değiştirin.
Örneğin, IotEdgeModule1'in görüntüsü ve createOptions ayarları aşağıdakine benzer olacaktır:
"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\"}]}}}" }
modülleri Azure IoT Hub dağıtmak için IoT Edge Azure CLI set-modules komutunu kullanın. Örneğin, deployment.debug.amd64.json dosyasında tanımlanan modülleri IoT Edge cihazı my-device için IoT Hub my-iot-hub adresine dağıtmak için aşağıdaki komutu çalıştırın:
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>"
İpucu
IoT Hub bağlantı dizenizi Azure portalında Azure IoT Hub >Güvenlik ayarları>Paylaşılan erişim politikaları altında bulun.
Cihazınıza dağıtımı onaylayın
IoT Edge modüllerinizin Azure dağıtılıp dağıtılmadığını denetlemek için cihazınızda (veya sanal makinede), örneğin SSH veya Azure Bastion aracılığıyla oturum açın ve IoT Edge liste komutunu çalıştırın.
iotedge list
Cihazınızda veya sanal makinenizde çalışan modüllerinizin listesini görmeniz gerekir.
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.6
edgeHub running Up a minute mcr.microsoft.com/azureiotedge-hub:1.6
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
Docker Remote SSH kullanarak hata ayıklama
Docker ve Moby altyapıları, Visual Studio kullanarak uzak bir cihaza kod eklemenize ve hata ayıklamanıza olanak sağlayan kapsayıcılara SSH bağlantılarını destekler.
Docker'a uzaktan bağlanmak için kök düzeyinde ayrıcalıklar gerekir. Uzak cihazdaki Docker daemon'a bağlanmaya izin vermek için Docker'ı kök olmayan kullanıcı olarak yönetme sayfasındaki adımları izleyin. Hata ayıklamayı bitirdiğinizde, kullanıcınızı Docker grubundan kaldırmak isteyebilirsiniz.
Visual Studio'yu kullanarak uzak cihazınızdaki bir Docker kapsayıcısı üzerinde çalışan bir sürece Bağlanmak için adımları izleyin.
Visual Studio'da özel modülünüzde kesme noktaları ayarlayın.
Bir kesme noktasına isabet edildiğinde değişkenleri inceleyebilir, kodda ilerleyebilir ve modülünüzde hata ayıklayabilirsiniz.
Sonraki adımlar
IoT Edge cihazlarınız için özel modüller geliştirmek için Azure IoT Hub SDK'lerini anlayın ve kullanın.
Belirli bir IoT Edge cihazın cihazdan buluta (D2C) iletilerini izlemeye başlamak için IoT Edge Cihazlarını İzleme Öğreticisi'ni gözden geçirin.