Öğretici: Windows kapsayıcılarını kullanarak IoT Edge modülleri geliştirme

Şunun için geçerlidir:evet simgesi IoT Edge 1.1

Önemli

IoT Edge 1.1 destek sonu tarihi 13 Aralık 2022'ydi. Bu ürünün, hizmetin, teknolojinin veya API’nin nasıl desteklendiği hakkında bilgi edinmek için Microsoft Ürün Yaşam Döngüsü’ne göz atın. IoT Edge'nin en son sürümüne güncelleştirme hakkında daha fazla bilgi için bkz. Güncelleştirme IoT Edge.

IoT Edge çalıştıran Windows cihazlarına kod geliştirmek ve dağıtmak için Visual Studio'yu kullanın.

Not

IoT Edge 1.1 LTS, Windows kapsayıcılarını destekleyen son sürüm kanalıdır. Sürüm 1.2'den itibaren Windows kapsayıcıları desteklenmez. Windows cihazlarda IoT Edge çalıştırmak için Windows üzerinde Linux için IoT Edge kullanmayı veya bu IoT Edge geçmeyi göz önünde bulundurun.

Bu öğretici, bir IoT Edge cihazına kendi kodunuzu geliştirmek ve dağıtmak için gerekenleri gösterir. Bu öğretici, belirli programlama dilleri veya Azure hizmetleri hakkında daha ayrıntılı bilgi veren diğer öğreticiler için yararlı bir önkoşuldur.

Bu öğreticide, Bir Windows cihazına C# modülü dağıtma örneği kullanılır. Bu örnek, en yaygın geliştirme senaryosu olduğundan seçilmiştir. Farklı bir dilde geliştirme yapmak veya Azure hizmetlerini modül olarak dağıtmayı planlıyorsanız bu öğretici, geliştirme araçları hakkında bilgi edinmenize yardımcı olmaya devam edecektir. Geliştirme kavramlarını anladıktan sonra ayrıntıları öğrenmek 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 için IoT Edge araçlarını kullanın.
  • Projenizi kapsayıcı olarak oluşturun ve Azure kapsayıcı kayıt defterinde depolayın.
  • Kodunuzu bir IoT Edge cihazına dağıtın.

Önkoşullar

Geliştirme makinesi:

  • 1809 güncelleştirmesi veya daha yenisiyle 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ğine emin olun. Bu özellik, sonraki bölümde yüklediğiniz bir kapsayıcı altyapısını çalıştırmak için gereklidir.
  • Git'i yükleyin.

Windows'da bir Azure IoT Edge cihazı:

  • Windows kapsayıcıları ile Azure IoT Edge yükleyin ve yönetin.
  • Geliştirme makinenizde IoT Edge çalıştırmamanızı, bunun yerine mümkünse ayrı bir cihaz kullanmanızı öneririz. Geliştirme makinesi ile IoT Edge cihaz arasındaki bu ayrım, gerçek bir dağıtım senaryosunu daha doğru yansıtmaktadır ve farklı kavramların düz tutulmasına yardımcı olur.

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, IoT Edge modülü geliştirme adımlarını gösterir. IoT Edge modülü veya bazen kısaca yalnızca modül, yürütülebilir kod içeren bir kapsayıcıdır. bir IoT Edge cihaza bir veya daha fazla modül dağıtabilirsiniz. Modüller algılayıcılardan veri alma, veri analizi veya veri temizleme işlemleri gerçekleştirme veya IoT hub'ına ileti gönderme gibi belirli görevleri gerçekleştirir. Daha fazla bilgi için bkz. Azure IoT Edge modüllerini anlama.

IoT Edge modül geliştirirken geliştirme makinesi ile modülün dağıtılacağı 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 sistemiyle (OS) eşleşmelidir. Windows kapsayıcıları yalnızca Windows işletim sistemlerinde çalıştığından, Windows kapsayıcı geliştirme için bu kavram daha basittir. Ancak, örneğin, Linux IoT Edge cihazları için modüller oluşturmak üzere Windows geliştirme makinenizi kullanabilirsiniz. Bu senaryoda geliştirme makinenizin Linux kapsayıcıları çalıştırdığından emin olmanız gerekir. Bu öğreticide ilerlerken geliştirme makinesi işletim sistemi ile kapsayıcı işletim sistemi arasındaki farkı aklınızda bulundurun.

Bu öğretici, IoT Edge çalıştıran Windows cihazlarını hedefler. Windows IoT Edge cihazları Windows kapsayıcılarını kullanır. Windows cihazları geliştirmek için Visual Studio kullanmanızı öneririz, bu nedenle bu öğreticide bu kullanılır. İki araç arasında destek farklılıkları olsa da Visual Studio Code da kullanabilirsiniz.

Aşağıdaki tabloda, Visual Studio Code ve Visual Studio'da Windows kapsayıcıları için desteklenen geliştirme senaryoları listelenmektedir.

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
Azure IoT Hub
Visual Studio 2017 için Azure IoT Edge Tools
Visual Studio 2019 için Azure IoT Edge Tools

Kapsayıcı altyapısını yükleme

IoT Edge modülleri 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. Kapsayıcı altyapısı olarak birçok özelliği ve popülerliği nedeniyle geliştirme için Docker Desktop'ı kullanmanızı öneririz. Bir Windows bilgisayarda Docker Desktop ile Linux kapsayıcıları ile Windows kapsayıcıları arasında geçiş yapabilir, böylece farklı türde IoT Edge cihazları için kolayca modül geliştirebilirsiniz.

Geliştirme makinenize yüklemek için Docker belgelerini kullanın:

Visual Studio ve araçları ayarlama

Visual Studio için IoT 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ı otomatikleştirir ve IoT Edge cihazları izlemenize ve yönetmenize olanak tanır. Bu bölümde Visual Studio'yu ve IoT Edge uzantısını yükledikten sonra Azure hesabınızı Visual Studio'dan IoT Hub kaynaklarını yönetecek şekilde ayarlarsınız.

Bu öğreticide Visual Studio 2019 geliştirme adımları öğretilmektedir. Visual Studio 2017 (sürüm 15.7 veya üzeri) kullanıyorsanız, adımlar benzerdir. Visual Studio Code kullanmayı tercih ederseniz Azure IoT Edge için modül geliştirmek ve hatalarını ayıklamak için Visual Studio Code kullanma başlığındaki yönergelere bakın.

  1. Geliştirme makinenizde Visual Studio 2019'a hazırlanın.

    • Geliştirme makinenizde Visual Studio yoksa Visual Studio 2019'u aşağıdaki iş yükleriyle yükleyin:

      • Azure geliştirme
      • C++ ile masaüstü geliştirme
      • .NET Core platformlar arası geliştirme
    • Geliştirme makinenizde Zaten Visual Studio 2019 varsa, gerekli iş yüklerini eklemek için Visual Studio'yu değiştirme konusundaki adımları izleyin.

  2. 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 Tools indirip yükleyin.

  3. Yüklemeleriniz tamamlandığında Visual Studio 2019'u açın ve Kod olmadan devam et'i seçin.

  4. Bulut GezgininiGörüntüle'yi> seçin.

  5. Bulut gezgininde profil simgesini seçin ve henüz oturum açmadıysanız Azure hesabınızda oturum açın.

  6. Oturum açtığınızda Azure abonelikleriniz listelenir. IoT hub'ınızın bulunduğu aboneliği genişletin.

  7. Aboneliğinizin altında IoT Hubs'ı ve ardından IoT hub'ınızı genişletin. IoT cihazlarınızın listesini görmeniz gerekir ve bunları yönetmek için bu gezgini kullanabilirsiniz.

    Bulut Gezgini'nde IoT Hub kaynaklarına erişme

Kapsayıcı kayıt defteri oluşturma

Bu öğreticide bir modül oluşturacak ve dosyalardan bir kapsayıcı görüntüsü oluşturacaksınız. 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 uyumlu herhangi bir kayıt defterini kullanabilirsiniz. İki popüler Docker kayıt defteri hizmeti Azure Container Registry ve Docker Hub. Bu öğreticide Azure Container Registry kullanılır.

Henüz bir kapsayıcı kayıt defteriniz yoksa, Azure'da yeni bir kayıt defteri oluşturmak için şu adımları izleyin:

  1. Azure portalında, Kaynak oluştur>Kapsayıcılar>Container Registry'yi seçin.

  2. 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.
  3. Oluştur’u seçin.

  4. Yeni oluşturulan kapsayıcı kayıt defterinizi açmak için Azure portal giriş sayfanızın Kaynaklar bölümünden seçin.

  5. Kapsayıcı kayıt defterinizin sol bölmesinde Ayarlar'ın altında yer alan menüden Erişim anahtarları'nı seçin.

  6. İki durumlu düğmeyle Yönetici kullanıcıyı etkinleştirin ve kapsayıcı kayıt defteriniz için Kullanıcı Adı ve Parola'yı görüntüleyin.

  7. Oturum açma sunucusu, Kullanıcı adı ve parola değerlerini kopyalayın ve uygun bir yere kaydedin. Kapsayıcı kayıt defterine erişim sağlamak için bu öğretici boyunca bu değerleri kullanırsınız.

Yeni modül projesi oluşturma

Azure IoT Edge Tools uzantısı, Visual Studio'da desteklenen tüm IoT Edge modülü dilleri için proje şablonları sağlar. Bu şablonlar, IoT Edge test etmek veya şablonu kendi iş mantığınızla özelleştirmek için size bir başlangıç noktası sağlamak için bir çalışma modülü dağıtmanız gereken tüm dosyalara ve kodlara sahiptir.

  1. Dosya>Yeni>Proje'yi seçin...

  2. Yeni proje penceresinde IoT Edge arayın ve Azure IoT Edge (Windows amd64) projesini seçin. İleri’ye tıklayın.

    Yeni bir Azure IoT Edge projesi oluşturma

  3. Yeni projenizi 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.

    Yeni bir Azure IoT Edge projesi yapılandırma

  4. Modül Ekle penceresinde projenizi aşağıdaki değerlerle yapılandırın:

    Alan Değer
    Visual Studio Şablonu C# Modülü'ne tıklayın.
    Modül Adı Varsayılan IotEdgeModule1'i 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ı görüntünüz modül proje adı değerinden önceden doldurulur. localhost:5000 değerini Azure kapsayıcı kayıt defterinizdeki 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, kayıt defteri adı.azurecr.io/iotedgemodule1> gibi <görünür.

    Projenizi hedef cihaz, modül türü ve kapsayıcı kayıt defteri için yapılandırma

  5. Modülü oluşturmak için Ekle'yi seçin.

Yeni projeniz Visual Studio penceresine yüklendikten sonra, oluşturduğunuz dosyaları tanımak için biraz zaman ayırın:

  • CSharpTutorialApp adlı bir IoT Edge projesi.
    • Modules klasörü, projeye dahil edilen 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 çekme erişimine sahip olması için IoT Edge cihazınızla paylaşılır.
    • deployment.template.json dosyası, dağıtım bildirimi oluşturmanıza yardımcı olan bir şablondur. Dağıtım bildirimi, bir cihaza tam olarak hangi modüllerin dağıtılmasını istediğinizi, bunların nasıl yapılandırılması gerektiğini ve birbirleriyle ve bulutla nasıl iletişim kurabileceklerini tanımlayan bir dosyadır.

      İpucu

      Kayıt defteri kimlik bilgileri bölümünde adres, çözümü oluştururken sağladığınız bilgilerden otomatik olarak doldurulur. Ancak, .env dosyasında depolanan kullanıcı adı ve parola başvuru değişkenleri. .env dosyası git yok sayıldığı için, ancak dağıtım şablonu yok sayıldığı için bu 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 bunu IoT Hub iletir.
    • module.json dosyası tam görüntü deposu, görüntü sürümü ve desteklenen her platform için kullanılacak Dockerfile dahil olmak üzere modülle ilgili ayrıntıları tutar.

IoT Edge çalışma zamanı sürümünü ayarlama

IoT Edge uzantısı, dağıtım varlıklarınızı oluştururken varsayılan olarak IoT Edge çalışma zamanının en son kararlı sürümünü kullanır.

Windows kapsayıcıları yalnızca 1.1 uzun vadeli destek sürümünde veya önceki 1.0 sürümünde desteklenir. Windows kapsayıcılarını kullanan cihazlara yönelik modüller geliştirmek için Visual Studio'daki IoT Edge çalışma zamanı sürümünü bu cihazlardaki IoT Edge sürümüyle eşleşecek şekilde güncelleştirin.

  1. Çözüm Gezgini projenizin adına sağ tıklayın ve Çalışma zamanı sürümünü IoT Edge ayarla'yı seçin.

    Projenizin adına sağ tıklayın ve çalışma zamanı sürümünü IoT Edge ayarla'yı seçin.

  2. 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 Tamam'ı seçin.

  3. Yeni çalışma zamanı sürümüyle dağıtım bildiriminizi yeniden oluşturun. Projenizin adına sağ tıklayın ve IoT Edge için dağıtım oluştur'a tıklayın.

kayıt defteri kimlik bilgilerinizi IoT Edge aracısına sağlayın

IoT Edge çalışma zamanı, kapsayıcı görüntülerinizi IoT Edge cihaza çekmek için kayıt defteri kimlik bilgilerinize ihtiyaç duyar. IoT Edge uzantısı, kapsayıcı kayıt defteri bilgilerinizi Azure'dan çekmeye ve dağıtım şablonunda doldurmaya çalışır.

  1. Modül çözümünüzde deployment.template.json dosyasını açın.

  2. İstenen $edgeAgent özelliklerde registryCredentials özelliğini bulun. Projeyi oluştururken sağladığınız bilgilerden kayıt defteri adresinizin otomatik olarak doldurulması ve ardından kullanıcı adı ve parola alanlarının değişken adları içermesi gerekir. Örnek:

    "registryCredentials": {
      "<registry name>": {
        "username": "$CONTAINER_REGISTRY_USERNAME_<registry name>",
        "password": "$CONTAINER_REGISTRY_PASSWORD_<registry name>",
        "address": "<registry name>.azurecr.io"
      }
    }
    
  3. Modül çözümünüzde .env dosyasını açın. (Çözüm Gezgini varsayılan olarak gizlenir, bu nedenle görüntülemek için Tüm Dosyaları Göster düğmesini seçmeniz gerekebilir.)

  4. Azure kapsayıcı kayıt defterinizden kopyaladığınız Kullanıcı adı ve Parola değerlerini ekleyin.

  5. Değişikliklerinizi .env dosyasına kaydedin.

Not

Bu öğreticide, geliştirme ve test senaryoları için uygun olan Azure Container Registry 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ı kimlik doğrulama seçeneğini öneririz. Daha fazla bilgi için bkz. Kapsayıcı kayıt defterinize erişimi yönetme.

Örnek kodu gözden geçirin

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 sonra iletir. İşlem hattı işlevi, modüllerin birbirleriyle iletişim kurma şekli olan IoT Edge önemli bir kavramı gösterir.

Her modülün kodunda bildirilen birden çok giriş ve çıkış kuyruğu olabilir. Cihazda çalışan IoT Edge hub'ı, bir modülün çıkışındaki iletileri bir veya daha fazla modülün girişine yönlendirir. Girişleri ve çıkışları bildirmeye yönelik belirli kod diller arasında farklılık gösterir, ancak kavram tüm modüllerde 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ından ModuleClient Sınıfını kullanır.

  1. program.cs dosyasında SetInputMessageHandlerAsync yöntemini bulun.

  2. 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 nasıl başlatmış olduğunu görün.

    SetInputMessageHandlserAsync oluşturucusunda giriş adını bulma

  3. Ardından SendEventAsync yöntemini bulun.

  4. SendEventAsync yöntemi alınan iletileri işler ve bunları geçirmek için bir çıkış kuyruğu ayarlar. Bu yöntemi gözden geçirin ve output1 adlı bir çıkış kuyruğu başlatdığını görün.

    SendEventAsync oluşturucusunda çıkış adını bulma

  5. deployment.template.json dosyasını açın.

  6. İstenen $edgeAgent özelliklerin modules özelliğini bulun.

    Burada listelenen iki modül olmalıdır. Bunlardan biri, modüllerinizi test etmek için kullanabileceğiniz simülasyon sıcaklık verilerini sağlamak için varsayılan olarak tüm şablonlara dahil edilen SimulatedTemperatureSensor modülüdür. Diğeri ise bu projenin bir parçası olarak oluşturduğunuz IotEdgeModule1 modülüdür.

    Bu modules özelliği, cihazınıza veya cihazlarınıza dağıtıma hangi modüllerin dahil edilmesi gerektiğini bildirir.

  7. İstenen özellikleri $edgeHub routes ö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önlendirmektir. routes özelliğindeki değerleri gözden geçirin. Bir yol olan IotEdgeModule1ToIoTHub, IotEdgeModule1 modülündeki herhangi bir çıkış kuyruğundan gelen iletileri dahil etmek için joker karakter (*) kullanır. Bu iletiler IoT Hub belirten ayrılmış bir ad olan $upstream'a gider. Diğer yol olan sensorToIotEdgeModule1, SimulatedTemperatureSensor modülünden gelen iletileri alır ve bunları IotEdgeModule1 modülünün input1 giriş kuyruğuna yönlendirir.

    deployment.template.json dosyasındaki yolları gözden geçirme

Çözümünüzü oluşturma ve gönderme

Bazı önemli dağıtım kavramlarını anlamak için modül kodunu ve dağıtım şablonunu gözden geçirdiniz. Artık IotEdgeModule1 kapsayıcı görüntüsünü oluşturmaya ve kapsayıcı kayıt defterinize göndermeye hazırsınız. Visual Studio için IoT araçları uzantısıyla bu adım, şablon dosyasındaki bilgileri ve çözüm dosyalarındaki modül bilgilerini temel alan dağıtım bildirimini de oluşturur.

Docker'da oturum açma

Kapsayıcı görüntünüzü kayıt defterinde depolanmak üzere gönderebilmesi için geliştirme makinenizdeki Docker'a kapsayıcı kayıt defteri kimlik bilgilerinizi sağlayın.

  1. PowerShell'i veya komut istemini açın.

  2. Kayıt defterini oluşturduktan sonra kaydettiğiniz Azure kapsayıcı kayıt defteri kimlik bilgileriyle Docker'da oturum açın.

    docker login -u <ACR username> -p <ACR password> <ACR login server>
    

    kullanılmasını --password-stdinöneren bir güvenlik uyarısı alabilirsiniz. Üretim senaryoları için bu en iyi yöntem önerilir ancak 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 erişecektir. Proje kodunu bir kapsayıcı görüntüsüne dönüştürmenin zamanı geldi.

  1. CSharpTutorialApp proje klasörüne sağ tıklayın ve IoT Edge Modülleri Oluştur ve Gönder'i seçin.

    IoT Edge modülleri oluşturma ve gönderme

    Derleme ve gönderme komutu üç işlem başlatır. İlk olarak, çözümde, dağıtım şablonundaki ve diğer çözüm dosyalarındaki bilgilerle oluşturulmuş, tam dağıtım bildirimini tutan config adlı yeni bir klasör oluşturur. İkincisi, kapsayıcı görüntüsünü hedef mimariniz için uygun dockerfile'ı temel alarak derlemek için çalışır docker build . Ardından, görüntü deposunu kapsayıcı kayıt defterinize göndermek için çalışır docker push .

    Bu işlem ilk kez birkaç dakika sürebilir, ancak komutları bir sonraki çalıştırmanızda daha hızlıdır.

  2. Yeni oluşturulan yapılandırma klasöründe deployment.windows-amd64.json dosyasını açın. (Yapılandırma klasörü Visual Studio'daki Çözüm Gezgini görünmeyebilir. Bu durumda, Çözüm Gezgini görev çubuğunda Tüm dosyaları göster simgesini seçin.)

  3. 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 etiketiyle tam görüntü deposunu içerdiğine dikkat edin.

  4. IotEdgeModule1 klasöründe module.json dosyasını açın.

  5. 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 yapmışız gibi düzeltme eki sürüm numarasını 0.0.2'ye çıkarın.

    İpucu

    Modül sürümleri sürüm denetimini etkinleştirir ve güncelleştirmeleri üretime dağıtmadan önce küçük bir cihaz kümesinde değişiklikleri test etmenizi sağlar. Derlemeden ve göndermeden önce modül sürümünü artırmazsanız, kapsayıcı kayıt defterinizdeki deponun üzerine yazarsınız.

  6. Değişikliklerinizi module.json dosyasına kaydedin.

  7. CSharpTutorialApp proje klasörüne yeniden sağ tıklayın ve IoT Edge Modülleri Oluştur ve Gönder'i yeniden seçin.

  8. deployment.windows-amd64.json dosyasını yeniden açın. Derleme ve gönderme komutunu yeniden çalıştırdığınızda yeni bir dosyanın oluşturulmadığını göreceksiniz. 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ü işaret eder. Dağıtım bildirimindeki bu değişiklik, IoT Edge cihaza çekmesi gereken modülün yeni bir sürümünün olduğunu nasıl bildirdiğinizdir.

  9. Derleme ve gönderme komutunun ne yaptığını daha fazla doğrulamak için Azure portal gidin ve kapsayıcı kayıt defterinize gidin.

  10. Kapsayıcı kayıt defterinizde Depolar'ı ve ardından iotedgemodule1'i seçin. Görüntünün her iki sürümünün de kayıt defterine gönderildiğini doğrulayın.

    Kapsayıcı kayıt defterinde her iki görüntü sürümünü de görüntüleme

Sorun giderme

Modül görüntünüzü oluştururken ve iletirken hatalarla karşılaşırsanız, bunun genellikle geliştirme makinenizdeki Docker yapılandırmasıyla ilgili olması gerekir. Yapılandırmanızı gözden geçirmek için aşağıdaki denetimleri kullanın:

  • Kapsayıcı kayıt defterinizden kopyaladığınız kimlik bilgilerini kullanarak komutunu çalıştırdıysanız docker login ? Bu kimlik bilgileri, Azure'da oturum açmak için kullanılanlardan farklıdır.
  • Kapsayıcı deponuz doğru mu? Doğru kapsayıcı kayıt defteri adınız ve doğru modül adınız var mı? Denetlemek için IotEdgeModule1 klasöründe module.json dosyasını açın. Depo değeri kayıt defteri adı.azurecr.io/iotedgemodule1> gibi< görünmelidir.
  • Modülünüz için IotEdgeModule1'den farklı bir ad kullandıysanız bu ad çözüm genelinde tutarlı mı?
  • Makineniz, oluşturduğunuz kapsayıcı türüyle aynı türde mi çalışıyor? Bu öğretici Windows IoT Edge cihazlar içindir, bu nedenle Visual Studio dosyalarınızda windows-amd64 uzantısı olmalı ve Docker Desktop'ın Windows kapsayıcıları çalıştırıyor olması gerekir.

Modülleri cihaza dağıtma

Yerleşik kapsayıcı görüntülerinin kapsayıcı kayıt defterinizde depolandığını doğruladınız, bu nedenle bunları bir cihaza dağıtmanın zamanı geldi. IoT Edge cihazınızın çalışır durumda olduğundan emin olun.

  1. Visual Studio'da Bulut Gezgini'ni açın ve IoT hub'ınızın ayrıntılarını genişletin.

  2. Dağıtmak istediğiniz cihazın adını seçin. Eylemler listesinde Dağıtım Oluştur'u seçin.

    Tek bir cihaz için dağıtım oluşturma

  3. Dosya gezgininde projenizin yapılandırma 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.json

    tam modül görüntü değerleri içermeyen deployment.template.json dosyasını kullanmayın.

  4. Cihazınızdaki modülleri görmek için Bulut Gezgini'nde IoT Edge cihazınızın ayrıntılarını genişletin.

  5. Cihazınızın SimulatedTemperatureSensor ve IotEdgeModule1 modüllerinin dağıtıldığını görmek üzere cihaz durumunu güncelleştirmek için Yenile düğmesini kullanın.

    IoT Edge cihazınızda çalışan modülleri görüntüleme

Cihazdan iletileri görüntüleme

IotEdgeModule1 kodu, iletileri giriş kuyruğundan alır ve bunları çıkış kuyruğu boyunca geçirir. Dağıtım bildirimi, İletileri SimulatedTemperatureSensor'dan IotEdgeModule1'e ileten ve sonra IotEdgeModule1'den IoT Hub iletilen yolları bildirmiş. Visual Studio için Azure IoT Edge araçları, iletileri tek tek cihazlarınızdan IoT Hub geldiğinde görmenizi sağlar.

  1. Visual Studio Bulut Gezgini'nde dağıttığınız IoT Edge cihazının adını seçin.

  2. Eylemler menüsünde Yerleşik Olay Uç Noktasını İzlemeyi Başlat'ı seçin.

  3. IoT hub'ınıza gelen iletileri görmek için Visual Studio'daki Çıkış bölümünü izleyin.

    Her iki modülün de başlatılması 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 aşağı çekmesi ve ardından her yeni modülü başlatması gerekir.

    Gelen cihazı bulut iletilerine görüntüleme

Cihazdaki değişiklikleri görüntüleme

Cihazınızda neler olduğunu görmek istiyorsanız, 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 makinenize değil IoT Edge cihazınıza yönelik olarak sağlanır. IoT Edge cihazınız için bir sanal makine kullanıyorsanız şimdi bu makineye bağlanın. Azure'da sanal makinenin genel bakış sayfasına gidin ve uzak masaüstü bağlantısına erişmek için Bağlan'ı seçin. Cihazda, komutları çalıştırmak iotedge için bir komut veya PowerShell penceresi açın.

  • Cihazınıza dağıtılan tüm modülleri görüntüleyin ve durumlarını denetleyin:

    iotedge list
    

    Dört modül görmeniz gerekir: iki IoT Edge çalışma zamanı modülü, SimulatedTemperatureSensor ve IotEdgeModule1. Dördü de ç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 IotEdgeModule1 günlükleri, işledikleri iletileri göstermelidir. EdgeAgent modülü diğer modülleri başlatmakla sorumludur, bu nedenle günlükleri dağıtım bildirimini uygulama hakkında bilgi edinecektir. Herhangi bir modül listelenmiyorsa veya çalışmıyorsa edgeAgent günlükleri büyük olasılıkla hatalara sahip olacaktır. EdgeHub modülü, modüller ve IoT Hub arasındaki iletişimlerden sorumludur. Modüller çalışır durumdaysa ancak iletiler IoT hub'ınıza ulaşmıyorsa edgeHub günlüklerinde büyük olasılıkla hatalar olacaktır.

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 kullandığınız 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'ını tutmak istediğiniz kaynakların bulunduğu mevcut bir kaynak grubunda oluşturduysanız, kaynak grubunu değil yalnızca IoT hub kaynağını silin.

Kaynakları silmek için:

  1. Azure portalında oturum açın ve Kaynak grupları’nı seçin.

  2. IoT Edge test kaynaklarınızı içeren kaynak grubunun adını seçin.

  3. Kaynak grubunuzda bulunan kaynakların 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 makinenizde Visual Studio 2019'ı ayarladınız ve bu makineden ilk IoT Edge modülünüzü dağıttınız. Temel kavramları öğrendiğinize göre, modülden geçen verileri analiz edebilmesi için modüle işlevsellik eklemeyi deneyin. Tercih ettiğiniz dili seçin:

CC#