Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:
IoT Edge 1.1
Importante
IoT Edge 1.1 data di fine del supporto è stata il 13 dicembre 2022. Controlla il ciclo di vita dei prodotti Microsoft per ottenere informazioni sul modo in cui viene supportato questo prodotto, servizio, tecnologia o API. Per altre informazioni sull'aggiornamento alla versione più recente di IoT Edge, vedere Aggiornare IoT Edge.
In questo articolo viene usata di nuovo la macchina virtuale di sviluppo come dispositivo simulato. Tuttavia, invece di inviare dati direttamente all'hub IoT, il dispositivo invia i dati al dispositivo IoT Edge configurato come gateway trasparente.
Monitoriamo l'operazione del dispositivo IoT Edge mentre il dispositivo simulato invia i dati. Al termine dell'esecuzione del dispositivo, verranno esaminati i dati nell'account di archiviazione per verificare che tutto funzioni come previsto.
Questo passaggio viene in genere eseguito da uno sviluppatore di dispositivi o cloud.
In questa sezione dell'esercitazione si apprenderà come:
- Compilare ed eseguire un dispositivo downstream.
- Verificare che i dati generati siano archiviati nell'archivio BLOB di Azure.
- Verificare che il modello di Machine Learning classifica i dati del dispositivo.
Prerequisiti
Questo articolo fa parte di una serie di esercitazioni sull'uso di Azure Machine Learning in IoT Edge. Ogni articolo della serie si basa sul lavoro dell'articolo precedente. Se sei arrivato direttamente a questo articolo, visita il primo articolo della serie.
Esaminare l'imbracatura del dispositivo
Riutilizzare il progetto DeviceHarness per simulare il dispositivo downstream. La connessione al gateway trasparente richiede due elementi aggiuntivi:
- Registrare il certificato affinché il dispositivo IoT in downstream possa fidarsi dell'autorità di certificazione utilizzata dal runtime di IoT Edge. In questo caso, il dispositivo downstream è la macchina virtuale di sviluppo.
- Aggiungere il nome di dominio completo (FQDN) del gateway perimetrale alla stringa di connessione del dispositivo.
Esaminare il codice per vedere come vengono implementati questi due elementi.
Nel computer di sviluppo aprire Visual Studio Code.
Usare File>Apri cartella... per aprire C:\source\IoTEdgeAndMlSample\DeviceHarness.
Esaminare il metodo InstallCertificate() in Program.cs.
Si noti che se il codice trova il percorso del certificato, chiama il metodo CertificateManager.InstallCACert per installare il certificato nel computer.
Esaminare ora il metodo GetIotHubDevice nella classe TurbofanDevice.
Quando l'utente specifica l'FQDN del gateway usando l'opzione "-g", tale valore viene passato a questo metodo come variabile
gatewayFqdn, che viene aggiunta alla stringa di connessione del dispositivo.connectionString = $"{connectionString};GatewayHostName={gatewayFqdn.ToLower()}";
Compilare ed eseguire un dispositivo downstream
Con il progetto DeviceHarness ancora aperto in Visual Studio Code, compilare il progetto. Dal menu del Terminale , selezionare Esegui attività di costruzione e selezionare Costruisci.
Trovare il nome di dominio completo (FQDN) del gateway perimetrale navigando al dispositivo IoT Edge (VM Linux) nel portale di Azure e copiando il valore per nome DNS dalla pagina di panoramica.
Avviare il dispositivo IoT (VM Linux) se non è già in esecuzione.
Aprire il terminale di Visual Studio Code. Dal menu terminale selezionare Nuovo terminale ed eseguire il comando seguente, sostituendo
<edge_device_fqdn>con il nome DNS copiato dal dispositivo IoT Edge (MACCHINA virtuale Linux):dotnet run -- --gateway-host-name "<edge_device_fqdn>" --certificate C:\edgecertificates\certs\azure-iot-test-only.root.ca.cert.pem --max-devices 1L'applicazione tenta di installare il certificato nel computer di sviluppo. In caso affermativo, accettare l'avviso di sicurezza.
Quando viene richiesta la stringa di connessione dell'hub IoT, fare clic sui tre puntini (...) nel pannello Dispositivi dell'hub IoT di Azure e selezionare Copia stringa di connessione dell'hub IoT. Incollare il valore nel terminale.
Verrà visualizzato un output simile al seguente:
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: 250Si noti l'aggiunta di "GatewayHostName" alla stringa di connessione del dispositivo, che fa sì che il dispositivo comunichi tramite l'hub IoT tramite il gateway trasparente IoT Edge.
Controllare l'output
Output del dispositivo IoT Edge
L'output del modulo avroFileWriter può essere facilmente visualizzato tramite il dispositivo IoT Edge.
Connettersi tramite SSH alla macchina virtuale IoT Edge.
Cercare i file scritti su disco.
find /data/avrofiles -type fL'output del comando sarà simile all'esempio seguente:
/data/avrofiles/2019/4/18/22/10.avroPotresti avere più di un file a seconda del momento dell'esecuzione.
Prestare attenzione ai timestamp. Il modulo avroFileWriter carica i file nel cloud una volta che l'ora dell'ultima modifica è superiore a 10 minuti nel passato (vedere MODIFIED_FILE_TIMEOUT in uploader.py nel modulo avroFileWriter).
Una volta trascorsi i 10 minuti, il modulo deve caricare i file. Se il caricamento ha esito positivo, elimina i file dal disco.
Archiviazione di Azure
È possibile osservare i risultati del dispositivo downstream che invia i dati esaminando gli account di archiviazione in cui si prevede che i dati vengano instradati.
Nel computer di sviluppo aprire Visual Studio Code.
Nel pannello "ARCHIVIAZIONE DI AZURE" nella finestra di esplorazione, navigare nell'albero per trovare l'account di archiviazione.
Espandi il nodo contenitori BLOB.
Dal lavoro svolto nella parte precedente dell'esercitazione, ci aspettiamo che il contenitore ruldata contenga messaggi con RUL. Espandere il nodo ruldata.
Verranno visualizzati uno o più file BLOB denominati come:
<IoT Hub Name>/<partition>/<year>/<month>/<day>/<hour>/<minute>.Fare clic con il pulsante destro del mouse su uno dei file e scegliere Download BLOB per salvare il file nel computer di sviluppo.
Espandi quindi il nodo uploadturbofanfiles. Nell'articolo precedente questo percorso viene impostato come destinazione per i file caricati dal modulo avroFileWriter.
Fare clic con il pulsante destro del mouse sui file e scegliere Scarica BLOB per salvarlo nel computer di sviluppo.
Leggere il contenuto del file Avro
È stata inclusa una semplice utilità della riga di comando per la lettura di un file Avro e la restituzione di una stringa JSON dei messaggi nel file. In questa sezione, noi lo installeremo ed eseguiremo.
Aprire un terminale in Visual Studio Code ( terminale>Nuovo terminale).
Installa hubavroreader:
pip install c:\source\IoTEdgeAndMlSample\HubAvroReaderUsa hubavroreader per leggere il file Avro che hai scaricato da ruldata.
hubavroreader <avro file with ath> | moreSi noti che il corpo del messaggio si presenta come previsto con l'ID dispositivo e la stima della vita utile residua (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" } }Esegui lo stesso comando passando il file Avro che hai scaricato da uploadturbofanfiles.
Come previsto, questi messaggi contengono tutti i dati del sensore e le impostazioni operative del messaggio originale. Questi dati possono essere usati per migliorare il modello RUL sul nostro dispositivo edge.
{ "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>" }
Pulire le risorse
Se hai intenzione di esplorare le risorse utilizzate da questo tutorial end-to-end, aspetta di finire prima di ripulire le risorse che hai creato. In caso contrario, seguire questa procedura per eliminarli:
Eliminare i gruppi di risorse creati per contenere la macchina virtuale di sviluppo, la macchina virtuale IoT Edge, l'hub IoT, l'account di archiviazione, il servizio dell'area di lavoro di Machine Learning e le risorse create: registro contenitori, Application Insights, insieme di credenziali delle chiavi, account di archiviazione.
Eliminare il progetto di Machine Learning in Azure Notebooks.
Se il repository è stato clonato in locale, chiudere tutte le finestre di PowerShell o VS Code che fanno riferimento al repository locale, quindi eliminare la directory del repository.
Se i certificati sono stati creati in locale, eliminare la cartella c:\edgeCertificates.
Passaggi successivi
In questo articolo è stata usata la macchina virtuale di sviluppo per simulare un dispositivo downstream che invia dati operativi e sensori al dispositivo IoT Edge. Abbiamo convalidato che i moduli sul dispositivo instradavano, classificavano, persistevano e caricavano i dati esaminando l'operazione in tempo reale del dispositivo edge e osservando i file caricati nell'account di archiviazione.
Per continuare a conoscere le funzionalità di IoT Edge, provare questa esercitazione successiva: