Share via


Apparaten verbinden via een transparante IoT Edge-gateway

Een IoT Edge-apparaat kan fungeren als een gateway die een verbinding biedt tussen andere apparaten in een lokaal netwerk en uw IoT Central-toepassing. U gebruikt een gateway wanneer het apparaat geen rechtstreeks toegang heeft tot uw IoT Central-toepassing.

IoT Edge ondersteunt de transparante en vertaalgatewaypatronen. In dit artikel wordt beschreven hoe u het transparante gatewaypatroon implementeert. In dit patroon geeft de gateway berichten van het downstreamapparaat door aan het IoT Hub-eindpunt in uw IoT Central-toepassing. De gateway bewerkt de berichten niet terwijl ze worden doorgegeven. In IoT Central wordt elk downstreamapparaat weergegeven als onderliggend apparaat voor het gatewayapparaat:

Diagram that shows IoT Edge as a transparent gateway.

Ter vereenvoudiging gebruikt dit artikel virtuele machines om de downstream- en gatewayapparaten te hosten. In een echt scenario worden het downstreamapparaat en de gateway uitgevoerd op fysieke apparaten in uw lokale netwerk.

In dit artikel wordt beschreven hoe u het scenario implementeert met behulp van de IoT Edge 1.4-runtime.

Vereisten

U hebt het volgende nodig om de stappen in dit artikel te voltooien:

Als u de stappen in dit artikel wilt volgen, downloadt u de volgende bestanden naar uw computer:

Implementatiemanifest importeren

Elk IoT Edge-apparaat heeft een implementatiemanifest nodig om de IoT Edge-runtime te configureren. Een implementatiemanifest importeren voor de transparante IoT Edge-gateway:

  1. Navigeer naar Edge-manifesten.

  2. Selecteer + Nieuw, voer een naam in voor het implementatiemanifest, zoals transparante gateway , en upload vervolgens het EdgeTransparentGatewayManifest.json bestand dat u eerder hebt gedownload.

  3. Selecteer Maken om het implementatiemanifest op te slaan in uw toepassing.

Apparaatsjablonen toevoegen

Zowel de downstreamapparaten als het gatewayapparaat kunnen apparaatsjablonen gebruiken in IoT Central. Met IoT Central kunt u de relatie tussen uw downstreamapparaten en uw gateway modelleren, zodat u deze kunt bekijken en beheren nadat ze zijn verbonden. Een apparaatsjabloon is niet vereist om een downstreamapparaat aan een gateway te koppelen.

Als u een apparaatsjabloon voor een downstreamapparaat wilt maken, maakt u een standaardapparaatsjabloon die de mogelijkheden van uw apparaat modelleert. In het voorbeeld in dit artikel wordt het thermostaatapparaatmodel gebruikt dat u hebt gedownload.

Een apparaatsjabloon maken voor een downstreamapparaat:

  1. Maak een apparaatsjabloon en kies IoT-apparaat als sjabloontype.

  2. Voer op de pagina Aanpassen van de wizard een naam in, zoals Thermostaat voor de apparaatsjabloon.

  3. Nadat u de apparaatsjabloon hebt gemaakt, selecteert u Een model importeren. Selecteer een model, zoals het thermostat-1.json-bestand dat u eerder hebt gedownload.

  4. Als u enkele standaardweergaven voor de thermostaat wilt genereren, selecteert u weergaven en kiest u vervolgens Standaardweergaven genereren.

  5. De sjabloon van het apparaat publiceren.

Een apparaatsjabloon maken voor een transparant IoT Edge-gatewayapparaat:

  1. Maak een apparaatsjabloon en kies Azure IoT Edge als sjabloontype.

  2. Voer op de pagina Aanpassen van de wizard een naam in, zoals Edge Gateway voor de apparaatsjabloon.

  3. Schakel op de pagina Aanpassen van de wizard het selectievakje Dit is een gatewayapparaat in.

  4. Selecteer op de pagina Beoordelen de optie Maken.

  5. Selecteer Aangepast model op de pagina Een model maken.

  6. Voeg een vermelding toe in Relaties aan de downstreamapparaatsjabloon.

In de volgende schermopname ziet u de pagina Relaties voor een IoT Edge-gatewayapparaat met downstreamapparaten die gebruikmaken van de apparaatsjabloon Thermostaat :

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

In de vorige schermopname ziet u een ioT Edge-gatewayapparaatsjabloon zonder gedefinieerde modules. Voor een transparante gateway zijn geen modules vereist, omdat de IoT Edge-runtime berichten van de downstreamapparaten rechtstreeks doorstuurt naar IoT Central. Als de gateway zelf telemetrie moet verzenden, eigenschappen moet synchroniseren of opdrachten moet afhandelen, kunt u deze mogelijkheden definiëren in het hoofdonderdeel of in een module.

Voeg alle vereiste cloudeigenschappen en weergaven toe voordat u de gateway en downstreamapparaatsjablonen publiceert.

De apparaten toevoegen

Wanneer u de apparaten toevoegt aan uw IoT Central-toepassing, kunt u de relatie tussen de downstreamapparaten en de transparante gateway definiëren.

De apparaten toevoegen:

  1. Navigeer naar de pagina apparaten in uw IoT Central-toepassing.

  2. Voeg een exemplaar van het IoT Edge-apparaat van de transparante gateway toe. Wanneer u het apparaat toevoegt, moet u ervoor zorgen dat u het implementatiemanifest van de transparante gateway selecteert. In dit artikel is edgegatewayde id van het gatewayapparaat.

  3. Voeg een of meer exemplaren van het downstreamapparaat toe. In dit artikel zijn de downstreamapparaten thermostaten met id's thermostat1 en thermostat2.

  4. Selecteer elk downstreamapparaat in de lijst met apparaten en selecteer Koppelen aan gateway.

In de volgende schermopname ziet u de lijst met apparaten die zijn gekoppeld aan een gateway op de pagina Downstreamapparaten :

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

In een transparante gateway maken de downstreamapparaten verbinding met de gateway zelf, niet met een aangepaste module die wordt gehost door de gateway.

Voordat u de apparaten implementeert, hebt u het volgende nodig:

  • Id-bereik van uw IoT Central-toepassing.
  • Apparaat-id-waarden voor de gateway en downstreamapparaten.
  • Primaire-sleutelwaarden voor de gateway en downstreamapparaten.

Als u deze waarden wilt vinden, gaat u naar elk apparaat in de lijst met apparaten en selecteert u Verbinding maken. Noteer deze waarden voordat u doorgaat.

Tip

U kunt de apparaten verbinden en relaties tot stand brengen zonder eerst apparaatsjablonen voor de apparaten te maken. U kunt een niet-toegewezen downstreamapparaat koppelen aan een niet-toegewezen gatewayapparaat.

De gateway en apparaten implementeren

Als u dit scenario wilt uitproberen, ziet u in de volgende stappen hoe u de gateway en downstreamapparaten implementeert op virtuele Azure-machines.

Tip

Zie Een IoT Edge-apparaat maken in de IoT Edge-documentatie voor meer informatie over het implementeren van de IoT Edge-runtime op een fysiek apparaat.

Als u het transparante gatewayscenario wilt uitproberen, selecteert u de volgende knop om twee virtuele Linux-machines te implementeren. Op één virtuele machine is de IoT Edge 1.4-runtime geïnstalleerd en is de transparante IoT Edge-gateway. De andere virtuele machine is een downstreamapparaat waarop u code uitvoert om gesimuleerde thermostaattelemetrie te verzenden:

Deploy to Azure Button

Wanneer de twee virtuele machines worden geïmplementeerd en uitgevoerd, controleert u of het IoT Edge-gatewayapparaat wordt uitgevoerd op de edgegateway virtuele machine:

  1. Ga naar de pagina Apparaten in uw IoT Central-toepassing. Als het IoT Edge-gatewayapparaat is verbonden met IoT Central, wordt de status ingericht.

  2. Open het IoT Edge-gatewayapparaat en controleer de status van de modules op de pagina Modules . Als de IoT Edge-runtime is gestart, wordt de status van de $edgeAgent en $edgeHub modules uitgevoerd:

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

    Tip

    Mogelijk moet u enkele minuten wachten terwijl de virtuele machine wordt gestart en het apparaat is ingericht in uw IoT Central-toepassing.

De gateway configureren

Om uw IoT Edge-apparaat als een transparante gateway te laten functioneren, heeft het enkele certificaten nodig om de identiteit te bewijzen aan downstreamapparaten. In dit artikel worden democertificaten gebruikt. Gebruik in een productieomgeving certificaten van uw certificeringsinstantie.

De democertificaten genereren en installeren op uw gatewayapparaat:

  1. Gebruik SSH om verbinding te maken met en u aan te melden op de virtuele machine van uw gatewayapparaat.

  2. Voer de volgende opdrachten uit om de IoT Edge-opslagplaats te klonen en uw democertificaten te genereren:

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

    Nadat u de vorige opdrachten hebt uitgevoerd, zijn de volgende bestanden klaar voor gebruik in de volgende stappen:

    • ~/certs/certs/azure-iot-test-only.root.ca.cert.pem : het basis-CA-certificaat dat wordt gebruikt om alle andere democertificaten te maken voor het testen van een IoT Edge-scenario.
    • ~/certs/certs/iot-edge-device-mycacert-full-chain.cert.pem : een ca-certificaat voor apparaten waarnaar wordt verwezen vanuit het IoT Edge-configuratiebestand. In een gatewayscenario controleert dit CA-certificaat hoe het IoT Edge-apparaat de identiteit controleert op downstreamapparaten.
    • ~/certs/private/iot-edge-device-mycacert.key.pem : de persoonlijke sleutel die is gekoppeld aan het CA-certificaat van het apparaat.

    Zie Democertificaten maken om ioT Edge-apparaatfuncties te testen voor meer informatie over deze democertificaten.

  3. Open het bestand config.toml in een teksteditor. Voorbeeld:

    sudo nano /etc/aziot/config.toml
    
  4. Zoek de volgende instellingen in het configuratiebestand. Voeg de certificaatinstellingen als volgt toe:

    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"
    

    In het vorige voorbeeld wordt ervan uitgegaan dat u bent aangemeld als AzureUser en een ca-certificaat voor apparaten met de naam 'mycacert' hebt gemaakt.

  5. Sla de wijzigingen op en start de IoT Edge-runtime opnieuw op:

    sudo iotedge config apply
    

Als de IoT Edge-runtime wordt gestart nadat uw wijzigingen zijn gewijzigd, verandert de status van de $edgeAgent en $edgeHub modules in Uitvoeren op de pagina Modules voor uw gatewayapparaat in IoT Central.

Als de runtime niet wordt gestart, controleert u de wijzigingen die u hebt aangebracht in het IoT Edge-configuratiebestand en raadpleegt u Problemen met uw IoT Edge-apparaat oplossen.

Uw transparante gateway is nu geconfigureerd en klaar om telemetrie van downstreamapparaten door te sturen.

Een downstreamapparaat inrichten

IoT Central is afhankelijk van de Device Provisioning Service (DPS) voor het inrichten van apparaten in IoT Central. Op dit moment kan IoT Edge geen DPS-inrichting van een downstreamapparaat gebruiken voor uw IoT Central-toepassing. In de volgende stappen ziet u hoe u het thermostat1 apparaat handmatig inricht. Als u deze stappen wilt uitvoeren, hebt u een omgeving nodig waarop Python is geïnstalleerd en verbinding met internet. Controleer de Azure IoT Python SDK op de huidige python-versievereisten. Azure Cloud Shell heeft Python vooraf geïnstalleerd:

  1. Voer de volgende opdracht uit om de azure.iot.device module te installeren:

    pip install azure.iot.device
    
  2. Voer de volgende opdracht uit om het Python-script te downloaden waarmee het apparaat wordt ingericht:

    wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/transparent-gateway-1-4/provision_device.py
    
  3. Als u het thermostat1 downstreamapparaat wilt inrichten in uw IoT Central-toepassing, voert u de volgende opdrachten uit, waarbij u het vervangt {your application id scope} en {your device primary key}. U hebt deze waarden genoteerd toen u de apparaten aan uw IoT Central-toepassing toevoegde:

    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
    

Controleer in uw IoT Central-toepassing of de apparaatstatus voor het thermostat1 apparaat nu is ingericht.

Een downstreamapparaat configureren

In de vorige sectie hebt u de edgegateway virtuele machine geconfigureerd met de democertificaten, zodat deze kan worden uitgevoerd als gateway. De leafdevice virtuele machine is klaar om een thermostaatsimulator te installeren die gebruikmaakt van de gateway om verbinding te maken met IoT Central.

De leafdevice virtuele machine heeft een kopie nodig van het basis-CA-certificaat dat u op de edgegateway virtuele machine hebt gemaakt. Kopieer het bestand /home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem van de edgegateway virtuele machine naar uw basismap op de leafdevice virtuele machine. U kunt de SCP-opdracht gebruiken om bestanden tussen virtuele Linux-machines te kopiëren. Bijvoorbeeld vanaf de leafdevice computer:

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

Zie De gatewayverbinding testen voor meer informatie over het controleren van de verbinding vanaf het downstreamapparaat naar de gateway.

De thermostaatsimulator uitvoeren op de leafdevice virtuele machine:

  1. Gebruik SSH om verbinding te maken met en u aan te melden op uw leafdevice virtuele machine.

  2. Download het Python-voorbeeld naar uw basismap:

    cd ~
    wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/transparent-gateway-1-4/simple_thermostat.py
    
  3. Installeer de Python-module van het Azure IoT-apparaat:

    sudo apt update
    sudo apt install python3-pip
    pip3 install azure.iot.device
    
  4. Stel de omgevingsvariabelen in om het voorbeeld te configureren. Vervang {your device shared key} door de primaire sleutel van de thermostat1 sleutel die u eerder hebt genoteerd. Bij deze variabelen wordt ervan uitgegaan dat de naam van de virtuele gatewaymachine is edgegateway en dat de id van het thermostaatapparaat: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
    

    U ziet hoe de verbindingsreeks de naam van het gatewayapparaat gebruikt en niet de naam van een IoT-hub.

  5. Gebruik de volgende opdracht om de code uit te voeren:

    python3 simple_thermostat.py
    

    De uitvoer van deze opdracht ziet er als volgt uit:

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

    Tip

    Als er een fout optreedt wanneer het downstreamapparaat verbinding probeert te maken. Voer de stappen voor apparaatinrichting opnieuw uit.

  6. Als u de telemetrie in IoT Central wilt zien, gaat u naar de pagina Overzicht voor het thermostaat1-apparaat :

    Screenshot showing telemetry from the downstream device.

    Op de pagina Info kunt u eigenschapswaarden bekijken die zijn verzonden vanaf het downstreamapparaat en op de opdrachtpagina kunt u opdrachten aanroepen op het downstreamapparaat.