Öğretici: Linux IoT Edge modüller geliştirme
Uygulama hedefi:
IoT Edge 1,1
IoT Edge 1,2
Visual Studio Code çalıştıran cihazlara kod geliştirmek ve dağıtmak için IoT Edge.
Hızlı başlangıçta bir IoT Edge cihazı IoT Edge modülünü Azure Market. Bu öğretici, kendi kodunuzu geliştirme ve bir cihaza dağıtma IoT Edge gösterir. Bu makale, belirli programlama dilleri veya Azure hizmetleri hakkında daha ayrıntılı bilgi edinen diğer öğreticiler için yararlı bir önkoşuldur.
Bu öğreticide bir Linux cihazına C# modülü dağıtma örneği kullanılır. Bu örnek, farklı çözümler için en yaygın geliştirici senaryosu olduğundan IoT Edge seçilmiştir. Farklı bir dil kullanmayı veya Bir Azure hizmetini dağıtmayı planlasanız bile bu öğretici, geliştirme araçları ve kavramları hakkında bilgi edinmek için yine de yararlıdır. Bu geliştirme sürecine giriş işlemini tamamlandıktan sonra ayrıntıları öğrenmek için tercih ettiğiniz dili veya Azure hizmetini seçin.
Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:
- Geliştirme makinenizi ayarlayın.
- Yeni bir IoT Edge oluşturmak için Visual Studio Code araçları kullanın.
- Projenizi kapsayıcı olarak derleme ve Azure kapsayıcı kayıt defterinde depolama.
- Kodunuzu bir IoT Edge dağıtın.
Önkoşullar
Geliştirme makinesi:
- Geliştirme tercihlerinize bağlı olarak kendi bilgisayarınızı veya sanal makinenizi kullanabilirsiniz.
- Geliştirme makinenizin iç içe sanallaştırmayı desteklediğini emin olun. Bu özellik, sonraki bölümde yükley bölümünü tamamlayacak bir kapsayıcı altyapısını çalıştırmaya gereklidir.
- Kapsayıcı altyapısı çalıştıran çoğu işletim sistemi, Linux cihazlarına IoT Edge modüller geliştirmek için kullanılabilir. Bu öğreticide bir Windows bilgisayar kullanılır, ancak macOS veya Linux'ta bilinen farklara dikkat edin.
- Bu öğreticinindevamlarında modül şablonu paketlerini çekmek için Git 'i yükleyin.
- Visual Studio Code için C# (OmniSharp tarafından desteklenen) uzantısı.
- .NET Core 2.1 SDK'sı.
Bir Azure IoT Edge cihazı:
- Geliştirme makineniz üzerinde bir IoT Edge çalıştırmamanızı, bunun yerine ayrı bir cihaz kullanmanızı öneririz. Geliştirme makinesi ve IoT Edge arasındaki bu ayrım, gerçek bir dağıtım senaryosunu daha doğru yansıtmaktadır ve farklı kavramların net bir şekilde gerçekleşmesine yardımcı olur.
- İkinci bir cihazınız yoksa, Linux sanal makinesi ile Azure'da bir IoT Edge cihaz oluşturmak için hızlı başlangıç makalesine bakın.
Bulut kaynakları:
- Azure'da ücretsiz veya standart katman IoT hub'ı.
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Önemli kavramlar
Bu öğretici, bir IoT Edge geliştirme adımlarını içerir. Bir IoT Edge modül veya bazen kısaca modül, yürütülebilir koda sahip bir kapsayıcıdır. Bir cihaza bir veya daha fazla modül IoT Edge. Modüller algılayıcılardan veri toplama, verileri temizleme ve analiz etme veya bir IoT hub'a ileti gönderme gibi belirli görevleri gerçekleştirebilir. Daha fazla bilgi için bkz. Azure IoT Edge anlama.
Modüller IoT Edge geliştirme aşamasında modülün dağıtılacağı hedef IoT Edge arasındaki farkı anlamak önemlidir. Modül kodunuzu tutmak için derlemeniz, hedef cihazın işletim sistemiyle (OS) eşleşmesi gerekir. Örneğin, en yaygın senaryo, Windows çalıştıran bir Linux cihazı hedeflemek için bir modül geliştiren biri IoT Edge. Bu durumda kapsayıcı işletim sistemi Linux olacaktır. Bu öğreticiyi tamamlarken, geliştirme makinesi işletim sistemi ile kapsayıcı işletim sistemi arasındaki farkı unutmayın.
İpucu
Windows üzerinde Linuxiçin IoT Edge kullanıyorsanız, senaryonun hedef cihazı, Windows ana bilgisayarı değil Linux sanal makinesidir.
Bu öğretici, Linux kapsayıcıları ile IoT Edge cihazları hedefler. Geliştirme makineniz Linux kapsayıcıları çalıştırsa tercih ettiğiniz işletim sistemini kullanabilirsiniz. Bu öğreticide Visual Studio Code linux kapsayıcıları ile geliştirmeniz için Visual Studio Code'nin kullanılması önerilir. İki araç arasında Visual Studio farklar olsa da, bu araçları da kullanabilirsiniz.
Aşağıdaki tabloda, Visual Studio Code ve Visual Studio'da Linux kapsayıcıları için desteklenen geliştirme senaryoları liste Visual Studio.
| Visual Studio Code | Visual Studio 2017/2019 | |
|---|---|---|
| Linux cihaz mimarisi | Linux AMD64 Linux ARM32 |
Linux AMD64 Linux ARM32 |
| Azure hizmetleri | Azure İşlevleri Azure Stream Analytics Azure Machine Learning |
|
| Diller | C C# Java Node.js Python |
C C# |
| Daha fazla bilgi | Azure IoT Edge için Visual Studio Code | Azure IoT Edge Tools 2017 için Visual Studio Azure IoT Edge Tools 2019 için Visual Studio |
Not
Linux ARM64 cihazları için destek genel önizlemede kullanılabilir. Daha fazla bilgi için bkz. Visual Studio Code (önizleme) içinde ARM64 IoT Edge modüllerini geliştirme ve hata ayıklama.
Bu öğreticide, uygulama geliştirme adımları Visual Studio Code. 2019'Visual Studio kullanmak yerine, Visual Studio 2019'ukullanarak Azure IoT Edge.
Kapsayıcı altyapısını yükleme
IoT Edge kapsayıcılar olarak paketlenmiştir, bu nedenle bunları derlemek ve yönetmek için geliştirme makinenize bir kapsayıcı altyapısı gerekir. Özellik desteği ve popülerliği nedeniyle Docker Desktop'ın geliştirme için kullanılması önerilir. Windows Üzerinde Docker Desktop, farklı türlerde Windows cihazları için kolayca modüller geliştirmenizi sağlayan Linux kapsayıcıları ile IoT Edge sağlar.
Geliştirme makinenize yüklemek için Docker belgelerini kullanın:
Docker Desktop for Windows'u yükleme
- Windows için Docker Desktop'ı yükleyebilirsiniz. Linux veya Windows kullanmak isteyip Windows gerekir. Bu karar, kolay bir anahtar kullanılarak herhangi bir zamanda değiştirilebilir. Bu öğreticide, modüllerimiz Linux cihazlarını hedeflemektedir. Daha fazla bilgi için bkz. Windows Linux kapsayıcıları arasında geçiş.
Çeşitli Linux platformlarında yükleme bilgileri için Docker CE Hakkında makalesini okuyun.
- Linux için Windows Alt Sistemi (WSL) için Docker Desktop'ı Windows.
Araçları VS Code ayarlama
Yeni modüller geliştirmek için IoT Visual Studio Code IoT IoT Edge kullanın. Bu uzantılar proje şablonları sağlar, dağıtım bildiriminin oluşturulmasını otomatik hale getirir ve cihazlarınızı izlemenizi ve IoT Edge sağlar. Bu bölümde, Visual Studio Code ve IoT uzantısını yükleyecek, sonra da Azure hesabını IoT Hub kaynakları yönetecek şekilde Visual Studio Code.
Geliştirme Visual Studio Code yükleme.
Yükleme tamam olduktan sonra Uzantıları Görüntüle'yi > seçin.
Azure IoT Tools ve IoT cihazlarıyla etkileşim kurmanıza ve IoT Hub modüller geliştirmenizi IoT Edge için arama yapabilirsiniz.
Yükle'yi seçin. Dahil edilen her uzantı ayrı ayrı yüklenir.
Uzantılar yüklemesi bittiğinde, Komut Paletini Görüntüle'yi seçerek komut > paletini açın.
Komut paletinde Azure: Oturum açma için arama yazın ve öğesini seçin. Azure hesabınızda oturum açmak için yönergeleri izleyin.
Komut paletinde yeniden şu komutu arayın ve Azure IoT Hub: Öğesini IoT Hub. Azure aboneliğinizi ve IoT hub'ını seçmek için istemleri izleyin.
Sol tarafta bulunan etkinlik Visual Studio Code simgesini seçerek veya Görünüm Gezgini'ni seçerek dosyanın gezgin bölümünü > açın.
Gezgin bölümünün alt kısmında, daraltılmış Azure IoT Hub / Cihazlar menüsünü genişletin. Komut paleti aracılığıyla seçtiğiniz IoT hub'ı ile ilişkili cihazları ve IoT Edge cihazları görmelisiniz.

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 modül projesi oluşturma
Bu Azure IoT Tools uzantısı, tüm desteklenen modül dillerinde IoT Edge proje şablonları Visual Studio Code. Bu şablonlar, çalışma modülünü dağıtmak için ihtiyacınız olan tüm dosyalara ve koda sahip IoT Edge veya şablonu kendi iş mantığınız ile özelleştirmek için bir başlangıç noktası sağlar.
Bu öğreticide, en sık kullanılan şablon olduğundan C# modül şablonunu kullanırsınız.
Proje şablonu oluşturma
Yeni Visual Studio Code paletinde şu komutu arayın ve seçin: Azure IoT Edge: Yeni IoT Edge Çözümü. İstemleri izleyin ve çözümlerinizi oluşturmak için aşağıdaki değerleri kullanın:
| Alan | Değer |
|---|---|
| Klasör seçin | Geliştirme makinenizde VS Code'un çözüm dosyalarını oluşturmak için kullanacağı konumu seçin. |
| Çözüm adı sağlayın | Çözümünüz için açıklayıcı bir ad girin veya varsayılan EdgeSolution'i kabul eder. |
| Modül şablonunu seçin | C# Modülü'dür. |
| Modül adı sağlayın | Varsayılan SampleModule'leri kabul eder. |
| Modül için Docker görüntü deposunu sağlama | 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ı görüntünüz, son adımda sağlanan addan önceden doldurulacak. localhost:5000 değerini Azure kapsayıcı kayıt defterinizin Oturum açma sunucusu değeriyle değiştirin. Oturum açma sunucusu değerini, kapsayıcı kayıt defterinizin Genel Bakış sayfasından Azure portal. Görüntü deposunun son görüntüsü <registry name> .azurecr.io/samplemodule. |

Yeni çözümünüz Visual Studio Code penceresine yüklenirken, biraz zaman zaman kendi oluşturduğu dosyaları tanımanız gerekir:
.vscode klasörü, modüllerde hata ayıklama için kullanılan launch.json adlı bir dosya içerir.
modules klasörü, çözümünüzdeki her modül için bir klasör içerir. Şu anda bu yalnızca SampleModule veya modüle hangi adı verdiy olur? SampleModule klasörü ana program kodunu, modül meta verilerini ve çeşitli Docker dosyalarını içerir.
.env dosyası, kapsayıcı kayıt defterinizin kimlik bilgilerini tutar. Bu kimlik bilgileri, kapsayıcı görüntülerini IoT Edge erişime sahip olacak şekilde IoT Edge cihazınızla paylaşılır.
deployment.debug.template.json dosyası ve deployment.template.json dosyası, dağıtım bildirimi oluşturmanıza yardımcı olan şablonlardır. Dağıtım bildirimi, bir cihaza tam olarak hangi modüllerin dağıtılmasını, nasıl yapılandırılması gerektiğini ve birbirleriyle ve bulutla nasıl iletişim kur olduklarını tanımlayan bir dosyadır. Şablon dosyaları bazı değerler için işaretçiler kullanır. Şablonu gerçek bir dağıtım bildirimine dönüştüren işaretçiler, diğer çözüm dosyalarından alınan değerlerle değiştirilir. Dağıtım şablonunda iki ortak yer tutucuyu bulun:
- Kayıt defteri kimlik bilgileri bölümünde, adresi çözümü oluşturulduğunda sağlanan bilgilerden otomatik olarak doldurur. Ancak, kullanıcı adı ve parola .env dosyasında depolanan değişkenlere başvurur. Bu yapılandırma güvenlik içindir çünkü .env dosyası git yoksayılır, ancak dağıtım şablonu yok sayılır.
- SampleModule bölümünde, çözümü oluşturulduğunda görüntü deposunu sağladıktan sonra kapsayıcı görüntüsü doldurulmamıştır. Bu yer tutucu SampleModule klasörünün içindeki module.json dosyasını belirtir. Bu dosyaya gidersiniz, görüntü alanında deponun yanı sıra kapsayıcının sürümünden ve platformundan da bir etiket değeri olduğunu görüyorsunuz. Geliştirme döngünizin bir parçası olarak sürümü el ile tekrarlar ve bu bölümün ilerleyen kısımlarında tanıtacağız bir anahtarcı kullanarak kapsayıcı platformunu seçersiniz.
Çalışma IoT Edge sürümünü ayarlama
IoT Edge uzantısı, dağıtım varlıklarınızı oluşturduğunda varsayılan olarak IoT Edge çalışma zamanının en son kararlı sürümünü kullanır. Şu anda en son kararlı sürüm 1.2 sürümüdür. 1.1 uzun vadeli destek sürümünü veya önceki 1.0 sürümünü çalıştıran cihazlar için modüller geliştiriyorsanız, IoT Edge çalışma zamanı sürümünü Visual Studio Code güncelleştirin.
Komut Paletini > Görüntüle'yi seçin.
Komut paletinde şu komutu girin ve çalıştırın: Azure IoT Edge çalışma zamanı IoT Edge ayarlayın.
Uygulama cihazlarınızı listeden IoT Edge çalışma zamanı sürümünü seçin.
Yeni çalışma zamanı sürümünü seçmenizin ardından dağıtım bildiriminiz, çalışma zamanı modülü görüntülerine yapılan değişikliği yansıtacak şekilde dinamik olarak güncelleştirilir.
Kayıt defteri kimlik bilgilerinizi IoT Edge sağlama
Ortam dosyası, kapsayıcı kayıt defterinizin kimlik bilgilerini depolar ve bu bilgileri IoT Edge çalışma zamanı ile paylaşır. Çalışma zamanı, kapsayıcı görüntülerinizi cihaza çekmek için bu IoT Edge gerekir.
Not
localhost:5000 değerini Azure kapsayıcı kayıt defterinizin oturum açma sunucusu değeriyle değiştirmedıyebilirsiniz. Proje şablonu oluşturma adımlarında dağıtım bildiriminin .env dosyası ve registryCredentials bölümü eksik olur.
Bu IoT Edge, kapsayıcı kayıt defteri kimlik bilgilerinizi Azure'dan çekip ortam dosyasına doldurmak için çalışır. Kimlik bilgilerinizin zaten ekli olup olduğunu kontrol edin. Eklemezse şimdi ekleyin:
- Modül çözümde .env dosyasını açın.
- Azure kapsayıcı kayıt defterinize kopyalanan kullanıcı adı ve parola değerlerini ekleyin.
- Değişikliklerinizi .env dosyasına kaydedin.
Not
Bu öğretici, geliştirme ve test senaryoları Azure Container Registry için yönetici oturum açma kimlik bilgilerini kullanır. Üretim senaryoları için hazırsanız hizmet sorumluları veya depo kapsamlı belirteçler gibi en az ayrıcalıklı kimlik doğrulama seçeneğini öneririz. Daha fazla bilgi için bkz. Kapsayıcı kayıt defterinize erişimi yönetme.
Hedef mimarinizi seçin
Şu anda Visual Studio Code Linux AMD64 ve ARM32v7 cihazları için C# modülleri geliştirebilirsiniz. Her çözümde hangi mimariyi hedefleyeceğini seçmeniz gerekir çünkü bu, kapsayıcının nasıl ve nasıl çalıştırılayeceğini etkiler. Varsayılan değer Linux AMD64'dür.
Komut paletini açın ve Azure IoT Edge: Edge Çözümü için Varsayılan Hedef Platformu Ayarla'yı veya pencerenin alt tarafındaki kenar çubuğundaki kısayol simgesini seçin.

Komut paletinde, seçenekler listesinden hedef mimariyi seçin. Bu öğreticide, IoT Edge cihazı olarak Ubuntu sanal makinesi kullanıyoruz, bu nedenle varsayılan amd64'ü kullanmaya devam ederiz.
Ö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 iletileri alır ve ardından ileti iletir. İşlem hattı işlevi, modüller IoT Edge iletişim kurması açısından önemli bir kavramdır.
Her modülün kodunda bildirilen birden çok giriş ve çıkış kuyruğu olabilir. Cihazda IoT Edge hub'ı, bir modülün çıkışından gelen iletileri bir veya daha fazla modülün girişine yönlendiriyor. Girişleri ve çıkışları bildirime yönelik kod diller arasında değişiklik sağlar, ancak kavram tüm modüllerde aynıdır. Modüller arasında yönlendirme hakkında daha fazla bilgi için bkz. Yolları bildir.
Proje şablonuyla birlikte gelen örnek C# kodu, .NET için IoT Hub SDK'dan ModuleClient Sınıfını kullanır.
modules/SampleModule/ klasörünün içinde yer alan Program.cs dosyasını açın.
program.cs'de SetInputMessageHandlerAsync yöntemini bulun.
SetInputMessageHandlerAsync 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ğu başlatma yöntemine bakın.

Ardından SendEventAsync yöntemini bulun.
SendEventAsync yöntemi, alınan iletileri işler ve bunları birlikte geçecek bir çıkış kuyruğu ayarlar. Bu yöntemi gözden geçirin ve output1 adlı bir çıkış kuyruğu başlatıyor.

deployment.template.json dosyasını açın.
İstenen özelliklerin modüller özelliğini $edgeAgent bulun.
Burada listelenen iki modül olması gerekir. 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 çözümün bir parçası olarak oluşturduğunuz sampleModule modülüdür.
Dosyanın en altında, $edgeHub modülü için istenen özellikleri 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, SampleModuleToIoTHub, * sampleModule modülündeki herhangi bir çıkış kuyruğuna gelen herhangi bir iletiyi göstermek için bir joker karakter (* _) kullanır. Bu iletiler, IoT Hub belirten ayrılmış bir ad olan _ $ yukarı akış * ' a gider. Diğer yol olan Sensortosamplemodule, SimulatedTemperatureSensor modülünden gelen iletileri alır ve bunları sampleModule kodunda gördüğünüz 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 SampleModule kapsayıcı görüntüsünü oluşturmak ve kapsayıcı Kayıt defterinize göndermek için hazır olursunuz. Visual Studio Code 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 Docker 'a sağlayın.
görünüm terminali ' i seçerek Visual Studio Code tümleşik terminal ' i 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.Azure Container Registry oturumu açma
az acr login -n <ACR registry name>
Derleme ve gönderme
Visual Studio Code artık kapsayıcı kayıt defterinize erişebilir, bu nedenle çözüm kodunu bir kapsayıcı görüntüsüne dönüştürmek için zaman atalım.
Visual Studio Code gezgini ' nde deployment. template. json dosyasına sağ tıklayın ve IoT Edge çözümü oluştur ve gönder' i seçin.

Build ve push komutu üç işlem başlatır. İlk olarak, dağıtım şablonunda ve diğer çözüm dosyalarında bilgi dışında, tam dağıtım bildirimini tutan config adlı çözümde yeni bir klasör oluşturur. İkincisi,
docker buildhedef mimariniz için uygun dockerfile 'ı temel alan kapsayıcı görüntüsünü oluşturmak için çalışır. Ardından,docker pushgörüntü deposunu kapsayıcı Kayıt defterinize göndermek için çalışır.Bu işlem ilk kez birkaç dakika sürebilir, ancak komutları bir sonraki çalıştırışınızda daha hızlıdır.
Yeni oluşturulan yapılandırma klasöründe Deployment. AMD64. JSON dosyasını açın. Dosya adı hedef mimariyi yansıtır, bu nedenle farklı bir mimari seçerseniz farklı olur.
Artık yer tutucuları olan iki parametrenin doğru değerleriyle doldurulduğunu unutmayın. Registrycredentials bölümünde kayıt defteri Kullanıcı adınız ve parolanız. env dosyasından alınır. SampleModule , Module. JSON dosyasındaki Name, Version ve Architecture etiketiyle tam görüntü deposuna sahiptir.
SampleModule klasöründe Module. JSON dosyasını açın.
Modül görüntüsünün sürüm numarasını değiştirin. ($Schema sürümü değil sürümü.) Örneğin, modül kodunda küçük bir düzeltme yaptığımız gibi, düzeltme eki sürüm numarasını 0.0.2 olarak artırın.
İpucu
Modül sürümleri sürüm denetimini etkinleştirir ve güncelleştirmeleri üretime dağıtabilmeniz için küçük bir cihaz kümesinde değişiklikleri test etmeniz için izin verir. Derleme ve göndermeden önce modül sürümünü arttırmıyorsanız, depo kayıt defterinizde deponun üzerine yazarsınız.
Değişikliklerinizi Module. JSON dosyasına kaydedin.
Deployment. Template. JSON dosyasına tekrar sağ tıklayın ve ardından IoT Edge çözümü oluştur ve Gönder' i seçin.
Deployment. AMD64. JSON dosyasını yeniden açın. Build ve push komutunu yeniden çalıştırdığınızda yeni bir dosyanın oluşturulduğuna dikkat edin. Bunun yerine, aynı dosya değişiklikleri yansıtacak şekilde güncelleştirildi. SampleModule görüntüsü artık kapsayıcının 0.0.2 sürümüne işaret ediyor.
Build ve push komutunun ne yaptığını daha fazla doğrulamak için Azure Portal gidin ve kapsayıcı Kayıt defterinize gidin.
Kapsayıcı kayıt defterinizde depolar ' ı ve sampleModule' ü seçin. Görüntünün her iki sürümünün de kayıt defterine itildiğini doğrulayın.

Sorun giderme
Modül görüntünüzü oluştururken ve gönderirken hatalarla karşılaşırsanız, genellikle geliştirme makinenizde Docker yapılandırması gerekir. Yapılandırmanızı gözden geçirmek için aşağıdaki denetimleri kullanın:
docker loginKomutu, kapsayıcı Kayıt defterinizden kopyaladığınız kimlik bilgilerini kullanarak çalıştırdınız mı? Bu kimlik bilgileri, Azure 'da oturum açmak için kullandığınız olanlardan farklıdır.- Kapsayıcı deponuz doğru mu? Doğru kapsayıcı kayıt defteri adı ve doğru modülünüzün adı mı var? Denetlemek için SampleModule klasöründeki Module. JSON dosyasını açın. Depo değeri <registry name> . azurecr.io/sampleModule gibi görünmelidir.
- Modülünüzün örnek modülünden farklı bir ad kullandıysanız, bu ad çözüm genelinde tutarlıdır mi?
- Makineniz, oluşturmakta olduğunuz kapsayıcı türünü çalıştırıyor mu? bu öğretici linux IoT Edge cihazları için olduğundan Visual Studio Code, yan çubukta amd64 veya arm32v7 deyin ve docker Desktop 'ın Linux kapsayıcılarını çalıştırması gerekir.
Modülleri cihaza dağıt
Oluşturulan kapsayıcı görüntülerinin kapsayıcı kayıt defterinizde depolandığını doğruladınız, bu nedenle bunları bir cihaza dağıtmaya zaman atalım. IoT Edge cihazınızın çalışır ve çalışıyor olduğundan emin olun.
Visual Studio Code gezgini ' nde, Azure IoT Hub bölümünde aygıtlar ' ı genişleterek ıot cihazları listesini görüntüleyin.
Dağıtmak istediğiniz IoT Edge cihaza sağ tıklayın, ardından tek cihaz Için dağıtım oluştur' u seçin.

Dosya Gezgini 'nde, yapılandırma klasörüne gidin ve Deployment. AMD64. JSON dosyasını seçin.
Kapsayıcı kayıt defteri kimlik bilgilerine veya modül görüntü değerlerine sahip olmayan Deployment. Template. json dosyasını kullanmayın. Bir Linux ARM32 cihazını hedefliyorsanız dağıtım bildirimi Deployment. arm32v7. JSON olarak adlandırılır.
Cihazınızın altında, dağıtılan ve çalışan modüllerin listesini görmek için modüller ' i genişletin. Yenile düğmesine tıklayın. Cihazınızda çalışan yeni SimulatedTemperatureSensor ve SampleModule modüllerini görmeniz gerekir.
Modüllerin 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 çekmek ve sonra her yeni modülü başlatması gerekir.

Cihazdan iletileri görüntüle
SampleModule kodu iletileri giriş kuyruğu aracılığıyla alır ve bunları çıkış kuyruğu boyunca geçirir. Dağıtım bildirimi, iletileri SimulatedTemperatureSensor adresinden SampleModule 'e geçen yolları ve SampleModule 'tan IoT Hub iletilen iletileri bildirdi. Visual Studio Code için Azure ıot araçları, her bir cihazınızdan IoT Hub geldikçe iletileri görmenizi sağlar.
Visual Studio Code gezgini ' nde, izlemek istediğiniz IoT Edge cihaza sağ tıklayın, sonra izlemeyi başlat yerleşik olay uç noktası' nı seçin.
ıot hub 'ınıza ulaşan iletileri görmek için Visual Studio Code çıkış penceresini izleyin.

Cihazdaki değişiklikleri görüntüle
Cihazınızda neler olduğunu görmek isterseniz, cihazınızda çalışan IoT Edge çalışma zamanını ve modülleri incelemek için bu bölümdeki komutları kullanın.
Bu bölümdeki komutlar, geliştirme makineniz değil IoT Edge cihazınıza yöneliktir. IoT Edge cihazınız için bir sanal makine kullanıyorsanız, şimdi bu sunucuya bağlanın. Azure 'da, sanal makinenin genel bakış sayfasına gidin ve güvenli kabuk bağlantısına erişmek için Bağlan ' yi seçin.
Cihazınıza dağıtılan tüm modülleri görüntüleyin ve durumlarını denetleyin:
iotedge listDört modül görmeniz gerekir: iki IoT Edge çalışma zamanı modülü, SimulatedTemperatureSensor ve SampleModule. Dört tümü çalışıyor olarak listelenmelidir.
Belirli bir modülün günlüklerini inceleyin:
iotedge logs <module name>IoT Edge modüller büyük/küçük harfe duyarlıdır.
SimulatedTemperatureSensor ve SampleModule günlükleri işledikleri iletileri göstermelidir. EdgeAgent modülü, diğer modüllerin başlatılmasından sorumludur, bu nedenle Günlükler dağıtım bildirimini uygulamayla ilgili bilgiler alacak. Herhangi bir modül listelenmemişse veya çalışmıyorsa, edgeAgent günlükleri muhtemelen hatalara sahip olur. EdgeHub modülü, modüller ve IoT Hub arasındaki iletişimlerden sorumludur. Modüller çalışır duruma geliyor ancak iletiler IoT Hub 'ınıza inmemişse, edgeHub günlükleri muhtemelen hatalara sahip 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 makinenize Visual Studio Code ve bu modülden ilk 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: