Zelfstudie: IoT Edge modules ontwikkelen met Windows-containers

Van toepassing op:ja-pictogram IoT Edge 1.1

Belangrijk

IoT Edge 1.1-einddatum voor ondersteuning was 13 december 2022. Raadpleeg het levenscyclusbeleid van Microsoft voor informatie over hoe dit product of deze service, technologie of API wordt ondersteund. Zie Update IoT Edge voor meer informatie over het bijwerken naar de nieuwste versie van IoT Edge.

Visual Studio gebruiken voor het ontwikkelen en implementeren van code voor Windows-apparaten met IoT Edge.

Notitie

IoT Edge 1.1 LTS is het laatste releasekanaal dat Ondersteuning biedt voor Windows-containers. Vanaf versie 1.2 worden Windows-containers niet ondersteund. Overweeg het gebruik van of over te stappen op IoT Edge voor Linux in Windows om IoT Edge uit te voeren op Windows-apparaten.

In deze zelfstudie wordt uitgelegd wat er nodig is om uw eigen code te ontwikkelen en te implementeren op een IoT Edge-apparaat. Het is handig deze zelfstudie door te nemen voor de andere zelfstudies, die dieper ingaan op specifieke programmeertalen of Azure-services.

In deze zelfstudie wordt gebruikgemaakt van het voorbeeld van de implementatie van een C#-module op een Windows-apparaat. Dit voorbeeld is gekozen omdat dit het meest voorkomende ontwikkelscenario is. Als u in een andere taal wilt ontwikkelen of als u Azure-services wilt implementeren als modules, is deze zelfstudie eveneens nuttig voor meer informatie over de hulpprogramma's voor ontwikkeling. Wanneer u de ontwikkelconcepten begrijpt, kunt u de gewenste taal of Azure-service kiezen voor meer informatie.

In deze zelfstudie leert u het volgende:

  • Uw ontwikkelcomputer instellen.
  • De IoT Edge Tools voor Visual Studio gebruiken om een nieuw project te maken.
  • Uw project bouwen als een container en het opslaan in een Azure-containerregister.
  • Uw code implementeren op een IoT Edge-apparaat.

Vereisten

Een ontwikkelcomputer:

  • Windows 10 met update 1809 of hoger.
  • U kunt uw eigen computer of een virtuele machine gebruiken, afhankelijk van uw ontwikkelvoorkeuren.
    • Zorg ervoor dat uw ontwikkelcomputer ondersteuning biedt voor geneste virtualisatie. Deze mogelijkheid is nodig voor het uitvoeren van een container-engine, die u in de volgende sectie installeert.
  • Installeer Git.

Een Azure IoT Edge-apparaat op Windows:

  • Azure IoT Edge installeren en beheren met Windows-containers.
  • U wordt aangeraden IoT Edge niet uit te voeren op uw ontwikkelcomputer, maar in plaats daarvan, indien mogelijk, een afzonderlijk apparaat te gebruiken. Dit onderscheid tussen ontwikkelcomputer en IoT Edge apparaat sluit nauwer aan op een echt implementatiescenario en helpt om de verschillende concepten uit elkaar te houden.

Cloudresources:

  • Een gratis of standaard IoT-hub-laag in Azure.

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Belangrijkste concepten

In deze zelfstudie doorloopt u de ontwikkeling van een IoT Edge-module. Een IoT Edge-module, of soms kortweg module genoemd, is een container die uitvoerbare code bevat. U kunt een of meer modules implementeren op een IoT Edge-apparaat. Modules voeren specifieke taken uit, zoals het opnemen van gegevens van sensoren, het uitvoeren van gegevensanalyses of gegevensopschoning, of het verzenden van berichten naar een IoT-hub. Zie Informatie over Azure IoT Edge-modules voor meer informatie.

Bij het ontwikkelen van IoT Edge-modules is het belangrijk dat u begrijpt wat het verschil is tussen de ontwikkelcomputer en het IoT Edge doelapparaat waarop de module uiteindelijk zal worden geïmplementeerd. De container die u voor de modulecode bouwt, moet overeenkomen met het besturingssysteem van het doelapparaat. Voor de ontwikkeling van Windows-containers is dit concept eenvoudiger omdat Windows-containers alleen worden uitgevoerd op Windows-besturingssystemen. Maar u kunt bijvoorbeeld uw Windows-ontwikkelcomputer gebruiken om modules voor Linux IoT Edge-apparaten te bouwen. In dat scenario moet u ervoor zorgen dat er Linux-containers op uw ontwikkelcomputer werden uitgevoerd. Als u deze zelfstudie doorloopt, moet u rekening houden met het verschil tussen het besturingssysteem van de ontwikkelcomputer en het besturingssysteem van de container.

Deze zelfstudie richt zich op Windows-apparaten met IoT Edge. Windows-IoT Edge-apparaten gebruiken Windows-containers. We raden u aan om Visual Studio te gebruiken voor het ontwikkelen voor Windows-apparaten, en dat wordt dan ook in deze zelfstudie gebruikt. U kunt ook Visual Studio Code gebruiken, maar er zijn wel verschillen in ondersteuning tussen de twee hulpprogramma's.

De volgende tabel bevat een overzicht van de ondersteunde ontwikkelscenario's voor Windows-containers in Visual Studio Code en Visual Studio.

Visual Studio Code Visual Studio 2017/2019
Azure-services Azure Functions
Azure Stream Analytics
Talen C# (foutopsporing wordt niet ondersteund) C
C#
Meer informatie Azure IoT Edge voor Visual Studio Code
Azure IoT Hub
Azure IoT Edge Tools voor Visual Studio 2017
Azure IoT Edge Tools voor Visual Studio 2019

Container-engine installeren

IoT Edge-modules worden verpakt als container. U hebt dus een container-engine op uw ontwikkelcomputer nodig om de containers te bouwen en te beheren. Het is raadzaam Docker Desktop te gebruiken voor ontwikkeling vanwege de vele functies en populariteit als een container-engine. Met Docker Desktop op een Windows-computer kunt u schakelen tussen Linux-containers en Windows-containers, en kunt u dus eenvoudig modules ontwikkelen voor verschillende soorten IoT Edge apparaten.

Gebruik de Docker-documentatie om Docker Desktop te installeren op uw ontwikkelcomputer:

Visual Studio en hulpprogramma's instellen

De IoT-extensies voor Visual Studio helpen u bij het ontwikkelen van IoT Edge-modules. Deze extensies bieden projectsjablonen, automatiseren het maken van het implementatiemanifest en bieden u de mogelijkheid om IoT Edge apparaten te bewaken en te beheren. In deze sectie installeert u Visual Studio en de IoT-extensie. Vervolgens stelt u uw Azure-account in voor het beheren van IoT Hub-resources vanuit Visual Studio.

In deze zelfstudie leert u de ontwikkelstappen voor Visual Studio 2019. Als u Visual Studio 2017 (versie 15.7 of hoger) gebruikt, zijn de stappen vergelijkbaar. Als u liever Visual Studio Code gebruikt, raadpleegt u de instructies in Visual Studio Code gebruiken voor het ontwikkelen van en opsporen van fouten in modules voor Azure IoT Edge.

  1. Bereid Visual Studio 2019 voor op uw ontwikkelcomputer.

    • Als u Visual Studio nog niet op uw ontwikkelcomputer hebt, installeert u Visual Studio 2019 met de volgende workloads:

      • Azure-ontwikkeling
      • Desktopontwikkeling met C++
      • Platformoverschrijdende ontwikkelmogelijkheden van .NET Core
    • Als u Visual Studio 2019 al hebt geïnstalleerd op uw ontwikkelcomputer, volgt u de stappen in Visual Studio aanpassen om de vereiste workloads toe te voegen.

  2. Download en installeer de Azure IoT Edge Tools-extensie voor Visual Studio 2019.

    Als u Visual Studio 2017 (versie 15.7 of hoger) gebruikt, downloadt en installeert u de Azure IoT Edge Tools voor Visual Studio 2017.

  3. Wanneer de installatie is voltooid, opent u Visual Studio 2019 en selecteert u Continue without code.

  4. Selecteer View>Cloud Explorer.

  5. Selecteer het profielpictogram in de cloudverkenner en meld u aan bij uw Azure-account als u zich nog niet hebt aangemeld.

  6. Als u zich hebt aangemeld, worden uw Azure-abonnementen weergegeven. Vouw het abonnement uit dat uw IoT-hub bevat.

  7. Vouw onder uw abonnement IoT-hubs en vervolgens uw IoT-hub uit. U ziet een lijst met uw IoT-apparaten en kunt deze verkenner gebruiken om ze te beheren.

    Toegang tot IoT Hub-resources in Cloud Explorer

Een containerregister maken

In deze zelfstudie bouwt u een module en maakt u een containerinstallatiekopieën van de bestanden. Vervolgens pusht u deze installatiekopie naar een register waarin uw installatiekopieën worden opgeslagen en beheerd. Tot slot implementeert u de installatiekopie uit het register voor uitvoering op uw IoT Edge-apparaat.

U kunt een Docker-register gebruiken om de containerinstallatiekopieën op te slaan. Twee populaire Docker-registerservices zijn Azure Container Registry en Docker Hub. In deze zelfstudie wordt Azure Container Registry gebruikt.

Als u nog geen containerregister hebt, volgt u deze stappen om een nieuw containerregister te maken in Azure:

  1. Selecteer in Azure Portal de optie Een resource maken>Containers>Container Registry.

  2. Geef de volgende waarden op om uw containerregister te maken:

    Veld Waarde
    Abonnement Selecteer een abonnement in de vervolgkeuzelijst.
    Resourcegroep Het wordt aangeraden om dezelfde resourcegroep te gebruiken voor alle test-resources die u maakt met de snelstartgidsen en zelfstudies voor IoT Edge, zoals IoTEdgeResources.
    Registernaam Geef hier een unieke naam op.
    Locatie Kies een locatie dicht bij u in de buurt.
    SKU Selecteer Basic.
  3. Selecteer Maken.

  4. Selecteer het zojuist gemaakte containerregister in de sectie Resources van de startpagina van uw Azure Portal om het te openen.

  5. Selecteer in het linkerdeelvenster van het containerregister toegangssleutels in het menu onder Instellingen.

  6. Schakel Beheer gebruiker in met de wisselknop en bekijk de gebruikersnaam en het wachtwoord voor uw containerregister.

  7. Kopieer de waarden voor aanmeldingsserver, gebruikersnaam en wachtwoord en sla deze op een geschikte locatie op. U gebruikt deze waarden verderop in de zelfstudie om toegang te verlenen tot het containerregister.

Een nieuw moduleproject maken

De Azure IoT Edge Tools-extensie biedt projectsjablonen voor alle ondersteunde IoT Edge-moduletalen in Visual Studio. Deze sjablonen bevatten alle bestanden en code die u nodig hebt om een werkende module te implementeren om IoT Edge te testen of bieden u een uitgangspunt om de sjabloon aan te passen met uw eigen bedrijfslogica.

  1. Selecteer Bestand>Nieuw>Project...

  2. Zoek in het venster voor het nieuwe project naar IoT Edge en kies het project Azure IoT Edge (Windows amd64) . Klik op Volgende.

    Een nieuw Azure IoT Edge-project maken

  3. Wijzig in het venster voor het configureren van uw nieuwe project de naam van het project en de oplossing in iets beschrijvends, zoals CSharpTutorialApp. Klik op Maken om het project te maken.

    Een nieuw Azure IoT Edge-project configureren

  4. Configureer in het venster Module toevoegen het project met de volgende waarden:

    Veld Waarde
    Visual Studio-sjabloon Selecteer C#-module.
    Modulenaam Accepteer de standaardwaarde IotEdgeModule1.
    URL van opslagplaats Een opslagplaats voor afbeeldingen bevat de naam van het containerregister en de naam van uw containerafbeelding. De containerafbeelding wordt vooraf ingevuld met de naam van het moduleproject. Vervang localhost:5000 door de waarde van de aanmeldingsserver uit uw Azure-containerregister. U vindt de waarde van de aanmeldingsserver op de overzichtspagina van het containerregister in de Azure-portal.

    De uiteindelijke opslagplaats voor installatiekopieën ziet er ongeveer als volgt uit: <registernaam.azurecr.io/iotedgemodule1>.

    Uw project configureren voor doelapparaat, moduletype en containerregister

  5. Selecteer Toevoegen om de module te maken.

Zodra uw nieuwe project in het Visual Studio-venster is geladen, neemt u even de tijd om vertrouwd te raken met de bestanden die zijn gemaakt:

  • Een IoT Edge-project met de naam CSharpTutorialApp.
    • De map Modules bevat aanwijzers naar de modules die in het project zijn opgenomen. In dit geval moet dit alleen IotEdgeModule1 zijn.
    • Het verborgen bestand .env bevat de referenties voor uw containerregister. Deze referenties worden gedeeld met uw IoT Edge-apparaat, zodat het de containerinstallatiekopieën kan ophalen.
    • Het bestand deployment.template.json is een sjabloon waarmee u een implementatiemanifest kunt maken. Een implementatiemanifest is een bestand dat precies aangeeft welke modules u wilt implementeren op een apparaat, hoe ze moeten worden geconfigureerd en hoe ze met elkaar en de cloud kunnen communiceren.

      Tip

      In de sectie met registerreferenties wordt het adres automatisch ingevuld op basis van de informatie die u hebt ingevoerd tijdens het maken van de oplossing. De gebruikersnaam en het wachtwoord verwijzen echter naar variabelen die zijn opgeslagen in het .env-bestand. Dit is om beveiligingsredenen, omdat het .env-bestand door Git wordt genegeerd, maar de implementatiesjabloon niet.

  • Een IoT Edge-moduleproject met de naam IotEdgeModule1.
    • Het bestand program.cs bevat de C#-standaardmodulecode die wordt geleverd bij de projectsjabloon. De standaardmodule haalt invoer uit een bron en geeft deze door aan IoT Hub.
    • De module .json bevat details over de module, met inbegrip van de volledige opslagplaats voor de installatiekopie, de installatiekopieversie en de Dockerfile die u voor elk ondersteund platform wilt gebruiken.

IoT Edge runtimeversie instellen

De IoT Edge-extensie wordt standaard ingesteld op de meest recente stabiele versie van de IoT Edge runtime wanneer uw implementatieassets worden gemaakt.

Windows-containers worden alleen ondersteund in de langetermijnondersteuningsversie 1.1 of de eerdere versie 1.0. Als u modules wilt ontwikkelen voor apparaten die Windows-containers gebruiken, werkt u de IoT Edge runtime-versie in Visual Studio bij zodat deze overeenkomt met de IoT Edge versie op deze apparaten.

  1. Klik in de Solution Explorer met de rechtermuisknop op de naam van uw project en selecteer IoT Edge runtimeversie instellen.

    Klik met de rechtermuisknop op uw projectnaam en selecteer instellen IoT Edge runtimeversie.

  2. Gebruik de vervolgkeuzelijst om de runtimeversie te kiezen waarop uw IoT Edge apparaten worden uitgevoerd. 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 registerreferenties voor de IoT Edge-agent opgeven

De IoT Edge-runtime heeft uw registerreferenties nodig om uw containerinstallatiekopieën naar het IoT Edge-apparaat te halen. De IoT Edge-extensie probeert uw containerregisterinformatie van Azure op te halen en deze in de implementatiesjabloon in te vullen.

  1. Open het bestand deployment.template.json in uw moduleoplossing.

  2. Zoek de eigenschap registryCredentials in de gewenste $edgeAgent-eigenschappen. Het adres van het register moet automatisch worden ingevuld op basis van de informatie die u hebt opgegeven bij het maken van het project. De velden voor de gebruikersnaam en het wachtwoord moeten namen van variabelen bevatten. Bijvoorbeeld:

    "registryCredentials": {
      "<registry name>": {
        "username": "$CONTAINER_REGISTRY_USERNAME_<registry name>",
        "password": "$CONTAINER_REGISTRY_PASSWORD_<registry name>",
        "address": "<registry name>.azurecr.io"
      }
    }
    
  3. Open het .env-bestand in uw moduleoplossing. (Het is standaard verborgen in de Solution Explorer, dus u moet mogelijk de knop Alle bestanden weergeven selecteren om het weer te geven.)

  4. Voeg de waarden voor gebruikersnaam en wachtwoord toe die u hebt gekopieerd uit het Azure-containerregister.

  5. Sla de wijzigingen in het .env-bestand op.

Notitie

In deze zelfstudie worden aanmeldingsreferenties voor beheerders gebruikt voor Azure Container Registry, die handig zijn voor ontwikkelings- en testscenario's. Wanneer u klaar bent voor productiescenario's, raden we een verificatieoptie met minimale bevoegdheden aan, zoals service-principals. Zie Toegang tot uw containerregister beheren voor meer informatie.

De voorbeeldcode bekijken

De oplossingssjabloon die u hebt gemaakt, bevat voorbeeldcode voor een IoT Edge-module. In deze voorbeeldmodule worden berichten eenvoudigweg ontvangen en vervolgens doorgegeven. Met de pijplijnfunctionaliteit wordt een belangrijk concept in IoT Edge gedemonstreerd, waarmee modules met elkaar communiceren.

Elke module kan meerdere invoer- en uitvoerwachtrijen hebben die in hun code zijn gedeclareerd. Met de IoT Edge-hub die op het apparaat wordt uitgevoerd, worden berichten van de uitvoer van een module naar de invoer van een of meer modules gerouteerd. De specifieke code voor het declareren van invoer en uitvoer verschilt per taal, maar het concept is voor alle modules hetzelfde. Zie Routes declareren voor meer informatie over routering tussen modules.

De C#-voorbeeldcode die bij de projectsjabloon hoort, maakt gebruik van de ModuleClient-klasse van de IoT Hub SDK voor .NET.

  1. Zoek in het bestand program.cs de methode SetInputMessageHandlerAsync op.

  2. Met de methode SetInputMessageHandlerAsync wordt een invoerwachtrij ingesteld voor het ontvangen van inkomende berichten. Bekijk deze methode en zie hoe hiermee een invoerwachtrij met de naam input1 wordt geïnitialiseerd.

    De invoernaam zoeken in de SetInputMessageHandlserAsync-constructor

  3. Zoek vervolgens de methode SendEventAsync.

  4. Met de methode SendEventAsync worden ontvangen berichten verwerkt en wordt een uitvoerwachtrij ingesteld om de berichten door te geven. Bekijk deze methode en controleer of er een uitvoerwachtrij met de naam output1 wordt geïnitialiseerd.

    De uitvoernaam zoeken in de SendEventAsync-constructor

  5. Open het bestand deployment.template.json.

  6. Zoek de eigenschap modules van de gewenste eigenschappen van $edgeAgent.

    Er moeten hier twee modules worden weergegeven. Een is de SimulatedTemperatureSensor-module, die standaard is opgenomen in alle sjablonen om gesimuleerde temperatuurgegevens te bieden die u kunt gebruiken om uw modules te testen. De ander is de IotEdgeModule1- module die u hebt gemaakt als onderdeel van dit project.

    Deze module-eigenschap geeft aan welke modules moeten worden opgenomen in de implementatie op uw apparaat of apparaten.

  7. Zoek de eigenschap routes van de gewenste eigenschappen van $edgeHub.

    Een van de functies van de IoT Edge hub-module bestaat uit het routeren van berichten tussen alle modules in een implementatie. Bekijk de waarden in de eigenschap routes. Eén route, IotEdgeModule1ToIoTHub, gebruikt een jokerteken ( * ) om elk bericht op te nemen dat afkomstig is van een uitvoerwachtrij in de IotEdgeModule1-module. Deze berichten gaan naar $upstream, een gereserveerde naam die IoT Hub aangeeft. De tweede route, sensorToIotEdgeModule1, neemt berichten over van de SimulatedTemperatureSensor-module en stuurt deze door naar de invoerwachtrij input1 van de IotEdgeModule1-module.

    Routes bekijken in deployment.template.json

De oplossing bouwen en pushen

U hebt de modulecode en de implementatiesjabloon gecontroleerd om inzicht te krijgen in enkele belangrijke concepten van de implementatie. Nu moet u de IotEdgeModule1-containerinstallatiekopie bouwen en naar het containerregister pushen. Met de extensie voor IoT-hulpprogramma's voor Visual Studio worden in deze stap ook het implementatiemanifest op basis van de informatie in het sjabloonbestand en de modulegegevens van de oplossingsbestanden gegenereerd.

Aanmelden bij Docker

Geef de containerregisterreferenties op voor Docker op uw ontwikkelcomputer, zodat de containerinstallatiekopie voor opslag in het register kan worden gepusht.

  1. Open PowerShell of een opdrachtprompt.

  2. Meld u aan bij Docker met de Azure-containerregisterreferenties die u hebt opgeslagen nadat u het register hebt gemaakt.

    docker login -u <ACR username> -p <ACR password> <ACR login server>
    

    Mogelijk wordt een beveiligingswaarschuwing weergegeven waarin het gebruik van --password-stdin wordt aanbevolen. Hoewel dit wordt aanbevolen voor productiescenario's, valt het buiten het bereik van deze zelfstudie. Zie de documentatie voor aanmelding bij Docker voor meer informatie.

Bouwen en pushen

Uw ontwikkelcomputer heeft nu toegang tot uw containerregister en uw IoT Edge-apparaten. Het is tijd om de projectcode in te schakelen in een containerinstallatiekopie.

  1. Klik met de rechtermuisknop op de projectmap CSharpTutorialApp en selecteer IoT Edge-modules bouwen en pushen.

    IoT Edge-modules bouwen en pushen

    Met de opdracht voor bouwen en pushen worden drie bewerkingen gestart. Eerst wordt er een nieuwe map met de naam config in de oplossing gemaakt die het volledige implementatiemanifest bevat, op basis van de informatie in de implementatiesjabloon en andere oplossingsbestanden. Daarna wordt docker build uitgevoerd om de containerinstallatiekopie te bouwen op basis van de juiste dockerfile voor uw doelarchitectuur. Vervolgens wordt docker push uitgevoerd om de opslagplaats van de installatiekopie naar het containerregister te pushen.

    Dit proces kan de eerste keer enkele minuten duren, maar de volgende keer dat u de opdrachten uitvoert, wordt het sneller uitgevoerd.

  2. Open het bestand deployment.windows-amd64.json in de zojuist gemaakte configuratiemap. (De configuratiemap wordt mogelijk niet weergegeven in de Solution Explorer in Visual Studio. Als dat het geval is, selecteert u het pictogram Alle bestanden weergeven op de taakbalk Solution Explorer.)

  3. Zoek de parameter image van de IotEdgeModule1-sectie. De installatiekopie bevat de volledige installatiekopieopslagplaats met de naam, versie en architectuurtag van het module.json-bestand.

  4. Open het bestand module.json in de map IotEdgeModule1.

  5. Wijzig het versienummer voor de installatiekopie van de module. (De versie, niet de $schema-version.) Verhoog bijvoorbeeld het versienummer van de patch naar 0.0.2, alsof er een kleine correctie in de modulecode is aangebracht.

    Tip

    Moduleversies bieden ondersteuning voor versiebeheer en bieden u de mogelijkheid wijzigingen te testen op een klein aantal apparaten voordat u updates in een productieomgeving implementeert. Als u de moduleversie niet verhoogt voordat u bouwt en pusht, overschrijft u de opslagplaats in uw containerregister.

  6. Sla de wijzigingen op in het bestand module.json.

  7. Klik opnieuw met de rechtermuisknop op de projectmap CSharpTutorialApp en selecteer IoT Edge-modules bouwen en pushen opnieuw.

  8. Open het bestand deployment.windows-amd64.json opnieuw. U ziet dat er geen nieuw bestand is gemaakt tijdens het uitvoeren van de opdracht voor het bouwen en pushen. Hetzelfde bestand is bijgewerkt met de wijzigingen. De IotEdgeModule1-installatiekopie verwijst nu naar de versie 0.0.2 van de container. Deze wijziging in het implementatiemanifest is de manier waarop u het IoT Edge-apparaat laat weten dat er een nieuwe versie van een module moet worden opgehaald.

  9. Ga naar Azure Portal en navigeer naar het containerregister om verder te controleren wat de opdracht voor het bouwen en pushen heeft gedaan.

  10. Selecteer in het containerregister Opslagplaatsen en vervolgens iotedgemodule1. Controleer of beide versies van de installatiekopie naar het register zijn gepusht.

    Beide installatiekopieversies in containerregister weergeven

Problemen oplossen

Als er fouten optreden bij het bouwen en pushen van de installatiekopie van de module, heeft dit vaak te maken met Docker-configuratie op uw ontwikkelcomputer. Gebruik de volgende controles om uw configuratie te controleren:

  • Hebt u de opdracht docker login uitgevoerd met behulp van de referenties die u uit het containerregister hebt gekopieerd? Deze referenties zijn anders dan de referenties die u gebruikt om u aan te melden bij Azure.
  • Hebt u de juiste containeropslagplaats? Heeft deze de juiste containerregisternaam en de juiste modulenaam? Open het bestand module.json in de map IotEdgeModule1 om dit te controleren. De waarde van de opslagplaats moet eruitzien als <registernaam.azurecr.io/iotedgemodule1>.
  • Als u een andere naam dan IotEdgeModule1 voor uw module hebt gebruikt, is die naam dan wel consistent in de hele oplossing?
  • Worden op de computer hetzelfde type containers uitgevoerd als die u bouwt? Deze zelfstudie is voor Windows IoT Edge-apparaten, dus uw Visual Studio-bestanden moeten de windows-amd64-extensie hebben en Docker Desktop moet Windows-containers uitvoeren.

Modules op het apparaat implementeren

U hebt gecontroleerd of de gemaakte containerinstallatiekopieën zijn opgeslagen in het containerregister, dus het is tijd om ze te implementeren op een apparaat. Zorg ervoor dat uw IoT Edge-apparaat actief is.

  1. Open Cloud Explorer in Visual Studio en vouw de details voor uw IoT-hub uit.

  2. Selecteer de naam van het apparaat waarop u wilt implementeren. Selecteer in de lijst Actions de optie Create Deployment.

    Implementatie voor één apparaat maken

  3. Ga in de bestandsverkenner naar de configuratiemap van uw project en selecteer vervolgens het bestand deployment.windows-amd64.json. Dit bestand bevindt zich vaak in C:\Users\<username>\source\repos\CSharpTutorialApp\CSharpTutorialApp\config\deployment.windows-amd64.json

    Gebruik niet het bestand deployment.template.json, dat niet de volledige module-installatiekopiewaarden bevat.

  4. Vouw de details van uw IoT Edge-apparaat uit in Cloud Explorer om de modules op uw apparaat te bekijken.

  5. Gebruik de knop Vernieuwen om de status van het apparaat bij te werken om te zien of de modules SimulatedTemperatureSensor en IotEdgeModule1 op uw apparaat zijn geïmplementeerd.

    Modules weergeven die op uw IoT Edge-apparaat worden uitgevoerd

Berichten van het apparaat weergeven

De IotEdgeModule1-code ontvangt berichten via de invoerwachtrij en geeft deze door aan de uitvoerwachtrij. Het implementatiemanifest heeft routes gedeclareerd die berichten hebben doorgegeven van SimulatedTemperatureSensor aan IotEdgeModule1 en berichten vervolgens hebben doorgestuurd van IotEdgeModule1 naar IoT Hub. Met de Azure IoT Edge Tools voor Visual Studio kunt u berichten zien wanneer ze vanaf uw afzonderlijke apparaten op IoT Hub arriveren.

  1. Selecteer in Cloud Explorer van Visual Studio de naam van het IoT Edge-apparaat waarop u hebt geïmplementeerd.

  2. Selecteer in het menu Actions de optie Start Monitoring Built-in Event Endpoint.

  3. Bekijk de sectie Output in Visual Studio om berichten te zien die binnenkomen op uw IoT-hub.

    Het kan enkele minuten duren voordat beide modules worden gestart. De IoT Edge-runtime moet het nieuwe implementatiemanifest ontvangen, de module-installatiekopieën uit de containerruntime ophalen en vervolgens elke nieuwe module starten.

    Inkomende apparaat-naar-cloudberichten weergeven

Wijzigingen op apparaat weergeven

Als u wilt zien wat er gebeurt op uw apparaat zelf, gebruikt u de opdrachten in deze sectie om de IoT Edge-runtime en -modules op uw apparaat te controleren.

De opdrachten in deze sectie zijn voor uw IoT Edge apparaat, niet voor uw ontwikkelcomputer. Als u een virtuele machine voor uw IoT Edge-apparaat gebruikt, kunt u er nu verbinding mee maken. Ga in Azure naar de overzichtspagina van de virtuele machine en selecteer Verbinding maken voor toegang tot de verbinding met extern bureaublad. Open op het apparaat een opdracht- of PowerShell-venster om de iotedge-opdrachten uit te voeren.

  • Bekijk alle modules die op het apparaat zijn geïmplementeerd en controleer de status ervan:

    iotedge list
    

    U moet vier modules zien: de twee IoT Edge-runtime-modules, SimulatedTemperatureSensor en IotEdgeModule1. Alle vier moeten worden weergegeven als actief.

  • Controleer de logboeken voor een specifieke module:

    iotedge logs <module name>
    

    IoT Edge-modules zijn hoofdlettergevoelig.

    De SimulatedTemperatureSensor- en IotEdgeModule1-logboeken moeten de berichten weergeven die ze verwerken. De edgeAgent-module is verantwoordelijk voor het starten van de andere modules, dus de logboeken hiervan bevatten informatie over het implementeren van het implementatiemanifest. Als een module niet wordt vermeld of niet wordt uitgevoerd, bevatten de edgeAgent-logboeken waarschijnlijk de fouten. De edgeHub-module is verantwoordelijk voor de communicatie tussen de modules en IoT Hub. Als de modules actief zijn, maar de berichten niet op uw IoT-hub arriveren, bevatten de edgeHub-logboeken waarschijnlijk de fouten.

Resources opschonen

Als u van plan bent door te gaan met het volgende aanbevolen artikel, kunt u de resources en configuraties die u hebt gemaakt behouden en opnieuw gebruiken. U kunt ook hetzelfde IoT Edge-apparaat blijven gebruiken als een testapparaat.

Anders kunt u de lokale configuraties en Azure-resources die u in dit artikel hebt gemaakt, verwijderen om kosten te voorkomen.

Azure-resources verwijderen

Het verwijderen van de Azure-resources en resourcegroepen kan niet ongedaan worden gemaakt. Zorg ervoor dat u niet per ongeluk de verkeerde resourcegroep of resources verwijdert. Als u de IoT-hub in een bestaande resourcegroep hebt gemaakt met de resources die u wilt behouden, moet u alleen de IoT-hub zelf verwijderen en niet de resourcegroep.

Om de resources te verwijderen:

  1. Meld u aan bij Azure Portal en selecteer vervolgens Resourcegroepen.

  2. Selecteer de naam van de resourcegroep die uw IoT Edge-testresources bevat.

  3. Bekijk de lijst met resources die zich in de resourcegroep bevinden. Als u alle mappen wilt verwijderen, kunt u Resourcegroep verwijderen selecteren. Als u slechts een deel ervan wilt verwijderen, kunt u in elke resource afzonderlijk klikken om ze te verwijderen.

Volgende stappen

In deze zelfstudie hebt u Visual Studio 2019 op uw ontwikkelcomputer ingesteld en uw eerste IoT Edge-module geïmplementeerd. Nu u de basisconcepten kent, kunt u functionaliteit toevoegen aan een module, zodat de gegevens die worden doorgegeven, kunnen worden geanalyseerd. Kies uw voorkeurstaal:

CC#