Använd Visual Studio 2019 för att utveckla och felsöka moduler för Azure IoT Edge

Gäller för:  Ja-ikonen IoT Edge 1,1  Ja-ikonen IoT Edge 1,2

Den här artikeln visar hur du använder Visual Studio 2019 för att utveckla och felsöka Azure IoT Edge moduler.

Tillägget Azure IoT Edge Tools för Visual Studio ger följande fördelar:

  • Skapa, redigera, skapa, köra och felsöka IoT Edge lösningar och moduler på din lokala utvecklingsdator.
  • Distribuera din IoT Edge till en IoT Edge enhet via Azure IoT Hub.
  • Koda dina Azure IoT-moduler i C eller C# samtidigt som du får alla fördelar med Visual Studio utveckling.
  • Hantera IoT Edge enheter och moduler med användargränssnitt.

Den här artikeln visar hur du använder Azure IoT Edge Tools för Visual Studio 2019 för att utveckla IoT Edge moduler. Du får också lära dig hur du distribuerar projektet till en IoT Edge enhet. För närvarande Visual Studio 2019 stöd för moduler som skrivits i C och C#. De enhetsarkitekturer som stöds Windows X64 och Linux X64 eller ARM32. Mer information om operativsystem, språk och arkitekturer som stöds finns i Stöd för språk och arkitektur.

Förutsättningar

Den här artikeln förutsätter att du använder en dator Windows som utvecklingsdator. På Windows datorer kan du utveckla antingen Windows eller Linux-moduler.

  • Om du vill utveckla moduler Windows containrar använder du Windows dator som kör version 1809/version 17763 eller senare.
  • Om du vill utveckla moduler med Linux-containrar använder Windows en dator som uppfyller kraven för Docker Desktop.

Installera Visual Studio på utvecklingsdatorn. Se till att du inkluderar Azure-utveckling och skrivbordsutveckling med C++-arbetsbelastningar i din Visual Studio 2019-installation. Du kan ändra Visual Studio 2019 för att lägga till de arbetsbelastningar som krävs.

När ditt Visual Studio 2019 är klart behöver du även följande verktyg och komponenter:

  • Ladda ned och Azure IoT Edge Tools från Visual Studio Marketplace för att skapa ett IoT Edge-projekt Visual Studio 2019.

    Tips

    Om du använder Visual Studio 2017 laddar du ned och installerar Azure IoT Edge Tools vs 2017 från Visual Studio marketplace

  • Ladda ned och installera Docker Community Edition på utvecklingsdatorn för att skapa och köra modulavbildningarna. Du måste ange att Docker CE ska köras i antingen Linux-containerläge eller Windows containerläge, beroende på vilken typ av moduler du utvecklar.

  • Konfigurera din lokala utvecklingsmiljö för att felsöka, köra och testa din IoT Edge genom att installera Azure IoT EdgeHub Dev Tool. Installera Python (3.5/3.6/3.7/3.8) och Pip och installera sedan paketet iotedgehubdev genom att köra följande kommando i terminalen. Kontrollera att din Azure IoT EdgeHub Dev Tool-version är större än 0.3.0.

    pip install --upgrade iotedgehubdev
    
  • Installera bibliotekshanteraren Vcpkg och installera sedan paketet azure-iot-sdk-c för Windows.

    git clone https://github.com/Microsoft/vcpkg
    cd vcpkg
    bootstrap-vcpkg.bat
    
    vcpkg.exe install azure-iot-sdk-c:x64-windows
    vcpkg.exe --triplet x64-windows integrate install
    
  • Skapa en instans av Azure Container Registry eller Docker Hub för att lagra modulavbildningarna.

    Tips

    Du kan använda ett lokalt Docker-register för prototyp- och testningsändamål i stället för ett molnregister.

  • Om du vill testa modulen på en enhet behöver du en aktiv IoT-hubb med minst en IoT Edge enhet. Om du snabbt vill IoT Edge en enhet för testning följer du stegen i snabbstarten för Linux eller Windows. Om du kör IoT Edge daemon på utvecklingsdatorn kan du behöva stoppa EdgeHub och EdgeAgent innan du börjar utveckla i Visual Studio.

Kontrollera verktygsversionen

  1. På menyn Tillägg väljer du Hantera tillägg. Expandera Installerade > Tools så hittar du Azure IoT Edge Tools för Visual Studio och Cloud Explorer för Visual Studio.

  2. Observera den installerade versionen. Du kan jämföra den här versionen med den senaste versionen Visual Studio Marketplace (Cloud Explorer, Azure IoT Edge)

  3. Om din version är äldre än den som finns på Visual Studio Marketplace uppdaterar du dina verktyg i Visual Studio som visas i följande avsnitt.

Uppdatera dina verktyg

  1. I fönstret Hantera tillägg expanderar du Uppdateringar > Visual Studio Marketplace, väljer Azure IoT Edge Tools eller Cloud Explorer för Visual Studio och väljer Uppdatera.

  2. När verktygsuppdateringen har laddats ned stänger du Visual Studio för att utlösa verktygsuppdateringen med hjälp av VSIX-installationsprogrammet.

  3. I installationsprogrammet väljer du OK för att starta och sedan Ändra för att uppdatera verktygen.

  4. När uppdateringen är klar väljer du Stäng och startar om Visual Studio.

Skapa ett Azure IoT Edge projekt

Den IoT Edge projektmallen i Visual Studio skapar en lösning som kan distribueras till IoT Edge enheter. Först skapar du Azure IoT Edge en lösning och sedan genererar du den första modulen i lösningen. Varje IoT Edge lösning kan innehålla mer än en modul.

Tips

Den IoT Edge projektstrukturen som skapas av Visual Studio är inte samma som i Visual Studio Code.

  1. Skapa ett nytt projekt i Visual Studio.

  2. På sidan Skapa ett nytt projekt söker du efter Azure IoT Edge. Välj det projekt som matchar plattformen och arkitekturen för din IoT Edge enhet och klicka på Nästa.

    Skapa ny Project

  3. På sidan Konfigurera det nya projektet anger du ett namn för projektet och anger platsen. Välj sedan Skapa.

  4. I fönstret Lägg till modul väljer du den typ av modul som du vill utveckla. Du kan också välja Befintlig modul om du vill lägga till IoT Edge en befintlig modul i distributionen. Ange modulnamnet och lagringsplatsen för modulavbildningen.

    Visual Studio fyller i lagringsplatsens URL automatiskt med localhost:5000/<-modulnamnet >. Om du använder ett lokalt Docker-register för testning går det bra med localhost. Om du använder Azure Container Registry ersätter du localhost:5000 med inloggningsservern från registrets inställningar. Inloggningsservern ser ut <registry name> som .azurecr.io. Slutresultatet bör se ut som <registry name> .azurecr.io/ <module name>.

    Välj Lägg till för att lägga till modulen i projektet.

    Lägg till program och modul

Nu har du ett IoT Edge-projekt och en IoT Edge-modul i din Visual Studio lösning.

Modulmappen innehåller en fil för modulkoden med namnet program.cs antingen main.c eller beroende på vilket språk du har valt. Den här mappen innehåller också en fil module.json med namnet som beskriver metadata för din modul. Olika Docker-filer innehåller den information som behövs för att skapa modulen som en Windows- eller Linux-container.

Projektmappen innehåller en lista över alla moduler som ingår i projektet. Just nu bör den bara visa en modul, men du kan lägga till fler. Mer information om hur du lägger till moduler i ett projekt finns i avsnittet Skapa och felsöka flera moduler senare i den här artikeln.

Projektmappen innehåller också en fil med namnet deployment.template.json . Den här filen är en mall för ett IoT Edge-distributionsmanifest, som definierar alla moduler som ska köras på en enhet tillsammans med hur de kommer att kommunicera med varandra. Mer information om distributionsmanifest finns i Lär dig hur du distribuerar moduler och etablerar vägar. Om du öppnar den här distributionsmallen ser du att de två körningsmodulerna edgeAgent och edgeHub ingår, tillsammans med den anpassade modul som du skapade i det här Visual Studio projektet. En fjärde modul med namnet SimulatedTemperatureSensor ingår också. Den här standardmodulen genererar simulerade data som du kan använda för att testa moduler eller ta bort om det inte behövs. Om du vill se hur den simulerade temperatursensorn fungerar kan du visa källkoden SimulatedTemperatureSensor.csproj.

Ange IoT Edge körningsversion

Tillägget IoT Edge som standard den senaste stabila versionen av IoT Edge när distributionstillgångar skapas. För närvarande är den senaste stabila versionen version 1.2. Om du utvecklar moduler för enheter som kör den långsiktiga supportversionen 1.1 eller den tidigare versionen av 1.0 uppdaterar du IoT Edge-körningsversionen i Visual Studio att matcha.

  1. I Solution Explorer högerklickar du på namnet på projektet och väljer Ange IoT Edge körningsversion.

    Högerklicka på projektnamnet och välj ange IoT Edge körningsversion.

  2. Använd listrutan för att välja den körningsversion som dina IoT Edge körs och välj sedan OK för att spara ändringarna.

  3. Generera distributionsmanifestet på nytt med den nya körningsversionen. Högerklicka på namnet på projektet och välj Generera distribution för IoT Edge.

Utveckla din modul

När du lägger till en ny modul medföljer standardkod som är redo att byggas och distribueras till en enhet så att du kan börja testa utan att röra någon kod. Modulkoden finns i modulmappen i en fil med namnet Program.cs (för C#) eller main.c (för C).

Standardlösningen är skapad så att simulerade data från modulen SimulatedTemperatureSensor dirigeras till din modul, som tar indata och skickar dem till IoT Hub.

När du är redo att anpassa modulmallen med din egen kod kan du använda Azure IoT Hub-SDK:erna för att skapa moduler som adresserar de viktigaste behoven för IoT-lösningar som säkerhet, enhetshantering och tillförlitlighet.

Konfigurera testverktyget iotedgehubdev

IoT edgeHub-utvecklingsverktyget ger en lokal utvecklings- och felsökningsupplevelse. Verktyget hjälper dig att IoT Edge moduler utan IoT Edge runtime så att du kan skapa, utveckla, testa, köra och felsöka IoT Edge moduler och lösningar lokalt. Du behöver inte skicka avbildningar till ett containerregister och distribuera dem till en enhet för testning.

Mer information finns i Azure IoT EdgeHub Dev Tool.

Initiera verktyget genom att ange en IoT Edge enhetsanslutningssträng från IoT Hub.

  1. Hämta anslutningssträngen för en IoT Edge från Azure Portal, Azure CLI eller Visual Studio Cloud Explorer.

  2. I menyn Verktyg väljer du Azure IoT Edge Tools > installationsprogrammet IoT Edge Simulator.

  3. Klistra in anslutningssträngen och klicka på OK.

Anteckning

Du behöver bara följa de här stegen en gång på utvecklingsdatorn eftersom resultaten tillämpas automatiskt på alla efterföljande Azure IoT Edge lösningar. Den här proceduren kan följas igen om du behöver ändra till en annan anslutningssträng.

Skapa och felsöka en enda modul

Normalt vill du testa och felsöka varje modul innan du kör den i en hel lösning med flera moduler.

Tips

Kontrollera att du har växlat över till rätt Docker-containerläge, antingen Linux-containerläge eller Windows-containerläge, beroende på vilken typ av IoT Edge-modul som du utvecklar. Från Docker Desktop-menyn kan du växla mellan de två typerna av lägen. Välj Växla till Windows för att använda Windows eller välj Växla till Linux-containrar för att använda Linux-containrar.

  1. I Solution Explorer högerklickar du på modulmappen och väljer Ange som Project på menyn.

    Konfigurera Project

  2. Tryck på F5 eller klicka på körningsknappen i verktygsfältet för att köra modulen. Det kan ta 10 – 20 sekunder första gången du gör det.

    Kör modul

  3. Du bör se en .NET Core-konsolapp starta om modulen har initierats.

  4. Ange en brytpunkt för att inspektera modulen.

    • Om du utvecklar i C# anger du en brytpunkt PipeMessage() i funktionen i Program.cs.
    • Om du använder C anger du en brytpunkt InputQueue1Callback() i funktionen i main.c.
  5. Testa modulen genom att skicka ett meddelande genom att köra följande kommando i ett Git Bash- eller WSL Bash-gränssnitt. (Du kan inte köra curl kommandot från en PowerShell- eller kommandotolk.)

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

    Felsöka enskild modul

    Brytpunkten ska utlösas. Du kan titta på variabler i fönstret Visual Studio Lokala.

    Tips

    Du kan också använda PostMan eller andra API-verktyg för att skicka meddelanden i stället för curl .

  6. Tryck på Ctrl + F5 eller klicka på stoppknappen för att stoppa felsökningen.

Skapa och felsöka flera moduler

När du har utvecklat en enda modul kanske du vill köra och felsöka en hel lösning med flera moduler.

  1. I Solution Explorer lägger du till en andra modul i lösningen genom att högerklicka på projektmappen. På menyn väljer du Lägg till > ny IoT Edge Modul.

    Lägga till en ny modul i ett IoT Edge projekt

  2. Öppna filen deployment.template.json så ser du att den nya modulen har lagts till i avsnittet moduler. En ny väg har också lagts till i avsnittet vägar för att skicka meddelanden från den nya modulen till IoT Hub. Om du vill skicka data från den simulerade temperatursensorn till den nya modulen lägger du till en annan väg som i följande exempel:

    "sensorTo<NewModuleName>": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/<NewModuleName>/inputs/input1\")"
    
  3. Högerklicka på projektmappen och välj Ange som Project på snabbmenyn.

  4. Skapa brytpunkter och tryck sedan på F5 för att köra och felsöka flera moduler samtidigt. Du bör se flera .NET Core-konsolappfönster, som varje fönster representerar en annan modul.

    Felsöka flera moduler

  5. Tryck på Ctrl + F5 eller välj stoppknappen för att stoppa felsökningen.

Skapa och push-pusha avbildningar

  1. Kontrollera att IoT Edge-projektet är startprojektet, inte en av de enskilda modulerna. Välj antingen Debug (Felsök) eller Release (Version) som konfiguration för dina modulavbildningar.

    Anteckning

    När du väljer Felsök använder Visual Studio för Dockerfile.(amd64|windows-amd64).debug att skapa Docker-avbildningar. Detta inkluderar VSDBG för .NET Core-kommandoradsfelsökaren i containeravbildningen när du skapar den. För produktionsklara IoT Edge rekommenderar vi att du använder release-konfigurationen som använder Dockerfile.(amd64|windows-amd64) utan VSDBG.

  2. Om du använder ett privat register som Azure Container Registry (ACR) använder du följande Docker-kommando för att logga in på det. Du kan hämta användarnamnet och lösenordet från sidan Åtkomstnycklar i registret i Azure Portal. Om du använder ett lokalt register kan du köra ett lokalt register.

    docker login -u <ACR username> -p <ACR password> <ACR login server>
    
  3. Om du använder ett privat register som Azure Container Registry måste du lägga till din inloggningsinformation för registret i körningsinställningarna som finns i filen deployment.template.json . Ersätt platshållarna med ditt faktiska användarnamn, lösenord och registernamn för ACR-administratören.

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

    Anteckning

    Den här artikeln använder autentiseringsuppgifter för administratörsinloggning Azure Container Registry, vilket är praktiskt för utvecklings- och testscenarier. När du är redo för produktionsscenarier rekommenderar vi ett autentiseringsalternativ med minsta behörighet, till exempel tjänstens huvudnamn. Mer information finns i Hantera åtkomst till containerregistret.

  4. I Solution Explorer högerklickar du på projektmappen och väljer Skapa och push-IoT Edge-moduler för att skapa och push-skicka Docker-avbildningen för varje modul.

Distribuera lösningen

I snabbstartsartikeln som du använde för att ställa in din IoT Edge-enhet distribuerade du en modul med hjälp av Azure Portal. Du kan också distribuera moduler med Hjälp av Cloud Explorer för Visual Studio. Du har redan ett distributionsmanifest som är förberett för ditt scenario. Filen och allt du behöver göra är att välja en deployment.json enhet för att ta emot distributionen.

  1. Öppna Cloud Explorer genom att klicka på Visa Cloud > Explorer. Kontrollera att du har loggat in på Visual Studio 2019.

  2. I Cloud Explorer expanderar du din prenumeration, Azure IoT Hub och Azure IoT Edge enhet som du vill distribuera.

  3. Högerklicka på enheten IoT Edge skapa en distribution för den. Gå till distributionsmanifestet som konfigurerats för din plattform som finns i mappen config i Visual Studio lösningen, till exempel deployment.arm32v7.json .

  4. Klicka på uppdateringsknappen för att se de nya modulerna som körs tillsammans med modulen SimulatedTemperatureSensor och $edgeAgent och $edgeHub.

Visa genererade data

  1. Om du vill övervaka D2C-meddelandet för en specifik IoT Edge-enhet markerar du det i IoT-hubben i Cloud Explorer och klickar sedan på Starta övervakning av inbyggd händelseslutpunkt i fönstret Åtgärd.

  2. Om du vill stoppa övervakningsdata väljer du Stoppa övervakning av inbyggd händelseslutpunkt i fönstret Åtgärd.

Nästa steg

Om du vill utveckla anpassade moduler för dina IoT Edge enheter kan du förstå och använda Azure IoT Hub-SDK:er.