Condividi tramite


Configurare Azure IoT Edge per Azure Sphere

Azure IoT Edge fornisce un livello di filtro ed elaborazione dei dati tra un dispositivo a valle, come Azure Sphere e hub IoT di Azure. È consigliabile usare Azure IoT Edge se il dispositivo Azure Sphere produce una notevole quantità di dati o dati che richiedono la post-elaborazione.

Questo argomento illustra i passaggi per configurare un dispositivo Azure IoT Edge con Azure Sphere. Azure Sphere supporta entrambe le versioni 1.1 e 1.2 di Azure IoT Edge. Nelle istruzioni vengono annotate differenze significative. Le principali differenze sono:

  • Il nome del pacchetto è stato modificato da iotedge a aziot-edge.
  • Il file di configurazione predefinito ha un nuovo nome e un nuovo percorso. In Azure IoT Edge 1.1 il file di configurazione era /etc/iotedge/config.yaml. In Azure IoT Edge 1.2 il file di configurazione è /etc/aziot/config.toml.
  • Azure IoT Edge 1.2 richiede un nome di dominio completo (FQDN) accessibile tramite un server DNS sulla rete.

Dopo aver completato le attività in questo argomento, il dispositivo Azure Sphere sarà configurato per l'invio di dati a un hub IoT di Azure tramite un dispositivo azure IoT Edge che funge da gateway trasparente. È possibile aggiungere altri filtri ed elaborazioni dei dati con un modulo nel dispositivo Azure IoT Edge seguendo la guida del modulo di Azure IoT Edge.

Prima di iniziare

I passaggi descritti in questo argomento presuppongono che:

Importante

Anche se è possibile creare una sottoscrizione di Azure senza costi aggiuntivi, il processo di iscrizione richiede l'immissione di un numero di carta di credito. Azure offre diversi livelli di servizio in abbonamento. Per impostazione predefinita, il livello Standard, che richiede un addebito mensile per il servizio, viene selezionato quando si crea un'istanza di hub IoT di Azure. Per evitare un addebito mensile, seleziona il livello Gratuito. Il livello Gratuito include i servizi necessari per utilizzare il dispositivo con un'istanza di hub IoT di Azure, incluso il Dispositivo gemello. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Panoramica

La configurazione di un dispositivo Azure IoT Edge e la relativa configurazione per l'uso con un dispositivo Azure Sphere richiede un processo in più passaggi. È consigliabile pianificare circa 8 ore per completare i passaggi, soprattutto se non si ha familiarità con Azure IoT Edge. Se è la prima volta che si lavora con Azure IoT Edge, seguire le istruzioni della Guida introduttiva in ogni sezione per configurare e configurare un dispositivo IoT Edge che viene eseguito in una macchina virtuale Linux.

Questi passaggi devono essere completati una sola volta per ogni catalogo Azure Sphere e dispositivo Azure IoT Edge; tuttavia, ogni dispositivo Azure Sphere deve essere configurato manualmente in hub IoT di Azure e il dispositivo Azure IoT Edge deve essere impostato come padre del dispositivo Azure Sphere.

I passaggi di configurazione possono essere suddivisi in tre raggruppamenti logici:

  • Creare e configurare il dispositivo IoT Edge come gateway trasparente

    • Passaggio 1. Creare un dispositivo Azure IoT Edge.
    • Passaggio 2. Configurare il dispositivo gateway di Azure IoT Edge come server.
    • Passaggio 3. Aprire le porte dei dispositivi gateway di Azure IoT Edge per le comunicazioni.
    • Passaggio 4. Aggiornare il nome host del gateway in config.toml (Azure IoT Edge versione 1.2) o config.yaml (Azure IoT Edge versione 1.1).
  • Configurare il dispositivo Azure Sphere in hub IoT di Azure

    • Passaggio 5. Imposta il dispositivo Azure IoT Edge come padre del dispositivo Azure Sphere.
  • Stabilire una connessione attendibile tra il dispositivo Azure Sphere e il dispositivo IoT Edge

    • Passaggio 6. Fornisci il certificato CA catalogo del dispositivo Azure Sphere al dispositivo Azure IoT Edge.
    • Passaggio 7. Fornisci il certificato CA radice del dispositivo Azure IoT Edge al dispositivo Azure Sphere.

Passaggio 1. Creare un dispositivo Azure IoT Edge

È necessario configurare un dispositivo Azure IoT Edge e registrarlo in hub IoT di Azure, se non lo si è già fatto.

È possibile usare il servizio di provisioning dei dispositivi (DPS) per eseguire il provisioning del dispositivo Azure IoT Edge. Tuttavia, non è possibile usare DPS per eseguire il provisioning del dispositivo Azure Sphere. Il provisioning automatico dei dispositivi a valle del dispositivo Azure IoT Edge con hub IoT di Azure DPS non è supportato.

Puoi seguire i passaggi della Guida introduttiva di IoT Edge per configurare un dispositivo azure IoT Edge eseguito su una macchina virtuale Linux o un dispositivo Windows e registrarlo con hub IoT di Azure.

Usare i passaggi della Guida introduttiva per:

  • Registra un dispositivo Azure IoT Edge nell'istanza di hub IoT di Azure. Non creare un nuovo hub IoT in questo passaggio, registra semplicemente il dispositivo Azure IoT Edge nell'hub IoT già creato.
  • Installare e avviare il runtime di Azure IoT Edge nel dispositivo Azure IoT Edge.

Nota

Nella Guida introduttiva IoT Edge interrompere la distribuzione di un modulo.

Passaggio 2. Configurare il dispositivo gateway IoT Edge come server

Seguire le istruzioni per Configurare un dispositivo Azure IoT Edge come gateway trasparente (Azure IoT Edge 1.2) o Azure IoT Edge 1.1, ma interrompere la procedura quando si raggiunge la sezione "Aprire le porte nel dispositivo gateway". Anche se queste istruzioni indicano di copiare i file di certificato nel dispositivo IoT Edge, non copiare i file nella macchina virtuale fino al passaggio 8 di questa procedura.

Nell'ambito dei passaggi completati per configurare il gateway di dispositivo come server, sarà già disponibile:

  • Configurati i certificati di dispositivo di Azure IoT Edge.
  • Distribuito il modulo hub azure IoT Edge.
  • Routing configurato dei messaggi tramite Azure IoT Edge.

Come parte di questi passaggi, sono stati creati anche questi certificati:

  • Certificato CA radice: certs/azure-iot-test-only.root.ca.cert.pem
  • Certificato CA dispositivo e chiave privata (usata per registrare il dispositivo IoT Edge nel hub IoT):
    • certs/iot-edge-device-identity-<cert-name>-full-chain.cert.pem
    • private/iot-edge-device-identity-<cert-name>.key.pem
  • IoT Edge certificato CA e la chiave privata (da copiare in un dispositivo IoT Edge e a cui si fa riferimento nel file di configurazione):
    • certs/iot-edge-device-ca-<cert-name>-full-chain.cert.pem
    • private/iot-edge-device-ca-<cert-name>.key.pem

Se stai seguendo la Guida introduttiva, usa le istruzioni linux per configurare i certificati demo se il computer in cui stai generando i certificati è un computer basato su Linux. Usa le istruzioni di Windows per generare i certificati demo se il computer in cui vengono generati i certificati è un computer basato su Windows. Vedere la sezione per copiare i certificati radice in una macchina virtuale Linux o in un computer Windows locale.

Il certificato CA radice di Azure IoT Edge verrà modificato nel passaggio 7, ma sarà necessario il certificato originale nel passaggio 8. Conservare una copia del certificato originale in modo da poterlo riutilizzare.

Nota

Quando si aggiorna la sezione certificati del file config.toml (Azure IoT Edge 1.2) o config.yaml (Azure IoT Edge 1.1), assicurarsi che certificates: la riga nel file config.toml (Azure IoT Edge 1.2) o config.yaml (Azure IoT Edge 1.1) non abbia uno spazio vuoto precedente e che ognuno dei certificati annidati sia rientrato di due spazi.

Dopo aver aggiornato il file, verifica che il modulo edgehub sia in esecuzione nel dispositivo Azure IoT Edge:

sudo iotedge list

Per altre informazioni, vedere Come usare un dispositivo IoT Edge come gateway (Azure IoT Edge 1.2) o Azure IoT Edge 1.1.

Se si usano certificati di test, interrompere prima di generare il certificato del dispositivo a valle, come descritto in Creare certificati dispositivo a valle (Azure IoT Edge 1.2) o Azure IoT Edge 1.1.

Passaggio 3. Aprire le porte dei dispositivi gateway di Azure IoT Edge per le comunicazioni

I dispositivi gateway devono essere in grado di ricevere messaggi dai dispositivi a valle. Per il funzionamento di uno scenario gateway, almeno uno dei protocolli supportati dell'hub IoT deve essere aperto per il traffico in ingresso dai dispositivi a valle.

Azure Sphere utilizza il protocollo MQTT. Questo protocollo utilizza la porta 8883.

Per altre informazioni, vedere Aprire porte nel dispositivo gateway (Azure IoT Edge 1.2) o Azure IoT Edge 1.1.

Segui questi passaggi per aprire la porta 8883 in una macchina virtuale Windows dopo aver configurato un dispositivo Edge nella Guida introduttiva:

  1. Se necessario, accedere al portale di Azure con l'account Azure.
  2. Passare alla macchina virtuale creata nella sezione Passaggio 1: Creare un dispositivo Azure IoT Edge.
  3. Nella sezione Impostazioni a sinistra seleziona Rete, quindi Aggiungi regola porta in ingresso.
  4. Nel pannello Aggiungi regola porta in ingresso, inIntervalli di porte di destinazione, modificare il valore in 8883.
  5. In Protocollo selezionare TCP.
  6. In Nome modificare il valore in MQTT.
  7. Lascia predefinite tutte le altre impostazioni, quindi seleziona Aggiungi.

Segui questi passaggi per aprire la porta 8883 in una macchina virtuale Linux dopo aver configurato un dispositivo Azure IoT Edge nella Guida introduttiva:

  1. Esegui il seguente comando per verificare se la porta di MQTT è aperta:

    sudo netstat -lptu

  2. Se necessario, utilizzare il comando seguente per aprire la porta:

    sudo ufw allow 8883

Verrà definita una regola di sicurezza in ingresso per consentire la comunicazione del protocollo MQTT al Gateway di IoT Edge di Azure.

Passaggio 4. Aggiornare il nome host del gateway

Questo passaggio usa procedure diverse a seconda della versione di Azure IoT Edge in uso: Azure IoT Edge 1.2 o Azure IoT Edge 1.1.

Azure IoT Edge 1.2: Aggiornare il nome host del gateway in config.toml

Il runtime di Azure IoT Edge supporta nomi host composti da meno di 64 caratteri. I computer fisici in genere non hanno nomi host lunghi, ma se si usa una macchina virtuale come dispositivo azure IoT Edge, come nell'esempio nella Guida introduttiva, è necessario configurare manualmente il nome host.

Per risolvere i problemi relativi a un nome host non valido, vedere Risoluzioni degli errori comuni.

Seguire questa procedura per configurare il nome host del dispositivo Azure IoT Edge dopo aver configurato la porta MQTT nella Guida introduttiva:

  1. Trovare il nome di dominio completo (FQDN) per il gateway di IoT Edge passando al dispositivo IoT Edge (VM Linux) nel portale di Azure e copiando il valore per il nome DNS dalla pagina di panoramica.

  2. Se necessario, accedere al dispositivo Azure IoT Edge.

  3. Aprire il file config.toml in un editor di testo.

    /etc/aziot/config.toml

  4. Incollare l'FQDN nella sezione hostname di config.toml. Assicurarsi che il nome sia tutto minuscolo.

    hostname: "<iotedge_machinename>.<mydomain>"
    

    Nota

    Per progettazione con Azure IoT Edge v1.2 e versioni successive, hostname DEVE essere un nome DI DOMINIO COMPLETO (un indirizzo IP non è più consentito, come nella v1.1), quindi è obbligatorio un server DNS con il record A appropriato nella stessa rete.

  5. Riavvia il iotedge daemon.

    sudo systemctl restart iotedge

  6. Se vengono visualizzati errori (testo colorato preceduto da "[ERRORE]") nello stato, esaminare i log dei daemon per informazioni dettagliate sugli errori.

    sudo journalctl -u iotedge --no-pager --no-full

  7. Per evitare avvisi, configurare la configurazione DNS per i moduli nel dispositivo Azure IoT Edge per includere un file di configurazione in /etc/docker/daemon.json, ad esempio:

    {
         "dns": ["<IP address of your DNS server>"]
    }
    

Azure IoT Edge 1.1: Aggiornare il nome host del gateway in config.yaml

Il runtime di Azure IoT Edge supporta nomi host composti da meno di 64 caratteri. I computer fisici in genere non hanno nomi host lunghi, ma se si usa una macchina virtuale come dispositivo azure IoT Edge, come nell'esempio nella Guida introduttiva, è necessario configurare manualmente il nome host.

Per risolvere i problemi relativi a un nome host non valido, vedere Risoluzioni degli errori comuni.

Seguire questa procedura per configurare il nome host del dispositivo Azure IoT Edge dopo aver configurato la porta MQTT nella Guida introduttiva:

  1. Nel portale di Azure passare alla macchina virtuale. Copiare il valore per il nome DNS (FQDN del computer) dalla sezione Overview .

  2. Se necessario, accedere al dispositivo Azure IoT Edge.

  3. Aprire il file config.yaml in un editor di testo.

    /etc/iotedge/config.yaml

  4. Incollare l'FQDN nella sezione hostname di config.yaml. Assicurarsi che il nome sia tutto minuscolo.

    `hostname: "<machinename>.<region>.cloudapp.azure.com"`
    

    Nota

    Potrebbe essere necessario usare il nome computer semplice per il nome host (l'indirizzo IP o il nome host effettivo) se un resolver DNS è in rete, poiché Azure Sphere non supporta netbios.

  5. Riavvia il iotedge daemon.

    sudo systemctl restart iotedge

  6. Se vengono visualizzati errori (testo colorato preceduto da "[ERRORE]") nello stato, esaminare i log dei daemon per informazioni dettagliate sugli errori.

    sudo journalctl -u iotedge --no-pager --no-full

  7. Per evitare avvisi, configurare la configurazione DNS per i moduli nel dispositivo Azure IoT Edge per includere un file di configurazione in /etc/docker/daemon.json, ad esempio:

    {
        "dns": ["<IP address of your DNS server>"]
    }
    

Passaggio 5. Impostare il dispositivo Azure IoT Edge come padre del dispositivo Azure Sphere

Segui questi passaggi per impostare il dispositivo Azure IoT Edge come padre del dispositivo Azure Sphere:

  1. Passa al dispositivo Azure Sphere di cui è stato eseguito il provisioning manuale sopra.
  2. Seleziona ID dispositivo.
  3. Seleziona l'icona dell'ingranaggio in Nessun dispositivo padre.
  4. Selezionare il dispositivo azure IoT Edge che si vuole impostare come padre.
  5. Seleziona OK, quindi Salva.

Il dispositivo Azure IoT Edge diventa ora il padre del dispositivo Azure Sphere.

Passaggio 6. Fornire il certificato CA catalogo del dispositivo Azure Sphere al dispositivo IoT Edge

Per verificare i certificati del dispositivo Azure Sphere, il dispositivo Azure IoT Edge deve disporre di una propria copia della CA del catalogo.

  1. Scaricare il certificato CA catalogo, se non è già stato fatto. Nota: questa operazione dovrebbe essere già stata completata durante la configurazione del hub IoT di Azure.

    • Dal prompt dei comandi accedere con l'account di accesso di Azure:

      az login
      
    • Scarica il certificato CA per il catalogo Azure Sphere. Questo comando scarica il certificato in un file denominato CAcertificate.cer nella directory di lavoro corrente. Assicurarsi di scaricare il file in una directory in cui si dispone dell'autorizzazione di scrittura o che l'operazione di download non riuscirà. Il file di output deve avere un'estensione cer.

      az sphere ca-certificate download --resource-group MyResourceGroup --catalog MyCatalog --output-file CACertificate.cer
      
  2. Convertire il certificato CA catalogo in formato PEM. Le istruzioni di esempio per la conversione del formato in un computer Windows sono le seguenti:

    • Individuare il percorso del certificato nel computer e fare doppio clic sul certificato per aprirlo.
    • Aprire la scheda Dettagli e selezionare Copia nel file.
    • Nell'Esportazione guidata certificati selezionare Avanti.
    • Seleziona il formato codificato Base 64 X.509 (CER), quindi seleziona Avanti.
    • Immettere il nome file del certificato da esportare, quindi selezionare Avanti.
    • Selezionare Fine per completare la procedura guidata.
    • Rinominare il file del certificato scaricato con estensione pem.
  3. Accodare il certificato del catalogo al certificato radice di Azure IoT Edge. Tenere presente che i certificati di Azure IoT Edge sono stati creati nel passaggio 2.

    • Se necessario, accedere al dispositivo Azure IoT Edge.
    • Individuare il percorso del certificato CA radice di IoT Edge dispositivo e aprirlo in un editor di testo. Se è stata seguita la Guida introduttiva, sono stati usati gli script forniti nel repository git di Azure IoT Edge per creare certificati demo, il certificato CA radice è denominato azure-iot-test-only.root.ca.cert.pem.
    • Aprire il certificato CA del catalogo Azure Sphere (in formato PEM) in un editor di testo. Copiare il contenuto e incollarlo alla fine del IoT Edge certificato CA radice.
    • Salvare le modifiche apportate al certificato CA radice di Azure IoT Edge, quindi chiudere il file.
    • Riavviare il dispositivo Azure IoT Edge. Per un dispositivo IoT Edge Linux Azure, eseguire: sudo systemctl restart iotedge.
    • Verificare che i moduli siano in esecuzione nel dispositivo Azure IoT Edge. Per un dispositivo IoT Edge Linux Azure, eseguire: sudo iotedge list.

Passaggio 7. Fornire il certificato CA radice del dispositivo Azure IoT Edge al dispositivo Azure Sphere

Per verificare i certificati del dispositivo Azure IoT Edge, il dispositivo Azure Sphere (il dispositivo a valle) deve disporre di una propria copia del certificato CA radice del dispositivo Azure IoT Edge configurato nel passaggio 2.

Per altre informazioni, vedere Connettere un dispositivo a valle a un gateway di Azure IoT Edge.

  1. Individuare il certificato radice del dispositivo Azure IoT Edge originale.

    • Tenere presente che il certificato radice del dispositivo azure IoT Edge originale è quello creato nel passaggio 2.
    • Se è stata seguita la Guida introduttiva e quindi sono stati usati gli script forniti nel repository git IoT Edge per creare certificati demo, il certificato CA radice è denominato azure-iot-test-only.root.ca.cert.pem.
  2. Copiare il certificato radice di Azure IoT Edge nel dispositivo Azure Sphere aggiungendolo al pacchetto dell'applicazione.

Passaggio 8. Copiare il certificato radice IoT in un computer remoto

Seguire questa procedura per copiare il certificato radice di Azure IoT Edge in una macchina virtuale Linux remota o in un computer Windows locale:

  • Puoi installare lo strumento WinSCP per trasferire i file. Lo strumento fornisce un'interfaccia grafica in modo che sia più facile da usare rispetto a un approccio da riga di comando.

  • Per usare la riga di comando, usare lo strumento da riga di comando SCP (Secure Copy).

  • Per trasferire un file da un computer Windows locale a una macchina virtuale Linux remota, esegui il comando seguente in Windows PowerShell:

    powershell -Command scp -r <path-to-file-name> <userName@remote-ip>:<path-to-destination-directory>
    

    Sintassi di esempio:

    scp C:\Documents\cert.pem AzureUser@edgevmname-west.westus22.cloudapp.azure.com:/home/azureUser/test/

  • Per trasferire un file da una macchina virtuale Linux remota a un computer Windows locale, esegui il comando seguente in Windows PowerShell:

    powershell -Command scp -r <userName@remote-ip>:<path-to-file-name> <path-to-destination-dir>
    

    Sintassi di esempio:

    scp azureUser@edgevmname-west.westus22.cloudapp.azure.com:/home/azureUser/test/cert.pem C:\Documents\

Risoluzione dei problemi relativi

Se si verificano problemi durante l'esecuzione di Azure IoT Edge nel proprio ambiente, usare questi articoli per la risoluzione dei problemi e la diagnostica:

Passaggi successivi

  • Dopo aver completato i passaggi descritti in questo argomento, è possibile eseguire l'esempio IoT di Azure seguendo le istruzioni per la connessione con Azure IoT Edge.