Použití Visual Studio 2022 k vývoji a ladění modulů pro Azure IoT Edge

Použitelné pro:IoT Edge 1.5 zaškrtnuto IoT Edge 1.5

Důležité

IoT Edge 1.5 LTS je podporovaná verze. IoT Edge 1,4 LTS dosáhl konce životnosti 12. listopadu 2024. Pokud používáte starší verzi, přečtěte si téma Update IoT Edge.

V tomto článku se dozvíte, jak pomocí Visual Studio 2022 vyvíjet, ladit a nasazovat vlastní moduly Azure IoT Edge. Visual Studio 2022 poskytuje šablony pro moduly IoT Edge napsané v jazyce C a C#. Mezi podporované architektury zařízení patří Windows x64, Linux x64, ARM32 a ARM64 (Preview). Další informace o podporovaných operačních systémech, jazycích a architekturách najdete v tématu Podpora jazyka a architektury.

Tento článek obsahuje kroky pro dva IoT Edge vývojové nástroje:

  • Rozhraní příkazového řádku (CLI), upřednostňovaný nástroj pro vývoj
  • nástroje Azure IoT Edge pro rozšíření Visual Studio (v režimu maintenance)

Pomocí tlačítka selektoru nástrojů na začátku zvolte možnost nástroje pro tento článek. Oba nástroje poskytují tyto výhody:

  • Na místním vývojovém počítači můžete vytvářet, upravovat, sestavovat, spouštět a ladit IoT Edge řešení a moduly.
  • Naprogramujte moduly Azure IoT v jazyce C nebo C# s výhodami Visual Studio vývoje.
  • Nasaďte řešení IoT Edge do IoT Edge zařízení prostřednictvím Azure IoT Hub.

Požadavky

Tento článek předpokládá, že jako vývojový počítač používáte počítač, na kterém běží Windows.

  • Nainstalujte nebo upravte Visual Studio 2022 na vývojovém počítači. Zvolte vývoj pro Azure a vývoj Desktop s možnostmi úloh C++.

  • Stáhněte a nainstalujte nástroje Azure IoT Edge z Visual Studio Marketplace. K vytvoření a sestavení řešení IoT Edge použijte rozšíření Azure IoT Edge Tools. Upřednostňovaným vývojovým nástrojem je příkazový řádek (CLI) Azure IoT Edge Dev Tool. Součástí rozšíření jsou šablony Azure IoT Edge projektů použité k vytvoření Visual Studio projektu. Rozšíření budete potřebovat nainstalované bez ohledu na vámi používané vývojové nástroje.

    Důležité

    Rozšíření Azure IoT Edge Tools for VS 2022 je v režimu maintenance. Upřednostňovaným vývojovým nástrojem je příkazový řádek (CLI) Azure IoT Edge Dev Tool.

    Návod

    Pokud používáte Visual Studio 2019, stáhněte a nainstalujte Azure IoT Edge Tools for VS 2019 z Visual Studio marketplace.

  • Instalace správce knihovny Vcpkg

    git clone https://github.com/Microsoft/vcpkg
    cd vcpkg
    bootstrap-vcpkg.bat
    

    Nainstalujte balíček azure-iot-sdk-c pro Windows

    vcpkg.exe install azure-iot-sdk-c:x64-windows
    vcpkg.exe --triplet x64-windows integrate install
    
  • Stáhněte a nainstalujte do vývojového počítače systém pro správu kontejnerů kompatibilní s Dockerem a sestavte a spusťte image modulů. Nainstalujte například Docker Community Edition.

  • Pokud chcete vyvíjet moduly s kontejnery Linux, použijte počítač Windows, který splňuje požadavky requirements for Docker Desktop.

  • Vytvořte Azure Container Registry nebo Docker Hub pro ukládání imagí modulů.

    Návod

    Místo cloudového registru použijte místní registr Dockeru pro vytváření prototypů a testování.

  • Nainstalujte Azure CLI.

  • K otestování modulu na zařízení potřebujete aktivní IoT Hub s alespoň jedním IoT Edge zařízením. Pokud chcete vytvořit IoT Edge zařízení pro testování, vytvořte ho na portálu Azure nebo pomocí rozhraní příkazového řádku:

    • Nejrychlejší způsob je vytvoření na portálu Azure. Na portálu Azure přejděte ke svému prostředku IoT Hub. V nabídce Správa zařízení vyberte Zařízení a pak vyberte Přidat zařízení.

      V Vytvoření zařízení pojmenujte své zařízení pomocí Device ID, zkontrolujte IoT Edge Zařízení a pak v levém dolním rohu vyberte Save.

      V nabídce Device management > Devices ověřte, že v IoT Hub existuje vaše nové zařízení. Další informace o vytvoření zařízení IoT Edge prostřednictvím portálu Azure najdete v tématu Vytvoření a zřízení zařízení IoT Edge v Linuxu pomocí symetrických klíčů.

    • Pokud chcete vytvořit IoT Edge zařízení pomocí rozhraní příkazového řádku, postupujte podle pokynů v rychlém startu pro Linux nebo Windows. V procesu registrace IoT Edge zařízení vytvoříte IoT Edge zařízení.

    Pokud na vývojovém počítači provozujete démon IoT Edge, možná budete muset před zahájením vývoje ve Visual Studiu zastavit EdgeHub a EdgeAgent.

Vytvoření projektu Azure IoT Edge

Šablona projektu IoT Edge v Visual Studio vytvoří řešení pro nasazení do IoT Edge zařízení. Nejprve vytvoříte Azure IoT Edge řešení. Pak v řešení vytvoříte modul. Každé IoT Edge řešení může obsahovat více než jeden modul.

Upozornění

V Azure IoT Edge nástrojích pro rozšíření Visual Studio chybí šablony projektů pro moduly jazyka C a C#. Pokud nemůžete vytvořit IoT Edge moduly pomocí rozšíření, použijte následující alternativní řešení.

Stáhněte si následující soubory a umístěte je do uvedeného adresáře šablony Visual Studio:

Soubor šablony Přidat do adresáře
azureiotedgemodule-v0.0.4.zip %userprofile%\Documents\Visual Studio 2022\Templates\ProjectTemplates\Visual C#
azureiotedgevcmodulevs17-v0.0.9.zip %userprofile%\Documents\Visual Studio 2022\Templates\ProjectTemplates\Visual C++ Project

V našem řešení vytvoříme tři projekty. Hlavní modul, který obsahuje EdgeAgent a EdgeHub, kromě modulu senzoru teploty. Dále přidáte další dva moduly IoT Edge.

Důležité

Struktura projektu IoT Edge, kterou Visual Studio vytvoří, není stejná jako struktura projektu v Visual Studio Code.

Rozhraní příkazového řádku Azure IoT Edge Dev Tool v současné době nepodporuje vytváření typu projektu Visual Studio. Pomocí rozšíření Visual Studio IoT Edge vytvořte projekt Visual Studio.

  1. V Visual Studio vytvořte nový projekt.

  2. V Vytvoření nového projektu vyhledejte Azure IoT Edge. Vyberte projekt, který odpovídá platformě a architektuře vašeho zařízení IoT Edge, a pak vyberte Dalši.

  3. V části Konfigurace nového projektu zadejte název projektu, zadejte umístění a pak vyberte Vytvořit.

  4. V části Přidat modul vyberte typ modulu, který chcete vyvíjet. Pokud máte existující modul, který chcete přidat do nasazení, vyberte Existující modul.

  5. Do pole Název modulu zadejte název modulu. Zvolte název, který je v registru kontejneru jedinečný.

  6. V adrese URL úložiště zadejte název úložiště imagí modulu. Visual Studio automaticky vyplní název modulu jako localhost:5000/<název vašeho modulu>. Nahraďte ho vlastními informacemi registru. Pokud k testování použijete místní registr Dockeru, použijte localhost . Pokud používáte Azure Container Registry, použijte přihlašovací server z nastavení registru. Přihlašovací server vypadá jako <název registru>.azurecr.io. Nahraďte pouze část řetězce localhost:5000, aby konečný výsledek vypadal jako <název registru>.azurecr.io/<název vašeho modulu>.

  7. Vyberte Přidat a přidejte modul do projektu.

    Snímek obrazovky znázorňuje, jak přidat aplikaci a modul

    Poznámka:

    Pokud chcete změnit adresu URL úložiště v existujícím projektu IoT Edge, otevřete soubor module.json. Adresa URL úložiště je ve vlastnosti úložiště souboru JSON.

V řešení Visual Studio teď máte projekt IoT Edge a modul IoT Edge.

Struktura projektu

Vaše řešení má dvě složky na úrovni projektu: hlavní složku projektu a jednu složku modulu. Můžete mít například hlavní složku projektu s názvem AzureIotEdgeApp1 a složku modulu s názvem IotEdgeModule1. Hlavní složka projektu obsahuje manifest nasazení.

Složka projektu modulu obsahuje soubor pro kód modulu s názvem buď Program.cs nebo main.c, v závislosti na jazyce, který zvolíte. Tato složka má také soubor s názvem module.json , který popisuje metadata vašeho modulu. Různé soubory Dockeru zde poskytují informace potřebné k sestavení modulu jako kontejneru Windows nebo Linuxu.

Manifest nasazení projektu

Upravte manifest nasazení s názvem deployment.debug.template.json. Tento soubor je šablona manifestu nasazení IoT Edge, který definuje všechny moduly, které běží na zařízení a jak spolu komunikují. Další informace o manifestech nasazení najdete v tématu Informace o nasazení modulů a vytváření tras.

Když otevřete tuto šablonu nasazení, uvidíte, že jsou zahrnuté dva moduly modulu runtime, edgeAgent a edgeHub, a také vlastní modul, který jste vytvořili v tomto projektu Visual Studio. Součástí je také čtvrtý modul s názvem SimulatedTemperatureSensor . Tento výchozí modul generuje simulovaná data, která můžete použít k otestování modulů nebo odstranění, pokud není potřeba. Informace o fungování simulovaného senzoru teploty najdete ve zdrojovém kódu SimulatedTemperatureSensor.csproj.

Nastavení verze modulu runtime IoT Edge

Nejnovější stabilní verze modulu runtime je 1.5. Aktualizujte běhové prostředí IoT Edge na nejnovější stabilní verzi nebo verzi, kterou chcete použít pro zařízení.

  1. V Solution Explorer klikněte pravým tlačítkem myši na název hlavního projektu a pak vyberte Nastavit verzi runtime IoT Edge.

    Snímek obrazovky, jak najít a vybrat položku nabídky s názvem 'Set IoT Edge Runtime version'.

  2. V rozevírací nabídce vyberte verzi modulu runtime, na které běží vaše zařízení IoT Edge, a potom vyberte OK uložte provedené změny. Pokud nedošlo k žádné změně, vyberte Zrušit a ukončete ji.

    Rozšíření neobsahuje výběr pro nejnovější verze modulu runtime. Pokud chcete nastavit verzi modulu runtime na vyšší než 1.2, otevřete deployment.debug.template.json soubor manifestu nasazení. Změňte verzi runtime systému pro image modulu edgeAgent a edgeHub. Pokud chcete například použít modul runtime IoT Edge verze 1.5, změňte v souboru manifestu nasazení následující řádky:

    "systemModules": {
       "edgeAgent": {
        //...
          "image": "mcr.microsoft.com/azureiotedge-agent:1.5"
        //...
       "edgeHub": {
       //...
          "image": "mcr.microsoft.com/azureiotedge-hub:1.5",
       //...
    
  3. Pokud jste změnili verzi, znovu vygenerujte manifest nasazení tak, že kliknete pravým tlačítkem na název projektu a vyberete Generate deployment for IoT Edge. Tím se vygeneruje manifest nasazení na základě šablony nasazení a umístí ho do složky config projektu Visual Studio.

  1. Otevřete soubor manifestu nasazení deployment.debug.template.json . Manifest deployment je dokument JSON popisující moduly pro konfiguraci na cílovém zařízení IoT Edge.

  2. Změňte verzi runtime systému pro image modulu edgeAgent a edgeHub. Pokud chcete například použít modul runtime IoT Edge verze 1.5, změňte v souboru manifestu nasazení následující řádky:

    "systemModules": {
        "edgeAgent": {
        //...
            "image": "mcr.microsoft.com/azureiotedge-agent:1.5",
        //...
        "edgeHub": {
        //...
            "image": "mcr.microsoft.com/azureiotedge-hub:1.5",
        //...
    

Možnosti infrastruktury modulů a vývoje

Když přidáte nový modul, obsahuje výchozí kód, který je připravený k sestavení a nasazení do zařízení, abyste mohli začít testovat bez zásahu do jakéhokoli kódu. Kód modulu se nachází ve složce modulu v souboru s názvem Program.cs (pro C#) nebo main.c (pro C).

Výchozí řešení je vytvořené tak, aby simulovaná data z modulu SimulatedTemperatureSensor se směrovala do vašeho modulu, který přebírá vstup a pak je odesílá do IoT Hub.

Až budete připraveni přizpůsobit šablonu modulu vlastním kódem, použijte sady SDK Azure IoT Hub k vytváření modulů, které řeší klíčové potřeby řešení IoT, jako je zabezpečení, správa zařízení a spolehlivost.

Ladění pomocí simulátoru

Nástroj pro vývoj Azure IoT EdgeHub poskytuje místní prostředí pro vývoj a ladění. Nástroj pomáhá spouštět moduly IoT Edge bez modulu runtime IoT Edge, abyste mohli vytvářet, vyvíjet, testovat, spouštět a ladit moduly a řešení IoT Edge místně. Image nemusíte odesílat do registru kontejneru a nasazovat je do zařízení pro účely testování.

Další informace najdete v tématu Azure IoT EdgeHub Dev Tool.

Inicializace nástroje v Visual Studio:

  1. Načtěte připojovací řetězec vašeho zařízení IoT Edge (které najdete ve vašem IoT Hubu) z portálu Azure nebo z Azure CLI.

    Pokud k načtení connection string používáte rozhraní příkazového řádku, použijte tento příkaz a nahraďte "[device_id]" a "[hub_name]" vlastními hodnotami:

    az iot hub device-identity connection-string show --device-id [device_id] --hub-name [hub_name]
    
  2. V nabídce Tools v Visual Studio vyberte Azure IoT Edge Tools>Setup IoT Edge Simulator.

  3. Vložte connection string a vyberte OK.

Poznámka:

Tyto kroky musíte provést pouze jednou ve vývojovém počítači, protože výsledky se automaticky použijí pro všechna následná Azure IoT Edge řešení. Tento postup můžete provést znovu, pokud potřebujete změnit jiný connection string.

Sestavení a ladění jednoho modulu

Obvykle chcete testovat a ladit každý modul před spuštěním v rámci celého řešení s více moduly. Nástroj simulátoru IoT Edge umožňuje spustit jeden modul izolovaně a posílat zprávy přes port 53000.

  1. V Solution Explorer vyberte a zvýrazněte složku projektu modulu (například IotEdgeModule1). Nastavte vlastní modul jako spouštěný projekt. V nabídce vyberte Projekt> Nastavit jako startovací projekt.

  2. Stiskněte F5 nebo vyberte tlačítko pro spuštění panelu nástrojů a spusťte simulátor IoT Edge pro jeden modul. Počáteční doba může trvat 10 až 20 sekund.

    Snímek obrazovky znázorňuje, jak spustit modul

  3. Pokud se modul úspěšně inicializoval, měl by se zobrazit okno konzoly .NET Core.

  4. Nastavte bod přerušení pro zkoumání modulu.

    • Při vývoji v jazyce C# nastavte zarážku ve PipeMessage() funkci v ModuleBackgroundService.cs.
    • Pokud používáte jazyk C, nastavte zarážku ve InputQueue1Callback() funkci v main.c.
  5. Otestujte modul odesláním zprávy. Při ladění jediného modulu naslouchá simulátor na výchozím portu 53000 pro zprávy. Pokud chcete odeslat zprávu do modulu, spusťte následující příkaz curl z příkazového prostředí, jako je Git Bash nebo WSL Bash.

    curl --header "Content-Type: application/json" --request POST --data '{"inputName": "input1","data":"hello world"}' http://localhost:53000/api/v1/messages
    

    Pokud se zobrazí chyba neodpovídající zavírací složená závorka/závorka v adrese URL, zkuste místo toho použít následující příkaz:

    curl --header "Content-Type: application/json" --request POST --data "{\"inputName\": \"input1\", \"data\": \"hello world\"}"  http://localhost:53000/api/v1/messages
    

    Screenshot výstupní konzoly, projektu Visual Studio a Bash window.

    Zarážka by se měla aktivovat. Proměnné můžete sledovat v okně Visual Studio Locals nalezené při spuštění ladicího programu. Přejděte na Debug>Windows>Locals.

    V Bash nebo shellu byste měli vidět {"message":"accepted"} potvrzení.

    V konzole .NET byste měli vidět:

    IoT Hub module client initialized.
    Received message: 1, Body: [hello world]
    
  6. Pokud chcete zastavit ladění, stiskněte Ctrl+F5 nebo stiskněte tlačítko zastavit.

Sestavení a ladění více modulů

Po dokončení vývoje jednoho modulu můžete chtít spustit a ladit celé řešení s více moduly. Nástroj simulátoru IoT Edge umožňuje spouštět všechny moduly definované v manifestu nasazení, včetně simulovaného hraničního uzlu pro směrování zpráv. V tomto příkladu spustíte dva vlastní moduly a modul simulovaného senzoru teploty. Zprávy z modulu simulovaného senzoru teploty se směrují do každého vlastního modulu.

  1. V Solution Explorer přidejte do řešení druhý modul kliknutím pravým tlačítkem myši na hlavní složku projektu. V nabídce vyberte Add>New IoT Edge Module.

    Screenshot postupu přidání modulu New IoT Edge z menu.

  2. V okně Add module zadejte název nového modulu a nahraďte část adresy URL úložiště localhost:5000 přihlašovacím serverem Azure Container Registry, jako jste to udělali dříve.

  3. Otevřete soubor deployment.debug.template.json , abyste viděli, že nový modul byl přidán v části moduly . Do oddílu routes v EdgeHub byla přidána nová trasa pro odesílání zpráv z nového modulu do IoT Hub. Pokud chcete odesílat data ze simulovaného senzoru teploty do nového modulu, přidejte další trasu s následujícím řádkem JSON. Nahraďte <NewModuleName> (na dvou místech) vlastním názvem modulu.

    "sensorTo<NewModuleName>": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/<NewModuleName>/inputs/input1\")"
    
  4. Klikněte pravým tlačítkem na hlavní projekt (například AzureIotEdgeApp1) a vyberte Nastavit jako počáteční projekt. Nastavením hlavního projektu jako spouštěcího projektu se spustí všechny moduly v řešení. To zahrnuje oba moduly, které jste přidali do řešení, modul simulovaného senzoru teploty a simulované centrum Edge.

  5. Stisknutím klávesy F5 nebo výběrem tlačítka pro spuštění panelu nástrojů spusťte řešení. Zpočátku může trvat 10 až 20 sekund. Ujistěte se, že nemáte spuštěné další kontejnery Dockeru, které by mohly svázat port, který pro tento projekt potřebujete.

  6. Pro každý modul by se měla zobrazit dvě okna konzolové aplikace .NET Core.

  7. Nastavte bod přerušení pro zkoumání modulů.

    • Při vývoji v jazyce C# nastavte zarážku ve PipeMessage() funkci v ModuleBackgroundService.cs.
    • Pokud používáte jazyk C, nastavte zarážku ve InputQueue1Callback() funkci v main.c.
  8. Vytvořte body přerušení v každém modulu a stisknutím klávesy F5 spusťte a laďte více modulů současně. Měli byste vidět více oken konzolové aplikace .NET Core, přičemž každé okno představuje jiný modul.

    Screenshot Visual Studio se dvěma výstupními konzolami.

  9. Pokud chcete zastavit ladění, stiskněte Ctrl+F5 nebo stiskněte tlačítko zastavit.

Vytváření a odesílání obrazů do registru

Po vývoji a ladění modulu sestavte a nasdílejte image modulu do Azure Container Registry. Pak modul nasaďte do IoT Edge zařízení.

  1. Nastavte hlavní IoT Edge projekt jako počáteční projekt, ne jeden z jednotlivých modulů.

  2. Vyberte buď ladění nebo vydání jako konfiguraci pro sestavení obrazů modulů.

    Poznámka:

    Když zvolíte Debug, Visual Studio k vytváření imagí Dockeru používá Dockerfile.(amd64|windows-amd64).debug. To zahrnuje ladicí program příkazového řádku platformy .NET Core VSDBG ve vašem obrazu kontejneru. Pro produkční moduly IoT Edge použijte konfiguraci Release, která používá Dockerfile.(amd64|windows-amd64) bez VSDBG.

  3. Pokud používáte privátní registr, jako je Azure Container Registry (ACR), přihlaste se pomocí následujícího příkazu Dockeru. Získejte uživatelské jméno a heslo ze stránky Přístupové klíče registru na portálu Azure.

    docker login <ACR login server>
    
  4. Do nastavení modulu runtime v souboru deployment.debug.template.json přidejte přihlašovací údaje Azure Container Registry. Přihlašovací údaje registru můžete přidat do .env souboru (nejbezpečnější) nebo je přidat přímo do souboru deployment.debug.template.json .

    Přidejte do .env souboru přihlašovací údaje:

    V Solution Explorer vyberte tlačítko panelu nástrojů Show Všechny soubory. Zobrazí se .env soubor. Do souboru .env přidejte své uživatelské jméno a heslo Azure Container Registry. Tyto přihlašovací údaje najdete na stránce Access Keys vašeho Azure Container Registry na portálu Azure.

    Snímek obrazovky tlačítka, který zobrazuje všechny soubory v nástroji Solution Explorer.

        DEFAULT_RT_IMAGE=1.5
        CONTAINER_REGISTRY_USERNAME_myregistry=<my-registry-name>
        CONTAINER_REGISTRY_PASSWORD_myregistry=<my-registry-password>
    

    Přímé přidání přihlašovacích údajů do deployment.debug.template.json

    Pokud chcete přidat přihlašovací údaje přímo do šablony nasazení, nahraďte zástupné symboly uživatelským jménem správce ACR, heslem a názvem registru.

          "settings": {
            "minDockerVersion": "v1.25",
            "loggingOptions": "",
            "registryCredentials": {
              "registry1": {
                "username": "<username>",
                "password": "<password>",
                "address": "<registry name>.azurecr.io"
              }
            }
          }
    

    Poznámka:

    Tento článek používá přihlašovací údaje správce pro Azure Container Registry, které jsou vhodné pro scénáře vývoje a testování. Až budete připraveni na produkční scénáře, doporučujeme použít možnost ověřování s nejnižšími oprávněními, jako jsou služební identity. Další informace najdete v tématu Správa přístupu k registru kontejneru.

  5. Pokud používáte místní registr, spusťte místní registr.

  6. Nakonec v Solution Explorer klikněte pravým tlačítkem na hlavní složku projektu a vyberte Build a Push IoT Edge Modules a sestavte a nasdílejte image Dockeru pro každý modul. Může to trvat minutu. Až se ve výstupní konzole Visual Studio zobrazí Finished Build and Push IoT Edge Modules., máte hotovo.

Nasazení řešení

Teď, když jste vytvořili a nasdíleli image modulů do Azure Container Registry, nasaďte řešení do IoT Edge zařízení. V tomto kurzu už máte šablonu manifestu nasazení. Vygenerujte z něj manifest nasazení a pak pomocí příkazu Azure CLI nasaďte moduly do zařízení IoT Edge v Azure.

  1. Klikněte pravým tlačítkem na hlavní projekt v Visual Studio Solution Explorer a zvolte Generate Deployment for IoT Edge.

    Snímek obrazovky s umístěním položky nabídky Generovat nasazení

  2. Přejděte do místní složky hlavního projektu Visual Studio a vyhledejte složku config. Cesta k souboru může vypadat takto: C:\Users\<YOUR-USER-NAME>\source\repos\<YOUR-IOT-EDGE-PROJECT-NAME>\config. Tady najdete vygenerovaný manifest nasazení, například deployment.amd64.debug.json.

  3. Otevřete váš deployment.amd64.debug.json soubor a ověřte, že verze schématu edgeHub je nastavena na 1.2.

     "$edgeHub": {
         "properties.desired": {
           "schemaVersion": "1.2",
           "routes": {
             "IotEdgeModule2022ToIoTHub": "FROM /messages/modules/IotEdgeModule2022/outputs/* INTO $upstream",
             "sensorToIotEdgeModule2022": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/IotEdgeModule2022/inputs/input1\")",
             "IotEdgeModule2022bToIoTHub": "FROM /messages/modules/IotEdgeModule2022b/outputs/* INTO $upstream"
           },
           "storeAndForwardConfiguration": {
             "timeToLiveSecs": 7200
           }
         }
       }
    

    Návod

    Šablona nasazení pro Visual Studio 2022 vyžaduje verzi schématu 1.2. Pokud je potřebujete mít 1.1 nebo 1.0, počkejte, až se vygeneruje nasazení (neměňte je v deployment.debug.template.json). Generování nasazení ve výchozím nastavení vytvoří schéma 1.2. Před nasazením do Azure ale můžete ručně změnit vygenerovaný manifest deployment.amd64.debug.json.

    Důležité

    Po nasazení zařízení IoT Edge se v současné době na portálu Azure s schématem verze 1.2 nezobrazí správně (verze 1.1 je v pořádku). To ale nebude mít vliv na vaše zařízení, protože je stále připojený v IoT Hub a můžete s ním kdykoli komunikovat pomocí Azure CLI.

    Snímek obrazovky chyby portálu Azure na stránce zařízení IoT Edge.

  4. Teď nasadíme manifest pomocí příkazu Azure CLI. Otevřete příkazový řádek Visual Studio Developer a přejděte do adresáře config.

        cd config
    
  5. Nasaďte manifest pro zařízení IoT Edge do IoT Hub. Příkaz nakonfiguruje zařízení tak, aby používalo moduly vyvinuté ve vašem řešení. Manifest nasazení byl vytvořen v předchozím kroku a uložen ve složce konfigurace . Z konfigurační složky spusťte následující příkaz nasazení. Nahraďte [device id], [hub name] a [file path] svými hodnotami. Pokud id zařízení IoT Edge v IoT Hub neexistuje, musí se vytvořit.

        az iot edge set-modules --device-id [device id] --hub-name [hub name] --content [file path]
    

    Váš příkaz může vypadat například takto:

    az iot edge set-modules --device-id my-device-name --hub-name my-iot-hub-name --content deployment.amd64.debug.json
    
  6. Po spuštění příkazu se v příkazovém řádku zobrazí potvrzení nasazení vytištěného ve formátu JSON.

Image Dockeru pro sestavení modulu

Po vývoji modulu sestavte image modulu, která se uloží do registru kontejneru pro nasazení do IoT Edge zařízení.

Pomocí souboru Dockerfile modulu sestavte image Dockeru modulu.

docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>" 

Pokud je například vaše příkazové prostředí v adresáři projektu a název vašeho modulu je IotEdgeModule1, pomocí následujících příkazů sestavte image místního registru nebo registru kontejneru Azure:

# Build the image for the local registry

docker build --rm -f "./IotEdgeModule1/Dockerfile.amd64.debug" -t localhost:5000/iotedgemodule1:0.0.1-amd64 "./IotEdgeModule1"

# Or build the image for an Azure Container Registry

docker build --rm -f "./IotEdgeModule1/Dockerfile.amd64.debug" -t myacr.azurecr.io/iotedgemodule1:0.0.1-amd64 "./IotEdgeModule1"

Odeslat obrázek Dockeru modulu

Nasdílejte image modulu do místního registru nebo do registru kontejneru.

docker push <ImageName>

Příklad:

# Push the Docker image to the local registry

docker push localhost:5000/iotedgemodule1:0.0.1-amd64

# Or push the Docker image to an Azure Container Registry
az acr login --name myacr
docker push myacr.azurecr.io/iotedgemodule1:0.0.1-amd64

Nasaďte modul do IoT Edge zařízení.

V Visual Studio otevřete v hlavním projektu soubor manifestu nasazení deployment.debug.template.json. Manifest deployment je dokument JSON popisující moduly, které se mají nakonfigurovat na cílovém zařízení IoT Edge. Před nasazením je potřeba aktualizovat přihlašovací údaje Azure Container Registry, image modulů a správné hodnoty createOptions. Další informace o hodnotách createOption najdete v tématu Jak konfigurovat možnosti vytvoření kontejneru pro moduly IoT Edge.

  1. Pokud k uložení image modulu používáte Azure Container Registry, musíte do nastavení edgeAgent přidat své přihlašovací údaje v souboru deployment.debug.template.json. Příklad:

    "modulesContent": {
    "$edgeAgent": {
      "properties.desired": {
        "schemaVersion": "1.1",
        "runtime": {
          "type": "docker",
          "settings": {
            "minDockerVersion": "v1.25",
            "loggingOptions": "",
            "registryCredentials": {
              "myacr": {
                "username": "myacr",
                "password": "<your_acr_password>",
                "address": "myacr.azurecr.io"
              }
            }
          }
        },
    //...
    
  2. Hodnotu vlastnosti image nahraďte názvem image modulu, který jste odeslali do registru. Pokud jste například odeslali image označenou myacr.azurecr.io/iotedgemodule1:0.0.1-amd64 pro vlastní modul IotEdgeModule1, nahraďte hodnotu vlastnosti image hodnotou značky.

  3. Přidejte nebo nahraďte hodnotu createOptions řetězcovým obsahem pro každý systémový a vlastní modul v šabloně nasazení.

    Například nastavení image a createOptions modulu IotEdgeModule1 by se podobaly následujícímu:

    "IotEdgeModule1": {
    "version": "1.0.0",
    "type": "docker",
    "status": "running",
    "restartPolicy": "always",
    "settings": {
        "image": "myacr.azurecr.io/iotedgemodule1:0.0.1-amd64",
        "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
    }
    

Pomocí příkazu IoT Edge Azure CLI set-modules nasaďte moduly do Azure IoT Hub. Pokud chcete například nasadit moduly definované v souboru deployment.debug.amd64.json do IoT Hub my-iot-hub pro IoT Edge zařízení my-device, spusťte následující příkaz:

az iot edge set-modules --hub-name my-iot-hub --device-id my-device --content ./deployment.debug.template.json --login "HostName=my-iot-hub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=<SharedAccessKey>"

Návod

Najděte svůj IoT Hub connection string na portálu Azure v části Azure IoT Hub >Nastavení zabezpečení>Sdílené zásady přístupu.

Potvrďte nasazení do vašeho zařízení.

Pokud chcete zkontrolovat, jestli se vaše IoT Edge moduly nasadily do Azure, přihlaste se k zařízení (nebo virtuálnímu počítači), například přes SSH nebo Azure Bastion, a spusťte příkaz IoT Edge list.

   iotedge list

Měl by se zobrazit seznam modulů spuštěných na vašem zařízení nebo virtuálním počítači.

   NAME                        STATUS           DESCRIPTION      CONFIG
   SimulatedTemperatureSensor  running          Up a minute      mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0
   edgeAgent                   running          Up a minute      mcr.microsoft.com/azureiotedge-agent:1.5
   edgeHub                     running          Up a minute      mcr.microsoft.com/azureiotedge-hub:1.5
   IotEdgeModule1              running          Up a minute      myacr.azurecr.io/iotedgemodule1:0.0.1-amd64.debug
   myIotEdgeModule2            running          Up a minute      myacr.azurecr.io/myiotedgemodule2:0.0.1-amd64.debug

Ladění pomocí vzdáleného SSH Dockeru

Moduly Docker a Moby podporují připojení SSH ke kontejnerům, které umožňují připojit a ladit kód na vzdáleném zařízení pomocí Visual Studio.

  1. Vzdálené připojení k Dockeru vyžaduje oprávnění kořenové úrovně. Postupujte podle kroků v části Správa Dockeru jako uživatel bez root oprávnění, abyste mohli povolit připojení k démonu Dockeru na vzdáleném zařízení. Po dokončení ladění můžete chtít uživatele odebrat ze skupiny Dockeru.

  2. Postupujte podle pokynů pro Visual Studio k připojení k procesu, který běží v kontejneru Dockeru na vašem vzdáleném zařízení.

  3. V Visual Studio nastavte zarážky ve vlastním modulu.

  4. Po dosažení zarážky můžete zkontrolovat proměnné, procházet kód a ladit modul.

    Screenshot Visual Studio připojeného ke vzdálenému kontejneru Dockeru na zařízení pozastaveném na zarážce.

Další kroky