Freigeben über


Verbinden von Geräten über ein transparentes IoT Edge-Gateway

Ein IoT Edge-Gerät kann als Gateway fungieren, das eine Verbindung zwischen anderen Geräten in einem lokalen Netzwerk und Ihrer IoT Central-Anwendung bereitstellt. Sie verwenden ein Gateway, wenn das Gerät nicht direkt auf Ihre IoT Central-Anwendung zugreifen kann.

IoT Edge unterstützt die Gatewaymuster transparent und Übersetzung. In diesem Artikel wird zusammengefasst, wie das transparente Gatewaymuster implementiert wird. Bei diesem Muster übergibt das Gateway Nachrichten vom untergeordneten Gerät an den IoT Hub-Endpunkt in Ihrer IoT Central-Anwendung. Das Gateway bearbeitet die Nachrichten nicht, während sie weitergeleitet werden. In IoT Central wird jedes Downstreamgerät als dem Gatewaygerät untergeordnet angezeigt:

Diagramm, das IoT Edge als transparentes Gateway zeigt

Wichtig

Dieser Artikel enthält Schritte zum Verbinden eines Geräts mithilfe einer Shared Access Signature, was auch als symmetrische Schlüsselauthentifizierung bezeichnet wird. Diese Authentifizierungsmethode eignet sich für Tests und Auswertungen, aber die Authentifizierung eines Geräts mit X.509-Zertifikaten ist ein sichererer Ansatz. Weitere Informationen finden Sie unter Bewährte Methoden für die Sicherheit von IoT-Lösungen > Verbindungssicherheit.

Aus Gründen der Einfachheit werden in diesem Artikel virtuelle Computer zum Hosten der Downstream- und Gatewaygeräte verwendet. In einem realen Szenario werden das untergeordnete Gerät und das Gateway auf physischen Geräten in Ihrem lokalen Netzwerk ausgeführt.

In diesem Artikel wird gezeigt, wie Sie das Szenario mithilfe der IoT Edge-Runtime 1.4 implementieren können.

Voraussetzungen

Um die Schritte dieses Artikels abzuschließen, benötigen Sie Folgendes:

Laden Sie die folgenden Dateien auf Ihren Computer herunter, um die Schritte in diesem Artikel ausführen zu können:

Importieren des Bereitstellungsmanifests

Jedes IoT Edge-Gerät benötigt ein Bereitstellungsmanifest zum Konfigurieren der IoT Edge-Runtime. So importieren Sie ein Bereitstellungsmanifest für das transparente IoT Edge-Gateway:

  1. Navigieren Sie zu Edge-Manifeste.

  2. Wählen Sie + Neu aus, geben Sie einen Namen für das Bereitstellungsmanifest ein, z. B. Transparentes Gateway, und laden Sie die zuvor heruntergeladene Datei EdgeTransparentGatewayManifest.json hoch.

  3. Wählen Sie Erstellen aus, um das Bereitstellungsmanifest in Ihrer Anwendung zu speichern.

Hinzufügen von Gerätevorlagen

Sowohl für das untergeordnete Gerät als auch das Gatewaygerät können Gerätevorlagen in IoT Central verwendet werden. Mit IoT Central können Sie die Beziehung zwischen den untergeordneten Geräten und dem Gateway modellieren, damit Sie diese nach dem Herstellen der Verbindung anzeigen und verwalten können. Eine Gerätevorlage ist nicht erforderlich, um ein untergeordnetes Gerät an ein Gateway anzufügen.

Erstellen Sie eine Standardgerätevorlage, die die Funktionen Ihres Geräts modelliert, um eine Gerätevorlage für ein untergeordnetes Gerät erstellen zu können. Für das Beispiel in diesem Artikel wird das Thermostat-Gerätemodell verwendet, das Sie heruntergeladen haben.

So erstellen Sie eine Gerätevorlage für ein untergeordnetes Gerät:

  1. Erstellen Sie eine Gerätevorlage, und wählen Sie IoT-Gerät als Vorlagentyp aus.

  2. Geben Sie auf der Seite Anpassen des Assistenten einen Namen wie Thermostat für die Gerätevorlage ein.

  3. Klicken Sie nach dem Erstellen der Gerätevorlage auf Modell importieren. Wählen Sie ein Modell wie die zuvor heruntergeladene Datei thermostat-1.json aus.

  4. Wählen Sie Ansichten aus, und klicken Sie dann auf Standardansichten generieren, um einige Standardansichten für den Thermostat zu generieren.

  5. Veröffentlichen der Gerätevorlage

So erstellen Sie eine Gerätevorlage für ein transparentes IoT Edge-Gatewaygerät:

  1. Erstellen Sie eine Gerätevorlage, und wählen Sie Azure IoT Edge als Vorlagentyp aus.

  2. Geben Sie auf der Seite Anpassen des Assistenten einen Namen wie Edge Gateway für die Gerätevorlage ein.

  3. Aktivieren Sie auf der Seite Anpassen des Assistenten das Kontrollkästchen Dies ist ein Gatewaygerät.

  4. Wählen Sie auf der Seite Überprüfen die Option Erstellen aus.

  5. Wählen Sie auf der Seite Modell erstellen die Option Benutzerdefiniertes Modell aus.

  6. Fügen Sie unter Beziehungen einen Eintrag zur Vorlage für das untergeordnete Gerät hinzu.

Im folgenden Screenshot wird die Seite Beziehungen für ein IoT Edge-Gatewaygerät mit untergeordneten Geräten angezeigt, die die Thermostat-Gerätevorlage verwenden:

Screenshot: Beziehung der IoT Edge-Gatewaygerätvorlage mit einer Thermostat-Vorlage für untergeordnete Geräte

Auf dem obigen Screenshot sind für die IoT Edge-Gatewaygerätvorlage keine Module definiert. Für ein transparentes Gateway sind keine Module erforderlich, da die IoT Edge-Runtime Nachrichten von den untergeordneten Geräten direkt an IoT Central weiterleitet. Wenn das Gateway selbst Telemetriedaten senden, Eigenschaften synchronisieren oder Befehle verarbeiten muss, können Sie diese Funktionen in der Stammkomponente oder in einem Modul definieren.

Fügen Sie die erforderlichen Cloudeigenschaften und Ansichten hinzu, bevor Sie das Gateway und die Vorlagen für untergeordnete Geräte veröffentlichen.

Hinzufügen der Geräte

Wenn Sie die Geräte zu Ihrer IoT Central-Anwendung hinzufügen, können Sie die Beziehung zwischen den untergeordneten Geräten und dem transparenten Gateway definieren.

So fügen Sie die Geräte hinzu:

  1. Navigieren Sie in Ihrer IoT Central-Anwendung zur Seite „Geräte“.

  2. Fügen Sie eine Instanz des IoT Edge-Geräts für das transparente Gateway hinzu. Wenn Sie das Gerät hinzufügen, müssen Sie das Bereitstellungsmanifest Transparentes Gateway auswählen. In diesem Artikel lautet die Geräte-ID für das Gateway edgegateway.

  3. Fügen Sie eine oder mehrere Instanzen des untergeordneten Geräts hinzu. In diesem Artikel handelt es sich bei den untergeordneten Geräten um Thermostate mit den IDs thermostat1 und thermostat2.

  4. Wählen Sie in der Geräteliste jedes einzelne untergeordnete Gerät aus, und klicken Sie auf An Gateway anfügen.

Der folgende Screenshot veranschaulicht, dass Sie die Liste der Geräte, die an ein Gateway angefügt sind, auf der Seite Downstream Devices (Untergeordnete Geräte) anzeigen können:

Screenshot: Liste der untergeordneten Geräte, die mit einem transparenten Gateway verbunden sind

Bei einem transparenten Gateway stellen die untergeordneten Geräte eine Verbindung mit dem Gateway selbst und nicht mit einem benutzerdefinierten Modul her, das vom Gateway gehostet wird.

Bevor Sie die Geräte bereitstellen, benötigen Sie Folgendes:

  • ID-Bereich der IoT Central-Anwendung
  • Werte für die Geräte-ID für das Gateway und die untergeordneten Geräte
  • Werte für den Primärschlüssel für das Gateway und die untergeordneten Geräte

Navigieren Sie zu jedem Gerät in der Geräteliste, und klicken Sie auf Verbinden, um diese Werte zu ermitteln. Notieren Sie sich diese Werte, bevor Sie fortfahren.

Tipp

Sie können die Geräte verbinden und Beziehungen einrichten, ohne zuvor Gerätevorlagen für die Geräte zu erstellen. Sie können ein nicht zugewiesenes untergeordnetes Gerät an ein nicht zugewiesenes Gatewaygerät anfügen.

Bereitstellen des Gateways und der Geräte

Die folgenden Schritte veranschaulichen das Bereitstellen des Gateways und der nachgeschalteten Geräte auf virtuellen Azure-Computern, damit Sie dieses Szenario testen können.

Tipp

Informationen zum Bereitstellen der IoT Edge-Runtime auf einem physischen Gerät finden Sie in der IoT Edge-Dokumentation unter Erstellen eines IoT Edge-Geräts.

Klicken Sie auf die folgende Schaltfläche, um zwei virtuelle Linux-Computer bereitzustellen und somit das Szenario mit dem transparenten Gateway testen zu können. Auf einem virtuellen Computer ist die IoT Edge-Runtime 1.4 installiert. Sie ist das transparente IoT Edge-Gateway. Der andere virtuelle Computer ist ein untergeordnetes Gerät, auf dem Sie Code ausführen, um simulierte Telemetriedaten des Thermostats zu senden:

Schaltfläche „In Azure bereitstellen“

Stellen Sie sicher, dass nach dem Bereitstellen und Ausführen der beiden virtuellen Computer das IoT Edge-Gatewaygerät auf der edgegateway-VM ausgeführt wird:

  1. Navigieren Sie in Ihrer IoT Central-Anwendung zur Seite Geräte. Wenn das IoT Edge-Gatewaygerät eine Verbindung mit IoT Central hergestellt hat, lautet der Status Bereitgestellt.

  2. Öffnen Sie das IoT Edge-Gatewaygerät, und überprüfen Sie den Status des Moduls auf der Seite Module. Wenn die IoT Edge-Runtime erfolgreich gestartet wurde, lautet der Status der beiden Module $edgeAgent und $edgeHub dann Wird ausgeführt:

    Screenshot, der die Ausführung der Module „$edgeAgent“ und „$edgeHub“, Version 1.4, auf dem IoT Edge-Gateway zeigt

    Tipp

    Sie müssen möglichweise mehrere Minuten warten, bis der virtuelle Computer gestartet und das Gerät in Ihrer IoT Central-Anwendung bereitgestellt wurde.

Konfigurieren des Gateways

Damit Ihr IoT Edge-Gerät als transparentes Gateway fungieren kann, benötigt es einige Zertifikate, um den untergeordneten Geräten seine Identität nachzuweisen. In diesem Artikel werden Demozertifikate verwendet. Verwenden Sie in einer Produktionsumgebung Zertifikate von Ihrer Zertifizierungsstelle.

So können Sie die Demozertifikate generieren und auf dem Gatewaygerät installieren:

  1. Verwenden Sie Secure Shell (SSH), um eine Verbindung mit Ihrem virtuellen Computer für das Gatewaygerät herzustellen und sich bei diesem anzumelden.

  2. Führen Sie die folgenden Befehle aus, um das IoT Edge-Repository zu klonen und die Demozertifikate zu generieren:

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

    Nachdem Sie die obigen Befehle ausgeführt haben, können Sie in den nächsten Schritten die folgenden Dateien verwenden:

    • ~/certs/certs/azure-iot-test-only.root.ca.cert.pem – Dies ist das Zertifikat der Stammzertifizierungsstelle, das zum Erstellen aller anderen Demozertifikate für das Testen eines IoT Edge-Szenarios verwendet wird.
    • ~/certs/certs/iot-edge-device-mycacert-full-chain.cert.pem: ein Zertifizierungsstellenzertifikat des Geräts, auf das in der IoT Edge-Konfigurationsdatei verwiesen wird. In einem Gatewayszenario bestätigt das IoT Edge-Gerät den untergeordneten Geräten seine Identität mit diesem Zertifikat der Zertifizierungsstelle.
    • ~/certs/private/iot-edge-device-mycacert.key.pem – Dies ist der private Schlüssel, der dem Zertifikat der Gerätezertifizierungsstelle zugeordnet ist.

    Weitere Informationen zu diesen Demozertifikaten finden Sie unter Erstellen von Demozertifikaten zum Testen der Features von IoT Edge-Geräten.

  3. Öffnen Sie die Datei config.toml in einem Text-Editor. Beispiel:

    sudo nano /etc/aziot/config.toml
    
  4. Suchen Sie in der Konfigurationsdatei nach den folgenden Einstellungen. Fügen Sie die Zertifikatseinstellungen wie folgt hinzu:

    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"
    

    Im vorstehenden Beispiel wird davon ausgegangen, dass Sie als AzureUser angemeldet sind und ein Zertifikat der Gerätezertifizierungsstelle namens „mycacert“ erstellt haben.

  5. Speichern Sie die Änderungen, und starten Sie die IoT Edge-Runtime neu:

    sudo iotedge config apply
    

Wenn die IoT Edge-Runtime nach Ihren Änderungen erfolgreich gestartet wird, wird der Status der Module $edgeAgent und $edgeHub für Ihr Gatewaygerät in IoT Central auf der Seite Module in Wird ausgeführt geändert.

Wenn die Runtime nicht gestartet wird, überprüfen Sie die in der IoT Edge-Konfigurationsdatei vorgenommenen Änderungen, und lesen Sie den Artikel Behandeln von Problemen bei Ihrem IoT Edge-Gerät.

Ihr transparentes Gateway ist nun konfiguriert und kann Telemetriedaten von untergeordneten Geräten weiterleiten.

Bereitstellen eines untergeordneten Geräts

IoT Central nutzt den Device Provisioning Service-Dienst (DPS), um Geräte in IoT Central bereitstellen zu können. Derzeit kann IoT Edge DPS nicht verwenden, um ein untergeordnetes Gerät in Ihrer IoT Central-Anwendung bereitzustellen. In den folgenden Schritten wird veranschaulicht, wie Sie das thermostat1-Gerät manuell bereitstellen können. In Ihrer Umgebung muss Python installiert sein, und Sie müssen mit dem Internet verbunden sein, um diese Schritte ausführen zu können. Prüfen Sie das Azure IoT Python SDK auf die aktuellen Python-Versionsanforderungen. In Azure Cloud Shell ist Python vorinstalliert:

  1. Führen Sie den folgenden Befehl aus, um das azure.iot.device-Modul zu installieren:

    pip install azure.iot.device
    
  2. Führen Sie den folgenden Befehl aus, um das Python-Skript für die Gerätebereitstellung herunterzuladen:

    wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/transparent-gateway-1-4/provision_device.py
    
  3. Führen Sie die folgenden Befehle aus, um das untergeordnete thermostat1-Gerät in Ihrer IoT Central-Anwendung bereitzustellen. Ersetzen Sie dabei {your application id scope} (den ID-Bereich Ihrer Anwendung) und {your device primary key} (den Primärschlüssel Ihres Geräts). Sie haben sich diese Werte notiert, als Sie die Geräte zu Ihrer IoT Central-Anwendung hinzugefügt haben:

    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
    

Überprüfen Sie in Ihrer IoT Central-Anwendung, ob der Gerätestatus für das thermostat1-Gerät jetzt Bereitgestellt lautet.

Konfigurieren eines nachgeschalteten Geräts

Im vorherigen Abschnitt haben Sie den virtuellen Computer edgegateway mit den Demozertifikaten konfiguriert, damit dieser als Gateway ausgeführt werden kann. Der virtuelle Computer leafdevice ermöglicht Ihnen nun das Installieren eines Thermostatsimulators, der das Gateway zum Herstellen einer Verbindung mit IoT Central verwendet.

Der virtuelle Computer leafdevice benötigt eine Kopie des Zertifikats der Stammzertifizierungsstelle, das Sie auf der VM edgegateway erstellt haben. Kopieren Sie die Datei /home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem von der VM edgegateway in Ihr Basisverzeichnis auf der VM leafdevice. Sie können den Befehl scp ausführen, um Dateien zwischen virtuellen Linux-Computern zu kopieren. Beispielsweise auf dem leafdevice-Computer:

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

Informationen zum Überprüfen der Verbindung des untergeordneten Geräts mit dem Gateway finden Sie unter Testen der Gatewayverbindung.

So führen Sie den Thermostatsimulator auf der leafdevice-VM aus:

  1. Verwenden Sie SSH, um eine Verbindung mit Ihrem virtuellen leafdevice-Computer herzustellen und sich darauf anzumelden.

  2. Laden Sie das Python-Beispiel in Ihr Basisverzeichnis herunter:

    cd ~
    wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/transparent-gateway-1-4/simple_thermostat.py
    
  3. Installieren Sie das Python-Modul für das Azure IoT-Gerät:

    sudo apt update
    sudo apt install python3-pip
    pip3 install azure.iot.device
    
  4. Legen Sie die Umgebungsvariablen zum Konfigurieren des Beispiels fest. Ersetzen Sie {your device shared key} durch den primären Schlüssel von thermostat1, den Sie sich zuvor notiert haben. Für diese Variablen wird angenommen, dass der Name der Gateway-VM edgegateway lautet und thermostat1 die ID des Thermostatgeräts ist:

    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
    

    Beachten Sie, dass die Verbindungszeichenfolge den Namen des Gatewaygeräts und nicht den Name eines IoT-Hubs verwendet.

  5. Verwenden Sie zum Ausführen des Codes den folgenden Befehl:

    python3 simple_thermostat.py
    

    Die Ausgabe dieses Befehls sieht wie folgt aus:

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

    Tipp

    Falls ein Fehler angezeigt wird, wenn das nachgeschaltete Gerät eine Verbindung herzustellen versucht. Versuchen Sie, die Schritte zur Gerätebereitstellung erneut auszuführen.

  6. Navigieren Sie zur Seite Übersicht für das Gerät thermostat1, um die Telemetriedaten in IoT Central anzuzeigen:

    Screenshot: Telemetriedaten vom untergeordneten Gerät

    Auf der Seite Info können Sie vom untergeordneten Gerät gesendete Eigenschaftswerte anzeigen und auf der Seite Befehl Befehle für das untergeordnete Gerät aufrufen.