Share via


Så här ansluter du enheter via en transparent IoT Edge-gateway

En IoT Edge-enhet kan fungera som en gateway som tillhandahåller en anslutning mellan andra enheter i ett lokalt nätverk och ditt IoT Central-program. Du använder en gateway när enheten inte kan komma åt ditt IoT Central-program direkt.

IoT Edge stöder transparenta och översättningsgatewaymönster. Den här artikeln sammanfattar hur du implementerar det transparenta gatewaymönstret. I det här mönstret skickar gatewayen meddelanden från den underordnade enheten till IoT Hub-slutpunkten i ditt IoT Central-program. Gatewayen manipulerar inte meddelandena när de passerar. I IoT Central visas varje underordnad enhet som underordnad gatewayenheten:

Diagram that shows IoT Edge as a transparent gateway.

För enkelhetens skull använder den här artikeln virtuella datorer som värd för underordnade enheter och gatewayenheter. I ett verkligt scenario skulle den underordnade enheten och gatewayen köras på fysiska enheter i ditt lokala nätverk.

Den här artikeln visar hur du implementerar scenariot med hjälp av IoT Edge 1.4-körningen.

Förutsättningar

För att utföra stegen i den här artikeln behöver du:

Om du vill följa stegen i den här artikeln laddar du ned följande filer till datorn:

Importera distributionsmanifest

Varje IoT Edge-enhet behöver ett distributionsmanifest för att konfigurera IoT Edge-körningen. Så här importerar du ett distributionsmanifest för den transparenta IoT Edge-gatewayen:

  1. Gå till Edge-manifest.

  2. Välj + Ny, ange ett namn för distributionsmanifestet, till exempel Transparent gateway , och ladda sedan upp den EdgeTransparentGatewayManifest.json fil som du laddade ned tidigare.

  3. Välj Skapa för att spara distributionsmanifestet i programmet.

Lägga till enhetsmallar

Både underordnade enheter och gatewayenheten kan använda enhetsmallar i IoT Central. Med IoT Central kan du modellera relationen mellan dina underordnade enheter och din gateway så att du kan visa och hantera dem när de är anslutna. En enhetsmall krävs inte för att koppla en underordnad enhet till en gateway.

Skapa en enhetsmall för en underordnad enhet genom att skapa en standardenhetsmall som modellerar enhetens funktioner. Exemplet som visas i den här artikeln använder den termostatenhetsmodell som du laddade ned.

Så här skapar du en enhetsmall för en underordnad enhet:

  1. Skapa en enhetsmall och välj IoT-enhet som malltyp.

  2. På sidan Anpassa i guiden anger du ett namn som Termostat för enhetsmallen.

  3. När du har skapat enhetsmallen väljer du Importera en modell. Välj en modell, till exempel den thermostat-1.json fil som du laddade ned tidigare.

  4. Om du vill generera vissa standardvyer för termostaten väljer du vyer och sedan Generera standardvyer.

  5. Publicera enhetsmallen.

Så här skapar du en enhetsmall för en transparent IoT Edge-gatewayenhet:

  1. Skapa en enhetsmall och välj Azure IoT Edge som malltyp.

  2. På sidan Anpassa i guiden anger du ett namn som Edge Gateway för enhetsmallen.

  3. På sidan Anpassa i guiden kontrollerar du Att det här är en gatewayenhet.

  4. På sidan Granska väljer du Skapa.

  5. På sidan Skapa en modell väljer du Anpassad modell.

  6. Lägg till en post i Relationer i den underordnade enhetsmallen.

Följande skärmbild visar sidan Relationer för en IoT Edge-gatewayenhet med underordnade enheter som använder termostatenhetsmallen :

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

Föregående skärmbild visar en enhetsmall för IoT Edge-gateway utan att några moduler har definierats. En transparent gateway kräver inga moduler eftersom IoT Edge-körningen vidarebefordrar meddelanden från nedströmsenheterna direkt till IoT Central. Om själva gatewayen behöver skicka telemetri, synkronisera egenskaper eller hantera kommandon kan du definiera dessa funktioner i rotkomponenten eller i en modul.

Lägg till nödvändiga molnegenskaper och vyer innan du publicerar gatewayen och underordnade enhetsmallar.

Lägg till enheterna

När du lägger till enheterna i ditt IoT Central-program kan du definiera relationen mellan de underordnade enheterna och den transparenta gatewayen.

Så här lägger du till enheterna:

  1. Gå till enhetssidan i ditt IoT Central-program.

  2. Lägg till en instans av den transparenta gateway-IoT Edge-enheten. När du lägger till enheten kontrollerar du att du väljer distributionsmanifestet transparent gateway . I den här artikeln är edgegatewaygatewayens enhets-ID .

  3. Lägg till en eller flera instanser av den underordnade enheten. I den här artikeln är nedströmsenheter termostater med ID:er thermostat1 och thermostat2.

  4. I enhetslistan väljer du varje underordnad enhet och väljer Anslut till gateway.

Följande skärmbild visar hur du kan visa listan över enheter som är anslutna till en gateway på sidan Underordnade enheter :

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

I en transparent gateway ansluter de underordnade enheterna till själva gatewayen, inte till en anpassad modul som hanteras av gatewayen.

Innan du distribuerar enheterna behöver du följande:

  • ID-omfång för ditt IoT Central-program.
  • Enhets-ID-värden för gatewayen och underordnade enheter.
  • Primära nyckelvärden för gatewayen och underordnade enheter.

Om du vill hitta dessa värden navigerar du till varje enhet i enhetslistan och väljer Anslut. Anteckna dessa värden innan du fortsätter.

Dricks

Du kan ansluta enheterna och upprätta relationer utan att först skapa enhetsmallar för enheterna. Du kan koppla en otilldelade underordnad enhet till en otilldelade gatewayenhet.

Distribuera gatewayen och enheterna

För att du ska kunna prova det här scenariot visar följande steg hur du distribuerar gatewayen och underordnade enheter till virtuella Azure-datorer.

Dricks

Information om hur du distribuerar IoT Edge-körningen till en fysisk enhet finns i Skapa en IoT Edge-enhet i IoT Edge-dokumentationen.

Om du vill testa scenariot med transparent gateway väljer du följande knapp för att distribuera två virtuella Linux-datorer. En virtuell dator har IoT Edge 1.4-körningen installerad och är den transparenta IoT Edge-gatewayen. Den andra virtuella datorn är en nedströmsenhet där du kör kod för att skicka simulerad termostattelemetri:

Deploy to Azure Button

När de två virtuella datorerna distribueras och körs kontrollerar du att IoT Edge-gatewayenheten körs på den edgegateway virtuella datorn:

  1. Gå till sidan Enheter i ditt IoT Central-program. Om IoT Edge-gatewayenheten är ansluten till IoT Central är dess status Etablerad.

  2. Öppna IoT Edge-gatewayenheten och kontrollera statusen för modulerna på sidan Moduler . Om IoT Edge-körningen har startats är statusen för modulerna $edgeAgent och $edgeHub Körs:

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

    Dricks

    Du kan behöva vänta i flera minuter medan den virtuella datorn startas och enheten etableras i ditt IoT Central-program.

Konfigurera gatewayen

För att din IoT Edge-enhet ska fungera som en transparent gateway behöver den vissa certifikat för att bevisa sin identitet för alla underordnade enheter. I den här artikeln används democertifikat. I en produktionsmiljö använder du certifikat från certifikatutfärdare.

Så här genererar du democertifikaten och installerar dem på din gatewayenhet:

  1. Använd SSH för att ansluta till och logga in på den virtuella gatewayenhetens virtuella dator.

  2. Kör följande kommandon för att klona IoT Edge-lagringsplatsen och generera dina democertifikat:

    # 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"
    

    När du har kört föregående kommandon är följande filer redo att användas i nästa steg:

    • ~/certs/certs/azure-iot-test-only.root.ca.cert.pem – rotcertifikatutfärdarcertifikatet som används för att göra alla andra democertifikat för testning av ett IoT Edge-scenario.
    • ~/certs/certs/iot-edge-device-mycacert-full-chain.cert.pem – ett certifikat för enhetscertifikatutfärdare som refereras från IoT Edge-konfigurationsfilen. I ett gatewayscenario är det här CA-certifikatet hur IoT Edge-enheten verifierar sin identitet till underordnade enheter.
    • ~/certs/private/iot-edge-device-mycacert.key.pem – den privata nyckel som är associerad med certifikatutfärdarcertifikatet för enheten.

    Mer information om dessa democertifikat finns i Skapa democertifikat för att testa IoT Edge-enhetsfunktioner.

  3. Öppna filen config.toml i en textredigerare. Till exempel:

    sudo nano /etc/aziot/config.toml
    
  4. Leta upp följande inställningar i konfigurationsfilen. Lägg till certifikatinställningarna på följande sätt:

    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"
    

    I föregående exempel förutsätter vi att du är inloggad som AzureUser och har skapat ett certifikat för enhetscertifikatutfärdare med namnet "mycacert".

  5. Spara ändringarna och starta om IoT Edge-körningen:

    sudo iotedge config apply
    

Om IoT Edge-körningen startar efter ändringarna ändras statusen för $edgeAgent - och $edgeHub-modulerna till Körssidan Moduler för gatewayenheten i IoT Central.

Om körningen inte startar kontrollerar du de ändringar du gjorde i IoT Edge-konfigurationsfilen och läser Felsöka din IoT Edge-enhet.

Den transparenta gatewayen är nu konfigurerad och redo att börja vidarebefordra telemetri från underordnade enheter.

Etablera en underordnad enhet

IoT Central förlitar sig på DPS (Device Provisioning Service) för att etablera enheter i IoT Central. För närvarande kan IoT Edge inte använda DPS-etablering av en nedströmsenhet till ditt IoT Central-program. Följande steg visar hur du etablerar thermostat1 enheten manuellt. För att slutföra de här stegen behöver du en miljö med Python installerat och internetanslutning. Kontrollera Azure IoT Python SDK för aktuella versionskrav för Python. Azure Cloud Shell har Python förinstallerat:

  1. Kör följande kommando för att installera modulen azure.iot.device :

    pip install azure.iot.device
    
  2. Kör följande kommando för att ladda ned Python-skriptet som utför enhetsetablering:

    wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/transparent-gateway-1-4/provision_device.py
    
  3. Om du vill etablera den thermostat1 underordnade enheten i ditt IoT Central-program kör du följande kommandon och ersätter {your application id scope} och {your device primary key}. Du antecknade dessa värden när du lade till enheterna i ditt IoT Central-program:

    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
    

I ditt IoT Central-program kontrollerar du att enhetens enhetsstatus thermostat1 nu har etablerats.

Konfigurera en underordnad enhet

I föregående avsnitt konfigurerade du den edgegateway virtuella datorn med democertifikaten så att den kan köras som gateway. Den leafdevice virtuella datorn är redo att installera en termostatsimulator som använder gatewayen för att ansluta till IoT Central.

Den leafdevice virtuella datorn behöver en kopia av rotcertifikatutfärdarcertifikatet som du skapade på den edgegateway virtuella datorn. Kopiera filen /home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem från den edgegateway virtuella datorn till din hemkatalog på den leafdevice virtuella datorn. Du kan använda scp-kommandot för att kopiera filer mellan virtuella Linux-datorer. Till exempel från datorn leafdevice :

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

Information om hur du kontrollerar anslutningen från den underordnade enheten till gatewayen finns i Testa gatewayanslutningen.

Så här kör du termostatsimulatorn på den leafdevice virtuella datorn:

  1. Använd SSH för att ansluta till och logga in på den leafdevice virtuella datorn.

  2. Ladda ned Python-exemplet till din hemkatalog:

    cd ~
    wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/transparent-gateway-1-4/simple_thermostat.py
    
  3. Installera Python-modulen för Azure IoT-enheten:

    sudo apt update
    sudo apt install python3-pip
    pip3 install azure.iot.device
    
  4. Ange miljövariablerna för att konfigurera exemplet. Ersätt {your device shared key} med primärnyckeln för du thermostat1 antecknade tidigare. Dessa variabler förutsätter att namnet på den virtuella gatewaydatorn är edgegateway och ID:t för termostatenheten är 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
    

    Observera hur anslutningssträng använder namnet på gatewayenheten och inte namnet på en IoT-hubb.

  5. Om du vill köra koden använder du följande kommando:

    python3 simple_thermostat.py
    

    Utdata från det här kommandot ser ut så här:

    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
    ...
    

    Dricks

    Om du ser ett fel när den underordnade enheten försöker ansluta. Prova att köra enhetsetableringsstegen igen.

  6. Om du vill se telemetrin i IoT Central går du till sidan Översikt för termostat1-enheten :

    Screenshot showing telemetry from the downstream device.

    På sidan Om kan du visa egenskapsvärden som skickas från den underordnade enheten och på sidan Kommando kan du anropa kommandon på den underordnade enheten.