Kurz: vývoj IoT Edgech modulů pro zařízení se systémem LinuxTutorial: Develop IoT Edge modules for Linux devices

Pomocí Visual Studio Code můžete vyvíjet a nasazovat kód pro zařízení se systémem Linux s IoT Edge.Use Visual Studio Code to develop and deploy code to Linux devices running IoT Edge.

V článcích rychlý Start jste vytvořili IoT Edge zařízení pomocí virtuálního počítače se systémem Linux a nasadili jste předem sestavený modul z Azure Marketplace.In the quickstart articles, you created an IoT Edge device using a Linux virtual machine and deployed a pre-built module from the Azure Marketplace. Tento kurz vás provede vývojem a nasazením vlastního kódu do zařízení IoT Edge.This tutorial walks through what it takes to develop and deploy your own code to an IoT Edge device. Tento kurz je užitečný pro všechny ostatní kurzy, které vám pojdou podrobněji o konkrétních programovacích jazycích nebo službách Azure.This tutorial is a useful prerequisite for all the other tutorials, which will go into more detail about specific programming languages or Azure services.

V tomto kurzu se používá příklad nasazení C# modulu do zařízení se systémem Linux.This tutorial uses the example of deploying a C# module to a Linux device. Tento příklad jste zvolili, protože se jedná o nejběžnější scénář pro vývojáře pro IoT Edge řešení.This example was chosen because it is the most common developer scenario for IoT Edge solutions. I v případě, že plánujete použití jiného jazyka nebo nasazení služby Azure, tento kurz je stále užitečný pro další informace o vývojářských nástrojích a konceptech.Even if you plan on using a different language or deploying an Azure service, this tutorial is still useful to learn about the development tools and concepts. Po dokončení tohoto úvodu do procesu vývoje si můžete vybrat preferovaný jazyk nebo službu Azure, která bude podrobně do podrobností.After completing this introduction to the development process, then you can choose your preferred language or Azure service to dive into the details.

V tomto kurzu se naučíte:In this tutorial, you learn how to:

  • Nastavte počítač pro vývoj.Set up your development machine.
  • Pomocí nástrojů IoT Edge pro Visual Studio Code vytvořte nový projekt.Use the IoT Edge tools for Visual Studio Code to create a new project.
  • Sestavte projekt jako kontejner a uložte ho do služby Azure Container Registry.Build your project as a container and store it in an Azure container registry.
  • Nasaďte kód do zařízení IoT Edge.Deploy your code to an IoT Edge device.

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.If you don't have an Azure subscription, create a free account before you begin.

Klíčové konceptyKey concepts

Tento kurz vás provede vývojem modulu IoT Edge.This tutorial walks through the development of an IoT Edge module. IoT Edge modul, nebo někdy jenom modul pro krátké, je kontejner, který obsahuje spustitelný kód.An IoT Edge module, or sometimes just module for short, is a container that contains executable code. Jeden nebo více modulů můžete nasadit do zařízení IoT Edge.You can deploy one or more modules to an IoT Edge device. Moduly provádějí konkrétní úkoly, jako je ingestování dat ze senzorů, provádění analýz dat nebo operací čištění dat nebo posílání zpráv do služby IoT Hub.Modules perform specific tasks like ingesting data from sensors, performing data analytics or data cleaning operations, or sending messages to an IoT hub. Další informace najdete v tématu principy Azure IoT Edgech modulů.For more information, see Understand Azure IoT Edge modules.

Při vývoji IoT Edgech modulů je důležité pochopit rozdíl mezi vývojovým počítačem a cílovým IoT Edge zařízením, kde se modul bude nakonec nasazovat.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. Kontejner, který sestavíte pro uložení kódu vašeho modulu, se musí shodovat s operačním systémem cílového zařízení.The container that you build to hold your module code must match the operating system (OS) of the target device. Nejběžnější scénář je například někdo, který vyvíjí modul na počítači s Windows, který necílí na zařízení se systémem Linux se spuštěným IoT Edge.For example, the most common scenario is someone developing a module on a Windows computer intending to target a Linux device running IoT Edge. V takovém případě by byl operační systém kontejneru Linux.In that case, the container operating system would be Linux. Při procházení tohoto kurzu mějte na paměti rozdíl mezi vývojovým operačním systémem a operačním systémem kontejneru.As you go through this tutorial, keep in mind the difference between the development machine OS and the container OS.

Tento kurz cílí na zařízení s Linux běžící IoT Edge.This tutorial targets Linux devices running IoT Edge. Můžete použít preferovaný operační systém, pokud váš vývojový počítač může spouštět kontejnery Linux.You can use your preferred operating system, as long as your development machine can run Linux containers. Pro vývoj zařízení se systémem Linux doporučujeme použít Visual Studio Code, takže tento kurz bude používat.We recommend using Visual Studio Code to develop for Linux devices, so that's what this tutorial will use. Můžete také použít Visual Studio, i když existují rozdíly v podpoře mezi dvěma nástroji.You can use Visual Studio as well, although there are differences in support between the two tools.

V následující tabulce jsou uvedeny podporované vývojové scénáře pro kontejnery platformy Linux v Visual Studio Code a v aplikaci Visual Studio.The following table lists the supported development scenarios for Linux containers in Visual Studio Code and Visual Studio.

Visual Studio CodeVisual Studio Code Visual Studio 2017/2019Visual Studio 2017/2019
Architektura zařízení se systémem LinuxLinux device architecture Linux AMD64Linux AMD64
Linux ARM32Linux ARM32
Linux AMD64Linux AMD64
Linux ARM32Linux ARM32
Služby AzureAzure services Funkce AzureAzure Functions
Azure Stream AnalyticsAzure Stream Analytics
Azure Machine LearningAzure Machine Learning
JazykyLanguages CC
C#C#
JavaJava
Node.jsNode.js
PythonPython
CC
C#C#
Další informaceMore information Azure IoT Edge pro Visual Studio CodeAzure IoT Edge for Visual Studio Code Azure IoT Edge Tools for Visual Studio 2017Azure IoT Edge Tools for Visual Studio 2017
Azure IoT Edge Tools for Visual Studio 2019Azure IoT Edge Tools for Visual Studio 2019

Poznámka

Podpora pro zařízení se systémem Linux ARM64 je k dispozici ve verzi Public Preview.Support for Linux ARM64 devices is available in public preview. Další informace najdete v tématu vývoj a ladění ARM64 IoT Edgech modulů v Visual Studio Code (Preview).For more information, see Develop and debug ARM64 IoT Edge modules in Visual Studio Code (preview).

V tomto kurzu se naučíte postup vývoje Visual Studio Code.This tutorial teaches the development steps for Visual Studio Code. Pokud místo toho chcete použít aplikaci Visual Studio, přečtěte si pokyny v tématu použití sady Visual studio 2019 k vývoji a ladění modulů pro Azure IoT Edge.If you would rather use Visual Studio, refer to the instructions in Use Visual Studio 2019 to develop and debug modules for Azure IoT Edge.

PředpokladyPrerequisites

Vývojový počítač:A development machine:

  • V závislosti na vašich předvolbách pro vývoj můžete použít svůj vlastní počítač nebo virtuální počítač.You can use your own computer or a virtual machine, depending on your development preferences.
    • Ujistěte se, že váš vývojový počítač podporuje vnořenou virtualizaci.Make sure that your development machine supports nested virtualization. Tato funkce je nezbytná pro spuštění kontejnerového modulu, který nainstalujete v následující části.This capability is necessary for running a container engine, which you install in the next section.
  • Většina operačních systémů, které mohou spustit kontejnerový modul, lze použít k vývoji IoT Edge moduly pro zařízení se systémem Linux.Most operating systems that can run a container engine can be used to develop IoT Edge modules for Linux devices. V tomto kurzu se používá počítač s Windows, ale odkazuje na známé rozdíly na MacOS nebo Linux.This tutorial uses a Windows computer, but points out known differences on MacOS or Linux.
  • Nainstalujte Git, abyste si mohli stáhnout balíčky šablon modulů dále v tomto kurzu.Install Git, to pull module template packages later in this tutorial.
  • Rozšíření jazyka C# pro Visual Studio Code (využívající OmniSharp).C# for Visual Studio Code (powered by OmniSharp) extension.
  • .NET Core 2.1 SDK..NET Core 2.1 SDK.

Azure IoT Edge zařízení v systému Linux:An Azure IoT Edge device on Linux:

  • Doporučujeme, abyste ve vývojovém počítači nespouštěli IoT Edge, ale místo toho použijte samostatné zařízení.We recommend that you don't run IoT Edge on your development machine, but instead use a separate device. Toto rozlišení mezi vývojovým počítačem a IoT Edgeým zařízením přesněji odráží skutečný scénář nasazení a pomáhá udržet různé koncepty rovnou.This distinction between development machine and IoT Edge device more accurately mirrors a true deployment scenario, and helps to keep the different concepts straight.
  • Pokud nemáte k dispozici druhé zařízení, pomocí článku rychlý Start vytvořte zařízení IoT Edge v Azure pomocí virtuálního počítače se systémem Linux.If you don't have a second device available, use the quickstart article to create an IoT Edge device in Azure with a Linux virtual machine.

Cloudové prostředky:Cloud resources:

  • Centrum IoT na bezplatné nebo standardní úrovni v Azure.A free or standard-tier IoT hub in Azure.

Nainstalovat modul pro kontejneryInstall container engine

Moduly IoT Edge jsou zabaleny jako kontejnery, takže potřebujete kontejnerový modul na svém vývojovém počítači pro sestavování a správu kontejnerů.IoT Edge modules are packaged as containers, so you need a container engine on your development machine to build and manage the containers. Pro vývoj doporučujeme použít Docker Desktop, protože je k disřadě funkcí a oblíbenou jako modul kontejnerů.We recommend using Docker Desktop for development because of its many features and popularity as a container engine. S Docker desktopem na zařízení s Windows můžete přepínat mezi kontejnery Linux a kontejnery Windows, abyste mohli snadno vyvíjet moduly pro různé typy IoT Edgech zařízení.With Docker Desktop on a Windows device, you can switch between Linux containers and Windows containers so that you can easily develop modules for different types of IoT Edge devices.

K instalaci na vývojový počítač použijte dokumentaci k Docker:Use the Docker documentation to install on your development machine:

Nastavení VS Code a nástrojůSet up VS Code and tools

K vývoji IoT Edgech modulů použijte rozšíření IoT pro Visual Studio Code.Use the IoT extensions for Visual Studio Code to develop IoT Edge modules. Tato rozšíření poskytují šablony projektů, automatizují vytváření manifestu nasazení a umožňují vám monitorovat a spravovat IoT Edge zařízení.These extensions provide project templates, automate the creation of the deployment manifest, and allow you to monitor and manage IoT Edge devices. V této části nainstalujete Visual Studio Code a rozšíření IoT a pak nastavíte účet Azure pro správu prostředků IoT Hub v rámci Visual Studio Code.In this section, you install Visual Studio Code and the IoT extension, then set up your Azure account to manage IoT Hub resources from within Visual Studio Code.

  1. Nainstalujte Visual Studio Code na svém vývojovém počítači.Install Visual Studio Code on your development machine.

  2. Po dokončení instalace vyberte zobrazit > rozšíření.Once the installation is finished, select View > Extensions.

  3. Vyhledejte nástroje Azure IoT Tools, což je ve skutečnosti kolekce rozšíření, která vám pomůžou pracovat s IoT Hub a zařízeními IoT, a také vyvíjet IoT Edge moduly.Search for Azure IoT Tools, which is actually a collection of extensions that help you interact with IoT Hub and IoT devices, as well as developing IoT Edge modules.

  4. Vyberte Install (Nainstalovat).Select Install. Každé zahrnuté rozšíření se nainstaluje jednotlivě.Each included extension installs individually.

  5. Po dokončení instalace rozšíření otevřete paletu příkazů výběrem možnosti zobrazit > paleta příkazů.When the extensions are done installing, open the command palette by selecting View > Command Palette.

  6. V paletě příkazů vyhledejte a vyberte Azure: přihlásitse.In the command palette, search for and select Azure: Sign in. Podle pokynů se přihlaste ke svému účtu Azure.Follow the prompts to sign in to your Azure account.

  7. V paletě příkazů znovu vyhledejte a vyberte Azure IoT Hub: vyberte IoT Hub.In the command palette again, search for and select Azure IoT Hub: Select IoT Hub. Podle pokynů vyberte předplatné Azure a centrum IoT.Follow the prompts to select your Azure subscription and IoT hub.

  8. Kliknutím na ikonu na panelu nástrojů na levé straně nebo výběrem možnosti zobrazit > průzkumníkotevřete část Visual Studio Code Explorer.Open the explorer section of Visual Studio Code by either selecting the icon in the activity bar on the left, or by selecting View > Explorer.

  9. V dolní části okna Průzkumníka rozbalte nabídku sbalená zařízení Azure IoT Hub .At the bottom of the explorer section, expand the collapsed Azure IoT Hub Devices menu. Měli byste vidět zařízení a zařízení IoT Edge přidružená ke službě IoT Hub, kterou jste vybrali prostřednictvím palety příkazů.You should see the devices and IoT Edge devices associated with the IoT hub that you selected through the command palette.

    Zobrazení zařízení ve službě IoT Hub

Vytvoření registru kontejnerůCreate a container registry

V tomto kurzu pomocí rozšíření nástroje Azure IoT sestavíte modul a vytvořte image kontejneru ze souborů.In this tutorial, you use the Azure IoT Tools extension to build a module and create a container image from the files. Tuto image pak nasdílíte do registru, ve kterém se ukládají a spravují vaše image.Then you push this image to a registry that stores and manages your images. Nakonec nasadíte svou image z registru pro spuštění na zařízení IoT Edge.Finally, you deploy your image from your registry to run on your IoT Edge device.

Pro uložení imagí kontejnerů, můžete použít jakýkoli registr kompatibilní s Dockerem.You can use any Docker-compatible registry to hold your container images. Jsou dvě oblíbené služby registrů Dockeru Azure Container Registry a Docker Hubu.Two popular Docker registry services are Azure Container Registry and Docker Hub. V tomto kurzu se používá služba Azure Container Registry.This tutorial uses Azure Container Registry.

Pokud ještě nemáte registr kontejnerů, postupujte podle těchto kroků a vytvořte nový v Azure:If you don't already have a container registry, follow these steps to create a new one in Azure:

  1. Na webu Azure Portal vyberte Vytvořit prostředek > Kontejnery > Container Registry.In the Azure portal, select Create a resource > Containers > Container Registry.

  2. Zadejte následující hodnoty pro vytvoření registru kontejneru:Provide the following values to create your container registry:

    PoleField HodnotaValue
    Název registruRegistry name Zadejte jedinečný název.Provide a unique name.
    PředplatnéSubscription V rozevíracím seznamu vyberte předplatné.Select a subscription from the drop-down list.
    Skupina prostředkůResource group Pro všechny testovací prostředky, které vytvoříte v průběhu rychlých startů a kurzů pro IoT Edge, doporučujeme použít stejnou skupinu prostředků.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. Například IoTEdgeResources.For example, IoTEdgeResources.
    UmístěníLocation Zvolte umístění, které je blízko vás.Choose a location close to you.
    Uživatel s rolí správceAdmin user Nastavte na Povolit.Set to Enable.
    Skladová jednotka (SKU)SKU Vyberte Basic.Select Basic.
  3. Vyberte Vytvořit.Select Create.

  4. Po vytvoření registru kontejneru do něj přejděte a vyberte Přístupové klíče.After your container registry is created, browse to it, and then select Access keys.

  5. Zkopírujte hodnoty přihlašovací server, uživatelské jméno, a heslo a uložit je někde vhodné.Copy the values for Login server, Username, and Password and save them somewhere convenient. Tyto hodnoty v celém tomto kurzu použijete pro poskytnutí přístupu k registru kontejneru.You use these values throughout this tutorial to provide access to the container registry.

    Zkopírovat přihlašovací server, uživatelské jméno a heslo pro registr kontejneru

Vytvořit nový projekt moduluCreate a new module project

Rozšíření Azure IoT Tools poskytuje šablony projektů pro všechny podporované jazyky IoT Edge modulů v Visual Studio Code.The Azure IoT Tools extension provides project templates for all supported IoT Edge module languages in Visual Studio Code. Tyto šablony obsahují všechny soubory a kód, které potřebujete k nasazení pracovního modulu k testování IoT Edge, nebo vám poskytne výchozí bod pro přizpůsobení šablony s vlastní obchodní logikou.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.

Pro tento kurz používáme šablonu C# modulu, protože se jedná o nejčastěji používanou šablonu.For this tutorial, we use the C# module template because it is the most commonly used template.

Vytvoření šablony projektuCreate a project template

V paletě příkazu Visual Studio Code vyhledejte a vyberte Azure IoT Edge: nové IoT Edge řešení.In the Visual Studio Code command palette, search for and select Azure IoT Edge: New IoT Edge Solution. Postupujte podle zobrazených výzev a pomocí následujících hodnot vytvořte řešení:Follow the prompts and use the following values to create your solution:

PoleField HodnotaValue
Vyberte složkuSelect folder Zvolte umístění na vývojovém počítači, ve kterém VS Code vytvoří soubory řešení.Choose the location on your development machine for VS Code to create the solution files.
Zadejte název řešeníProvide a solution name Zadejte popisný název vašeho řešení nebo přijměte výchozí EdgeSolution.Enter a descriptive name for your solution or accept the default EdgeSolution.
Vyberte šablonu moduluSelect module template Vyberte C# modul.Choose C# Module.
Zadejte název moduluProvide a module name Přijměte výchozí SampleModule.Accept the default SampleModule.
Zadejte pro modul úložiště imagí DockeruProvide Docker image repository for the module Úložiště imagí zahrnuje název registru kontejneru a název image kontejneru.An image repository includes the name of your container registry and the name of your container image. Vaše image kontejneru se předem vyplní názvem, který jste zadali v posledním kroku.Your container image is prepopulated from the name you provided in the last step. Nahraďte localhost:5000 hodnotou přihlašovacího serveru z vašeho registru kontejneru Azure.Replace localhost:5000 with the login server value from your Azure container registry. Přihlašovací server můžete získat na stránce Přehled vašeho registru kontejneru na webu Azure Portal.You can retrieve the login server from the Overview page of your container registry in the Azure portal.

Konečné úložiště imagí vypadá jako <název registru>. azurecr.io/samplemodule.The final image repository looks like <registry name>.azurecr.io/samplemodule.

Zadání úložiště imagí Dockeru

Jakmile se nové řešení načte v okně Visual Studio Code, Seznamte se se soubory, které vytvořil:Once your new solution loads in the Visual Studio Code window, take a moment to familiarize yourself with the files that it created:

  • Složka . VSCode obsahuje soubor s názvem Launch. JSON, který se používá pro moduly ladění.The .vscode folder contains a file called launch.json, which is used for debugging modules.

  • Složka modulů obsahuje složku pro každý modul ve vašem řešení.The modules folder contains a folder for each module in your solution. Nyní, který by měl být SampleModulenebo libovolný název, který jste přiřadili modulu.Right now, that should only be SampleModule, or whatever name you gave to the module. Složka SampleModule obsahuje hlavní kód programu, metadata modulu a několik souborů Docker.The SampleModule folder contains the main program code, the module metadata, and several Docker files.

  • Soubor . env obsahuje přihlašovací údaje do vašeho registru kontejneru.The .env file holds the credentials to your container registry. Tyto přihlašovací údaje se sdílí s vaším zařízením IoT Edge, takže mají přístup k vyžádání imagí kontejneru.These credentials are shared with your IoT Edge device so that it has access to pull the container images.

  • Soubor Deployment. Debug. template. JSON a soubor Deployment. template. JSON jsou šablony, které vám pomohou vytvořit manifest nasazení.The deployment.debug.template.json file and deployment.template.json file are templates that help you create a deployment manifest. Manifest nasazení je soubor, který definuje přesně to, které moduly se mají na zařízení nasadit, jak by se měly nakonfigurovat a jak můžou komunikovat mezi sebou a cloudem.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. Soubory šablon používají ukazatele pro některé hodnoty.The template files use pointers for some values. Při transformaci šablony na skutečný manifest nasazení jsou ukazatele nahrazeny hodnotami přijatými z jiných souborů řešení.When you transform the template into a true deployment manifest, the pointers are replaced with values taken from other solution files. V šabloně nasazení vyhledejte dva běžné zástupné symboly:Locate the two common placeholders in your deployment template:

    • V části pověření registru se adresa vyplní z informací, které jste zadali při vytváření řešení.In the registry credentials section, the address is autofilled from the information you provided when you created the solution. Uživatelské jméno a heslo však odkazují na proměnné uložené v souboru. env.However, the username and password reference the variables stored in the .env file. Jedná se o zabezpečení, protože soubor. ENV je v Gitu ignorován, ale šablona nasazení ne.This is for security, as the .env file is git ignored, but the deployment template is not.
    • V části SampleModule se image kontejneru nevyplní, přestože jste při vytváření řešení zadali úložiště imagí.In the SampleModule section, the container image isn't filled in even though you provided the image repository when you created the solution. Tento zástupný symbol odkazuje na soubor Module. JSON ve složce SampleModule.This placeholder points to the module.json file inside the SampleModule folder. Pokud přejdete na tento soubor, uvidíte, že pole Image obsahuje úložiště, ale také hodnotu značky, která se skládá z verze a platformy kontejneru.If you go to that file, you'll see that the image field does contain the repository, but also a tag value that is made up of the version and the platform of the container. Verzi můžete iterovat v rámci vašeho vývojového cyklu ručně a vybrat kontejnerovou platformu pomocí přepínače, který zavedeme později v této části.You can iterate the version manually as part of your development cycle, and you select the container platform using a switcher that we introduce later in this section.

Zadejte přihlašovací údaje registru pro agenta IoT Edge.Provide your registry credentials to the IoT Edge agent

V souboru prostředí jsou uložené přihlašovací údaje pro registr kontejneru, které soubor sdílí s modulem runtime IoT Edge.The environment file stores the credentials for your container registry and shares them with the IoT Edge runtime. Modul runtime potřebuje tyto přihlašovací údaje pro vyžádání imagí kontejneru do zařízení IoT Edge.The runtime needs these credentials to pull your container images onto the IoT Edge device.

Rozšíření IoT Edge se pokusí načíst přihlašovací údaje registru kontejneru z Azure a naplnit je do souboru prostředí.The IoT Edge extension tries to pull your container registry credentials from Azure and populate them in the environment file. Zkontrolujte, jestli jsou vaše přihlašovací údaje už zahrnuté.Check to see if your credentials are already included. Pokud ne, přidejte je nyní:If not, add them now:

  1. Otevřete soubor . env v řešení modulu.Open the .env file in your module solution.
  2. Přidejte hodnoty uživatelského jména a hesla , které jste zkopírovali z služby Azure Container Registry.Add the username and password values that you copied from your Azure container registry.
  3. Uložte změny do souboru. env.Save your changes to the .env file.

Vyberte cílovou architekturu.Select your target architecture

V současné době Visual Studio Code může C# vyvíjet moduly pro zařízení se systémem Linux AMD64 a ARM32v7.Currently, Visual Studio Code can develop C# modules for Linux AMD64 and ARM32v7 devices. Musíte vybrat architekturu, na kterou cílíte, vzhledem k tomu, že to ovlivňuje způsob sestavení a spuštění kontejneru.You need to select which architecture you're targeting with each solution, because that affects how the container is built and runs. Výchozí hodnota je Linux AMD64.The default is Linux AMD64.

  1. Otevřete paletu příkazů a vyhledejte Azure IoT Edge: Nastavte výchozí cílovou platformu pro řešení Edgenebo vyberte ikonu zástupce na bočním panelu v dolní části okna.Open the command palette and search for Azure IoT Edge: Set Default Target Platform for Edge Solution, or select the shortcut icon in the side bar at the bottom of the window.

    Vybrat ikonu architektury na bočním panelu

  2. V paletě příkazů vyberte v seznamu možností cílovou architekturu.In the command palette, select the target architecture from the list of options. Pro tento kurz používáme virtuální počítač s Ubuntu jako zařízení IoT Edge, takže se zachová výchozí hodnota amd64.For this tutorial, we're using an Ubuntu virtual machine as the IoT Edge device, so will keep the default amd64.

Kontrola ukázkového kóduReview the sample code

Šablona řešení, kterou jste vytvořili, obsahuje vzorový kód pro modul IoT Edge.The solution template that you created includes sample code for an IoT Edge module. Tento vzorový modul jednoduše přijímá zprávy a pak je předává.This sample module simply receives messages and then passes them on. Funkce kanálu ukazuje důležitou koncepci v IoT Edge, což je způsob, jakým vzájemně komunikují moduly.The pipeline functionality demonstrates an important concept in IoT Edge, which is how modules communicate with each other.

Každý modul může mít v kódu deklarovaných víc vstupních a výstupních front.Each module can have multiple input and output queues declared in their code. Rozbočovač IoT Edge běžící na zařízení směruje zprávy z výstupu jednoho modulu do vstupu jednoho nebo více modulů.The IoT Edge hub running on the device routes messages from the output of one module into the input of one or more modules. Konkrétní jazyk pro deklarování vstupů a výstupů se liší mezi jazyky, ale koncept je stejný ve všech modulech.The specific language for declaring inputs and outputs varies between languages, but the concept is the same across all modules. Další informace o směrování mezi moduly naleznete v tématu Declare Routes.For more information about routing between modules, see Declare routes.

Vzorový C# kód, který je součástí šablony projektu, používá třídu MODULECLIENT ze sady SDK IoT Hub pro .NET.The sample C# code that comes with the project template uses the ModuleClient Class from the IoT Hub SDK for .NET.

  1. Otevřete soubor program.cs , který se nachází uvnitř modulů/SampleModule/ složka.Open the Program.cs file, which is inside the modules/SampleModule/ folder.

  2. V program.cs Najděte metodu SetInputMessageHandlerAsync .In program.cs, find the SetInputMessageHandlerAsync method.

  3. Metoda SetInputMessageHandlerAsync nastaví vstupní frontu pro příjem příchozích zpráv.The SetInputMessageHandlerAsync method sets up an input queue to receive incoming messages. Projděte si tuto metodu a podívejte se, jak inicializuje vstupní frontu s názvem input1.Review this method and see how it initializes an input queue called input1.

    Najít název vstupu v konstruktoru SetInputMessageCallback

  4. Dále vyhledejte metodu SendEventAsync .Next, find the SendEventAsync method.

  5. Metoda SendEventAsync zpracovává přijaté zprávy a nastavuje výstupní frontu, která je předávat společně.The SendEventAsync method processes received messages and sets up an output queue to pass them along. Projděte si tuto metodu a podívejte se, že Inicializuje výstupní frontu s názvem output1.Review this method and see that it initializes an output queue called output1.

    Najít název výstupu v SendEventToOutputAsync

  6. Otevřete soubor Deployment. template. JSON .Open the deployment.template.json file.

  7. Vyhledejte vlastnost modulů $edgeAgent požadovaných vlastností.Find the modules property of the $edgeAgent desired properties.

    Tady by měly být uvedené dva moduly.There should be two modules listed here. První je SimulatedTemperatureSensor, který je ve výchozím nastavení součástí všech šablon, aby poskytovala Simulovaná data o teplotě, která můžete použít k otestování modulů.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. Druhým je modul SampleModule , který jste vytvořili jako součást tohoto řešení.The second is the SampleModule module that you created as part of this solution.

  8. V dolní části souboru vyhledejte požadované vlastnosti pro modul $edgeHub .At the bottom of the file, find the desired properties for the $edgeHub module.

    Jednou z funkcí modulu centra IoT Edge je směrování zpráv mezi všemi moduly v nasazení.One of the functions of the IoT Edge hub module is to route messages between all the modules in a deployment. Zkontrolujte hodnoty ve vlastnosti Routes .Review the values in the routes property. První trasa SampleModuleToIoTHubpoužívá zástupný znak ( * ) k označení všech zpráv přicházejících z libovolných výstupních front v modulu SampleModule.The first route, SampleModuleToIoTHub, uses a wildcard character (*) to indicate any messages coming from any output queues in the SampleModule module. Tyto zprávy se přejdou do $upstream, což je vyhrazený název, který označuje IoT Hub.These messages go into $upstream, which is a reserved name that indicates IoT Hub. Druhá trasa, sensorToSampleModule, přebírá zprávy přicházející z modulu SimulatedTemperatureSensor a směruje je do vstupní fronty input1 , kterou jste viděli inicializováni v kódu SampleModule.The second route, sensorToSampleModule, takes messages coming from the SimulatedTemperatureSensor module and routes them to the input1 input queue that you saw initialized in the SampleModule code.

    Kontrola tras v nasazení. template. JSON

Sestavení a nabízení řešeníBuild and push your solution

Zkontrolovali jste kód modulu a šablonu nasazení, abyste pochopili některé koncepty nasazení.You've reviewed the module code and the deployment template to understand some key deployment concepts. Nyní jste připraveni sestavit image kontejneru SampleModule a vložit ji do registru kontejneru.Now, you're ready to build the SampleModule container image and push it to your container registry. S rozšířením nástrojů IoT pro Visual Studio Code tento krok také generuje manifest nasazení na základě informací v souboru šablony a informací o modulu ze souborů řešení.With the IoT tools extension for Visual Studio Code, this step also generates the deployment manifest based on the information in the template file and the module information from the solution files.

Přihlásit se k DockerSign in to Docker

Poskytněte přihlašovací údaje registru kontejneru do Docker, aby mohli ukládat image kontejneru do registru.Provide your container registry credentials to Docker so that it can push your container image to be stored in the registry.

  1. Otevřete Visual Studio Code Integrated Terminal výběrem možnosti zobrazit > terminálu.Open the Visual Studio Code integrated terminal by selecting View > Terminal.

  2. Přihlaste se k Docker pomocí přihlašovacích údajů služby Azure Container Registry, které jste uložili po vytvoření registru.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>
    

    Může se zobrazit upozornění zabezpečení, které doporučuje použití --password-stdin.You may receive a security warning recommending the use of --password-stdin. I když se tento osvědčený postup doporučuje u produkčních scénářů, je mimo rozsah tohoto kurzu.While that best practice is recommended for production scenarios, it's outside the scope of this tutorial. Další informace najdete v tématu přihlašovací Reference k Docker .For more information, see the docker login reference.

Sestavení a vloženíBuild and push

Visual Studio Code má teď přístup k vašemu registru kontejneru, takže je čas převést kód řešení na Image kontejneru.Visual Studio Code now has access to your container registry, so it's time to turn the solution code into a container image.

  1. V Průzkumníku Visual Studio Code klikněte pravým tlačítkem myši na soubor Deployment. template. JSON a vyberte sestavení a nabízené IoT Edge řešení.In the Visual Studio Code explorer, right-click the deployment.template.json file and select Build and Push IoT Edge Solution.

    Sestavování a nabízených IoT Edgech modulů

    Příkaz Build a push spustí tři operace.The build and push command starts three operations. Nejprve vytvoří novou složku v řešení s názvem config , která obsahuje úplný manifest nasazení, a vyplní informace v šabloně nasazení a dalších souborech řešení.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. Za druhé spustí docker build k sestavení image kontejneru na základě vhodné souboru Dockerfile pro vaši cílovou architekturu.Second, it runs docker build to build the container image based on the appropriate dockerfile for your target architecture. Pak se spustí docker push a nahrajte úložiště imagí do svého registru kontejneru.Then, it runs docker push to push the image repository to your container registry.

    Tento proces může trvat několik minut poprvé, ale při příštím spuštění příkazů je rychlejší.This process may take several minutes the first time, but is faster the next time that you run the commands.

  2. Otevřete soubor Deployment. amd64. JSON ve složce nově vytvořená konfigurace.Open the deployment.amd64.json file in newly created config folder. Název souboru odráží cílovou architekturu, takže se bude lišit, pokud vyberete jinou architekturu.The filename reflects the target architecture, so it will be different if you chose a different architecture.

  3. Všimněte si, že dva parametry, které obsahovaly zástupné symboly nyní, jsou vyplněny odpovídajícími hodnotami.Notice that the two parameters that had placeholders now are filled in with their proper values. Část registryCredentials obsahuje uživatelské jméno a heslo v registru, které jste si vyžádali ze souboru. env.The registryCredentials section has your registry username and password pulled from the .env file. SampleModule má úplné úložiště imagí se značkou názvu, verze a architektury ze souboru Module. JSON.The SampleModule has the full image repository with the name, version, and architecture tag from the module.json file.

  4. Otevřete soubor Module. JSON ve složce SampleModule.Open the module.json file in the SampleModule folder.

  5. Změňte číslo verze image modulu.Change the version number for the module image. (Verze, nikoli verze $schema.) Například Zvyšte číslo verze opravy na 0.0.2 , jako kdyby jsme v kódu modulu udělali malou opravu.(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.

    Tip

    Verze modulů umožňují správu verzí a umožňují testovat změny v malých sadě zařízení před nasazením aktualizací do produkčního prostředí.Module versions enable version control, and allow you to test changes on a small set of devices before deploying updates to production. Pokud před vytvořením a vložením nezvýšíte verzi modulu, přepíšete úložiště v registru kontejneru.If you don't increment the module version before building and pushing, then you overwrite the repository in your container registry.

  6. Uložte změny do souboru Module. JSON.Save your changes to the module.json file.

  7. Znovu klikněte pravým tlačítkem na soubor Deployment. template. JSON a znovu vyberte sestavení a nabízená IoT Edge.Right-click the deployment.template.json file again, and again select Build and Push IoT Edge Solution.

  8. Znovu otevřete soubor Deployment. amd64. JSON .Open the deployment.amd64.json file again. Všimněte si, že nový soubor nebyl vytvořen při opětovném spuštění příkazu Build a push.Notice that a new file wasn't created when you ran the build and push command again. Místo toho byl stejný soubor aktualizován tak, aby odrážel změny.Rather, the same file was updated to reflect the changes. Obrázek SampleModule nyní odkazuje na verzi 0.0.2 kontejneru.The SampleModule image now points to the 0.0.2 version of the container.

  9. Chcete-li dále ověřit, co byl příkaz Build and push, přejděte na Azure Portal a přejděte do registru kontejneru.To further verify what the build and push command did, go to the Azure portal and navigate to your container registry.

  10. V registru kontejneru vyberte úložiště a pak SampleModule.In your container registry, select Repositories then samplemodule. Ověřte, zda byly do registru vloženy obě verze bitové kopie.Verify that both versions of the image were pushed to the registry.

    Zobrazit obě verze imagí v registru kontejnerů

Řešení potížíTroubleshoot

Pokud narazíte na chyby při sestavování a vkládání image modulu, často je třeba provést konfiguraci Docker na vašem vývojovém počítači.If you encounter errors when building and pushing your module image, it often has to do with Docker configuration on your development machine. Ke kontrole konfigurace použijte následující kontroly:Use the following checks to review your configuration:

  • Spustili jste příkaz docker login s použitím přihlašovacích údajů, které jste zkopírovali z registru kontejneru?Did you run the docker login command using the credentials that you copied from your container registry? Tyto přihlašovací údaje se liší od těch, které používáte k přihlášení do Azure.These credentials are different than the ones that you use to sign in to Azure.
  • Je vaše úložiště kontejnerů správné?Is your container repository correct? Má váš správný název registru kontejneru a správný název modulu?Does it have your correct container registry name and your correct module name? Otevřete soubor Module. JSON ve složce SampleModule, abyste zkontrolovali.Open the module.json file in the SampleModule folder to check. Hodnota úložiště by měla vypadat jako <název registru>. azurecr.IO/SampleModule.The repository value should look like <registry name>.azurecr.io/samplemodule.
  • Pokud jste pro modul použili jiný název než SampleModule , znamená to, že se tento název v rámci řešení konzistentně používá?If you used a different name than SampleModule for your module, is that name consistent throughout the solution?
  • Je váš počítač se spuštěným stejným typem kontejnerů, které vytváříte?Is your machine running the same type of containers that you're building? Tento kurz je určen pro zařízení se systémem Linux IoT Edge, takže Visual Studio Code by měl být na bočním panelu amd64 nebo arm32v7 a Docker Desktop by měl spouštět kontejnery Linux.This tutorial is for Linux IoT Edge devices, so Visual Studio Code should say amd64 or arm32v7 in the side bar, and Docker Desktop should be running Linux containers.

Nasadit moduly do zařízeníDeploy modules to device

Ověřili jste, že jsou sestavené image kontejneru uložené v registru kontejnerů, takže je čas je nasadit do zařízení.You verified that the built container images are stored in your container registry, so it's time to deploy them to a device. Ujistěte se, že je zařízení IoT Edge spuštěné.Make sure that your IoT Edge device is up and running.

  1. V Průzkumníku Visual Studio Code rozbalte část zařízení Azure IoT Hub.In the Visual Studio Code explorer, expand the Azure IoT Hub Devices section.

  2. Klikněte pravým tlačítkem na zařízení IoT Edge, do kterého chcete nasadit, a pak vyberte vytvořit nasazení pro jedno zařízení.Right-click the IoT Edge device that you want to deploy to, then select Create Deployment for Single Device.

    Vytvoření nasazení pro jedno zařízení

  3. V Průzkumníku souborů přejděte do konfigurační složky a pak vyberte soubor Deployment. amd64. JSON .In the file explorer, navigate into the config folder then select the deployment.amd64.json file.

    Nepoužívejte soubor Deployment. template. JSON, ve kterém nejsou k dispozici přihlašovací údaje registru kontejneru nebo hodnoty imagí modulu.Do not use the deployment.template.json file, which doesn't have the container registry credentials or module image values in it. Pokud cílíte na zařízení ARM32 pro Linux, manifest nasazení bude pojmenovaný Deployment. arm32v7. JSON.If you're targeting a Linux ARM32 device, the deployment manifest will be named deployment.arm32v7.json.

  4. Rozbalte podrobnosti pro vaše zařízení IoT Edge a potom rozbalte seznam moduly pro vaše zařízení.Expand the details for your IoT Edge device, then expand the Modules list for your device.

  5. Pomocí tlačítka Aktualizovat aktualizujte zobrazení zařízení, dokud neuvidíte moduly SimulatedTemperatureSensor a SampleModule běžící na vašem zařízení.Use the refresh button to update the device view until you see the SimulatedTemperatureSensor and SampleModule modules running on your device.

    Spuštění obou modulů může trvat několik minut.It may take a few minutes for both modules to start. Modul runtime IoT Edge musí přijmout nový manifest nasazení, Stáhnout image modulu z modulu runtime kontejneru a pak začít každý nový modul.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.

    Zobrazit moduly běžící na zařízení IoT Edge

Zobrazit zprávy ze zařízeníView messages from device

Kód SampleModule přijímá zprávy přes vstupní frontu a předává je spolu s její výstupní frontou.The SampleModule code receives messages through its input queue and passes them along through its output queue. Manifest nasazení deklaroval trasy, které předaly zprávy do SampleModule z SimulatedTemperatureSensor, a pak přesměrují zprávy od SampleModule do IoT Hub.The deployment manifest declared routes that passed messages to SampleModule from SimulatedTemperatureSensor, and then forwarded messages from SampleModule to IoT Hub. Nástroje Azure IoT Tools for Visual Studio Code umožňují zobrazovat zprávy při jejich doručování IoT Hub z jednotlivých zařízení.The Azure IoT tools for Visual Studio Code allow you to see messages as they arrive at IoT Hub from your individual devices.

  1. V Průzkumníku Visual Studio Code klikněte pravým tlačítkem na zařízení IoT Edge, které chcete monitorovat, a pak vyberte Spustit sledování integrovaného koncového bodu události.In the Visual Studio Code explorer, right-click the IoT Edge device that you want to monitor, then select Start Monitoring Built-in Event Endpoint.

  2. Podívejte se na okno výstup v Visual Studio Code a zobrazte zprávy přicházející ve službě IoT Hub.Watch the output window in Visual Studio Code to see messages arriving at your IoT hub.

    Zobrazení zpráv příchozího zařízení do cloudu

Zobrazit změny na zařízeníView changes on device

Pokud chcete zjistit, co se děje na samotném zařízení, použijte příkazy v této části k zkontrolování modulu runtime IoT Edge a modulů spuštěných ve vašem zařízení.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.

Příkazy v této části jsou pro vaše zařízení IoT Edge, ne pro váš vývojový počítač.The commands in this section are for your IoT Edge device, not your development machine. Pokud pro zařízení IoT Edge používáte virtuální počítač, připojte se k němu hned.If you're using a virtual machine for your IoT Edge device, connect to it now. V Azure přejděte na stránku Přehled virtuálního počítače a vyberte připojit pro přístup k připojení zabezpečeného prostředí.In Azure, go to the virtual machine's overview page and select Connect to access the secure shell connection.

  • Zobrazte všechny moduly nasazené do zařízení a zkontrolujte jejich stav:View all modules deployed to your device, and check their status:

    iotedge list
    

    Měli byste vidět čtyři moduly: dva moduly IoT Edge runtime, SimulatedTemperatureSensor a SampleModule.You should see four modules: the two IoT Edge runtime modules, SimulatedTemperatureSensor, and SampleModule. Všechny čtyři by měly být uvedeny jako spuštěné.All four should be listed as running.

  • Zkontrolujte protokoly konkrétního modulu:Inspect the logs for a specific module:

    iotedge logs <module name>
    

    V IoT Edgech modulech se rozlišují malá a velká písmena.IoT Edge modules are case-sensitive.

    V protokolech SimulatedTemperatureSensor a SampleModule by se měly zobrazovat zprávy, které zpracovávají.The SimulatedTemperatureSensor and SampleModule logs should show the messages they're processing. Modul edgeAgent je zodpovědný za spouštění jiných modulů, takže jeho protokoly budou mít informace o implementaci manifestu nasazení.The edgeAgent module is responsible for starting the other modules, so its logs will have information about implementing the deployment manifest. Pokud některý z modulů není v seznamu nebo není spuštěný, budou pravděpodobně chyby v protokolech edgeAgent.If any module isn't listed or isn't running, the edgeAgent logs will probably have the errors. Modul edgeHub zodpovídá za komunikaci mezi moduly a IoT Hub.The edgeHub module is responsible for communications between the modules and IoT Hub. Pokud jsou moduly v provozu, ale zprávy nepřicházejí do služby IoT Hub, budou pravděpodobně chyby v protokolech edgeHub.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.

Další krokyNext steps

V tomto kurzu nastavíte Visual Studio Code na svém vývojovém počítači a z něho jste nasadili první IoT Edge modul.In this tutorial, you set up Visual Studio Code on your development machine and deployed your first IoT Edge module from it. Teď, když znáte základní koncepty, zkuste do modulu přidat funkce, aby mohli analyzovat data, která procházejí.Now that you know the basic concepts, try adding functionality to a module so that it can analyze the data passing through it. Vyberte preferovaný jazyk:Choose your preferred language: