Share via


Come connettere i dispositivi tramite un gateway trasparente IoT Edge

Un dispositivo IoT Edge può fungere da gateway che fornisce una connessione tra altri dispositivi in una rete locale e l'applicazione IoT Central. Si usa un gateway quando il dispositivo non può accedere direttamente all'applicazione IoT Central.

IoT Edge supporta i modelli di gateway trasparente e di traduzione. Questo articolo riepiloga come implementare il modello di gateway trasparente. In questo modello, il gateway passa i messaggi dal dispositivo downstream all'endpoint hub IoT nell'applicazione IoT Central. Il gateway non modifica i messaggi man mano che passano. In IoT Central ogni dispositivo downstream viene visualizzato come figlio del dispositivo gateway:

Diagram that shows IoT Edge as a transparent gateway.

Per semplicità, questo articolo usa macchine virtuali per ospitare i dispositivi downstream e gateway. In uno scenario reale, il dispositivo downstream e il gateway vengono eseguiti nei dispositivi fisici nella rete locale.

Questo articolo illustra come implementare lo scenario usando il runtime di IoT Edge 1.4.

Prerequisiti

Per completare i passaggi di questo articolo sono necessari:

Per seguire la procedura descritta in questo articolo, scaricare i file seguenti nel computer:

Importare il manifesto della distribuzione

Ogni dispositivo IoT Edge necessita di un manifesto di distribuzione per configurare il runtime di IoT Edge. Per importare un manifesto della distribuzione per il gateway trasparente IoT Edge:

  1. Passare a Manifesti edge.

  2. Selezionare + Nuovo, immettere un nome per il manifesto della distribuzione, ad esempio Transparent gateway e quindi caricare il file EdgeTransparentGatewayManifest.json scaricato in precedenza.

  3. Selezionare Crea per salvare il manifesto della distribuzione nell'applicazione.

Aggiungere modelli di dispositivo

Sia i dispositivi downstream che il dispositivo gateway possono usare modelli di dispositivo in IoT Central. IoT Central consente di modellare la relazione tra i dispositivi downstream e il gateway in modo da poterli visualizzare e gestire dopo la connessione. Un modello di dispositivo non è necessario per collegare un dispositivo downstream a un gateway.

Per creare un modello di dispositivo per un dispositivo downstream, creare un modello di dispositivo standard che modella le funzionalità del dispositivo. L'esempio illustrato in questo articolo usa il modello di dispositivo termostato scaricato.

Per creare un modello di dispositivo per un dispositivo downstream:

  1. Creare un modello di dispositivo e scegliere Dispositivo IoT come tipo di modello.

  2. Nella pagina Personalizza della procedura guidata immettere un nome come Termostato per il modello di dispositivo.

  3. Dopo aver creato il modello di dispositivo, selezionare Importa un modello. Selezionare un modello, ad esempio il file thermostat-1.json scaricato in precedenza.

  4. Per generare alcune visualizzazioni predefinite per il termostato, selezionare visualizzazioni e quindi scegliere Genera visualizzazioni predefinite.

  5. Pubblicare il modello di dispositivo.

Per creare un modello di dispositivo per un dispositivo gateway trasparente IoT Edge:

  1. Creare un modello di dispositivo e scegliere Azure IoT Edge come tipo di modello.

  2. Nella pagina Personalizza della procedura guidata immettere un nome, ad esempio Gateway Edge per il modello di dispositivo.

  3. Nella pagina Personalizza della procedura guidata selezionare Si tratta di un dispositivo gateway.

  4. Nella pagina Rivedi selezionare Crea.

  5. Nella pagina Crea un modello selezionare Modello personalizzato.

  6. Aggiungere una voce in Relazioni al modello di dispositivo downstream.

Lo screenshot seguente mostra la pagina Relazioni per un dispositivo gateway IoT Edge con dispositivi downstream che usano il modello di dispositivo Thermostat :

Screenshot showing IoT Edge gateway device template relationship with a thermostat downstream device template.

Lo screenshot precedente mostra un modello di dispositivo gateway IoT Edge senza moduli definiti. Un gateway trasparente non richiede moduli perché il runtime di IoT Edge inoltra i messaggi dai dispositivi downstream direttamente a IoT Central. Se il gateway stesso deve inviare dati di telemetria, sincronizzare le proprietà o gestire i comandi, è possibile definire queste funzionalità nel componente radice o in un modulo.

Aggiungere le proprietà e le visualizzazioni cloud necessarie prima di pubblicare i modelli di dispositivo gateway e downstream.

Aggiungere i dispositivi

Quando si aggiungono i dispositivi all'applicazione IoT Central, è possibile definire la relazione tra i dispositivi downstream e il gateway trasparente.

Per aggiungere i dispositivi:

  1. Passare alla pagina dispositivi nell'applicazione IoT Central.

  2. Aggiungere un'istanza del dispositivo IoT Edge gateway trasparente. Quando si aggiunge il dispositivo, assicurarsi di selezionare il manifesto della distribuzione del gateway trasparente. In questo articolo l'ID dispositivo gateway è edgegateway.

  3. Aggiungere una o più istanze del dispositivo downstream. In questo articolo i dispositivi downstream sono termostati con ID thermostat1 e thermostat2.

  4. Nell'elenco dei dispositivi selezionare ogni dispositivo downstream e selezionare Connetti al gateway.

Lo screenshot seguente mostra come visualizzare l'elenco dei dispositivi collegati a un gateway nella pagina Dispositivi downstream:

Screenshot that shows the list of downstream devices connected to a transparent gateway.

In un gateway trasparente, i dispositivi downstream si connettono al gateway stesso, non a un modulo personalizzato ospitato dal gateway.

Prima di distribuire i dispositivi, è necessario:

  • AMBITO ID dell'applicazione IoT Central.
  • Valori ID dispositivo per il gateway e i dispositivi downstream.
  • Valori di chiave primaria per i dispositivi gateway e downstream.

Per trovare questi valori, passare a ogni dispositivo nell'elenco dei dispositivi e selezionare Connessione. Prendere nota di questi valori prima di continuare.

Suggerimento

È possibile connettere i dispositivi e stabilire relazioni senza prima creare modelli di dispositivo per i dispositivi. È possibile collegare un dispositivo downstream non assegnato a un dispositivo gateway non assegnato.

Distribuire il gateway e i dispositivi

Per provare questo scenario, i passaggi seguenti illustrano come distribuire il gateway e i dispositivi downstream in macchine virtuali di Azure.

Suggerimento

Per informazioni su come distribuire il runtime di IoT Edge in un dispositivo fisico, vedere Creare un dispositivo IoT Edge nella documentazione di IoT Edge.

Per provare lo scenario del gateway trasparente, selezionare il pulsante seguente per distribuire due macchine virtuali Linux. Una macchina virtuale ha installato il runtime di IoT Edge 1.4 ed è il gateway IoT Edge trasparente. L'altra macchina virtuale è un dispositivo downstream in cui si esegue il codice per inviare i dati di telemetria del termostato simulato:

Deploy to Azure Button

Quando le due macchine virtuali vengono distribuite ed eseguite, verificare che il dispositivo gateway IoT Edge sia in esecuzione nella edgegateway macchina virtuale:

  1. Passare alla pagina Dispositivi nell'applicazione IoT Central. Se il dispositivo gateway IoT Edge è connesso a IoT Central, viene effettuato il provisioning dello stato.

  2. Aprire il dispositivo gateway IoT Edge e verificare lo stato dei moduli nella pagina Moduli . Se il runtime di IoT Edge è stato avviato correttamente, lo stato dei moduli $edgeAgent e $edgeHub è In esecuzione:

    Screenshot showing the $edgeAgent and $edgeHub version 1.4 modules running on the IoT Edge gateway.

    Suggerimento

    Potrebbe essere necessario attendere alcuni minuti durante l'avvio della macchina virtuale e il provisioning del dispositivo nell'applicazione IoT Central.

Configurare il gateway

Affinché il dispositivo IoT Edge funzioni come gateway trasparente, è necessario che alcuni certificati dimostrino la propria identità a qualsiasi dispositivo downstream. Questo articolo usa i certificati demo. In un ambiente di produzione usare i certificati dell'autorità di certificazione.

Per generare i certificati demo e installarli nel dispositivo gateway:

  1. Usare SSH per connettersi e accedere alla macchina virtuale del dispositivo gateway.

  2. Eseguire i comandi seguenti per clonare il repository IoT Edge e generare i certificati demo:

    # Clone the repo
    cd ~
    git clone https://github.com/Azure/iotedge.git
    
    # Generate the demo certificates
    mkdir certs
    cd certs
    cp ~/iotedge/tools/CACertificates/*.cnf .
    cp ~/iotedge/tools/CACertificates/certGen.sh .
    ./certGen.sh create_root_and_intermediate
    ./certGen.sh create_edge_device_ca_certificate "mycacert"
    

    Dopo aver eseguito i comandi precedenti, i file seguenti sono pronti per l'uso nei passaggi successivi:

    • ~/certs/certs/azure-iot-test-only.root.ca.cert.pem - Certificato CA radice usato per creare tutti gli altri certificati demo per testare uno scenario IoT Edge.
    • ~/certs/certs/iot-edge-device-mycacert-full-chain.cert.pem - Certificato ca del dispositivo a cui viene fatto riferimento dal file di configurazione di IoT Edge. In uno scenario gateway, questo certificato della CA è il modo in cui il dispositivo IoT Edge verifica l'identità dei dispositivi downstream.
    • ~/certs/private/iot-edge-device-mycacert.key.pem : chiave privata associata al certificato della CA del dispositivo.

    Per altre informazioni su questi certificati demo, vedere Creare certificati demo per testare le funzionalità dei dispositivi IoT Edge.

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

    sudo nano /etc/aziot/config.toml
    
  4. Individuare le impostazioni seguenti nel file di configurazione. Aggiungere le impostazioni del certificato come indicato di seguito:

    trust_bundle_cert = "file:///home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem"
    
    [edge_ca]
    cert = "file:///home/AzureUser/certs/certs/iot-edge-device-ca-mycacert-full-chain.cert.pem"
    pk = "file:///home/AzureUser/certs/private/iot-edge-device-ca-mycacert.key.pem"
    

    L'esempio illustrato sopra presuppone che l'accesso sia stato eseguito come AzureUser e che sia stato creato un certificato della CA del dispositivo denominato "mycacert".

  5. Salvare le modifiche e riavviare il runtime di IoT Edge:

    sudo iotedge config apply
    

Se il runtime di IoT Edge viene avviato correttamente dopo le modifiche, lo stato dei moduli $edgeAgent e $edgeHub cambia in In esecuzione nella pagina Moduli per il dispositivo gateway in IoT Central.

Se il runtime non viene avviato, controllare le modifiche apportate nel file di configurazione di IoT Edge e vedere Risolvere i problemi del dispositivo IoT Edge.

Il gateway trasparente è ora configurato e pronto per avviare l'inoltro dei dati di telemetria dai dispositivi downstream.

Effettuare il provisioning di un dispositivo downstream

IoT Central si basa sul servizio Device Provisioning per effettuare il provisioning dei dispositivi in IoT Central. Attualmente, IoT Edge non può usare il provisioning di un dispositivo downstream nell'applicazione IoT Central. I passaggi seguenti illustrano come effettuare manualmente il provisioning del thermostat1 dispositivo. Per completare questi passaggi, è necessario un ambiente con La connettività Python installata e Internet. Controllare Azure IoT Python SDK per i requisiti correnti per la versione di Python. Azure Cloud Shell include Python preinstallato:

  1. Eseguire il comando seguente per installare il azure.iot.device modulo:

    pip install azure.iot.device
    
  2. Eseguire il comando seguente per scaricare lo script Python che esegue il provisioning del dispositivo:

    wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/transparent-gateway-1-4/provision_device.py
    
  3. Per effettuare il provisioning del thermostat1 dispositivo downstream nell'applicazione IoT Central, eseguire i comandi seguenti, sostituendo {your application id scope} e {your device primary key}. Quando i dispositivi sono stati aggiunti all'applicazione IoT Central, si è preso nota di questi valori:

    export IOTHUB_DEVICE_DPS_DEVICE_ID=thermostat1
    export IOTHUB_DEVICE_DPS_ID_SCOPE={your application id scope}
    export IOTHUB_DEVICE_DPS_DEVICE_KEY={your device primary key}
    python provision_device.py
    

Nell'applicazione IoT Central verificare che lo stato del dispositivo sia thermostat1 ora Provisioning.

Configurare un dispositivo a valle

Nella sezione precedente è stata configurata la edgegateway macchina virtuale con i certificati demo per abilitarla per l'esecuzione come gateway. La leafdevice macchina virtuale è pronta per installare un simulatore di termostato che usa il gateway per connettersi a IoT Central.

La leafdevice macchina virtuale richiede una copia del certificato CA radice creato nella edgegateway macchina virtuale. Copiare il file /home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem dalla edgegateway macchina virtuale alla home directory nella macchina virtuale.leafdevice È possibile usare il comando scp per copiare file tra macchine virtuali Linux. Ad esempio, dal leafdevice computer:

scp AzureUser@edgegateway:/home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem .

Per informazioni su come controllare la connessione dal dispositivo downstream al gateway, vedere Testare la connessione gateway.

Per eseguire il simulatore termostato nella leafdevice macchina virtuale:

  1. Usare SSH per connettersi e accedere leafdevice alla macchina virtuale.

  2. Scaricare l'esempio Python nella home directory:

    cd ~
    wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/transparent-gateway-1-4/simple_thermostat.py
    
  3. Installare il modulo Python per dispositivi Azure IoT:

    sudo apt update
    sudo apt install python3-pip
    pip3 install azure.iot.device
    
  4. Impostare le variabili di ambiente per configurare l'esempio. Sostituire {your device shared key} con la chiave primaria dell'oggetto thermostat1 annotato in precedenza. Queste variabili presuppongono che il nome della macchina virtuale del gateway sia edgegateway e che l'ID del dispositivo termostato sia thermostat1:

    export IOTHUB_DEVICE_SECURITY_TYPE=connectionString
    export IOTHUB_DEVICE_CONNECTION_STRING="HostName=edgegateway;DeviceId=thermostat1;SharedAccessKey={your device shared key}"
    export IOTEDGE_ROOT_CA_CERT_PATH=~/azure-iot-test-only.root.ca.cert.pem
    

    Si noti che il stringa di connessione usa il nome del dispositivo gateway e non il nome di un hub IoT.

  5. Per eseguire il codice, usare il comando seguente:

    python3 simple_thermostat.py
    

    L'output di questo comando è simile al seguente:

    Connecting using Connection String HostName=edgegateway;DeviceId=thermostat1;SharedAccessKey={your device shared key}
    Listening for command requests and property updates
    Press Q to quit
    Sending telemetry for temperature
    Sent message
    Sent message
    Sent message
    ...
    

    Suggerimento

    Se viene visualizzato un errore quando il dispositivo downstream tenta di connettersi. Provare a eseguire nuovamente i passaggi di provisioning dei dispositivi precedenti.

  6. Per visualizzare i dati di telemetria in IoT Central, passare alla pagina Panoramica per il dispositivo thermostat1 :

    Screenshot showing telemetry from the downstream device.

    Nella pagina Informazioni è possibile visualizzare i valori delle proprietà inviati dal dispositivo downstream e nella pagina Comando è possibile chiamare i comandi nel dispositivo downstream.

Passaggi successivi

Dopo aver appreso come configurare un gateway trasparente con IoT Central, il passaggio successivo consigliato consiste nel ottenere altre informazioni su IoT Edge.