Öğretici: Windows cihazları için IoT Edge modülleri geliştirmeTutorial: Develop IoT Edge modules for Windows devices

IoT Edge çalıştıran Windows cihazlarına kod geliştirmek ve dağıtmak için Visual Studio 'Yu kullanın.Use Visual Studio to develop and deploy code to Windows devices running IoT Edge.

Hızlı başlangıçta, bir Windows sanal makinesini kullanarak IoT Edge bir cihaz oluşturdunuz ve Azure Marketi 'nden önceden oluşturulmuş bir modül dağıtıldı.In the quickstart, you created an IoT Edge device using a Windows virtual machine and deployed a pre-built module from the Azure Marketplace. Bu öğretici, bir IoT Edge cihazına kendi kodunuzu geliştirme ve dağıtma konusunda size yol gösterir.This tutorial walks through what it takes to develop and deploy your own code to an IoT Edge device. 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.This tutorial is a useful prerequisite for the other tutorials, which go into more detail about specific programming languages or Azure services.

Bu öğretici bir C# Windows cihazına Modüldağıtma örneğini kullanır.This tutorial uses the example of deploying a C# module to a Windows device. En yaygın geliştirme senaryosu olduğundan bu örnek seçildi.This example was chosen because it's the most common development scenario. 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.If you're interested in developing in a different language, or plan on deploying Azure services as modules, this tutorial will still be helpful to learn about the development tools. Geliştirme kavramlarını anladıktan sonra, ayrıntıları görmek için tercih ettiğiniz dili veya Azure hizmetini seçebilirsiniz.Once you understand the development concepts, then you can choose your preferred language or Azure service to dive into the details.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:In this tutorial, you learn how to:

  • Geliştirme makinenizi ayarlayın.Set up your development machine.
  • Visual Studio için IoT Edge araçları 'nı kullanarak yeni bir proje oluşturun.Use the IoT Edge tools for Visual Studio to create a new project.
  • Projenizi kapsayıcı olarak derleyin ve Azure Container Registry 'de saklayın.Build your project as a container and store it in an Azure container registry.
  • Kodunuzu bir IoT Edge cihazına dağıtın.Deploy your code to an IoT Edge device.

Azure aboneliğinizyoksa başlamadan önce ücretsiz bir hesap oluşturun.If you don't have an Azure subscription, create a free account before you begin.

Önemli kavramlarKey concepts

Bu öğreticide IoT Edge modülünün geliştirilmesi gösterilmektedir.This tutorial walks through the development of an IoT Edge module. 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.An IoT Edge module, or sometimes just module for short, is a container that contains executable code. Bir IoT Edge cihazına bir veya daha fazla modül dağıtabilirsiniz.You can deploy one or more modules to an IoT Edge device. 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.Modules perform specific tasks like ingesting data from sensors, performing data analytics or data cleaning operations, or sending messages to an IoT hub. Daha fazla bilgi için bkz. Azure IoT Edge modüllerini anlama.For more information, see Understand Azure IoT Edge modules.

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.When developing IoT Edge modules, it's important to understand the difference between the development machine and the target IoT Edge device where the module will eventually be deployed. Modül kodunuzu tutmak için oluşturduğunuz kapsayıcı, hedef cihazınişletim SISTEMI (OS) ile aynı olmalıdır.The container that you build to hold your module code must match the operating system (OS) of the target device. 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.For Windows container development, this concept is simpler because Windows containers only run on Windows operating systems. Ancak örneğin, Windows geliştirme makinenizi Linux IoT Edge cihazları için modüller oluşturmak üzere kullanabilirsiniz.But you could, for example, use your Windows development machine to build modules for Linux IoT Edge devices. Bu senaryoda, geliştirme makinenizin Linux kapsayıcıları çalıştırdığından emin olmanız gerekir.In that scenario, you'd have to make sure that your development machine was running Linux containers. Bu öğreticiye giderek, geliştirme MAKINESI işletim sistemi ve kapsayıcı işletim sistemiarasındaki farkı aklınızda bulundurun.As you go through this tutorial, keep in mind the difference between development machine OS and the container OS.

Bu öğretici, IoT Edge çalıştıran Windows cihazlarını hedefler.This tutorial targets Windows devices running IoT Edge. Windows IoT Edge cihazları Windows kapsayıcıları kullanır.Windows IoT Edge devices use Windows containers. Bu öğreticinin kullanacağı, Windows cihazları için geliştirme için Visual Studio kullanmanızı öneririz.We recommend using Visual Studio to develop for Windows devices, so that's what this tutorial will use. İki araç arasındaki DESTEKDE farklılıklar olsa da Visual Studio Code de kullanabilirsiniz.You can use Visual Studio Code as well, although there are differences in support between the two tools.

Aşağıdaki tabloda, Visual Studio Code ve Visual Studio 'da Windows kapsayıcıları için desteklenen geliştirme senaryoları listelenmiştir.The following table lists the supported development scenarios for Windows containers in Visual Studio Code and Visual Studio.

Visual Studio CodeVisual Studio Code Visual Studio 2017/2019Visual Studio 2017/2019
Azure hizmetleriAzure services Azure İşlevleriAzure Functions
Azure Stream AnalyticsAzure Stream Analytics
DillerLanguages C#(hata ayıklama desteklenmiyor)C# (debugging not supported) CC
C#C#
Daha fazla bilgiMore information Visual Studio Code için Azure IoT EdgeAzure IoT Edge for Visual Studio Code Visual Studio 2017 için Azure IoT Edge araçlarıAzure IoT Edge Tools for Visual Studio 2017
Visual Studio 2019 için Azure IoT Edge araçlarıAzure IoT Edge Tools for Visual Studio 2019

ÖnkoşullarPrerequisites

Geliştirme makinesi:A development machine:

  • Windows 10, 1809 güncelleştirmesiyle veya daha yeni bir sürüm.Windows 10 with 1809 update or newer.
  • Geliştirme tercihlerinize bağlı olarak kendi bilgisayarınızı veya bir sanal makineyi kullanabilirsiniz.You can use your own computer or a virtual machine, depending on your development preferences.
  • Git'i yükleyin.Install Git.

Windows 'da Azure IoT Edge cihaz:An Azure IoT Edge device on Windows:

  • Geliştirme makinenizde IoT Edge çalıştırmanızı öneririz, bunun yerine ayrı bir cihaz kullanın.We recommend that you don't run IoT Edge on your development machine, but instead use a separate device. 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.This distinction between development machine and IoT Edge device more accurately mirrors a true deployment scenario, and helps to keep the different concepts straight.
  • Kullanılabilir ikinci bir cihazınız yoksa, Azure 'da bir Windows sanal makinesiyleIoT Edge bir cihaz oluşturmak için hızlı başlangıç makalesini kullanın.If you don't have a second device available, use the quickstart article to create an IoT Edge device in Azure with a Windows virtual machine.

Bulut kaynakları:Cloud resources:

  • Azure 'da ücretsiz veya Standart katmanlı IoT Hub 'ı .A free or standard-tier IoT hub in Azure.

Kapsayıcı altyapısını yüklerInstall container engine

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.IoT Edge modules are packaged as containers, so you need a container engine on your development machine to build and manage the containers. 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.We recommend using Docker Desktop for development because of its many features and popularity as a container engine. 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.With Docker Desktop on a Windows computer, you can switch between Linux containers and Windows containers so that you can easily develop modules for different types of IoT Edge devices.

Geliştirme makinenize yüklemek için Docker belgelerini kullanın:Use the Docker documentation to install on your development machine:

Visual Studio ve araçları ayarlamaSet up Visual Studio and tools

Visual Studio için IoT uzantıları IoT Edge modüller geliştirmenize yardımcı olur.The IoT extensions for Visual Studio help you to develop IoT Edge modules. 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.These extensions provide project templates, automate the creation of the deployment manifest, and allow you to monitor and manage IoT Edge devices. Bu bölümde, Visual Studio 'Yu ve IoT Edge uzantısını yüklersiniz ve sonra Azure hesabınızı, IoT Hub kaynaklarını Visual Studio içinden yönetecek şekilde ayarlarsınız.In this section, you install Visual Studio and the IoT Edge extension, then set up your Azure account to manage IoT Hub resources from within Visual Studio.

Bu öğretici, Visual Studio 2019 için geliştirme adımlarını öğretir.This tutorial teaches the development steps for Visual Studio 2019. Visual Studio 2017 (sürüm 15,7 veya üzeri) kullanıyorsanız, adımlar çok benzerdir.If you are using Visual Studio 2017 (version 15.7 or higher), the steps are very similar. 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.If you would rather use Visual Studio Code, refer to the instructions in Use Visual Studio Code to develop and debug modules for Azure IoT Edge.

  1. Geliştirme makinenizde Visual Studio 2019 ' i hazırlayın.Prepare Visual Studio 2019 on your development machine.

    • Geliştirme makinenizde zaten Visual Studio yoksa, aşağıdaki iş yükleriyle Visual studio 2019 ' i yükleyebilirsiniz:If you don't already have Visual Studio on your development machine, Install Visual Studio 2019 with the following workloads:

      • Azure geliştirmeAzure development
      • C++ ile masaüstü geliştirmeDesktop development with C++
      • .NET core platformlar arası geliştirme.NET Core cross-platform development
    • Geliştirme makinenizde Visual Studio 2019 zaten varsa, gerekli iş yüklerini eklemek için Visual Studio 'Yu değiştirme bölümündeki adımları izleyin.If you do already have Visual Studio 2019 on your development machine, follow the steps in Modify Visual Studio to add the required workloads.

  2. Visual Studio 2019 için Azure IoT Edge araçları uzantısını indirip yükleyin.Download and install the Azure IoT Edge Tools extension for Visual Studio 2019.

    Visual Studio 2017 (sürüm 15,7 veya üzeri) kullanıyorsanız, Visual studio 2017 için Azure IoT Edge araçları' nı indirip yükleyin.If you are using Visual Studio 2017 (version 15.7 or higher), download and install the Azure IoT Edge Tools for Visual Studio 2017.

  3. Yüklemelerinizi tamamladığınızda, Visual Studio 2019 ' i açın ve kod olmadan devam' ı seçin.When your installations are complete, open Visual Studio 2019 and select Continue without code.

  4. Bulut Gezginini görüntüle > ' yi seçin.Select View > Cloud Explorer.

  5. Bulut Gezgini 'nde profil simgesini seçin ve henüz oturum açmadıysanız Azure hesabınızda oturum açın.Select the profile icon in the cloud explorer and sign in to your Azure account if you aren't signed in already.

  6. Oturum açtıktan sonra Azure abonelikleriniz listelenir.Once you sign in, your Azure subscriptions are listed. IoT Hub 'ınızı içeren aboneliği genişletin.Expand the subscription that has your IoT hub.

  7. Aboneliğiniz altında IoT hub 'larınızı ve IoT Hub 'ınızı genişletin.Under your subscription, expand IoT Hubs then your IoT hub. IoT cihazlarınızın bir listesini görmeniz ve bu Gezgini kullanarak bunları yönetebilmeniz gerekir.You should see a list of your IoT devices, and can use this explorer to manage them.

    Bulut Gezgininde IoT Hub kaynaklarına erişin

Kapsayıcı kayıt defteri oluşturmaCreate a container registry

Bu öğreticide, bir modül olarak derlemek ve oluşturmak için Azure IOT araçları uzantısını kullanmak bir kapsayıcı görüntüsü dosyalarından.In this tutorial, you use the Azure IoT Tools extension to build a module and create a container image from the files. Ardından bu görüntüyü, görüntülerinizin depolandığı ve yönetildiği kayıt defterine gönderirsiniz.Then you push this image to a registry that stores and manages your images. Son olarak, görüntünüzü IoT Edge cihazınızda çalıştırmak üzere kayıt defterinizden dağıtırsınız.Finally, you deploy your image from your registry to run on your IoT Edge device.

Herhangi bir Docker ile uyumlu kayıt defteri, kapsayıcı görüntülerinizi tutmak için kullanabilirsiniz.You can use any Docker-compatible registry to hold your container images. İki popüler Docker kayıt defteri Hizmetleri Azure Container Registry ve Docker Hub.Two popular Docker registry services are Azure Container Registry and Docker Hub. Bu öğreticide Azure Container Registry kullanılır.This tutorial uses Azure Container Registry.

Kapsayıcı kayıt defteri zaten yoksa, azure'da yeni bir tane oluşturmak için aşağıdaki adımları izleyin:If you don't already have a container registry, follow these steps to create a new one in Azure:

  1. Azure portalında, Kaynak oluştur > Kapsayıcılar > Container Registry'yi seçin.In the Azure portal, select Create a resource > Containers > Container Registry.

  2. Kapsayıcı kayıt defterinizi oluşturmak için aşağıdaki değerleri girin:Provide the following values to create your container registry:

    AlanField DeğerValue
    Kayıt defteri adıRegistry name Benzersiz bir ad girin.Provide a unique name.
    AbonelikSubscription Açılan listeden bir abonelik seçin.Select a subscription from the drop-down list.
    Kaynak grubuResource group 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.We recommend that you use the same resource group for all of the test resources that you create during the IoT Edge quickstarts and tutorials. Örneğin, IoTEdgeResources.For example, IoTEdgeResources.
    KonumLocation Size yakın bir konum seçin.Choose a location close to you.
    Yönetici kullanıcıAdmin user Etkinleştir'i seçin.Set to Enable.
    SKUSKU Temel'i seçin.Select Basic.
  3. Oluştur’u seçin.Select Create.

  4. Kapsayıcı kayıt defteriniz oluşturulduktan sonra, bu kayıt defterine gidin ve Erişim anahtarları'nı seçin.After your container registry is created, browse to it, and then select Access keys.

  5. Değerlerini kopyalayın oturum açma sunucusu, kullanıcıadı, ve parola ve kullanışlı bir yere kaydedin.Copy the values for Login server, Username, and Password and save them somewhere convenient. Bu öğretici boyunca bu değerler, kapsayıcı kayıt defterine erişim sağlamak için kullanın.You use these values throughout this tutorial to provide access to the container registry.

    Oturum açma sunucusu, kullanıcı adını ve kapsayıcı kayıt defteri parolasını kopyalayın

Yeni bir modül projesi oluşturCreate a new module project

Azure IoT Edge araçları uzantısı, Visual Studio 'da desteklenen tüm IoT Edge modül dilleri için proje şablonları sağlar.The Azure IoT Edge Tools extension provides project templates for all supported IoT Edge module languages in Visual Studio. 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.These templates have all the files and code that you need to deploy a working module to test IoT Edge, or give you a starting point to customize the template with your own business logic.

  1. Dosya > yeniProje > ... öğesini seçinSelect File > New > Project...

  2. Yeni proje penceresinde, IoT Edge arayın ve Azure IoT Edge (Windows amd64) projesi seçin.In the new project window, search for IoT Edge and choose the Azure IoT Edge (Windows amd64) project. İleri'ye tıklayın.Click Next.

    Yeni bir Azure IoT Edge projesi oluştur

  3. Yeni projeyi yapılandırın penceresinde, projeyi ve çözümü CSharpTutorialAppgibi açıklayıcı bir şekilde yeniden adlandırın.In the configure your new project window, rename the project and solution to something descriptive like CSharpTutorialApp. Projeyi oluşturmak için Oluştur ' a tıklayın.Click Create to create the project.

    Yeni bir Azure IoT Edge projesi yapılandırma

  4. Modül Ekle penceresinde, projenizi aşağıdaki değerlerle yapılandırın:In the Add Module window, configure your project with the following values:

    AlanField ValueValue
    Visual Studio şablonuVisual Studio Template C# Modülseçin.Select C# Module.
    Modül AdıModule Name Varsayılan IotEdgeModule1kabul edin.Accept the default IotEdgeModule1.
    Depo URL'siRepository Url Görüntü deposu, kapsayıcı kayıt defterinizin adını ve kapsayıcı görüntünüzün adını içerir.An image repository includes the name of your container registry and the name of your container image. Kapsayıcı resminiz modül proje adı değerinden önceden doldurulur.Your container image is prepopulated from the module project name value. localhost:5000 yerine Azure kapsayıcı kayıt defterinizden alacağınız oturum açma sunucusu değerini yazın.Replace localhost:5000 with the login server value from your Azure container registry. Oturum açma sunucusunu Azure portalda kapsayıcı kayıt defterinizin Genel bakış sayfasından alabilirsiniz.You can retrieve the login server from the Overview page of your container registry in the Azure portal.

    Son görüntü deposu, kayıt defteri <adı>. azurecr.io/iotedgemodule1 gibi görünür.The final image repository looks like <registry name>.azurecr.io/iotedgemodule1.

    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.Select Add to create the module.

Yeni projeniz Visual Studio penceresinde yüklendikten sonra, oluşturduğu dosyaları öğrenmek için biraz zaman ayırın:Once your new project loads in the Visual Studio window, take a moment to familiarize yourself with the files that it created:

  • CSharpTutorialAppadlı bir IoT Edge projesi.An IoT Edge project called CSharpTutorialApp.
    • Modüller klasörü, projeye dahil olan modüllerin işaretçilerini içerir.The Modules folder contains pointers to the modules included in the project. Bu durumda, yalnızca IotEdgeModule1 olmalıdır.In this case, it should be just IotEdgeModule1.
    • Deployment . Template. JSON dosyası bir dağıtım bildirimi oluşturmanıza yardımcı olacak bir şablondur.The deployment.template.json file is a template to help you create a deployment manifest. 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.A deployment manifest is a file that defines exactly which modules you want deployed on a device, how they should be configured, and how they can communicate with each other and the cloud.
  • IotEdgeModule1adlı bir IoT Edge modülü projesi.An IoT Edge module project called IotEdgeModule1.
    • Program.cs dosyası, proje şablonuyla birlikte C# gelen varsayılan modül kodunu içerir.The program.cs file contains the default C# module code that comes with the project template. Varsayılan modül bir kaynaktan giriş alır ve IoT Hub buna karşı geçirir.The default module takes input from a source and passes it along to IoT Hub.
    • 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.The module.json file hold details about the module, including the full image repository, image version, and which Dockerfile to use for each supported platform.

IoT Edge aracısına kayıt defteri kimlik bilgilerinizi girinProvide your registry credentials to the IoT Edge agent

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.The IoT Edge runtime needs your registry credentials to pull your container images onto the IoT Edge device. Bu kimlik bilgilerini Dağıtım şablonuna ekleyin.Add these credentials to the deployment template.

  1. Deployment. Template. JSON dosyasını açın.Open the deployment.template.json file.

  2. $EdgeAgent istenen özelliklerde Registrycredentials özelliğini bulun.Find the registryCredentials property in the $edgeAgent desired properties.

  3. Bu biçimi izleyerek özelliği kimlik bilgilerinizle güncelleştirin:Update the property with your credentials, following this format:

    "registryCredentials": {
      "<registry name>": {
        "username": "<username>",
        "password": "<password>",
        "address": "<registry name>.azurecr.io"
      }
    }
    
  4. Deployment. Template. json dosyasını kaydedin.Save the deployment.template.json file.

Örnek kodu gözden geçirinReview the sample code

Oluşturduğunuz çözüm şablonu, bir IoT Edge modülü için örnek kod içerir.The solution template that you created includes sample code for an IoT Edge module. Bu örnek modül yalnızca iletileri alır ve ardından üzerine geçirir.This sample module simply receives messages and then passes them on. Ardışık düzen işlevselliği, modüllerin birbirleriyle iletişim kurduğu IoT Edge önemli bir kavramı gösterir.The pipeline functionality demonstrates an important concept in IoT Edge, which is how modules communicate with each other.

Her modülün kodunda birden çok giriş ve Çıkış kuyruğu olabilir.Each module can have multiple input and output queues declared in their code. 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.The IoT Edge hub running on the device routes messages from the output of one module into the input of one or more modules. Giriş ve çıkışları bildirmek için dile özgü dil diller arasında farklılık gösterir, ancak kavram tüm modüller arasında aynıdır.The specific language for declaring inputs and outputs varies between languages, but the concept is the same across all modules. Modüller arasında yönlendirme hakkında daha fazla bilgi için bkz. yolları bildirme.For more information about routing between modules, see Declare routes.

Proje şablonuyla C# birlikte gelen örnek kod, .net için IoT Hub SDK 'Sının moduleclient sınıfını kullanır.The sample C# code that comes with the project template uses the ModuleClient Class from the IoT Hub SDK for .NET.

  1. Program.cs dosyasında Setınputmessagehandlerasync metodunu bulun.In the program.cs file, find the SetInputMessageHandlerAsync method.

  2. Setınputmessagehandlerasync yöntemi gelen iletileri almak için bir giriş kuyruğu ayarlar.The SetInputMessageHandlerAsync method sets up an input queue to receive incoming messages. Bu yöntemi gözden geçirin ve input1adlı bir giriş kuyruğunu nasıl Başlatan hakkında bilgi alın.Review this method and see how it initializes an input queue called input1.

    Setınputmessagehandlserasync oluşturucusunda giriş adını bulur

  3. Ardından SendEventAsync yöntemini bulun.Next, find the SendEventAsync method.

  4. SendEventAsync yöntemi alınan iletileri işler ve bunları iletmek için bir çıkış kuyruğu ayarlar.The SendEventAsync method processes received messages and sets up an output queue to pass them along. Bu yöntemi gözden geçirin ve output1adlı bir çıkış kuyruğu başlattığında bkz.Review this method and see that it initializes an output queue called output1.

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

  5. Deployment. Template. JSON dosyasını açın.Open the deployment.template.json file.

  6. $EdgeAgent istenen özelliklerin modüller özelliğini bulun.Find the modules property of the $edgeAgent desired properties.

    Burada listelenen iki modül olmalıdır.There should be two modules listed here. İlk olarak, 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.The first is SimulatedTemperatureSensor, which is included in all the templates by default to provide simulated temperature data that you can use to test your modules. İkincisi, bu projenin bir parçası olarak oluşturduğunuz IotEdgeModule1 modülüdür.The second is the IotEdgeModule1 module that you created as part of this project.

    Bu modüller özelliği, cihazınıza veya cihazlarınıza dağıtımda hangi modüllerin dahil edileceğini bildirir.This modules property declares which modules should be included in the deployment to your device or devices.

  7. $EdgeHub istenen özelliklerin rotalar özelliğini bulun.Find the routes property of the $edgeHub desired properties.

    IoT Edge hub modülünün bir dağıtımdaki tüm modüller arasında ileti yönlendirmesi durumunda işlevlerden biri.One of the functions if the IoT Edge hub module is to route messages between all the modules in a deployment. Rotalar özelliğindeki değerleri gözden geçirin.Review the values in the routes property. İlk yol olan IotEdgeModule1ToIoTHub, IotEdgeModule1 modülündeki herhangi bir çıkış sırasından * gelen herhangi bir iletiyi dahil etmek için bir joker karakteri () kullanır.The first route, IotEdgeModule1ToIoTHub, uses a wildcard character (*) to include any message coming from any output queue in the IotEdgeModule1 module. Bu iletiler, IoT Hub belirten ayrılmış bir ad olan $upstream' a gider.These messages go into $upstream, which is a reserved name that indicates IoT Hub. İkinci yol, sensorToIotEdgeModule1, SimulatedTemperatureSensor modülünden gelen iletileri alır ve IotEdgeModule1 modülünün input1 giriş kuyruğuna yönlendirir.The second route, sensorToIotEdgeModule1, takes messages coming from the SimulatedTemperatureSensor module and routes them to the input1 input queue of the IotEdgeModule1 module.

    Dağıtım. Template. JSON içindeki yolları gözden geçirin

Oluşturun ve çözümünüzü gönderinBuild and push your solution

Bazı önemli dağıtım kavramlarını anlamak için modül kodunu ve Dağıtım şablonunu gözden geçirdiniz.You've reviewed the module code and the deployment template to understand some key deployment concepts. Şimdi IotEdgeModule1 kapsayıcı görüntüsünü oluşturmak ve kapsayıcı Kayıt defterinize göndermek için hazır olursunuz.Now, you're ready to build the IotEdgeModule1 container image and push it to your container registry. Visual Studio için IoT 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.With the IoT tools extension for Visual Studio, this step also generates the deployment manifest based on the information in the template file and the module information from the solution files.

Docker 'da oturum açınSign in to Docker

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.Provide your container registry credentials to Docker on your development machine so that it can push your container image to be stored in the registry.

  1. PowerShell 'i veya bir komut istemi 'ni açın.Open PowerShell or a command prompt.

  2. Kayıt defterini oluşturduktan sonra kaydettiğiniz Azure Container Registry kimlik bilgileriyle Docker 'da oturum açın.Sign in to Docker with the Azure container registry credentials that you saved after creating the registry.

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

    Kullanımını öneren bir güvenlik uyarısı alabilirsiniz --password-stdin.You may receive a security warning recommending the use of --password-stdin. Bu en iyi uygulama, üretim senaryolarında önerilse de, Bu öğreticinin kapsamı dışındadır.While that best practice is recommended for production scenarios, it's outside the scope of this tutorial. Daha fazla bilgi için bkz. Docker oturum açma başvurusu.For more information, see the docker login reference.

Derleme ve göndermeBuild and push

Geliştirme makinenizin artık kapsayıcı Kayıt defterinize erişimi vardır ve IoT Edge cihazlarınız da çok fazla olur.Your development machine now has access to your container registry, and your IoT Edge devices will too. Proje kodunu bir kapsayıcı görüntüsüne dönüştürmek zaman.It's time to turn the project code into a container image.

  1. CSharpTutorialApp proje klasörüne sağ tıklayın ve IoT Edge modülleri oluştur ve Gönder' i seçin.Right-click the CSharpTutorialApp project folder and select Build and Push IoT Edge Modules.

    IoT Edge modülleri oluşturun ve gönderin

    Build ve push komutu üç işlem başlatır.The build and push command starts three operations. İ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.First, it creates a new folder in the solution called config that holds the full deployment manifest, built out of information in the deployment template and other solution files. İkincisi, hedef mimariniz için uygun dockerfile 'ı temel alan kapsayıcı görüntüsünü oluşturmak için çalışır docker build .Second, it runs docker build to build the container image based on the appropriate dockerfile for your target architecture. Ardından, görüntü deposunu docker push kapsayıcı Kayıt defterinize göndermek için çalışır.Then, it runs docker push to push the image repository to your container registry.

    Bu işlem ilk kez birkaç dakika sürebilir, ancak komutları bir sonraki çalıştırışınızda daha hızlıdır.This process may take several minutes the first time, but is faster the next time that you run the commands.

  2. Yeni oluşturulan yapılandırma klasöründe Deployment. Windows-AMD64. JSON dosyasını açın.Open the deployment.windows-amd64.json file in the newly created config folder. (Yapılandırma klasörü, Visual Studio 'da Çözüm Gezgini görünmeyebilir.(The config folder may not appear in the Solution Explorer in Visual Studio. Bu durumda, Çözüm Gezgini görev çubuğundaki tüm dosyaları göster simgesini seçin.)If that's the case, select the Show all files icon in the Solution Explorer taskbar.)

  3. IotEdgeModule1 bölümünün image parametresini bulun.Find the image parameter of the IotEdgeModule1 section. Görüntüde, Module. JSON dosyasındaki Name, Version ve Architecture etiketiyle tam görüntü deposu bulunduğundan emin olun.Notice that the image contains the full image repository with the name, version, and architecture tag from the module.json file.

  4. IotEdgeModule1 klasöründeki Module. JSON dosyasını açın.Open the module.json file in the IotEdgeModule1 folder.

  5. Modül görüntüsünün sürüm numarasını değiştirin.Change the version number for the module image. ($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.(The version, not the $schema-version.) For example, increment the patch version number to 0.0.2 as though we had made a small fix in the module code.

    İ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.Module versions enable version control, and allow you to test changes on a small set of devices before deploying updates to production. Derleme ve göndermeden önce modül sürümünü arttırmıyorsanız, depo kayıt defterinizde deponun üzerine yazarsınız.If you don't increment the module version before building and pushing, then you overwrite the repository in your container registry.

  6. Değişikliklerinizi Module. JSON dosyasına kaydedin.Save your changes to the module.json file.

  7. CSharpTutorialApp proje klasörünü yeniden sağ tıklatın ve IoT Edge modüllerini yeniden oluştur ve Gönder ' i seçin.Right-click the CSharpTutorialApp project folder again, and select Build and Push IoT Edge modules again.

  8. Deployment. Windows-AMD64. JSON dosyasını yeniden açın.Open the deployment.windows-amd64.json file again. Build ve push komutunu yeniden çalıştırdığınızda yeni bir dosyanın oluşturulduğuna dikkat edin.Notice that a new file wasn't created when you ran the build and push command again. Bunun yerine, aynı dosya değişiklikleri yansıtacak şekilde güncelleştirildi.Rather, the same file was updated to reflect the changes. IotEdgeModule1 görüntüsü artık kapsayıcının 0.0.2 sürümüne işaret ediyor.The IotEdgeModule1 image now points to the 0.0.2 version of the container. Dağıtım bildiriminde bu değişiklik, IoT Edge cihaza, çekme için bir modülün yeni bir sürümü olduğunu nasıl söyleirsiniz.This change in the deployment manifest is how you tell the IoT Edge device that there's a new version of a module to pull.

  9. Build ve push komutunun ne yaptığını daha fazla doğrulamak için Azure Portal gidin ve kapsayıcı Kayıt defterinize gidin.To further verify what the build and push command did, go to the Azure portal and navigate to your container registry.

  10. Kapsayıcı kayıt defterinizde depolar ' ı ve sonra iotedgemodule1' i seçin.In your container registry, select Repositories then iotedgemodule1. Görüntünün her iki sürümünün de kayıt defterine itildiğini doğrulayın.Verify that both versions of the image were pushed to the registry.

    Her iki görüntü sürümünü kapsayıcı kayıt defterinde görüntüle

Sorun gidermeTroubleshoot

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.If you encounter errors when building and pushing your module image, it often has to do with Docker configuration on your development machine. Yapılandırmanızı gözden geçirmek için aşağıdaki denetimleri kullanın:Use the following checks to review your configuration:

  • Komutu, docker login kapsayıcı Kayıt defterinizden kopyaladığınız kimlik bilgilerini kullanarak çalıştırdınız mı?Did you run the docker login command using the credentials that you copied from your container registry? Bu kimlik bilgileri, Azure 'da oturum açmak için kullandığınız olanlardan farklıdır.These credentials are different than the ones that you use to sign in to Azure.
  • Kapsayıcı deponuz doğru mu?Is your container repository correct? Doğru kapsayıcı kayıt defteri adı ve doğru modülünüzün adı mı var?Does it have your correct container registry name and your correct module name? Denetlemek için IotEdgeModule1 klasöründeki Module. JSON dosyasını açın.Open the module.json file in the IotEdgeModule1 folder to check. Depo değeri, <kayıt defteri adı>. azurecr.io/iotedgemodule1gibi görünmelidir.The repository value should look like <registry name>.azurecr.io/iotedgemodule1.
  • Modülünüzün IotEdgeModule1 'den farklı bir ad kullandıysanız, bu ad çözüm genelinde tutarlıdır mi?If you used a different name than IotEdgeModule1 for your module, is that name consistent throughout the solution?
  • Makineniz, oluşturmakta olduğunuz kapsayıcı türünü çalıştırıyor mu?Is your machine running the same type of containers that you're building? Bu öğretici Windows IoT Edge cihazları için olduğundan Visual Studio dosyalarınızda Windows-AMD64 uzantısı olmalıdır ve Docker Desktop Windows kapsayıcıları çalıştırıyor olmalıdır.This tutorial is for Windows IoT Edge devices, so your Visual Studio files should have the windows-amd64 extension, and Docker Desktop should be running Windows containers.

Modülleri cihaza dağıtDeploy modules to device

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.You verified that the built container images are stored in your container registry, so it's time to deploy them to a device. IoT Edge cihazınızın çalışır ve çalışıyor olduğundan emin olun.Make sure that your IoT Edge device is up and running.

  1. Visual Studio 'da bulut Gezginini açın ve IoT Hub 'ınız için ayrıntıları genişletin.Open the Cloud Explorer in Visual Studio and expand the details for your IoT hub.

  2. Dağıtmak istediğiniz cihazın adını seçin.Select the name of the device that you want to deploy to. Eylemler listesinde, dağıtım oluştur' u seçin.In the Actions list, select Create Deployment.

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

  3. Dosya Gezgini 'nde projenizin yapılandırma klasörüne gidin ve Deployment. Windows-AMD64. JSON dosyasını seçin.In the file explorer, navigate to the config folder of your project and select the deployment.windows-amd64.json file. Bu dosya genellikle şu konumda bulunur:C:\Users\<username>\source\repos\CSharpTutorialApp\CSharpTutorialApp\config\deployment.windows-amd64.jsonThis file is often located at C:\Users\<username>\source\repos\CSharpTutorialApp\CSharpTutorialApp\config\deployment.windows-amd64.json

    İçindeki tam modül görüntü değerlerine sahip olmayan Deployment. Template. json dosyasını kullanmayın.Do not use the deployment.template.json file, which doesn't have the full module image values in it.

  4. Cihazınızdaki modülleri görmek için, Cloud Explorer 'da IoT Edge cihazınızın ayrıntılarını genişletin.Expand the details for your IoT Edge device in the Cloud Explorer to see the modules on your device.

  5. SimulatedTemperatureSensor ve IotEdgeModule1 modüllerinin cihazınızı dağıttığından bakmak üzere cihaz durumunu güncelleştirmek için Yenile düğmesini kullanın.Use the Refresh button to update the device status to see that the SimulatedTemperatureSensor and IotEdgeModule1 modules are deployed your device.

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

Cihazdan iletileri görüntüleView messages from device

IotEdgeModule1 kodu iletileri giriş kuyruğu aracılığıyla alır ve bunları çıkış kuyruğu boyunca geçirir.The IotEdgeModule1 code receives messages through its input queue and passes them along through its output queue. Dağıtım bildirimi, SimulatedTemperatureSensor adresinden IotEdgeModule1 'e ileti geçtiğini ve sonra IotEdgeModule1 'den IoT Hub 'e iletmekte olan yolları bildirdi.The deployment manifest declared routes that passed messages from SimulatedTemperatureSensor to IotEdgeModule1, and then forwarded messages from IotEdgeModule1 to IoT Hub. Visual Studio için Azure IoT Edge araçları, tek tek cihazlarınızdan IoT Hub geldikçe iletileri görmenizi sağlar.The Azure IoT Edge tools for Visual Studio allow you to see messages as they arrive at IoT Hub from your individual devices.

  1. Visual Studio Cloud Explorer 'da, dağıttığınız IoT Edge cihazın adını seçin.In the Visual Studio cloud explorer, select the name of the IoT Edge device that you deployed to.

  2. Eylemler menüsünde, Izlemeyi Başlat yerleşik olay uç noktası' nı seçin.In the Actions menu, select Start Monitoring Built-in Event Endpoint.

  3. IoT Hub 'ınıza ulaşan iletileri görmek için Visual Studio 'daki Çıkış bölümünü izleyin.Watch the Output section in Visual Studio to see messages arriving at your IoT hub.

    Her iki modülün de başlaması birkaç dakika sürebilir.It may take a few minutes for both modules to start. 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.The IoT Edge runtime needs to receive its new deployment manifest, pull down the module images from the container runtime, then start each new module. İstiyorsanızIf you

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

Cihazdaki değişiklikleri görüntüleView changes on device

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.If you want to see what's happening on your device itself, use the commands in this section to inspect the IoT Edge runtime and modules running on your device.

Bu bölümdeki komutlar, geliştirme makineniz değil IoT Edge cihazınıza yöneliktir.The commands in this section are for your IoT Edge device, not your development machine. IoT Edge cihazınız için bir sanal makine kullanıyorsanız, şimdi bu sunucuya bağlanın.If you're using a virtual machine for your IoT Edge device, connect to it now. 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.In Azure, go to the virtual machine's overview page and select Connect to access the remote desktop connection. Cihazda, iotedge komutları çalıştırmak için bir komut veya PowerShell penceresi açın.On the device, open a command or PowerShell window to run the iotedge commands.

  • Cihazınıza dağıtılan tüm modülleri görüntüleyin ve durumlarını denetleyin:View all modules deployed to your device, and check their status:

    iotedge list
    

    Dört modül görmeniz gerekir: iki IoT Edge çalışma zamanı modülü, SimulatedTemperatureSensor ve IotEdgeModule1.You should see four modules: the two IoT Edge runtime modules, SimulatedTemperatureSensor, and IotEdgeModule1. Dört tümü çalışıyor olarak listelenmelidir.All four should be listed as running.

  • Belirli bir modülün günlüklerini inceleyin:Inspect the logs for a specific module:

    iotedge logs <module name>
    

    IoT Edge modüller büyük/küçük harfe duyarlıdır.IoT Edge modules are case-sensitive.

    SimulatedTemperatureSensor ve IotEdgeModule1 günlükleri işlendikleri iletileri göstermelidir.The SimulatedTemperatureSensor and IotEdgeModule1 logs should show the messages they're processing. 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.The edgeAgent module is responsible for starting the other modules, so its logs will have information about implementing the deployment manifest. Herhangi bir modül listelenmemişse veya çalışmıyorsa, edgeAgent günlükleri muhtemelen hatalara sahip olur.If any module isn't listed or isn't running, the edgeAgent logs will probably have the errors. EdgeHub modülü, modüller ve IoT Hub arasındaki iletişimlerden sorumludur.The edgeHub module is responsible for communications between the modules and IoT Hub. Modüller çalışır duruma geliyor ancak iletiler IoT Hub 'ınıza inmemişse, edgeHub günlükleri muhtemelen hatalara sahip olur.If the modules are up and running, but the messages aren't arriving at your IoT hub, the edgeHub logs will probably have the errors.

Sonraki adımlarNext steps

Bu öğreticide, geliştirme makinenizde Visual Studio 2019 kurulumunu ve ilk IoT Edge modülünüzü buradan dağıttığınızı görürsünüz.In this tutorial, you set up Visual Studio 2019 on your development machine and deployed your first IoT Edge module from it. Temel kavramları öğrenmiş olduğunuza göre, bir modüle işlev eklemeyi deneyin. böylece bu, üzerinden geçen verileri analiz edebilir.Now that you know the basic concepts, try adding functionality to a module so that it can analyze the data passing through it. Tercih ettiğiniz dili seçin:Choose your preferred language:

, C#C C#