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

Platí pro:IoT Edge 1.4 checkmark IoT Edge 1.4

Důležité

IoT Edge 1.4 je podporovaná verze. Pokud používáte starší verzi, podívejte se na článek Aktualizace IoT Edge.

V tomto článku se dozvíte, jak pomocí sady 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#. Podporované architektury zařízení jsou 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 vývojové nástroje IoT Edge.

  • Upřednostňovaným nástrojem pro vývoj je rozhraní příkazového řádku (CLI).
  • Nástroje Azure IoT Edge pro rozšíření sady Visual Studio Rozšíření je v režimu údržby.

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

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

Požadavky

Tento článek předpokládá, že jako vývojový počítač používáte počítač s Windows.

  • Nainstalujte nebo upravte sadu Visual Studio 2022 na vývojovém počítači. Zvolte možnosti vývoje a desktopových aplikací Azure s využitím možností úloh C++.

  • Stáhněte a nainstalujte nástroje Azure IoT Edge z webu Visual Studio Marketplace. K vytvoření a sestavení řešení IoT Edge můžete použít rozšíření Azure IoT Edge Tools. Upřednostňovaným vývojovým nástrojem je nástroj příkazového řádku (CLI) Azure IoT Edge Dev Tool. Součástí rozšíření jsou šablony projektů Azure IoT Edge použité k vytvoření projektu sady Visual Studio. V současné době potřebujete nainstalované rozšíření bez ohledu na nástroj pro vývoj, který používáte.

    Důležité

    Rozšíření Azure IoT Edge Tools for VS 2022 je v režimu údržby. Upřednostňovaným vývojovým nástrojem je nástroj příkazového řádku (CLI) Azure IoT Edge Dev Tool.

    Tip

    Pokud používáte Visual Studio 2019, stáhněte a nainstalujte nástroje Azure IoT Edge pro VS 2019 z marketplace sady Visual Studio.

  • Instalace správce knihovny Vcpkg

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

    Instalace balíčku 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 Linuxu, použijte počítač s Windows, který splňuje požadavky na Docker Desktop.

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

    Tip

    Místo cloudového registru můžete použít místní registr Dockeru pro účely prototypu a testování.

  • Nainstalujte rozhraní příkazového řádku Azure CLI.

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

    • Vytvoření na webu Azure Portal je nejrychlejší. Na webu Azure Portal přejděte k prostředku ioT Hubu. V nabídce Správa zařízení vyberte Zařízenía pak vyberte Přidat zařízení.

      V části Vytvořit zařízení pojmenujte zařízení pomocí ID zařízení, zaškrtněte políčko Zařízení IoT Edge a pak v levém dolním rohu vyberte Uložit .

      Nakonec v nabídce Zařízení pro správu > zařízení ověřte, že vaše nové zařízení ve službě IoT Hub existuje. Další informace o vytvoření zařízení IoT Edge prostřednictvím webu Azure Portal najdete v tématu Vytvoření a zřízení zařízení IoT Edge v Linuxu pomocí symetrických klíčů.

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

    Pokud na vývojovém počítači spouštíte proces démon IoT Edge, možná budete muset před zahájením vývoje v sadě Visual Studio zastavit EdgeHub a EdgeAgent.

Vytvoření projektu Azure IoT Edge

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

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

Důležité

Struktura projektu IoT Edge vytvořená sadou Visual Studio není stejná jako struktura projektu v editoru Visual Studio Code.

Azure IoT Edge Dev Tool CLI v současné době nepodporuje vytváření typu projektu sady Visual Studio. K vytvoření projektu sady Visual Studio potřebujete použít rozšíření Visual Studio IoT Edge.

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

  2. V části Vytvořit nový projekt vyhledejte Azure IoT Edge. Vyberte projekt, který odpovídá platformě a architektuře vašeho zařízení IoT Edge, a vyberte Další.

    Create New Project

  3. V části Konfigurace nového projektu zadejte název projektu, zadejte umístění a 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 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í vašeho 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ázvový> modul.

  7. Výběrem možnosti Přidat přidáte modul do projektu.

    Screenshot of how to add Application and Module.

    Poznámka:

    Pokud máte existující projekt IoT Edge, můžete změnit adresu URL úložiště otevřením souboru module.json . Adresa URL úložiště se nachází ve vlastnosti úložiště souboru JSON.

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

Struktura projektu

Ve vašem řešení jsou dvě složky na úrovni projektu, včetně hlavní složky projektu a jedné složky 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 nebo Program.csmain.c v závislosti na jazyce, který jste zvolili. Tato složka obsahuje také soubor s názvem module.json , který popisuje metadata vašeho modulu. Různé soubory Dockeru, které jsou zde zahrnuty, poskytují informace potřebné k sestavení modulu jako kontejneru Windows nebo Linuxu.

Manifest nasazení projektu

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

Pokud otevřete tuto šablonu nasazení, uvidíte, že jsou zahrnuty dva moduly modulu runtime EdgeAgent a edgeHub spolu s vlastním modulem, který jste vytvořili v tomto projektu sady Visual Studio. Součástí je také čtvrtý modul s názvem SimulatedTemperatureSensor . Tento výchozí modul vygeneruje simulovaná data, která můžete použít k otestování modulů nebo odstranění, pokud to není nutné. Pokud chcete zjistit, jak simulovaný senzor teploty funguje, podívejte se na zdrojový kód SimulatedTemperatureSensor.csproj.

Nastavení verze modulu runtime IoT Edge

Nejnovější stabilní verze modulu runtime je v současné době 1.4. Verzi modulu runtime IoT Edge byste měli aktualizovat na nejnovější stabilní verzi nebo verzi, na kterou chcete cílit na vaše zařízení.

  1. V Průzkumník řešení klikněte pravým tlačítkem na název hlavního projektu a vyberte Nastavit verzi modulu runtime IoT Edge.

    Screenshot of how to find and select the menu item named 'Set IoT Edge Runtime version'.

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

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

    "systemModules": {
       "edgeAgent": {
        //...
          "image": "mcr.microsoft.com/azureiotedge-agent:1.4"
        //...
       "edgeHub": {
       //...
          "image": "mcr.microsoft.com/azureiotedge-hub:1.4",
       //...
    
  3. Pokud jste změnili verzi, znovu vygenerujte manifest nasazení tak, že kliknete pravým tlačítkem na název projektu a vyberete Vygenerovat nasazení pro IoT Edge. Tím se vygeneruje manifest nasazení na základě šablony nasazení a zobrazí se v konfigurační složce projektu sady Visual Studio.

  1. Otevřete soubor manifestu nasazení deployment.debug.template.json . Manifest nasazení je dokument JSON, který popisuje moduly, které se mají nakonfigurovat na cílovém zařízení IoT Edge.

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

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

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 byla směrována do vašeho modulu, který přijímá vstup a pak je odesílá do IoT Hubu.

Až budete připraveni přizpůsobit šablonu modulu vlastním kódem, použijte sady SDK služby 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

Azure IoT EdgeHub Dev Tool poskytuje místní vývojové a ladicí prostředí. Tento 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 nástroji Azure IoT EdgeHub Dev Tool.

Inicializace nástroje v sadě Visual Studio:

  1. Načtěte připojovací řetězec vašeho zařízení IoT Edge (nachází se ve službě IoT Hub) z webu Azure Portal nebo z Azure CLI.

    Pokud k načtení připojovací řetězec použijete 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 Nástroje v sadě Visual Studio vyberte Azure IoT Edge Tools>Setup IoT Edge Simulator.

  3. Vložte připojovací řetězec a vyberte OK.

Poznámka:

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

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 odesílat zprávy přes port 53000.

  1. V Průzkumník řešení vyberte a zvýrazněte složku projektu modulu (například IotEdgeModule1). Nastavte vlastní modul jako spouštěný projekt. V nabídce vyberte Project>Set as StartUp Project (Spustit projekt).

  2. Stisknutím klávesy F5 nebo výběrem tlačítka pro spuštění panelu nástrojů spusťte simulátor IoT Edge pro jeden modul. Počáteční doba může trvat 10 až 20 sekund.

    Screenshot of how to run a module.

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

  4. Nastavte zarážku pro kontrolu modulu.

    • Pokud vyvíjíte 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í jednoho modulu simulátor naslouchá na výchozím portu 53000 zpráv. 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 v adrese URL zobrazí chyba bez chybějící složené složené závorky nebo závorky, 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 of the output console, Visual Studio project, and Bash window.

    Zarážka by se měla aktivovat. Proměnné můžete sledovat v okně Místní prostředí sady Visual Studio a zjistit, kdy je ladicí program spuštěný. Přejděte na Ladicí>místní prostředí Systému Windows.>

    V prostředí Bash nebo prostředí by se mělo zobrazit {"message":"accepted"} potvrzení.

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

    IoT Hub module client initialized.
    Received message: 1, Body: [hello world]
    

    Tip

    Můžete také použít PostMan nebo jiné nástroje rozhraní API k odesílání zpráv místo curl.

  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íhohubu 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 Průzkumník řešení přidejte do řešení druhý modul tak, že kliknete pravým tlačítkem myši na hlavní složku projektu. V nabídce vyberte Přidat>nový modul IoT Edge.

    Screenshot of how to add a 'New IoT Edge Module' from the menu.

  2. Add module V okně zadejte název nového modulu a nahraďte localhost:5000 část adresy URL úložiště přihlašovacím serverem služby 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 EdgeHub trasy se také přidala nová trasa pro odesílání zpráv z nového modulu do IoT Hubu. 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 zarážku pro kontrolu modulů.

    • Pokud vyvíjíte 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 v každém modulu zarážky a stisknutím klávesy F5 spusťte a ladit více modulů současně. Měli byste vidět několik oken konzolové aplikace .NET Core, přičemž každé okno představuje jiný modul.

    Screenshot of Visual Studio with two output consoles.

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

Vytváření a nabízení imagí do registru

Po vývoji a ladění modulu můžete sestavit a odeslat image modulu do služby Azure Container Registry. Pak můžete modul nasadit do zařízení IoT Edge.

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

  2. Jako konfiguraci pro sestavení imagí modulů vyberte ladění nebo vydání.

    Poznámka:

    Při výběru možnosti Ladit sada Visual Studio používá Dockerfile.(amd64|windows-amd64).debug k sestavení imagí Dockeru. To zahrnuje ladicí program příkazového řádku .NET Core VSDBG v imagi kontejneru při jeho vytváření. Pro moduly IoT Edge připravené pro produkční prostředí doporučujeme použít konfiguraci vydané verze , která se 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 k němu pomocí následujícího příkazu Dockeru. Uživatelské jméno a heslo můžete získat na stránce Přístupové klíče vašeho registru na webu Azure Portal.

    docker login <ACR login server>
    
  4. Pojďme přidat přihlašovací údaje služby Azure Container Registry do nastavení modulu runtime nalezeného v souboru deployment.debug.template.json. Můžete to provést dvěma způsoby. Přihlašovací údaje registru můžete buď 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 Průzkumník řešení vyberte tlačítko Zobrazit všechny soubory na panelu nástrojů. Zobrazí se .env soubor. Přidejte do .env souboru uživatelské jméno a heslo služby Azure Container Registry. Tyto přihlašovací údaje najdete na stránce Přístupové klíče služby Azure Container Registry na webu Azure Portal.

    Screenshot of button that shows all files in the Solution Explorer.

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

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

    Pokud byste raději přidali 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 instanční objekty. Další informace najdete v tématu Správa přístupu k registru kontejneru.

  5. Pokud používáte místní registr, můžete spustit místní registr.

  6. Nakonec v Průzkumník řešení klikněte pravým tlačítkem na hlavní složku projektu a vyberte Sestavit a odeslat moduly IoT Edge, aby se sestavil a nasdílel image Dockeru pro každý modul. Může to trvat minutu. Až se zobrazí Finished Build and Push IoT Edge Modules. v konzole Výstup v sadě Visual Studio, máte hotovo.

Nasazení řešení

Teď, když jste vytvořili a nasdíleli image modulů do služby Azure Container Registry, můžete řešení nasadit do zařízení IoT Edge. Už máte šablonu manifestu nasazení, kterou jste v průběhu tohoto kurzu pozorovali. Vygenerujme z toho manifest nasazení a pak pomocí příkazu Azure CLI nasadíte moduly do zařízení IoT Edge v Azure.

  1. Klikněte pravým tlačítkem na hlavní projekt v sadě Visual Studio Průzkumník řešení a zvolte Generovat nasazení pro IoT Edge.

    Screenshot of location of the 'generate deployment' menu item.

  2. Přejděte do místní složky hlavního projektu sady Visual Studio a vyhledejte ji 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. Zkontrolujte soubor a ověřte deployment.amd64.debug.json , že je verze schématu edgeHub nastavená 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
           }
         }
       }
    

    Tip

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

    Důležité

    Po nasazení zařízení IoT Edge se v současné době na webu Azure Portal s verzí 1.2 schématu nezobrazí správně (verze 1.1 bude v pořádku). Jedná se o známou chybu, která bude brzy opravena. To ale nebude mít vliv na vaše zařízení, protože je stále připojený ve službě IoT Hub a dá se s ním kdykoli komunikovat pomocí Azure CLI.

    Screenshot of Azure portal error on the IoT Edge device page.

  4. Teď nasadíme manifest pomocí příkazu Azure CLI. Otevřete příkazový řádek pro vývojáře sady Visual Studio a přejděte do konfiguračního adresáře.

        cd config
    
  5. Nasaďte manifest pro zařízení IoT Edge do IoT Hubu. 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 hodnotu [device id]a [hub name][file path] nahraďte hodnotami. Pokud ID zařízení IoT Edge v IoT Hubu 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 JSON příkazovém řádku zobrazí potvrzení nasazení.

Image Dockeru pro sestavení modulu

Po vytvoření modulu můžete sestavit image modulu, která se uloží do registru kontejneru pro nasazení do zařízení IoT Edge.

Pomocí souboru Dockerfile modulu sestavte image Dockeru modulu.

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

Předpokládejme například, že příkazové prostředí je v adresáři projektu a název vašeho modulu je IotEdgeModule1. Pokud chcete vytvořit image místního registru nebo registru kontejneru Azure, použijte následující příkazy:

# 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"

Image Dockeru modulu push

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 zařízení IoT Edge.

V sadě Visual Studio otevřete soubor manifestu nasazení deployment.debug.template.json v hlavním projektu. Manifest nasazení je dokument JSON, který popisuje moduly, které se mají nakonfigurovat na cílovém zařízení IoT Edge. Před nasazením musíte aktualizovat přihlašovací údaje služby Azure Container Registry, image modulů a správné createOptions hodnoty. Další informace o hodnotách createOption najdete v tématu Konfigurace možností vytváření kontejnerů pro moduly IoT Edge.

  1. Pokud k uložení image modulu používáte Azure Container Registry, musíte v nastavení edgeAgent přidat přihlašovací údaje do 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ém a vlastní modul v šabloně nasazení.

    Například image IotEdgeModule1 a nastavení createOptions 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\"}]}}}"
    }
    

K nasazení modulů do Azure IoT Hubu použijte příkaz set-modules Pro IoT Edge. Pokud například chcete nasadit moduly definované v souboru deployment.debug.amd64.json do ioT Hubu my-iot-hub pro zařízení IoT Edge, použijte 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>"

Tip

Svůj připojovací řetězec IoT Hub najdete na webu Azure Portal v části Zásady sdíleného přístupu nastavení>zabezpečení služby Azure IoT Hub.>

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

Pokud chcete zkontrolovat, jestli se moduly IoT Edge 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.2
   edgeHub                     running          Up a minute      mcr.microsoft.com/azureiotedge-hub:1.2
   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í sady Visual Studio.

  1. Připojení vzdáleně do Dockeru vyžaduje oprávnění na úrovni kořenového adresáře. Pokud chcete povolit připojení k démonu Dockeru na vzdáleném zařízení, postupujte podle kroků v části Správa Dockeru jako uživatel , který není root. Po dokončení ladění můžete chtít odebrat uživatele ze skupiny Dockeru.

  2. Postupujte podle kroků pro připojení k procesu spuštěném v kontejneru Dockeru na vzdáleném zařízení pomocí sady Visual Studio.

  3. V sadě 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 of Visual Studio attached to remote docker container on a device paused on a breakpoint.

Další kroky

  • Pokud chcete vyvíjet vlastní moduly pro zařízení IoT Edge, seznamte se se sadami SDK služby Azure IoT Hub a využijte je.

  • Pokud chcete monitorovat zprávy typu zařízení-cloud (D2C) pro konkrétní zařízení IoT Edge, projděte si kurz: Monitorování zařízení IoT Edge a začněte tím.