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:
Belangrijk
Dit artikel bevat stappen voor het verbinden van een apparaat met behulp van een Shared Access Signature, ook wel symmetrische sleutelverificatie genoemd. Deze verificatiemethode is handig voor testen en evalueren, maar het verifiëren van een apparaat met X.509-certificaten is een veiligere benadering. Zie Best practices > voor beveiliging voor verbindingsbeveiliging voor meer informatie.
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:
Een actief Azure-abonnement. Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
Een IoT Central-toepassing die is gemaakt op basis van de aangepaste toepassingssjabloon . Zie Een IoT Central-toepassing maken voor meer informatie.
Als u de stappen in dit artikel wilt volgen, downloadt u de volgende bestanden naar uw computer:
- Thermostaatapparaatmodel (thermostat-1.json): dit bestand is het apparaatmodel voor de downstreamapparaten.
- Transparant gatewaymanifest (EdgeTransparentGatewayManifest.json): dit bestand is het IoT Edge-implementatiemanifest voor het gatewayapparaat.
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:
Navigeer naar Edge-manifesten.
Selecteer + Nieuw, voer een naam in voor het implementatiemanifest, zoals transparante gateway , en upload vervolgens het EdgeTransparentGatewayManifest.json bestand dat u eerder hebt gedownload.
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:
Maak een apparaatsjabloon en kies IoT-apparaat als sjabloontype.
Voer op de pagina Aanpassen van de wizard een naam in, zoals Thermostaat voor de apparaatsjabloon.
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.
Als u enkele standaardweergaven voor de thermostaat wilt genereren, selecteert u weergaven en kiest u vervolgens Standaardweergaven genereren.
De sjabloon van het apparaat publiceren.
Een apparaatsjabloon maken voor een transparant IoT Edge-gatewayapparaat:
Maak een apparaatsjabloon en kies Azure IoT Edge als sjabloontype.
Voer op de pagina Aanpassen van de wizard een naam in, zoals Edge Gateway voor de apparaatsjabloon.
Schakel op de pagina Aanpassen van de wizard het selectievakje Dit is een gatewayapparaat in.
Selecteer op de pagina Beoordelen de optie Maken.
Selecteer Aangepast model op de pagina Een model maken.
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 :
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:
Navigeer naar de pagina apparaten in uw IoT Central-toepassing.
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
edgegateway
de id van het gatewayapparaat.Voeg een of meer exemplaren van het downstreamapparaat toe. In dit artikel zijn de downstreamapparaten thermostaten met id's
thermostat1
enthermostat2
.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 :
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:
Wanneer de twee virtuele machines worden geïmplementeerd en uitgevoerd, controleert u of het IoT Edge-gatewayapparaat wordt uitgevoerd op de edgegateway
virtuele machine:
Ga naar de pagina Apparaten in uw IoT Central-toepassing. Als het IoT Edge-gatewayapparaat is verbonden met IoT Central, wordt de status ingericht.
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:
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:
Gebruik SSH om verbinding te maken met en u aan te melden op de virtuele machine van uw gatewayapparaat.
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.
Open het bestand config.toml in een teksteditor. Voorbeeld:
sudo nano /etc/aziot/config.toml
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.
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:
Voer de volgende opdracht uit om de
azure.iot.device
module te installeren:pip install azure.iot.device
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
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:
Gebruik SSH om verbinding te maken met en u aan te melden op uw
leafdevice
virtuele machine.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
Installeer de Python-module van het Azure IoT-apparaat:
sudo apt update sudo apt install python3-pip pip3 install azure.iot.device
Stel de omgevingsvariabelen in om het voorbeeld te configureren. Vervang
{your device shared key}
door de primaire sleutel van dethermostat1
sleutel die u eerder hebt genoteerd. Bij deze variabelen wordt ervan uitgegaan dat de naam van de virtuele gatewaymachine isedgegateway
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.
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.
Als u de telemetrie in IoT Central wilt zien, gaat u naar de pagina Overzicht voor het thermostaat1-apparaat :
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.