Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
IoT Edge 1.1
Belangrijk
Het einde van de ondersteuningsdatum voor IoT Edge 1.1 is 13 december 2022. Controleer de levenscyclus van Microsoft-producten voor informatie over hoe dit product, deze service, technologie of API wordt ondersteund. Zie IoT Edge bijwerken voor meer informatie over het bijwerken naar de nieuwste versie van IoT Edge.
In dit artikel gebruiken we de ontwikkel-VM opnieuw als een gesimuleerd apparaat. In plaats van gegevens rechtstreeks naar de IoT Hub te verzenden, verzendt het apparaat echter gegevens naar het IoT Edge-apparaat dat is geconfigureerd als een transparante gateway.
We controleren de werking van het IoT Edge-apparaat terwijl het gesimuleerde apparaat gegevens verzendt. Zodra het apparaat klaar is met draaien, kijken we naar de gegevens in ons opslagaccount om te bevestigen dat alles naar verwachting heeft gewerkt.
Deze stap wordt doorgaans uitgevoerd door een cloud- of apparaatontwikkelaar.
In deze sectie van de zelfstudie leert u het volgende:
- Bouw en run een downstream apparaat.
- Controleer of gegenereerde gegevens worden opgeslagen in uw Azure Blob-opslag.
- Controleer of het machine learning-model de apparaatgegevens heeft geclassificeerd.
Vereiste voorwaarden
Dit artikel maakt deel uit van een reeks voor een zelfstudie over het gebruik van Azure Machine Learning in IoT Edge. Elk artikel in de reeks bouwt voort op het werk in het vorige artikel. Als u rechtstreeks bij dit artikel bent aangekomen, gaat u naar het eerste artikel in de reeks.
Apparaatharnas controleren
Gebruik het DeviceHarness-project opnieuw om het downstreamapparaat te simuleren. Voor het maken van verbinding met de transparante gateway zijn twee extra zaken vereist:
- Registreer het certificaat om het downstream-IoT-apparaat te laten vertrouwen op de certificeringsinstantie die wordt gebruikt door de IoT Edge-runtime. In ons geval is het downstreamapparaat de ontwikkel-VM.
- Voeg de FQDN (Fully Qualified Domain Name) van de Edge-gateway toe aan de verbindingsreeks van het apparaat.
Bekijk de code om te zien hoe deze twee items worden geïmplementeerd.
Open Visual Studio Code op uw ontwikkelcomputer.
Gebruik de map Bestand>openen... om C:\source\IoTEdgeAndMlSample\DeviceHarness te openen.
Bekijk de methode InstallCertificate() in Program.cs.
Houd er rekening mee dat als de code het certificaatpad vindt, de methode CertificateManager.InstallCACert wordt aangeroepen om het certificaat op de computer te installeren.
Bekijk nu de methode GetIotHubDevice in de klasse TurbofanDevice.
Wanneer de gebruiker de FQDN van de gateway opgeeft met behulp van de optie -g, wordt die waarde als de
gatewayFqdnvariabele doorgegeven aan de apparaatverbindingsreeks.connectionString = $"{connectionString};GatewayHostName={gatewayFqdn.ToLower()}";
Downstreamapparaat bouwen en uitvoeren
Als het DeviceHarness-project nog steeds is geopend in Visual Studio Code, bouw het project. Selecteer Build-taak uitvoeren in het terminalmenu en selecteer Build.
Zoek de FQDN (Fully Qualified Domain Name) voor uw edge-gateway door in Azure Portal naar uw IoT Edge-apparaat (Linux-VM) te navigeren en de waarde voor DNS-naam te kopiëren vanaf de overzichtspagina.
Start uw IoT-apparaat (Linux-VM) als het nog niet actief is.
Open het Visual Studio Code-terminal. Selecteer in het terminalmenunieuwe terminal en voer de volgende opdracht uit, waarbij
<edge_device_fqdn>u de DNS-naam vervangt die u hebt gekopieerd van het IoT Edge-apparaat (Linux-VM):dotnet run -- --gateway-host-name "<edge_device_fqdn>" --certificate C:\edgecertificates\certs\azure-iot-test-only.root.ca.cert.pem --max-devices 1De toepassing probeert het certificaat op uw ontwikkelcomputer te installeren. Wanneer dit het geval is, accepteert u de beveiligingswaarschuwing.
Wanneer u om de IoT Hub-verbindingsreeks wordt gevraagd, klikt u op het beletselteken (...) in het deelvenster Azure IoT Hub-apparaten en selecteert u IoT Hub-verbindingsreeks kopiëren. Plak de waarde in de terminal.
Je ziet uitvoer zoals:
Found existing device: Client_001 Using device connection string: HostName=<your hub>.azure-devices.net;DeviceId=Client_001;SharedAccessKey=xxxxxxx; GatewayHostName=iotedge-xxxxxx.<region>.cloudapp.azure.com Device: 1 Message count: 50 Device: 1 Message count: 100 Device: 1 Message count: 150 Device: 1 Message count: 200 Device: 1 Message count: 250Let op de toevoeging van 'GatewayHostName' aan de verbindingsreeks van het apparaat, waardoor het apparaat via de IoT Hub communiceert via de transparante IoT Edge-gateway.
Uitvoer controleren
Uitvoer van IoT Edge-apparaat
De uitvoer van de avroFileWriter-module kan gemakkelijk worden waargenomen door naar het IoT Edge-apparaat te kijken.
Verbinden met uw IoT Edge virtuele machine via SSH.
Zoek naar bestanden die naar schijf zijn geschreven.
find /data/avrofiles -type fDe uitvoer van de opdracht ziet eruit als in het volgende voorbeeld:
/data/avrofiles/2019/4/18/22/10.avroMogelijk hebt u meer dan één bestand, afhankelijk van de timing van de uitvoering.
Let op de tijdstempels. De avroFileWriter-module uploadt de bestanden naar de cloud zodra de laatste wijzigingstijd meer dan 10 minuten in het verleden is (zie MODIFIED_FILE_TIMEOUT in uploader.py in de avroFileWriter-module).
Zodra de tien minuten zijn verstreken, moet de module de bestanden uploaden. Als het uploaden is geslaagd, worden de bestanden van de schijf verwijderd.
Azure Storage
We kunnen de resultaten van ons downstream apparaat dat gegevens verzendt observeren door de opslagaccounts te bekijken waar we gegevens verwachten te routeren.
Open Visual Studio Code op de ontwikkelcomputer.
In het venster Verkennen, navigeer in het deelvenster 'AZURE STORAGE' door de structuur om uw opslagaccount te vinden.
Vouw het knooppunt Blob Containers uit.
Uit het werk dat we in het vorige gedeelte van de zelfstudie hebben gedaan, verwachten we dat de ruldata-container berichten met RUL moet bevatten. Vouw het knooppunt ruldata uit.
U ziet een of meer blob-bestanden met de naam:
<IoT Hub Name>/<partition>/<year>/<month>/<day>/<hour>/<minute>.Klik met de rechtermuisknop op een van de bestanden en kies Blob downloaden om het bestand op te slaan op uw ontwikkelcomputer.
Vouw vervolgens het knooppunt uploadturbofanfiles uit. In het vorige artikel stellen we deze locatie in als het doel voor bestanden die zijn geüpload door de avroFileWriter-module.
Klik met de rechtermuisknop op de bestanden en kies Blob downloaden om deze op te slaan op uw ontwikkelcomputer.
Avro-bestandsinhoud lezen
We hebben een eenvoudig opdrachtregelprogramma opgenomen voor het lezen van een Avro-bestand en het retourneren van een JSON-tekenreeks van de berichten in het bestand. In deze sectie wordt deze geïnstalleerd en uitgevoerd.
Open een terminal in Visual Studio Code (Terminal>New terminal).
Hubavroreader installeren:
pip install c:\source\IoTEdgeAndMlSample\HubAvroReaderGebruik hubavroreader om het Avro-bestand te lezen dat u hebt gedownload van ruldata.
hubavroreader <avro file with ath> | moreHoud er rekening mee dat de hoofdtekst van het bericht eruitziet zoals we hadden verwacht, samen met de apparaat-id en de voorspelde RUL.
{ "Body": { "ConnectionDeviceId": "Client_001", "CorrelationId": "3d0bc256-b996-455c-8930-99d89d351987", "CycleTime": 1.0, "PredictedRul": 170.1723693909444 }, "EnqueuedTimeUtc": "<time>", "Properties": { "ConnectionDeviceId": "Client_001", "CorrelationId": "3d0bc256-b996-455c-8930-99d89d351987", "CreationTimeUtc": "01/01/0001 00:00:00", "EnqueuedTimeUtc": "01/01/0001 00:00:00" }, "SystemProperties": { "connectionAuthMethod": "{\"scope\":\"module\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}", "connectionDeviceGenerationId": "636857841798304970", "connectionDeviceId": "aaTurbofanEdgeDevice", "connectionModuleId": "turbofanRouter", "contentEncoding": "utf-8", "contentType": "application/json", "correlationId": "3d0bc256-b996-455c-8930-99d89d351987", "enqueuedTime": "<time>", "iotHubName": "mledgeiotwalkthroughhub" } }Voer dezelfde opdracht uit om het Avro-bestand door te geven dat u hebt gedownload van uploadturbofanfiles.
Zoals verwacht bevatten deze berichten alle sensorgegevens en operationele instellingen van het oorspronkelijke bericht. Deze gegevens kunnen worden gebruikt om het RUL-model op ons edge-apparaat te verbeteren.
{ "Body": { "CycleTime": 1.0, "OperationalSetting1": -0.0005000000237487257, "OperationalSetting2": 0.00039999998989515007, "OperationalSetting3": 100.0, "PredictedRul": 170.17236328125, "Sensor1": 518.6699829101562, "Sensor10": 1.2999999523162842, "Sensor11": 47.29999923706055, "Sensor12": 522.3099975585938, "Sensor13": 2388.010009765625, "Sensor14": 8145.31982421875, "Sensor15": 8.424599647521973, "Sensor16": 0.029999999329447746, "Sensor17": 391.0, "Sensor18": 2388.0, "Sensor19": 100.0, "Sensor2": 642.3599853515625, "Sensor20": 39.11000061035156, "Sensor21": 23.353700637817383, "Sensor3": 1583.22998046875, "Sensor4": 1396.8399658203125, "Sensor5": 14.619999885559082, "Sensor6": 21.610000610351562, "Sensor7": 553.969970703125, "Sensor8": 2387.9599609375, "Sensor9": 9062.169921875 }, "ConnectionDeviceId": "Client_001", "CorrelationId": "70df0c98-0958-4c8f-a422-77c2a599594f", "CreationTimeUtc": "0001-01-01T00:00:00+00:00", "EnqueuedTimeUtc": "<time>" }
Hulpmiddelen opruimen
Als u van plan bent de resources te verkennen die worden gebruikt door deze eind-tot-eind handleiding, wacht dan tot u klaar bent met verkennen om de resources die u hebt gemaakt op te schonen. Gebruik anders de volgende stappen om ze te verwijderen:
Verwijder de resourcegroep(en) die zijn aangemaakt voor het opslaan van de Dev VM, IoT Edge VM, IoT Hub, opslagaccount en machine learning-werkruimte (en de aangemaakte resources: containerregister, Application Insights, sleutelkluis en opslagaccount).
Verwijder het machine learning-project in Azure Notebooks.
Als u de opslagplaats lokaal hebt gekloond, sluit u PowerShell- of VS Code-vensters die verwijzen naar de lokale opslagplaats en verwijdert u de map met opslagplaatsen.
Als u lokaal certificaten hebt gemaakt, verwijdert u de map c:\edgeCertificates.
Volgende stappen
In dit artikel hebben we onze ontwikkel-VM gebruikt om een downstreamapparaat te simuleren dat sensor- en operationele gegevens naar ons IoT Edge-apparaat verzendt. We hebben gevalideerd dat de modules op het apparaat de gegevens hebben gerouteerd, geclassificeerd, persistent en geüpload door de realtime bewerking van het edge-apparaat te onderzoeken en door de bestanden te bekijken die zijn geüpload naar het opslagaccount.
Als u meer wilt weten over de mogelijkheden van IoT Edge, kunt u de volgende zelfstudie volgen: