Avvio rapido: Distribuire il primo modulo IoT Edge in un dispositivo Linux virtuale

Si applica a:Segno di spunta IoT Edge 1.4 IoT Edge 1.4

Importante

IoT Edge 1.4 è la versione supportata. Se si usa una versione precedente, vedere Aggiornare IoT Edge.

Per testare Azure IoT Edge in questa guida di avvio rapido, distribuire il codice in contenitori in un dispositivo IoT Edge Linux virtuale. IoT Edge consente di gestire in remoto il codice nei dispositivi, in modo da poter inviare più carichi di lavoro ai dispositivi perimetrali. Per questa guida introduttiva, è consigliabile usare una macchina virtuale di Azure per il dispositivo IoT Edge, che consente di creare rapidamente un computer di test e quindi eliminarlo al termine.

In questa guida introduttiva si apprende come:

  • Creare un hub IoT.
  • Registrare un dispositivo IoT Edge nell'hub IoT.
  • Installare e avviare il runtime di IoT Edge in un dispositivo virtuale.
  • Distribuire in remoto un modulo in un dispositivo IoT Edge.

Diagramma dell'architettura di avvio rapido per dispositivi e cloud.

Questa guida di avvio rapido illustra come creare una macchina virtuale Linux configurata per l'uso come dispositivo IoT Edge. Verrà quindi distribuito un modulo dal portale di Azure nel dispositivo. Il modulo distribuito in questa guida di avvio rapido è un sensore simulato che genera dati di temperatura, umidità e pressione. Le altre esercitazioni su Azure IoT Edge si basano sulle procedure eseguite qui tramite la distribuzione di moduli aggiuntivi che analizzano dati simulati per ottenere informazioni aziendali dettagliate.

Se non si ha una sottoscrizione di Azure attiva, creare un account gratuito prima di iniziare.

Prerequisiti

Preparare l'ambiente per l'interfaccia della riga di comando di Azure.

Risorse cloud:

  • Un gruppo di risorse per la gestione di tutte le risorse usate in questa guida introduttiva. In questa guida di avvio rapido e nelle esercitazioni successive verrà usato il nome del gruppo di risorse di esempio IoTEdgeResources.

    az group create --name IoTEdgeResources --location westus2
    

Creare un hub IoT

Per iniziare, creare un hub IoT con l'interfaccia della riga di comando di Azure.

Diagramma di come creare un hub IoT nel cloud.

Per questa guida introduttiva è possibile usare il livello gratuito dell'hub IoT. Se l'hub IoT è già stato usato in passato ed è disponibile un hub, è possibile usarlo qui.

Il codice seguente crea un hub F1 gratuito nel gruppo di risorse IoTEdgeResources. Sostituire {hub_name} con un nome univoco per l'hub IoT. La creazione di un hub IoT potrebbe richiedere alcuni minuti.

az iot hub create --resource-group IoTEdgeResources --name {hub_name} --sku F1 --partition-count 2

Se si verifica un errore perché è già presente un hub gratuito nella sottoscrizione, modificare lo SKU in S1. Ogni sottoscrizione può avere un solo hub IoT gratuito. Se si verifica un errore che indica che il nome dell'hub IoT non è disponibile, significa che qualcuno ha già un hub con lo stesso nome. Provare con un nuovo nome.

Registrare un dispositivo IoT Edge

Registrare un dispositivo IoT Edge con l'hub IoT appena creato.

Diagramma di come registrare un dispositivo con un'identità hub IoT.

Creare un'identità del dispositivo IoT Edge affinché il dispositivo possa comunicare con l'hub IoT. L'identità del dispositivo si trova nel cloud e si usa una stringa di connessione del dispositivo univoca per associare un dispositivo fisico a un'identità del dispositivo.

Poiché i dispositivi IoT Edge si comportano e possono essere gestiti in modo diverso rispetto ai dispositivi IoT tipici, indicare con un flag --edge-enabled che l'identità si riferisce a un dispositivo IoT Edge.

  1. In Azure Cloud Shell immettere il comando seguente per creare un dispositivo denominato myEdgeDevice nell'hub.

    az iot hub device-identity create --device-id myEdgeDevice --edge-enabled --hub-name {hub_name}
    

    Se viene visualizzato un errore relativo alle chiavi dei criteri iothubowner, assicurarsi che Cloud Shell esegua la versione più recente dell'estensione azure-iot .

  2. Visualizzare la stringa di connessione per il dispositivo, che collega il dispositivo fisico alla sua identità nell'hub IoT. Contiene il nome dell'hub IoT, il nome del dispositivo e quindi una chiave condivisa che autentica le connessioni tra i due. Si farà riferimento a questa stringa di connessione nella sezione successiva quando verrà configurato il dispositivo IoT Edge.

    az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name {hub_name}
    

    Ad esempio, il stringa di connessione dovrebbe essere simile a HostName=contoso-hub.azure-devices.net;DeviceId=myEdgeDevice;SharedAccessKey=<DEVICE_SHARED_ACCESS_KEY>.

Configurare il dispositivo IoT Edge

Creare una macchina virtuale con il runtime Azure IoT Edge.

Diagramma di come avviare il runtime in un dispositivo.

Il runtime IoT Edge viene distribuito in tutti i dispositivi IoT Edge. È costituito da tre componenti. Il daemon di sicurezza IoT Edge si avvia a ogni avvio di un dispositivo IoT Edge ed esegue il bootstrap del dispositivo avviando l'agente IoT Edge. L'agente IoT Edge semplifica la distribuzione e il monitoraggio di moduli nel dispositivo IoT Edge, tra cui l'hub di IoT Edge. L'hub IoT Edge gestisce le comunicazioni tra moduli nel dispositivo IoT Edge e tra il dispositivo e l'hub IoT.

Durante la configurazione del runtime, si immette una stringa di connessione del dispositivo. Si tratta della stringa recuperata tramite l'interfaccia della riga di comando di Azure. La stringa associa il dispositivo fisico all'identità del dispositivo IoT Edge in Azure.

Distribuire il dispositivo IoT Edge

In questa sezione verrà usato un modello di Azure Resource Manager per creare una nuova macchina virtuale e installare il runtime IoT Edge al suo interno. Se invece si vuole usare il proprio dispositivo Linux, è possibile seguire i passaggi di installazione in Effettuare manualmente il provisioning di un singolo dispositivo Linux IoT Edge, quindi tornare a questa guida introduttiva.

Usare il pulsante Distribuisci in Azure o i comandi dell'interfaccia della riga di comando per creare il dispositivo IoT Edge in base al modello iotedge-vm-deploy predefinito.

  • Distribuire usando il modello di Azure Resource Manager di IoT Edge.

    Distribuzione in Azure

  • Per gli utenti di Bash o Cloud Shell, copiare il comando seguente in un editor di testo, sostituire il testo segnaposto con le informazioni correnti e quindi copiare il testo nella finestra di Bash o Cloud Shell:

    az deployment group create \
    --resource-group IoTEdgeResources \
    --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/main/edgeDeploy.json" \
    --parameters dnsLabelPrefix='<REPLACE_WITH_VM_NAME>' \
    --parameters adminUsername='azureUser' \
    --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <REPLACE_WITH_HUB_NAME> -o tsv) \
    --parameters authenticationType='password' \
    --parameters adminPasswordOrKey="<REPLACE_WITH_PASSWORD>"
    
  • Per gli utenti di PowerShell, copiare il comando seguente nella finestra di PowerShell, quindi sostituire il testo segnaposto con le informazioni correnti:

    az deployment group create `
    --resource-group IoTEdgeResources `
    --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/main/edgeDeploy.json" `
    --parameters dnsLabelPrefix='<REPLACE_WITH_VM_NAME>' `
    --parameters adminUsername='azureUser' `
    --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <REPLACE_WITH_HUB_NAME> -o tsv) `
    --parameters authenticationType='password' `
    --parameters adminPasswordOrKey="<REPLACE_WITH_PASSWORD>"
    

Questo modello accetta i parametri seguenti:

Parametro Descrizione
resource-group Gruppo di risorse in cui verranno create le risorse. Usare il gruppo di risorse IoTEdgeResources predefinito usato in questo articolo o fornire il nome di un gruppo di risorse esistente nella sottoscrizione in uso.
template-uri Puntatore al modello di Resource Manager in uso.
dnsLabelPrefix Stringa che verrà usata per creare il nome host della macchina virtuale. Sostituire il testo del segnaposto con un nome per la macchina virtuale.
adminUsername Nome utente per l'account amministratore della macchina virtuale. Usare il nome utente azureUser di esempio o specificare un nuovo nome utente.
deviceConnectionString Stringa di connessione dell'identità del dispositivo nell'hub IoT, che verrà usata per configurare il runtime IoT Edge nella macchina virtuale. Il comando dell'interfaccia della riga di comando all'interno di questo parametro acquisisce automaticamente la stringa di connessione. Sostituire il testo segnaposto con il nome dell'hub IoT.
authenticationType Metodo di autenticazione per l'account amministratore. In questa guida di avvio rapido viene usata l'autenticazione della password, ma è anche possibile impostare questo parametro su sshPublicKey.
adminPasswordOrKey Password o valore della chiave pubblica SSH per l'account amministratore. Sostituire il testo segnaposto con una password sicura. La password deve avere una lunghezza minima di 12 caratteri e contenere tre dei quattro elementi seguenti: caratteri minuscoli, caratteri maiuscoli, numeri e caratteri speciali.

Al termine della distribuzione, nell'interfaccia della riga di comando verrà restituito l'output in formato JSON che contiene le informazioni SSH per connettersi alla macchina virtuale. Copiare il valore della voce SSH pubblica della sezione outputs . Ad esempio, il comando SSH dovrebbe essere simile a ssh azureUser@edge-vm.westus2.cloudapp.azure.com.

Visualizzare lo stato del runtime IoT Edge

I restanti comandi di questa guida introduttiva vengono eseguiti nel dispositivo IoT Edge stesso ed è pertanto possibile verificare le operazioni effettuate nel dispositivo. Se si usa una macchina virtuale, connettersi ad essa usando il nome utente amministratore configurato e il nome DNS restituito dal comando di distribuzione. È anche possibile trovare il nome DNS nella pagina Panoramica della macchina virtuale nel portale di Azure. Usare il comando seguente per connettersi alla macchina virtuale. Sostituire {admin username} e {DNS name} con valori personalizzati.

ssh {admin username}@{DNS name}

Una volta stabilita la connessione alla macchina virtuale, verificare che il runtime sia stato installato e configurato correttamente nel dispositivo IoT Edge.

  1. Verificare che IoT Edge sia in esecuzione. Il comando seguente deve restituire lo stato Ok se IoT Edge è in esecuzione o specificare eventuali errori del servizio.

    sudo iotedge system status
    

    Suggerimento

    Per eseguire comandi iotedge sono necessari privilegi elevati. Quando ci si disconnette dal computer e si accede di nuovo per la prima volta dopo l'installazione del runtime IoT Edge, le autorizzazioni vengono aggiornate automaticamente. Fino ad allora, usare sudo davanti ai comandi.

  2. Se è necessario risolvere problemi del servizio, recuperare i log di servizio.

    sudo iotedge system logs
    
  3. Visualizzare tutti i moduli in esecuzione nel dispositivo IoT Edge. Poiché il servizio è stato avviato per la prima volta, verrà visualizzato solo il modulo edgeAgent in esecuzione. Il modulo edgeAgent viene eseguito per impostazione predefinita e permette di installare e avviare tutti i moduli aggiuntivi distribuiti nel dispositivo.

    sudo iotedge list
    

Il dispositivo IoT Edge è ora configurato. È pronto per eseguire i moduli distribuiti nel cloud.

Distribuire un modulo

Gestire il dispositivo Azure IoT Edge dal cloud per distribuire un modulo che invierà dati di telemetria all'hub IoT.

Diagramma di come distribuire un modulo dal cloud al dispositivo.

Una delle funzionalità principali di Azure IoT Edge consiste nella distribuzione del codice nei dispositivi IoT Edge dal cloud. I moduli IoT Edge sono pacchetti eseguibili implementati come contenitori. In questa sezione si distribuirà un modulo predefinito dalla sezione Moduli IoT Edge di Azure Marketplace direttamente da hub IoT di Azure.

Questo modulo simula un sensore e invia i dati generati. Si tratta di un codice utile per iniziare a usare IoT Edge, perché è possibile usare i dati simulati per lo sviluppo e i test. Per informazioni specifiche sul funzionamento di questo modulo, è possibile visualizzare il codice sorgente del sensore temperatura simulato.

Seguire questa procedura per avviare la procedura guidata Imposta moduli per distribuire il primo modulo da Azure Marketplace.

  1. Accedere al portale di Azure e passare all'hub IoT.

  2. Dal menu a sinistra, in Gestione dispositivi, selezionare Dispositivi.

  3. Selezionare l'ID dispositivo del dispositivo IoT Edge di destinazione dall'elenco.

    Quando si crea un nuovo dispositivo IoT Edge, il codice 417 -- The device's deployment configuration is not set di stato verrà visualizzato nel portale di Azure. Questo stato è normale e significa che il dispositivo è pronto per ricevere una distribuzione del modulo.

  4. Sulla barra superiore selezionare Imposta moduli.

    Scegliere i moduli da eseguire nel dispositivo. È possibile scegliere tra i moduli già creati, i moduli di Azure Marketplace o i moduli creati manualmente. In questa guida introduttiva si distribuirà un modulo da Azure Marketplace.

  5. In Moduli IoT Edge aprire il menu a discesa Aggiungi e quindi selezionare Modulo marketplace.

  6. In IoT Edge Module Marketplace cercare e selezionare il Simulated Temperature Sensor modulo. Il modulo viene aggiunto alla sezione Moduli IoT Edge con lo stato di esecuzione desiderato.

  7. Selezionare Avanti: Route per continuare a configurare le route.

    Una route denominata SimulatedTemperatureSensorToIoTHub è stata creata automaticamente quando è stato aggiunto il modulo da Azure Marketplace. Questa route invia tutti i messaggi dal modulo temperatura simulata a hub IoT.

  8. Selezionare Avanti: Rivedi e crea.

  9. Esaminare il file JSON e quindi selezionare Crea. Il file JSON definisce tutti i moduli distribuiti nel dispositivo IoT Edge.

    Nota

    Quando si invia una nuova distribuzione a un dispositivo IoT Edge, non viene eseguito il push di alcun elemento al dispositivo. Il dispositivo esegue invece regolarmente una query nell'hub IoT per ottenere eventuali nuove istruzioni. Se il dispositivo trova un manifesto della distribuzione aggiornato, usa le informazioni sulla nuova distribuzione per eseguire il pull delle immagini dei moduli dal cloud e quindi avvia l'esecuzione dei moduli in locale. Questo processo può richiedere alcuni minuti.

Dopo aver creato i dettagli della distribuzione dei moduli, la procedura guidata torna nella pagina Dettagli dispositivo. Visualizzare lo stato della distribuzione nella scheda Moduli .

Verranno visualizzati tre moduli: $edgeAgent, $edgeHub e SimulatedTemperatureSensor. Se uno o più moduli hanno in Specificato in Distribuzione ma non in Segnalato dal dispositivo, il dispositivo IoT Edge continua ad avviarli. Attendere alcuni minuti e quindi aggiornare la pagina.

Screenshot che mostra SimulatedTemperatureSensor nell'elenco dei moduli distribuiti.

Se si verificano problemi durante la distribuzione dei moduli, vedere Risolvere i problemi dei dispositivi IoT Edge dalla portale di Azure.

Visualizzare i dati generati

In questa guida introduttiva è stato creato un nuovo dispositivo IoT Edge, nel quale è stato installato il runtime di IoT Edge. È stato quindi usato il portale di Azure per distribuire un modulo di IoT Edge da eseguire nel dispositivo senza dovere apportare modifiche al dispositivo stesso.

In questo caso il modulo di cui è stato eseguito il push crea i dati dell'ambiente di esempio che potranno essere usati successivamente per il test. Il sensore simulato monitora un macchinario e l'ambiente intorno al macchinario. Questo sensore può trovarsi ad esempio in una sala server, in una fabbrica o su una turbina eolica. Il messaggio include la temperatura e l'umidità dell'ambiente, la temperatura e la pressione della macchina e un timestamp. Le esercitazioni di IoT Edge usano i dati creati da questo modulo come dati di test per le analisi.

Aprire di nuovo il prompt dei comandi nel dispositivo IoT Edge o usare la connessione SSH dall'interfaccia della riga di comando di Azure. Verificare che il modulo distribuito dal cloud sia in esecuzione nel dispositivo IoT Edge:

sudo iotedge list

Screenshot che mostra tre moduli nel dispositivo.

Visualizzare i messaggi inviati dal modulo del sensore temperatura:

sudo iotedge logs SimulatedTemperatureSensor -f

Screenshot che mostra i dati del modulo nella console di output.

Suggerimento

Quando viene fatto riferimento a nomi di moduli, i comandi di IoT Edge fanno distinzione tra maiuscole e minuscole.

Pulire le risorse

Se si vuole continuare con le esercitazioni su IoT Edge, è possibile usare il dispositivo registrato e configurato in questa guida introduttiva. In caso contrario, è possibile eliminare le risorse di Azure create per evitare addebiti.

Se la macchina virtuale e l'hub IoT sono stati creati in un nuovo gruppo di risorse, è possibile eliminare il gruppo e tutte le risorse associate. Verificare il contenuto del gruppo di risorse per assicurarsi che non vi siano dati da conservare. Se non si vuole eliminare l'intero gruppo, è possibile eliminare le singole risorse.

Importante

L'eliminazione di un gruppo di risorse è irreversibile.

Rimuovere il gruppo IoTEdgeResources. L'eliminazione di un gruppo di risorse potrebbe richiedere alcuni minuti.

az group delete --name IoTEdgeResources --yes

Per confermare la rimozione del gruppo di risorse, visualizzare l'elenco dei gruppi di risorse.

az group list

Passaggi successivi

In questa guida introduttiva è stato creato un dispositivo IoT Edge ed è stata usata l'interfaccia cloud di Azure IoT Edge per distribuire il codice nel dispositivo. A questo punto, è disponibile un dispositivo di test che genera dati non elaborati relativi al proprio ambiente.

Nell'esercitazione successiva si apprenderà come monitorare l'attività e l'integrità del dispositivo dal portale di Azure.