Gebruik Visual Studio 2019 om modules te ontwikkelen en fouten op te sporen voor Azure IoT Edge

Van toepassing op:  Ja pictogram IoT Edge 1,1  ja pictogram IOT Edge 1,2

In dit artikel wordt beschreven hoe u Visual Studio 2019 gebruikt voor het ontwikkelen en opsporen van fouten in Azure IoT Edge modules.

De Azure IoT Edge Tools voor Visual Studio-extensie biedt de volgende voordelen:

  • Maak, bewerk, bouw, voer en foutopsporing uit IoT Edge en modules op uw lokale ontwikkelcomputer.
  • Implementeer IoT Edge oplossing op een IoT Edge apparaat via Azure IoT Hub.
  • Codeer uw Azure IoT-modules in C of C# en profiteer van alle voordelen van Visual Studio ontwikkeling.
  • Beheer IoT Edge apparaten en modules met de gebruikersinterface.

In dit artikel wordt beschreven hoe u de Azure IoT Edge Tools voor Visual Studio 2019 gebruikt om uw IoT Edge ontwikkelen. U leert ook hoe u uw project implementeert op een IoT Edge apparaat. Momenteel biedt Visual Studio 2019 ondersteuning voor modules die zijn geschreven in C en C#. De ondersteunde apparaatarchitecten zijn Windows X64 en Linux X64 of ARM32. Zie Taal- en architectuurondersteuning voor meer informatie over ondersteunde besturingssystemen, talen en architecturen.

Vereisten

In dit artikel wordt ervan uitgenomen dat u een machine met Windows als uw ontwikkelmachine gebruikt. Op Windows computers kunt u modules ontwikkelen met Windows of Linux.

  • Als u modules wilt ontwikkelen Windows containers, gebruikt u een Windows computer met versie 1809/build 17763 of hoger.
  • Als u modules wilt ontwikkelen met Linux-containers, gebruikt Windows computer die voldoet aan de vereisten voor Docker Desktop.

Installeer Visual Studio op uw ontwikkelmachine. Zorg ervoor dat u de workloads Azure-ontwikkeling en Desktopontwikkeling met C++ in uw Visual Studio 2019 op te nemen. U kunt de Visual Studio 2019 wijzigen om de vereiste workloads toe te voegen.

Nadat uw Visual Studio 2019 gereed is, hebt u ook de volgende hulpprogramma's en onderdelen nodig:

  • Download en installeer Azure IoT Edge Tools van de Visual Studio marketplace om een IoT Edge-project te maken in Visual Studio 2019.

    Tip

    Als u Visual Studio 2017 gebruikt, downloadt en installeert u Azure IoT Edge Tools voor VS 2017 vanuit Visual Studio marketplace

  • Download en installeer Docker Community Edition op uw ontwikkelmachine om uw module-installatie afbeeldingen te bouwen en uit te voeren. U moet Docker CE instellen om te worden uitgevoerd in de Linux-containermodus of Windows containermodus, afhankelijk van het type modules dat u ontwikkelt.

  • Stel uw lokale ontwikkelomgeving in voor het opsporen, uitvoeren en testen van uw IoT Edge oplossing door het Azure IoT EdgeHub Dev Tool te installeren. Installeer Python (3.5/3.6/3.7/3.8) en Pip en installeer vervolgens het iotedgehubdev-pakket door de volgende opdracht uit te voeren in uw terminal. Zorg ervoor dat de versie van uw Azure IoT EdgeHub Dev Tool hoger is dan 0.3.0.

    pip install --upgrade iotedgehubdev
    
  • Installeer het Vcpkg-bibliotheekbeheer en installeer vervolgens het pakket azure-iot-sdk-c voor 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
    
  • Maak een exemplaar van Azure Container Registry of Docker Hub om uw module-afbeeldingen op te slaan.

    Tip

    U kunt een lokaal Docker-register gebruiken voor prototype- en testdoeleinden in plaats van een cloudregister.

  • Als u de module op een apparaat wilt testen, hebt u een actieve IoT-hub nodig met ten minste één IoT Edge apparaat. Als u snel een apparaat IoT Edge testen wilt maken, volgt u de stappen in de snelstart voor Linux of Windows. Als u een IoT Edge op uw ontwikkelmachine, moet u EdgeHub en EdgeAgent mogelijk stoppen voordat u begint met ontwikkelen in Visual Studio.

Controleer de versie van uw hulpprogramma's

  1. Selecteer extensies beheren in het menu Extensies. Vouw Geïnstalleerde hulpprogramma> s uit en u vindt Azure IoT Edge Tools voor Visual Studio en Cloud Explorer voor Visual Studio.

  2. Noteer de geïnstalleerde versie. U kunt deze versie vergelijken met de nieuwste versie op Visual Studio Marketplace (Cloud Explorer, Azure IoT Edge)

  3. Als uw versie ouder is dan de versie die beschikbaar is op Visual Studio Marketplace, werkt u uw hulpprogramma's bij in Visual Studio zoals wordt weergegeven in de volgende sectie.

Uw hulpprogramma's bijwerken

  1. Vouw in het venster Extensies beheren updates > Visual Studio Marketplace uit, selecteer Azure IoT Edge Tools of Cloud Explorer voor Visual Studio en selecteer Bijwerken.

  2. Nadat de hulpprogramma's zijn gedownload, sluit Visual Studio om de hulpprogramma's te activeren met behulp van het VSIX-installatieprogramma.

  3. Selecteer OK in het installatieprogramma om te starten en selecteer vervolgens Wijzigen om de hulpprogramma's bij te werken.

  4. Nadat de update is voltooid, selecteert u Sluiten en opnieuw Visual Studio.

Een Azure IoT Edge maken

Met IoT Edge-projectsjabloon in Visual Studio maakt u een oplossing die kan worden geïmplementeerd op IoT Edge apparaten. Eerst maakt u een Azure IoT Edge oplossing en vervolgens genereert u de eerste module in die oplossing. Elke IoT Edge oplossing kan meer dan één module bevatten.

Tip

De IoT Edge projectstructuur die door Visual Studio is gemaakt, is niet hetzelfde als in Visual Studio Code.

  1. Maak een nieuw project in Visual Studio.

  2. Zoek op de pagina Een nieuw project maken naar Azure IoT Edge. Selecteer het project dat overeenkomt met het platform en de architectuur voor IoT Edge apparaat en klik op Volgende.

    Nieuwe Project

  3. Voer op de pagina Uw nieuwe project configureren een naam in voor uw project en geef de locatie op. Selecteer vervolgens Maken.

  4. Selecteer in het venster Module toevoegen het type module dat u wilt ontwikkelen. U kunt ook Bestaande module selecteren om een bestaande module IoT Edge toevoegen aan uw implementatie. Geef de naam van de module en de opslagplaats voor de module-afbeelding op.

    Visual Studio wordt de URL van de opslagplaats automatisch met localhost:5000/<modulenaam. > Als u een lokaal Docker-register gebruikt voor het testen, is localhost prima. Als u Azure Container Registry gebruikt, vervangt u localhost:5000 door de aanmeldingsserver uit de instellingen van uw register. De aanmeldingsserver ziet er als <registry name> azurecr.io. Het uiteindelijke resultaat moet er als <registry name> azurecr.io/. <module name>

    Selecteer Toevoegen om de module toe te voegen aan het project.

    Toepassing en module toevoegen

U hebt nu een IoT Edge-project en een IoT Edge module in uw Visual Studio oplossing.

De modulemap bevat een bestand voor uw modulecode met de naam of, afhankelijk program.cs van de taal die u hebt main.c gekozen. Deze map bevat ook een bestand met de module.json naam waarin de metagegevens van uw module worden beschreven. Verschillende Docker-bestanden bieden de informatie die nodig is om uw module te bouwen als een Windows- of Linux-container.

De projectmap bevat een lijst met alle modules die in dat project zijn opgenomen. Op dit moment ziet u slechts één module, maar u kunt er meer toevoegen. Zie de sectie Meerdere modules bouwen en fouten opsporen verderop in dit artikel voor meer informatie over het toevoegen van modules aan een project.

De projectmap bevat ook een bestand met de naam deployment.template.json . Dit bestand is een sjabloon van een IoT Edge-implementatiemanifest, dat alle modules definieert die op een apparaat worden uitgevoerd, samen met de manier waarop ze met elkaar zullen communiceren. Zie Meer informatie over het implementeren van modules en het maken van routes voor meer informatie over implementatiemanifests. Als u deze implementatiesjabloon opent, ziet u dat de twee runtimemodules edgeAgent en edgeHub zijn opgenomen, samen met de aangepaste module die u hebt gemaakt in dit Visual Studio project. Er is ook een vierde module met de naam SimulatedTemperatureSensor opgenomen. Deze standaardmodule genereert gesimuleerde gegevens die u kunt gebruiken om uw modules te testen of verwijderen als dit niet nodig is. Als u wilt zien hoe de gesimuleerde temperatuursensor werkt, bekijkt u de broncode SimulatedTemperatureSensor.csproj.

Een runtime IoT Edge versie instellen

De IoT Edge-extensie wordt standaard ingesteld op de nieuwste stabiele versie van de IoT Edge runtime wanneer uw implementatie-assets worden gemaakt. Op dit moment is versie 1.2 de meest recente stabiele versie. Als u modules ontwikkelt voor apparaten met de versie voor langetermijnondersteuning van 1.1 of de eerdere versie van 1.0, moet u de IoT Edge-runtimeversie in Visual Studio bijwerken.

  1. Klik in Solution Explorer met de rechtermuisknop op de naam van uw project en selecteer Set IoT Edge runtime version.

    Klik met de rechtermuisknop op de naam van uw project en selecteer IoT Edge runtime-versie.

  2. Gebruik de vervolgkeuzelijst om de runtimeversie te kiezen die uw IoT Edge worden uitgevoerd en selecteer vervolgens OK om uw wijzigingen op te slaan.

  3. Genereer uw implementatiemanifest opnieuw met de nieuwe runtimeversie. Klik met de rechtermuisknop op de naam van uw project en selecteer Implementatie genereren voor IoT Edge.

Uw module ontwikkelen

Wanneer u een nieuwe module toevoegt, wordt deze geleverd met standaardcode die gereed is om te worden gebouwd en geïmplementeerd op een apparaat, zodat u kunt beginnen met testen zonder code aan te raken. De modulecode bevindt zich in de modulemap in een bestand met de naam Program.cs (voor C#) of main.c (voor C).

De standaardoplossing is zo gebouwd dat de gesimuleerde gegevens uit de module SimulatedTemperatureSensor worden doorgeleid naar uw module, die de invoer neemt en deze vervolgens naar de IoT Hub.

Wanneer u klaar bent om de modulesjabloon aan te passen met uw eigen code, gebruikt u de Azure IoT Hub-SDK's om modules te bouwen die voldoen aan de belangrijkste behoeften voor IoT-oplossingen, zoals beveiliging, apparaatbeheer en betrouwbaarheid.

Het testhulpprogramma iotedgehubdev instellen

Het ontwikkelhulpprogramma IoT edgeHub biedt een lokale ontwikkel- en foutopsporingservaring. Het hulpprogramma helpt u IoT Edge modules te implementeren zonder de IoT Edge-runtime, zodat u lokaal modules en oplossingen kunt maken, ontwikkelen, testen, uitvoeren en IoT Edge foutopsporing kunt uitvoeren. U hoeft geen afbeeldingen naar een containerregister te pushen en deze te implementeren op een apparaat om te testen.

Zie Azure IoT EdgeHub Dev Tool voor meer informatie.

Als u het hulpprogramma wilt initialiseren, geeft u een IoT Edge-connection string van IoT Hub.

  1. Haal de connection string van een IoT Edge apparaat op uit de Azure Portal, de Azure CLI of Visual Studio Cloud Explorer.

  2. Selecteer in het menu Extra de optie Azure IoT Edge Tools Setup > IoT Edge Simulator.

  3. Plak de connection string en klik op OK.

Notitie

U hoeft deze stappen slechts eenmaal op uw ontwikkelcomputer uit te voeren, omdat de resultaten automatisch worden toegepast op alle volgende Azure IoT Edge oplossingen. Deze procedure kan opnieuw worden gevolgd als u wilt wijzigen in een andere connection string.

Eén module bouwen en fouten opsporen

Normaal gesproken wilt u elke module testen en fouten opsporen voordat u deze in een volledige oplossing met meerdere modules gaat uitvoeren.

Tip

Zorg ervoor dat u bent overgeschakeld naar de juiste Docker-containermodus, ofwel de Linux-containermodus of Windows-containermodus, afhankelijk van het type IoT Edge-module dat u ontwikkelt. In het menu Docker Desktop kunt u schakelen tussen de twee typen modi. Selecteer Overschakelen naar Windows containers die u wilt gebruiken Windows containers of selecteer Overschakelen naar Linux-containers om Linux-containers te gebruiken.

  1. Klik Solution Explorer met de rechtermuisknop op de modulemap en selecteer Set as StartUp Project in het menu.

    Start-up Project

  2. Druk op F5 of klik op de knop Uitvoeren op de werkbalk om de module uit te voeren. De eerste keer dat u dit – doet, kan het 10 20 seconden duren.

    Module uitvoeren

  3. Als de module is initialiseerd, wordt een .NET Core-console-app start.

  4. Stel een onderbrekingspunt in om de module te inspecteren.

    • Als u ontwikkelt in C#, stelt u een onderbrekingspunt in de PipeMessage() functie in Program.cs in.
    • Als u C gebruikt, stelt u een onderbrekingspunt in de InputQueue1Callback() functie in main.c in.
  5. Test de module door een bericht te verzenden door de volgende opdracht uit te voeren in een Git Bash- of WSL Bash-shell. (U kunt de opdracht curl niet uitvoeren vanaf een PowerShell of opdrachtprompt.)

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

    Fouten opsporen in één module

    Het onderbrekingspunt moet worden geactiveerd. U kunt variabelen bekijken in het venster Visual Studio s.

    Tip

    U kunt ook PostMan of andere API-hulpprogramma's gebruiken om berichten te verzenden in plaats van curl .

  6. Druk op Ctrl + F5 of klik op de stopknop om de foutopsporing te stoppen.

Meerdere modules bouwen en fouten opsporen

Wanneer u klaar bent met het ontwikkelen van één module, wilt u mogelijk een volledige oplossing met meerdere modules uitvoeren en fouten opsporen.

  1. Voeg Solution Explorer module toe aan de oplossing door met de rechtermuisknop op de projectmap te klikken. Selecteer in het menu Add > New IoT Edge Module.

    Een nieuwe module toevoegen aan een bestaand IoT Edge project

  2. Open het bestand deployment.template.json en u ziet dat de nieuwe module is toegevoegd in de sectie modules. Er is ook een nieuwe route toegevoegd aan de sectie routes voor het verzenden van berichten van de nieuwe module naar IoT Hub. Als u gegevens van de gesimuleerde temperatuursensor naar de nieuwe module wilt verzenden, voegt u een andere route toe, zoals in het volgende voorbeeld:

    "sensorTo<NewModuleName>": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/<NewModuleName>/inputs/input1\")"
    
  3. Klik met de rechtermuisknop op de projectmap en selecteer Set as StartUp Project in het contextmenu.

  4. Maak uw onderbrekingspunten en druk vervolgens op F5 om meerdere modules tegelijk uit te voeren en fouten op te sporen. Als het goed is, ziet u meerdere vensters van de .NET Core-console-app, die elk venster een andere module vertegenwoordigen.

    Fouten opsporen in meerdere modules

  5. Druk op Ctrl + F5 of selecteer de stopknop om de foutopsporing te stoppen.

Build and push images (Afbeeldingen bouwen en pushen)

  1. Zorg ervoor dat IoT Edge het opstartproject is, niet een van de afzonderlijke modules. Selecteer Fouten opsporen of Vrijgeven als de configuratie die u wilt maken voor uw module-afbeeldingen.

    Notitie

    Wanneer u Fouten opsporen kiest, Visual Studio gebruikt Dockerfile.(amd64|windows-amd64).debug voor het bouwen van Docker-afbeeldingen. Dit omvat het .NET Core-opdrachtregeldebugger VSDBG in uw containerafbeelding tijdens het bouwen ervan. Voor modules die gereed zijn IoT Edge productie, wordt u aangeraden de releaseconfiguratie te gebruiken, die zonder Dockerfile.(amd64|windows-amd64) VSDBG wordt gebruikt.

  2. Als u een privéregister zoals Azure Container Registry (ACR) gebruikt, gebruikt u de volgende Docker-opdracht om u aan te melden bij het register. U kunt de gebruikersnaam en het wachtwoord ophalen op de pagina Toegangssleutels van het register in Azure Portal. Als u een lokaal register gebruikt, kunt u een lokaal register uitvoeren.

    docker login -u <ACR username> -p <ACR password> <ACR login server>
    
  3. Als u een privéregister zoals Azure Container Registry, moet u de aanmeldingsgegevens van het register toevoegen aan de runtime-instellingen in het bestand deployment.template.json . Vervang de tijdelijke aanduidingen door uw werkelijke gebruikersnaam, wachtwoord en registernaam van de ACR-beheerder.

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

    Notitie

    In dit artikel worden aanmeldingsreferenties van beheerders Azure Container Registry, wat handig is voor ontwikkel- en testscenario's. Wanneer u klaar bent voor productiescenario's, raden we een verificatieoptie met minste bevoegdheden aan, zoals service-principals. Zie Toegang tot uw containerregister beheren voor meer informatie.

  4. Klik Solution Explorer met de rechtermuisknop op de projectmap en selecteer Build and Push IoT Edge Modules om de Docker-afbeelding voor elke module te bouwen en te pushen.

De oplossing implementeren

In dit snelstartartikel voor het instellen van uw IoT Edge-apparaat hebt u een module geïmplementeerd met behulp van de Azure-portal. U kunt modules ook implementeren met behulp van Cloud Explorer voor Visual Studio. U hebt al een implementatiemanifest voorbereid voor uw scenario, het bestand en u hoeft alleen maar een apparaat te selecteren om deployment.json de implementatie te ontvangen.

  1. Open Cloud Explorer door te klikken op Cloud Explorer > weergeven. Zorg ervoor dat u bent aangemeld bij Visual Studio 2019.

  2. Vouw in Cloud Explorer uw abonnement uit, zoek uw Azure IoT Hub en het Azure IoT Edge dat u wilt implementeren.

  3. Klik met de rechtermuisknop op IoT Edge apparaat om er een implementatie voor te maken. Navigeer naar het implementatiemanifest dat is geconfigureerd voor uw platform in de configuratiemap in Visual Studio oplossing, zoals deployment.arm32v7.json .

  4. Klik op de knop Vernieuwen om te zien hoe de nieuwe modules worden uitgevoerd, samen met de module SimulatedTemperatureSensor en $edgeAgent en $edgeHub.

Gegenereerde gegevens weergeven

  1. Als u het D2C-bericht voor een specifiek IoT Edge-apparaat wilt bewaken, selecteert u het in uw IoT-hub in Cloud Explorer en klikt u vervolgens op Bewaking van ingebouwd gebeurtenis-eindpunt starten in het venster Actie.

  2. Als u de bewaking van gegevens wilt stoppen, selecteert u Stop Monitoring Built-in Event Endpoint in het venster Action.

Volgende stappen

Als u aangepaste modules wilt ontwikkelen voor uw IoT Edge apparaten, moet Azure IoT Hub SDK's begrijpen en gebruiken.