öğretici: Windows kapsayıcıları kullanarak IoT Edge modülleri geliştirme
Uygulama hedefi:
IoT Edge 1,1
IoT Edge çalıştıran Windows cihazlara kod geliştirmek ve dağıtmak için Visual Studio kullanın.
Not
IoT Edge 1,1 lts, Windows kapsayıcıları destekleyen son sürüm kanaldır. sürüm 1,2 ' den başlayarak Windows kapsayıcılar desteklenmez. Windows cihazlarda IoT Edge çalıştırmak için Windows Linux için IoT Edge kullanmayı veya taşımayı düşünün.
Bu öğretici, bir IoT Edge cihazına kendi kodunuzu geliştirme ve dağıtma konusunda size yol gösterir. Bu öğretici, belirli programlama dilleri veya Azure hizmetleri hakkında daha ayrıntılı bilgi sağlayan diğer öğreticiler için faydalı bir önkoşuldur.
bu öğretici, bir Windows cihazına C# modülünü dağıtma örneğini kullanır. En yaygın geliştirme senaryosu olduğundan bu örnek seçildi. Farklı bir dilde geliştirme veya Azure hizmetlerini modül olarak dağıtmaya çalışıyorsanız, bu öğretici geliştirme araçları hakkında bilgi edinmek için yine de yararlı olacaktır. Geliştirme kavramlarını anladıktan sonra, ayrıntıları görmek için tercih ettiğiniz dili veya Azure hizmetini seçebilirsiniz.
Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:
- Geliştirme makinenizi ayarlayın.
- yeni bir proje oluşturmak için Visual Studio IoT Edge araçları kullanın.
- Projenizi kapsayıcı olarak derleyin ve Azure Container Registry 'de saklayın.
- Kodunuzu bir IoT Edge cihazına dağıtın.
Önkoşullar
Geliştirme makinesi:
- 1809 güncelleştirmesi veya daha yeni bir sürümü ile Windows 10.
- Geliştirme tercihlerinize bağlı olarak kendi bilgisayarınızı veya bir sanal makineyi kullanabilirsiniz.
- Geliştirme makinenizin iç içe sanallaştırmayı desteklediğinden emin olun. Bu özellik, bir sonraki bölümde yüklediğiniz bir kapsayıcı altyapısını çalıştırmak için gereklidir.
- Git'i yükler.
Windows bir Azure IoT Edge cihazı:
- Windows kapsayıcılarla Azure IoT Edge yükleyip yönetin.
- Geliştirme makinenizde IoT Edge çalıştırmanızı öneririz, bunun yerine mümkünse ayrı bir cihaz kullanın. Geliştirme makinesi ve IoT Edge cihaz arasındaki bu ayrım, doğru bir dağıtım senaryosunu daha doğru yansıtmıştır ve farklı kavramları düz tutmaya yardımcı olur.
Bulut kaynakları:
- Azure 'da ücretsiz veya Standart katmanlı IoT Hub 'ı .
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Önemli kavramlar
Bu öğreticide IoT Edge modülünün geliştirilmesi gösterilmektedir. Bir IoT Edge modülü veya bazen yalnızca Short için bir Modül , yürütülebilir kod içeren bir kapsayıcıdır. Bir IoT Edge cihazına bir veya daha fazla modül dağıtabilirsiniz. Modüller, algılayıcılardan veri almak, veri analizi veya veri temizleme işlemleri gerçekleştirmek veya bir IoT Hub 'ına ileti göndermek gibi belirli görevleri gerçekleştirir. Daha fazla bilgi için bkz. Azure IoT Edge modüllerini anlama.
IoT Edge modüller geliştirirken, geliştirme makinesi ve modülün sonunda dağıtıldığı hedef IoT Edge cihaz arasındaki farkı anlamak önemlidir. Modül kodunuzu tutmak için oluşturduğunuz kapsayıcı, hedef cihazın işletim SISTEMI (OS) ile aynı olmalıdır. Windows kapsayıcı geliştirmesi için, Windows kapsayıcıları yalnızca Windows işletim sistemlerinde çalıştığı için bu kavram daha basittir. ancak örneğin Windows geliştirme makinenizi Linux IoT Edge cihazları için modüller oluşturmak üzere kullanabilirsiniz. Bu senaryoda, geliştirme makinenizin Linux kapsayıcıları çalıştırdığından emin olmanız gerekir. Bu öğreticiye giderek, geliştirme MAKINESI işletim sistemi ve kapsayıcı işletim sistemi arasındaki farkı aklınızda bulundurun.
bu öğretici, IoT Edge çalıştıran Windows cihazları hedefler. Windows IoT Edge cihazlar Windows kapsayıcıları kullanır. bu öğreticinin kullanması için Windows cihazları geliştirmek üzere Visual Studio kullanmanızı öneririz. iki araç arasındaki destekde farklılıklar olsa da Visual Studio Code de kullanabilirsiniz.
aşağıdaki tabloda, Visual Studio Code ve Visual Studio Windows kapsayıcıları için desteklenen geliştirme senaryoları listelenmiştir.
| Visual Studio Code | Visual Studio 2017/2019 | |
|---|---|---|
| Azure hizmetleri | Azure İşlevleri Azure Stream Analytics |
|
| Diller | C# (hata ayıklama desteklenmiyor) | C C# |
| Daha fazla bilgi | Visual Studio Code için Azure IoT Edge | Visual Studio 2017 Azure IoT Edge Tools Visual Studio 2019 Azure IoT Edge Tools |
Kapsayıcı altyapısını yükler
IoT Edge modüller kapsayıcı olarak paketlenir, bu nedenle kapsayıcıları derlemek ve yönetmek için geliştirme makinenizde bir kapsayıcı altyapısına ihtiyacınız vardır. Bir kapsayıcı altyapısı olarak çok sayıda özelliği ve popülerliği nedeniyle, Docker Desktop 'ı geliştirme için kullanmanızı öneririz. Windows bilgisayarda docker Desktop ile, farklı türlerde IoT Edge cihazları için kolayca modül geliştirebilmeniz için Linux kapsayıcıları ve Windows kapsayıcıları arasında geçiş yapabilirsiniz.
Geliştirme makinenize yüklemek için Docker belgelerini kullanın:
Docker Desktop for Windows'u yükleme
- Windows için docker Desktop 'ı yüklediğinizde, Linux veya Windows kapsayıcıları kullanmak isteyip istemediğiniz sorulur. bu öğretici için Windows kapsayıcıları kullanın. daha fazla bilgi için bkz. Windows ve Linux kapsayıcıları arasında geçiş.
Visual Studio ve araçları ayarlama
Visual Studio ıot uzantıları IoT Edge modülleri geliştirmenize yardımcı olur. Bu uzantılar proje şablonları sağlar, dağıtım bildiriminin oluşturulmasını otomatik hale getirir ve IoT Edge cihazları izlemenize ve yönetmenize olanak tanır. bu bölümde Visual Studio ve IoT Edge uzantısını yüklersiniz ve sonra Visual Studio içinden IoT Hub kaynaklarını yönetmek üzere Azure hesabınızı ayarlarsınız.
bu öğreticide Visual Studio 2019 için geliştirme adımları öğretilir. Visual Studio 2017 (sürüm 15,7 veya üzeri) kullanıyorsanız, adımlar benzerdir. Visual Studio Code kullanmayı tercih ediyorsanız, Azure IoT Edge için modülleri geliştirmek ve hata ayıklamak için Visual Studio Code kullanmabölümündeki yönergelere bakın.
geliştirme makinenizde 2019 Visual Studio hazırlayın.
geliştirme makinenizde zaten Visual Studio yoksa, aşağıdaki iş yükleri ile Visual Studio 2019 ' i yükledikten sonra:
- Azure geliştirme
- C++ ile masaüstü geliştirme
- .NET Core platformlar arası geliştirme
geliştirme makinenizde zaten 2019 Visual Studio varsa, gerekli iş yüklerini eklemek için Visual Studio değiştir bölümündeki adımları uygulayın.
Visual Studio 2019 için Azure IoT Edge Tools uzantısını indirin ve yükleyin.
Visual Studio 2017 (sürüm 15,7 veya üzeri) kullanıyorsanız, Visual Studio 2017 için Azure IoT Edge Toolsindirin ve yükleyin.
yüklemelerinizi tamamladığınızda Visual Studio 2019 ' i açın ve kod olmadan devam et' i seçin.
-
Bulut Gezginini görüntüle ' yi seçin.
Bulut Gezgini 'nde profil simgesini seçin ve henüz oturum açmadıysanız Azure hesabınızda oturum açın.
Oturum açtıktan sonra Azure abonelikleriniz listelenir. IoT Hub 'ınızı içeren aboneliği genişletin.
Aboneliğiniz altında IoT hub 'larınızı ve IoT Hub 'ınızı genişletin. IoT cihazlarınızın bir listesini görmeniz ve bu Gezgini kullanarak bunları yönetebilmeniz gerekir.

Kapsayıcı kayıt defteri oluşturma
Bu öğreticide, Azure IoT araçları uzantısını kullanarak bir modül oluşturup dosyalardan bir kapsayıcı görüntüsü oluşturursunuz. Ardından bu görüntüyü, görüntülerinizin depolandığı ve yönetildiği kayıt defterine gönderirsiniz. Son olarak, görüntünüzü IoT Edge cihazınızda çalıştırmak üzere kayıt defterinizden dağıtırsınız.
Kapsayıcı görüntülerinizi tutmak için Docker ile uyumlu herhangi bir kayıt defteri kullanabilirsiniz. İki popüler Docker kayıt defteri hizmeti Azure Container Registry ve Docker Hub. Bu öğreticide Azure Container Registry kullanılır.
Zaten bir kapsayıcı kayıt defteriniz yoksa, Azure 'da yeni bir tane oluşturmak için aşağıdaki adımları izleyin:
Azure portalında, Kaynak oluştur > Kapsayıcılar > Container Registry'yi seçin.
Kapsayıcı kayıt defterinizi oluşturmak için aşağıdaki değerleri girin:
Alan Değer Abonelik Açılan listeden bir abonelik seçin. Kaynak grubu IoT Edge hızlı başlangıçlarında ve öğreticilerinde oluşturduğunuz tüm test kaynakları için aynı kaynak grubunu kullanmanızı öneririz. Örneğin, IoTEdgeResources. Kayıt defteri adı Benzersiz bir ad girin. Konum Size yakın bir konum seçin. SKU Temel'i seçin. Oluştur’u seçin.
Kapsayıcı kayıt defteriniz oluşturulduktan sonra, bu dosyaya gidin ve sol bölmeden Ayarlar' ın altında bulunan menüden erişim tuşları ' nı seçin.
Yönetici kullanıcının kapsayıcı kayıt defteriniz için Kullanıcı adını ve parolayı görüntülemesini etkinleştirmek üzere tıklayın.
Oturum açma sunucusu, Kullanıcı adı ve parola değerlerini kopyalayın ve uygun bir yere kaydedin. Bu değerleri, kapsayıcı kayıt defterine erişim sağlamak için bu öğreticide kullanın.

Yeni bir modül projesi oluştur
Azure IoT Edge Tools uzantısı, Visual Studio desteklenen tüm IoT Edge modül dilleri için proje şablonları sağlar. Bu şablonlar, IoT Edge test etmek için çalışan bir modül dağıtmak için ihtiyacınız olan tüm dosya ve koda sahiptir veya şablonu kendi iş mantığınızla özelleştirmek için bir başlangıç noktası sağlar.
dosya > yeni > Project seçin...
yeni proje penceresinde, IoT Edge arayın ve Azure IoT Edge (Windows amd64) projesi seçin. İleri’ye tıklayın.

Yeni projeyi yapılandırın penceresinde, projeyi ve çözümü CSharpTutorialApp gibi açıklayıcı bir şekilde yeniden adlandırın. Projeyi oluşturmak için Oluştur ' a tıklayın.

Modül Ekle penceresinde, projenizi aşağıdaki değerlerle yapılandırın:
Alan Değer Visual Studio Şablonlarını C# modülünü seçin. Modül Adı Varsayılan IotEdgeModule1 kabul edin. Depo URL 'Si Görüntü deposu, kapsayıcı kayıt defterinizin adını ve kapsayıcı görüntünüzün adını içerir. Kapsayıcı resminiz modül proje adı değerinden önceden doldurulur. Localhost: 5000 ' i Azure Container kayıt defterinizin oturum açma sunucusu değeriyle değiştirin. Oturum açma sunucusu değerini, Azure portal kapsayıcı kayıt defterinizin genel bakış sayfasından alabilirsiniz.
Son görüntü deposu <registry name> . azurecr.io/iotedgemodule1 gibi görünüyor.
Modülü oluşturmak için Ekle ' yi seçin.
yeni projeniz Visual Studio penceresine yüklendikten sonra, oluşturduğu dosyaları öğrenmek için biraz zaman ayırın:
- CSharpTutorialApp adlı bir IoT Edge projesi.
- Modüller klasörü, projeye dahil olan modüllerin işaretçilerini içerir. Bu durumda, yalnızca IotEdgeModule1 olmalıdır.
- Gizli . env dosyası, kapsayıcı kayıt defterinizin kimlik bilgilerini tutar. Bu kimlik bilgileri, kapsayıcı görüntülerini çekmek için erişim sağlamak üzere IoT Edge cihazınızdan paylaşılır.
- Deployment . Template. JSON dosyası bir dağıtım bildirimi oluşturmanıza yardımcı olacak bir şablondur. Dağıtım bildirimi , bir cihaza hangi modüllerin dağıtılmasını, bunların nasıl yapılandırılacağını ve bunların birbirleriyle ve buluttan nasıl iletişim kurabildiğini tanımlayan bir dosyadır.
İpucu
Kayıt defteri bilgileri bölümünde, adres, çözümü oluşturduğunuzda verdiğiniz bilgilerden tekrar doldurulur. Ancak,. env dosyasında depolanan Kullanıcı adı ve parola başvuru değişkenleri. Bu,. env dosyası git yoksayıldı, ancak dağıtım şablonu olmadığı için güvenlik içindir.
- IotEdgeModule1 adlı bir IoT Edge modülü projesi.
- Program. cs dosyası, proje şablonuyla birlikte gelen varsayılan C# modül kodunu içerir. Varsayılan modül bir kaynaktan giriş alır ve IoT Hub buna karşı geçirir.
- Module. JSON dosyası, tam görüntü deposu, görüntü sürümü ve desteklenen her platformda kullanılacak Dockerfile dahil olmak üzere modülle ilgili ayrıntıları tutar.
IoT Edge çalışma zamanı sürümünü ayarla
IoT Edge uzantısı, dağıtım varlıklarınızı oluşturduğunda IoT Edge çalışma zamanının en son kararlı sürümünü varsayılan olarak alır. Şu anda en son kararlı sürüm 1,2 sürümüdür.
Windows kapsayıcılar yalnızca 1,1 uzun süreli destek sürümünde veya önceki 1,0 sürümünde desteklenir. Windows kapsayıcıları kullanarak cihazlarda modül geliştirmek için, Visual Studio IoT Edge çalışma zamanı sürümünü bu cihazlardaki IoT Edge sürümüyle eşleşecek şekilde güncelleştirin.
Çözüm Gezgini, projenizin adına sağ tıklayın ve IoT Edge çalışma zamanı sürümünü ayarla' yı seçin.
Açılır menüyü kullanarak IoT Edge cihazlarınızın çalıştığı çalışma zamanı sürümünü seçin ve ardından değişikliklerinizi kaydetmek için Tamam ' ı seçin.
Dağıtım bildiriminizi yeni çalışma zamanı sürümü ile yeniden oluşturun. Projenizin adına sağ tıklayın ve IoT Edge için dağıtım oluştur' u seçin.
IoT Edge aracısına kayıt defteri kimlik bilgilerinizi girin
IoT Edge çalışma zamanının kapsayıcı görüntülerinizi IoT Edge cihaza çekmek için kayıt defteri kimlik bilgileriniz gerekir. IoT Edge uzantısı, Azure 'dan kapsayıcı kayıt defteri bilgilerinizi çekmeyi ve dağıtım şablonunda doldurmaya çalışır.
Modül çözümünüzde Deployment. Template. JSON dosyasını açın.
$EdgeAgent istenen özelliklerde Registrycredentials özelliğini bulun. Kayıt defteri adresiniz, projeyi oluştururken verdiğiniz bilgilerden bir daha olmalıdır ve sonra Kullanıcı adı ve parola alanları değişken adlarını içermelidir. Örneğin:
"registryCredentials": { "<registry name>": { "username": "$CONTAINER_REGISTRY_USERNAME_<registry name>", "password": "$CONTAINER_REGISTRY_PASSWORD_<registry name>", "address": "<registry name>.azurecr.io" } }Modül çözümünüzde . env dosyasını açın. (Çözüm Gezgini varsayılan olarak gizlidir, bu nedenle görüntülemek için tüm dosyaları göster düğmesini seçmeniz gerekebilir.)
Azure Container Registry 'nizden kopyaladığınız Kullanıcı adı ve parola değerlerini ekleyin.
Değişikliklerinizi. env dosyasına kaydedin.
Not
Bu öğretici, geliştirme ve test senaryoları için uygun olan Azure Container Registry için yönetici oturum açma kimlik bilgilerini kullanır. Üretim senaryolarına hazırsanız, hizmet sorumluları gibi en az ayrıcalıklı kimlik doğrulama seçeneği önerilir. Daha fazla bilgi için bkz. kapsayıcı Kayıt defterinize erişimi yönetme.
Örnek kodu gözden geçirme
Oluşturduğunuz çözüm şablonu, bir IoT Edge modülü için örnek kod içerir. Bu örnek modül yalnızca iletileri alır ve ardından üzerine geçirir. Ardışık düzen işlevselliği, modüllerin birbirleriyle iletişim kurduğu IoT Edge önemli bir kavramı gösterir.
Her modülün kodunda birden çok giriş ve Çıkış kuyruğu olabilir. Cihazda çalışan IoT Edge hub 'ı bir modülün çıktısından gelen iletileri bir veya daha fazla modülün girdisine yönlendirir. Giriş ve çıkışları bildirmek için özel kod diller arasında farklılık gösterir, ancak kavram tüm modüller arasında aynıdır. Modüller arasında yönlendirme hakkında daha fazla bilgi için bkz. yolları bildirme.
Proje şablonuyla birlikte gelen örnek C# kodu, .NET için IoT Hub SDK 'sının Moduleclient sınıfını kullanır.
Program. cs dosyasında Setınputmessagehandlerasync metodunu bulun.
Setınputmessagehandlerasync yöntemi gelen iletileri almak için bir giriş kuyruğu ayarlar. Bu yöntemi gözden geçirin ve input1 adlı bir giriş kuyruğunu nasıl Başlatan hakkında bilgi alın.

Ardından SendEventAsync yöntemini bulun.
SendEventAsync yöntemi alınan iletileri işler ve bunları iletmek için bir çıkış kuyruğu ayarlar. Bu yöntemi gözden geçirin ve output1 adlı bir çıkış kuyruğu başlattığında bkz.

Deployment. Template. JSON dosyasını açın.
$EdgeAgent istenen özelliklerin modüller özelliğini bulun.
Burada listelenen iki modül olmalıdır. Bunlardan biri, modüllerinizi test etmek için kullanabileceğiniz sanal sıcaklık verileri sağlamak üzere varsayılan olarak tüm şablonlara dahil olan SimulatedTemperatureSensor modülüdür. Diğeri, bu projenin bir parçası olarak oluşturduğunuz IotEdgeModule1 modülüdür.
Bu modüller özelliği, cihazınıza veya cihazlarınıza dağıtımda hangi modüllerin dahil edileceğini bildirir.
$EdgeHub istenen özelliklerin rotalar özelliğini bulun.
IoT Edge hub modülünün işlevlerinden biri, iletileri bir dağıtımdaki tüm modüller arasında yönlendirmekte. Rotalar özelliğindeki değerleri gözden geçirin. Bir yol, IotEdgeModule1ToIoTHub, * IotEdgeModule1 modülündeki herhangi bir çıkış sırasından gelen herhangi bir iletiyi dahil etmek için bir joker karakter (* _) kullanır. Bu iletiler, IoT Hub belirten ayrılmış bir ad olan _ $ yukarı akış * ' a gider. Diğer yol, sensorToIotEdgeModule1, SimulatedTemperatureSensor modülünden gelen iletileri alır ve IotEdgeModule1 modülünün input1 giriş kuyruğuna yönlendirir.

Çözümünüzü derleyin ve gönderin
Bazı önemli dağıtım kavramlarını anlamak için modül kodunu ve Dağıtım şablonunu gözden geçirdiniz. Şimdi IotEdgeModule1 kapsayıcı görüntüsünü oluşturmak ve kapsayıcı Kayıt defterinize göndermek için hazır olursunuz. Visual Studio için ıot araçları uzantısı ile bu adım, şablon dosyasındaki bilgileri ve çözüm dosyalarından modül bilgilerini temel alan dağıtım bildirimini de oluşturur.
Docker 'da oturum açın
Kapsayıcı görüntünüzü kayıt defterinde depolanacak şekilde gönderebilmesi için, kapsayıcı kayıt defteri kimlik bilgilerinizi geliştirme makinenizde Docker 'a sağlayın.
PowerShell 'i veya bir komut istemi 'ni açın.
Kayıt defterini oluşturduktan sonra kaydettiğiniz Azure Container Registry kimlik bilgileriyle Docker 'da oturum açın.
docker login -u <ACR username> -p <ACR password> <ACR login server>Kullanımını öneren bir güvenlik uyarısı alabilirsiniz
--password-stdin. Bu en iyi uygulama, üretim senaryolarında önerilse de, Bu öğreticinin kapsamı dışındadır. Daha fazla bilgi için bkz. Docker oturum açma başvurusu.
Derleme ve gönderme
Geliştirme makinenizin artık kapsayıcı Kayıt defterinize erişimi vardır ve IoT Edge cihazlarınız da çok fazla olur. Proje kodunu kapsayıcı görüntüsüne dönüştürebilirsiniz.
CSharpTutorialApp proje klasörüne sağ tıklayın ve Derleme ve Anında İlerle modüllerini IoT Edge seçin.

Derleme ve itme komutu üç işlem başlatır. İlk olarak, çözümde dağıtım şablonunda ve diğer çözüm dosyalarında yerleşik olarak yer alan tam dağıtım bildirimini tutan config adlı yeni bir klasör oluşturur. İkincisi, kapsayıcı
docker buildgörüntüsünü hedef mimariniz için uygun dockerfile'ı temel alarak oluşturmak için çalışır. Ardından, görüntüdocker pushdeposunu kapsayıcı kayıt defterinize itmek için çalışır.Bu işlem ilk kez birkaç dakika sürebilir, ancak komutları bir sonraki çalıştırma işlemi daha hızlıdır.
Yeni oluşturulan config klasöründe deployment.windows-amd64.json dosyasını açın. (Yapılandırma klasörü, Çözüm Gezgini Visual Studio. Bu durumda, görev çubuğundaki Tüm dosyaları göster simgesini Çözüm Gezgini seçin.)
IotEdgeModule1 bölümünün görüntü parametresini bulun. Görüntünün module.json dosyasındaki ad, sürüm ve mimari etiketine sahip tam görüntü deposunu içerdiğine dikkat edin.
IotEdgeModule1 klasöründe module.json dosyasını açın.
Modül görüntüsünün sürüm numarasını değiştirme. (sürüm, $schema sürümü değil.) Örneğin, modül kodunda küçük bir düzeltme yapmış gibi düzeltme eki sürüm numarasını 0.0.2'ye artırabilirsiniz.
İpucu
Modül sürümleri sürüm denetimi sağlar ve güncelleştirmeleri üretime dağıtmadan önce değişiklikleri küçük bir cihaz kümesinde test edersiniz. Modül sürümünü bina ve itmeden önce artıramıyorsanız kapsayıcı kayıt defterinizin üzerine yazmanız gerekir.
Module.json dosyasına değişikliklerinizi kaydedin.
CSharpTutorialApp proje klasörüne yeniden sağ tıklayın ve Derleme ve Anında İlerle modüllerini IoT Edge seçin.
deployment.windows-amd64.json dosyasını yeniden açın. Build and push komutunu yeniden oluşturulduğunda yeni bir dosya oluşturulmadı. Bunun yerine, aynı dosya değişiklikleri yansıtacak şekilde güncelleştirildi. IotEdgeModule1 görüntüsü artık kapsayıcının 0.0.2 sürümünü ifade ediyor. Dağıtım bildiriminde yapılan bu değişiklik, IoT Edge cihazın çekmesi gereken yeni bir sürümünün olduğunu söylemenizi sağlar.
Derleme ve anında yükleme komutunun ne yaptığını daha fazla doğrulamak için Azure portal ve kapsayıcı kayıt defterinize gidin.
Kapsayıcı kayıt defterinize Depolar'ı ve ardından iotedgemodule1'i seçin. Görüntünün her iki sürümünün de kayıt defterine itilmiş olduğunu doğrulayın.

Sorun giderme
Modül görüntülerinizi sağlarken ve iletirken hatalarla karşılaşırsanız, bunun genellikle geliştirme makineniz üzerinde Docker yapılandırmasıyla ilgisi vardır. Yapılandırmanızı gözden geçirmek için aşağıdaki denetimleri kullanın:
- Kapsayıcı kayıt
docker logindefterinize kopyalanan kimlik bilgilerini kullanarak komutunu çalıştırdınız mı? Bu kimlik bilgileri, Azure'da oturum a açmada kullanmakta olan kimlik bilgilerden farklıdır. - Kapsayıcı depon doğru mu? Doğru kapsayıcı kayıt defteri adınız ve doğru modül adınız var mı? Kontrol etmek için IotEdgeModule1 klasöründe module.json dosyasını açın. Depo değeri .azurecr.io/iotedgemodule1 <registry name> gibi azurecr.io/iotedgemodule1.
- Modülüz için IotEdgeModule1'den farklı bir ad kullandıysanız, bu ad çözüm genelinde tutarlı mı?
- Makineniz, derleyeni kapsayıcı türüyle mi çalışıyor? Bu öğretici Windows IoT Edge için, bu nedenle Visual Studio dosyalarınızın windows-amd64 uzantısına sahip olması ve Docker Desktop'ın Windows çalıştırması gerekir.
Modülleri cihaza dağıtma
Yerleşik kapsayıcı görüntülerinin kapsayıcı kayıt defterinize depolandığından, bunları bir cihaza dağıtmanın zamanı geldi. IoT Edge cihazınızın çalışıyor olduğundan emin olun.
Bulut Gezgini'ni Visual Studio IoT hub'ın ayrıntılarını genişletin.
Dağıtmak istediğiniz cihazın adını seçin. Eylemler listesinde Dağıtım Oluştur'a tıklayın.

Dosya gezgininde projenizin config klasörüne gidin ve deployment.windows-amd64.json dosyasını seçin. Bu dosya genellikle şu konumda bulunur:
C:\Users\<username>\source\repos\CSharpTutorialApp\CSharpTutorialApp\config\deployment.windows-amd64.jsonTam modül görüntü değerlerine sahip olmayan deployment.template.json dosyasını kullanmayın.
Modülleri cihazınıza görmek için IoT Edge Cloud Explorer'da cihazınızın ayrıntılarını genişletin.
SimulatedTemperatureSensor ve IotEdgeModule1 modüllerinin cihazınızı dağıtmış olduğunu görmek için Cihaz durumunu güncelleştirmek için Yenile düğmesini kullanın.

Cihazdan iletileri görüntüleme
IotEdgeModule1 kodu, iletileri giriş kuyruğu aracılığıyla alır ve çıkış kuyruğunda iletir. Dağıtım bildirimi, SimulatedTemperatureSensor'dan IotEdgeModule1'e ileti ileten ve ardından iletileri IotEdgeModule1'den IotEdgeModule1'den IotEdgeModule1'e iletilen yolları IoT Hub. Bu Azure IoT Edge araçları Visual Studio tek tek cihazlarından gelen iletileri IoT Hub görmenizi sağlar.
Bulut Visual Studio'nde, dağıtılan IoT Edge cihazın adını seçin.
Eylemler menüsünde, Yerleşik Olay Uç Noktasını İzlemeyi Başlat'ı seçin.
IoT hub'Visual Studio gelen iletileri görmek için giriş bölümündeki Çıkış bölümünü izleyin.
Her iki modülün de başlaması birkaç dakika sürebilir. IoT Edge çalışma zamanının yeni dağıtım bildirimini alması, kapsayıcı çalışma zamanından modül görüntülerini çekmesi ve ardından her yeni modülü başlatması gerekir.

Cihazda değişiklikleri görüntüleme
Cihazınızın kendisinde neler olduğunu görmek için bu bölümdeki komutları kullanarak IoT Edge çalışma zamanını ve modülleri incelersiniz.
Bu bölümdeki komutlar geliştirme makinenize IoT Edge cihazınıza göredir. Sanal makineniz için sanal makine kullanıyorsanız IoT Edge bağlanabilirsiniz. Azure'da sanal makinenin genel bakış sayfasına gidin ve uzak masaüstü bağlantısına Bağlan'yi seçin. Cihazda, komutları çalıştırmak için bir komut veya PowerShell penceresi iotedge açın.
Tümünü görüntüle dağıtılan modülleri seçin ve durumlarını kontrol edin:
iotedge listDört modül göreceksiniz: simulatedTemperatureSensor ve IotEdgeModule1 IoT Edge çalışma zamanı modülleri. Dördü de çalışıyor olarak listelenmiş olması gerekir.
Belirli bir modül için günlükleri inceleme:
iotedge logs <module name>IoT Edge modüller büyük/büyük/büyük harfe duyarlıdır.
SimulatedTemperatureSensor ve IotEdgeModule1 günlükleri, işledikleri iletileri göstersin. EdgeAgent modülü diğer modülleri başlatmadan sorumludur, bu nedenle günlüklerinde dağıtım bildirimini uygulama hakkında bilgiler bulunur. Herhangi bir modül listelenmiyorsa veya çalışmıyorsa edgeAgent günlüklerinde büyük olasılıkla hatalar olur. EdgeHub modülü, modüller ve modüller arasındaki iletişimlerden IoT Hub. Modüller çalışıyor ancak iletiler IoT hub'ınıza gönderiliyorsa edgeHub günlüklerinde büyük olasılıkla hatalar olur.
Kaynakları temizleme
Bir sonraki önerilen makaleye geçmeyi planlıyorsanız, oluşturduğunuz kaynaklarla yapılandırmaları tutabilir ve yeniden kullanabilirsiniz. Aynı IoT Edge cihazını test cihazı olarak kullanmaya devam edebilirsiniz.
Aksi takdirde, ücretlerden kaçınmak için bu makalede kullanılan yerel yapılandırmaları ve Azure kaynaklarını silebilirsiniz.
Azure kaynaklarını silme
Azure kaynaklarını ve kaynak gruplarını silme işlemi geri alınamaz. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. IoT Hub 'ı tutmak istediğiniz kaynakları içeren mevcut bir kaynak grubu içinde oluşturduysanız, kaynak grubunu değil yalnızca IoT Hub kaynağını silin.
Kaynakları silmek için:
Azure portalında oturum açın ve Kaynak grupları’nı seçin.
IoT Edge test kaynaklarınızı içeren kaynak grubunun adını seçin.
Kaynak grubunuzda bulunan kaynak listesini gözden geçirin. Tümünü silmek isterseniz Kaynak grubunu sil'i seçebilirsiniz. Kaynakların yalnızca bazılarını silmek istiyorsanız tek tek tıklayarak silebilirsiniz.
Sonraki adımlar
Bu öğreticide, geliştirme makineniz üzerinde Visual Studio 2019'IoT Edge modülünü dağıttınız. Temel kavramları artık biliyorsunuz, modülden geçen verileri analiz etmek için modüle işlev eklemeyi deneyin. Tercih ettiğiniz dili seçin: