Externe Datenumwandlung für IoT Central

IoT-Geräte senden Daten in verschiedenen Formaten. Um die Gerätedaten mit Ihrer IoT Central-Anwendung zu verwenden, müssen Sie möglicherweise eine Transformation durchführen, um Folgendes zu ermöglichen:

  • Das Format der Daten mit Ihrer IoT Central-Anwendung kompatibel zu machen.
  • Einheiten zu konvertieren.
  • Neue Metriken zu berechnen.
  • Daten aus anderen Quellen anzureichern.

In diesem Artikel erfahren Sie, wie Sie Gerätedaten außerhalb IoT Central beim ein- oder ausgehenden Datenverkehr transformieren.

Hinweis

IoT Central kann Daten auch intern umwandeln. Weitere Informationen finden Sie unter Abbildung von Telemetriedaten beim eingehend in IoT Central und Transformation von Daten innerhalb Ihrer IoT Central-Anwendung für den Export.

Das folgende Diagramm zeigt drei Routen für Daten, die Transformationen enthalten:

Summary of data transformation routes both ingress and egress

Die folgende Tabelle zeigt drei Beispiele für Transformationstypen:

Transformation Beschreibung Beispiel Hinweise
Nachrichtenformat Konvertieren in oder Bearbeiten von JSON-Nachrichten. CSV in JSON Eingehend. IoT Central akzeptiert nur JSON-Nachrichten mit Wert. Weitere Informationen finden Sie unter Telemetrie-, Eigenschaften- und Befehlsnutzlasten.
Berechnungen Mathematische Funktionen, die durch Azure Functions ausgeführt werden können. Einheitenkonvertierung von Fahrenheit in Celsius. Nutzen Sie das Ausgangsmuster zur Transformierung, um den skalierbaren Geräteeingang über eine direkte Verbindung mit IoT Central zu nutzen. Durch Transformierung der Daten können Sie IoT Central-Features wie Visualisierungen und Aufträge verwenden.
Nachrichtenanreicherung Anreicherungen aus externen Datenquellen wurden in Geräteeigenschaften oder Telemetriedaten nicht gefunden. Weitere Informationen zu internen Anreicherungen finden Sie unter Exportieren von IoT-Daten zu Cloudzielen mithilfe von Blob Storage. Hinzufügen von Wetterinformationen zu Nachrichten mithilfe von Standortdaten von Geräten Nutzen Sie das Ausgangsmuster zur Transformierung, um den skalierbaren Geräteeingang über eine direkte Verbindung mit IoT Central zu nutzen.

Voraussetzungen

Zum Ausführen der Schritte in dieser Anleitung ist Folgendes erforderlich:

Datentransformation beim eingehenden Datenverkehr

Zum Transformieren von eingehenden Gerätedaten stehen zwei Optionen zur Verfügung:

  • IoT Edge: Verwenden Sie ein IoT Edge-Modul, um Daten von nachgeschalteten Geräten zu transformieren, bevor Sie die Daten an Ihre IoT Central senden.

  • IoT Central-Geräte-Bridge: Die IoT Central-Gerätebrücke verbindet andere IoT-Geräte-Clouds wie Sigfox, Particle und The Things Network mit IoT Central. Die Gerätebrücke verwendet eine Azure-Funktion, um die Daten weiter zu übertragen, und Sie können die Funktion anpassen, um die Gerätedaten zu transformieren.

Verwenden von IoT Edge zum Transformieren von Gerätedaten

Data transformation on ingress using IoT Edge

In diesem Szenario transformiert ein IoT Edge-Modul die Daten von nachgeschalteten Geräten, bevor sie an Ihre IoT Central weitergeleitet werden. Die allgemeinen Schritte zum Konfigurieren dieses Szenarios lauten wie folgt:

  1. Einrichten eines IoT Edge Geräts: Installieren Sie ein IoT Edge-Gerät und stellen Sie es als Gateway bereit und verbinden Sie das Gateway mit der IoT Central-Anwendung.

  2. Verbinden Sie das nachgeschaltete Gerät mit dem IoT Edge-Gerät: Verbinden Sie nachgeschaltete Geräte mit dem IoT Edge-Gerät und stellen Sie es für Ihre IoT Central-Anwendung zur Verfügung.

  3. Transformieren von Gerätedaten in IoT Edge: Erstellen Sie ein IoT Edge-Modul, um die Daten zu transformieren. Stellen Sie das Modul auf dem IoT Edge-Gateway-Gerät bereit, das die transformierten Gerätedaten an Ihre IoT Central weiterleitet.

  4. Überprüfen: Senden Sie Daten von einem nachgeschalteten Gerät an das Gateway, und überprüfen Sie, ob die transformierten Gerätedaten Ihre IoT Central erreichen.

In dem in den folgenden Abschnitten beschriebenen Beispiel sendet das nachgeschaltete Gerät JSON-Daten im folgenden Format an das IoT Edge-Gatewaygerät:

{
  "device": {
      "deviceId": "<downstream-deviceid>"
  },
  "measurements": {
    "temp": <temperature>,
    "pressure": <pressure>,
    "humidity": <humidity>,
    "scale": "celsius",
  }
}

Mithilfe eines IoT Edge-Moduls transformieren Sie die Daten und konvertieren den Temperaturwert von Celsius in Fahrenheit, bevor Sie ihn an IoT Central senden:

{
  "device": {
      "deviceId": "<downstream-deviceid>"
  },
  "measurements": {
    "temp": <temperature>,
    "pressure": <pressure>,
    "humidity": <humidity>,
    "scale": "fahrenheit"
  }
}

Browse code

Die folgenden Schritte zeigen, wie Sie dieses Szenario einrichten und konfigurieren:

Erstellen Sie das benutzerdefinierte Modul

In diesem Szenario führt das IoT Edge-Gerät ein benutzerdefiniertes Modul aus, das die Daten des nachgeschalteten Geräts transformiert. Bevor Sie das IoT Edge-Gerät bereitstellen und konfigurieren, müssen Sie Folgendes durchführen:

  • Erstellen Sie das benutzerdefinierte Modul.
  • Fügen Sie das benutzerdefinierte Modul einer Containerregistrierung hinzu.

Die IoT Edge-Runtime lädt benutzerdefinierte Module aus einer Containerregistrierung herunter, z. B. einer Azure-Containerregistrierung oder Docker Hub. Die Azure Cloud Shell verfügt über alle Tools, die Sie zum Erstellen einer Containerregistrierung, zum Erstellen des Moduls und zum Hochladen des Moduls in die Registrierung benötigen:

Wie eine Containerregistrierung erstellt wird:

  1. Öffnen Sie die Azure Cloud Shell und melden Sie sich bei Ihrem Azure-Abonnement an.

  2. Wählen Sie die Bash-Shell aus.

  3. Führen Sie die folgenden Befehle aus, um eine Azure Container Registry-Instanz zu erstellen:

    REGISTRY_NAME="{your unique container registry name}"
    az group create --name ingress-scenario --location eastus
    az acr create -n $REGISTRY_NAME -g ingress-scenario --sku Standard --admin-enabled true
    az acr credential show -n $REGISTRY_NAME
    

    Notieren Sie sich die username- und password-Werte, Sie werden sie später verwenden. Sie benötigen nur eines der Kennwörter, die in der Befehlsausgabe angezeigt werden.

So erstellen Sie das benutzerdefinierte Modul in Azure Cloud Shell:

  1. Klonen Sie in der Azure Cloud Shell das GitHub-Repository, das den Quellcode des Moduls enthält:

    git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
    
  2. Führen Sie zum Erstellen des benutzerdefinierten Moduls die folgenden Befehle in Azure Cloud Shell aus:

    cd iot-central-transform-with-iot-edge/custommodule/transformmodule
    az acr build --registry $REGISTRY_NAME --image transformmodule:0.0.1-amd64 -f Dockerfile.amd64 .
    

    Die Ausführung der genannten Befehle kann mehrere Minuten dauern.

Einrichten eines IoT Edge-Geräts

In diesem Szenario wird ein IoT Edge Gateway-Gerät verwendet, um die Daten von allen nachgeschalteten Geräten zu transformieren. In diesem Abschnitt wird beschrieben, wie Sie IoT Central-Gerätevorlagen für das Gatewaygerät in Ihrer IoT Central-Anwendung erstellen. IoT Edge-Geräte verwenden ein Bereitstellungsmanifest, um ihre Module zu konfigurieren.

In diesem Beispiel benötigt das nachgeschaltete Gerät keine Gerätevorlage. Das nachgeschaltete Gerät ist in der IoT Central registriert, sodass Sie die Anmeldeinformationen generieren können, die es für die Verbindung mit dem IoT Edge-Gerät benötigt. Da das IoT Edge-Modul die Daten transformiert, gelangen alle nachgeschalteten Gerätetelemetrie in IoT Central so, als ob das IoT Edge-Gerät sie gesendet hat.

Wie eine Gerätevorlage für ein IoT Edge-Gateway-Gerät erstellt wird:

  1. Speichern Sie eine Kopie des Bereitstellungsmanifests auf Ihrem lokalen Entwicklungscomputer: moduledeployment.json.

  2. Öffnen Sie ihre lokale Kopie der Manifestdatei moduledeployment.json in einem Text-Editor.

  3. Suchen Sie nach dem Abschnitt registryCredentials und ersetzen Sie die Platzhalter durch die Werte, die Sie sich beim Erstellen der Azure-Containerregistrierung notiert haben. Der address-Wert lautet {your username}.azurecr.io.

  4. Suchen Sie den settings-Abschnitt für die transformmodule. Ersetzen Sie {your username} durch denselben Wert, den Sie im vorhergehenden Schritt verwendet haben. Speichern Sie die Änderungen.

  5. Navigieren Sie in Ihrer IoT Central-Anwendung zur Seite Edgemanifeste.

  6. Wählen Sie + Neu aus. Geben Sie für Ihr Bereitstellungsmanifest einen Namen wie Transformator ein, und laden Sie dann die Datei moduledeployment.json hoch, die Sie zuvor heruntergeladen haben. Das Bereitstellungsmanifest enthält das benutzerdefinierte Modul transformmodule.

  7. Wählen Sie Weiter und dann Erstellen aus.

  8. Navigieren Sie in Ihrer IoT Central-Anwendung zur Seite Gerätevorlagen.

  9. Wählen Sie + Neu und dann Azure IoT Edge aus und wählen Sie dann Weiter: Anpassen aus.

  10. Geben IoT Edge Gateway-Gerät als Name für die Gerätevorlage ein. Wählen Sie Dies ist ein Gatewaygerät aus.

  11. Wählen Sie Weiter: Überprüfen und dann Erstellen aus.

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

  13. Wählen Sie im Modell die Option Module und dann Module aus Manifest importieren aus. Wählen Sie das Bereitstellungsmanifest Transformatorund dann Importieren aus.

Das Bereitstellungsmanifest gibt nicht die Telemetriedaten an, die das Modul sendet. So fügen Sie die Telemetriedefinitionen der Gerätevorlage hinzu:

  1. Wählen Sie im Abschnitt Module der Vorlage IoT Edge-Gatewaygerät das Modul „transformmodule“ aus.

  2. Wählen Sie Funktion hinzufügen aus, und verwenden Sie die Informationen in den folgenden Tabellen, um einen neuen Telemetrietyp hinzuzufügen:

    Einstellung Wert
    Anzeigename Sicherungsmedium
    Name Gerät
    Funktionstyp Telemetrie
    Semantischer Typ Keine
    Schema Object

    Objektdefinition:

    Anzeigename Name Schema
    Geräte-ID deviceId String

    Speichern Sie die Änderungen.

  3. Wählen Sie Funktion hinzufügen aus, und verwenden Sie die Informationen in den folgenden Tabellen, um einen neuen Telemetrietyp hinzuzufügen:

    Einstellung Wert
    Anzeigename Messungen
    Name Messungen
    Funktionstyp Telemetrie
    Semantischer Typ Keine
    Schema Object

    Objektdefinition:

    Anzeigename Name Schema
    Temperatur Temperatur Double
    Druck pressure Double
    Feuchtigkeit humidity Double
    Skalieren Skalierung String

    Speichern Sie die Änderungen.

  4. Wählen Sie im Modell die Option Beziehungen aus. Wählen Sie Beziehungen nicht im Modul transformmodule aus.

  5. Wählen Sie Beziehung hinzufügen aus.

  6. Geben Sie Downstreamsensor als Anzeigenamen und Sensor als Namen ein, und wählen Sie Beliebig als Ziel aus. Wählen Sie Speichern.

  7. Wählen Sie Veröffentlichen aus, um die Gerätevorlage zu veröffentlichen.

Wie ein Gateway-Gerät in IoT Central registriert wird:

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

  2. Wählen Sie IoT Edge-Gatewaygerät und dann + Neu aus. Geben Sie IoT Edge-Gatewaygerät als Gerätenamen und gateway-01 als Geräte-ID ein. Vergewissern Sie sich dann, dass IoT Edge-Gatewaygerät als Gerätevorlage und Nein für Dieses Gerät simulieren? ausgewählt wurde. Wählen Sie Transformator als Edgemanifest aus. Klicken Sie auf Erstellen.

  3. Klicken Sie in der Liste der Geräte auf das IoT Edge-Gateway-Gerät und wählen Sie dann Verbinden aus.

  4. Notieren Sie sich die Werte für den ID-Bereich, die Geräte-ID und den Primärschlüssel für das IoT Edge-Gateway-Gerät. Sie werden sie später noch benötigen.

Wie ein nachgeschaltetes Gerät in IoT Central registriert wird:

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

  2. Wählen Sie keine Gerätevorlage aus. Wählen Sie + Neu aus. Geben Sie Downstream 01 als Gerätenamen und downstream-01 als Geräte-ID ein. Vergewissern Sie sich dann, dass für die Gerätevorlage Nicht zugewiesen und Nein für Dieses Gerät simulieren? ausgewählt wurde. Klicken Sie auf Erstellen.

  3. Klicken Sie in der Geräteliste auf das Gerät Downstream 01, und wählen Sie Gerät verwalten > An Gateway anfügen aus.

  4. Wählen Sie im Dialogfeld An ein Gateway anfügen die Gerätevorlage IoT Edge-Gatewaygerät und die Geräteinstanz IoT Edge-Gatewaygerät aus. Wählen Sie Anfügen aus.

  5. Wählen Sie auf dem Gerät Downstream 01 die Option Verbinden aus.

  6. Notieren Sie sich die Werte für ID-Bereich, Geräte-ID und Primärschlüssel für das Gerät Downstream 01. Sie werden sie später noch benötigen.

Bereitstellen des Gateways und der nachgeschalteten Geräte

Der Einfachheit halber werden in diesem Artikel virtuelle Azure-Computer verwendet, um das Gateway und nachgeschaltete Geräte auszuführen. Wählen Sie zum Erstellen der beiden virtuellen Azure-Computer die Schaltfläche In Azure bereitstellen aus, die nach der folgenden Tabelle gezeigt wird. Füllen Sie das Formular Benutzerdefinierte Bereitstellung anhand der Informationen in der Tabelle aus:

Feld Wert
Resource group ingress-scenario
DNS Label Prefix Gateway Ein eindeutiger DNS-Name für diesen Computer, z. B. <your name>edgegateway
DNS Label Prefix Downstream Ein eindeutiger DNS-Name für diesen Computer, z. B. <your name>downstream
Bereichs-ID Der zuvor notierte ID-Bereich
Geräte-ID IoT Edge-Gateway gateway-01
Geräteschlüssel IoT Edge-Gateway Der Wert für den Primärschlüssel, den Sie sich zuvor notiert hatten
Authentifizierungstyp Kennwort
Administratorkennwort oder Schlüssel Wählen Sie das Kennwort für das AzureUser-Konto auf beiden virtuellen Computern aus.

Deploy to Azure Button

Wählen Sie Überprüfen + erstellen und danach Erstellen aus. Die Erstellung der virtuellen Computer in der Ressourcengruppe Eingangsszenario dauert einige Minuten.

So überprüfen Sie, ob das IoT Edge-Gatewaygerät ordnungsgemäß ausgeführt wird:

  1. Öffnen Sie Ihre IoT Central-Anwendung. Navigieren Sie dann zum IoT Edge-Gateway-Gerät auf der Liste der Geräte auf der Seite Geräte.

  2. Wählen Sie die Registerkarte Module aus und überprüfen Sie den Status der drei Module. Es dauert einige Minuten, bis die IoT Edge-Runtime auf dem virtuellen Computer gestartet wird. Wenn der virtuelle Computer ausgeführt wird, wird der Status der drei Module ausgeführt. Falls die IoT Edge-Runtime nicht gestartet wird, helfen Ihnen die Informationen unter Behandeln von Problemen bei Ihrem IoT Edge-Gerät weiter.

Damit Ihr IoT Edge-Gerät als 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. Sie können den DNS-Namen für diesen virtuellen Computer im Azure-Portal finden. Navigieren Sie in der Ressourcengruppe Eingangsszenario zum virtuellen Computer edgegateway.

    Tipp

    Möglicherweise müssen Sie Port 22 für den SSH-Zugriff auf beiden virtuellen Computern öffnen, bevor Sie SSH verwenden können, um eine Verbindung von Ihrem lokalen Computer oder dem lokalen Computer Azure Cloud Shell herzustellen.

  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 – Dies ist ein Zertifikat der Gerätezertifizierungsstelle, auf das in der Datei config.yaml 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. Heben Sie die Auskommentierung auf, und ändern Sie die Zertifikateinstellungen wie folgt:

    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 führen Sie den folgenden Befehl zur Überprüfung aus, ob die Datei config.toml korrekt ist:

    sudo iotedge check
    
  6. Neustart der IoT Edge-Runtime

    sudo iotedge config apply
    

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

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

Ein nachgeschaltetes Gerät mit einem IoT Edge-Gerät verbinden

So verbinden Sie ein nachgeschaltetes Gerät mit einem Azure IoT Edge-Gerät:

  1. Verwenden Sie Secure Shell (SSH), um eine Verbindung mit Ihrem virtuellen Computer für das nachgeschaltete Gerät herzustellen und sich bei diesem anzumelden. Sie können den DNS-Namen für diesen virtuellen Computer im Azure-Portal finden. Navigieren Sie in der Ressourcengruppe Eingangsszenario zum virtuellen Computer leafdevice.

    Tipp

    Möglicherweise müssen Sie Port 22 für den SSH-Zugriff auf beiden virtuellen Computern öffnen, bevor Sie SSH verwenden können, um eine Verbindung von Ihrem lokalen Computer oder dem lokalen Computer Azure Cloud Shell herzustellen.

  2. Führen Sie den folgenden Befehl aus, um das GitHub-Repository mit dem Quellcode für das nachgeschaltete Beispielgerät zu klonen:

    cd ~
    git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
    
  3. Führen Sie die folgenden scp-Befehle aus, um das erforderliche Zertifikat vom Gatewaygerät zu kopieren. Dieser scp-Befehl verwendet den Hostnamen edgegateway, um den virtuellen Gatewaycomputer zu identifizieren. Sie werden aufgefordert, Ihr Kennwort einzugeben:

    cd ~/iot-central-transform-with-iot-edge
    scp AzureUser@edgegateway:/home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem leafdevice/certs
    
  4. Navigieren Sie zum leafdevice-Ordner und installieren Sie die benötigten Pakete. Führen Sie dann die build- und start-Skripte aus, um das Gerät mit dem Gateway zu verbinden:

    cd ~/iot-central-transform-with-iot-edge/leafdevice
    sudo apt update
    curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
    sudo apt-get install nodejs
    npm install
    npm run-script build
    npm run-script start
    

    Während der sudo apt-get install nodejs-Befehle könnten Sie aufgefordert werden, Installationen zuzulassen: Drücken Sie dann Y.

  5. Geben Sie die Geräte-ID, die Bereichs-ID und den SAS-Schlüssel für das zuvor erstellte nachgeschaltete Gerät ein. Geben Sie als Hostnamen edgegateway ein. Die Ausgabe des Befehls sieht wie folgt aus:

    Registering device downstream-01 with scope 0ne00284FD9
    Registered device downstream-01.
    Connecting device downstream-01
    Connected device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    Sent telemetry for device downstream-01
    

Der Einfachheit halber stellt der Code für das nachgeschaltete Gerät das Gerät in IoT Central bereit. In der Regel stellen nachgeschaltete Geräte eine Verbindung über ein Gateway her, da sie keine Verbindung mit dem Internet herstellen können und sich daher nicht mit dem Device Provisioning Service-Endpunkt verbinden können. Weitere Informationen finden Sie unter Verbinden von Geräten über ein transparentes IoT Edge-Gateway.

Überprüfen

Um zu überprüfen, ob das Szenario ausgeführt wird, navigieren Sie zu Ihrem IoT Edge Gateway-Gerät in IoT Central:

Screenshot that shows transformed data on devices page.

  • Wählen Sie Module aus. Überprüfen Sie, ob die drei IoT Edge Module $edgeAgent, $edgeHub und transformmodule ausgeführt werden.

  • Wählen Sie Rohdaten aus. Die Telemetriedaten in der Spalte Gerät sehen wie folgt aus:

    {"deviceId":"downstream-01"}
    

    Die Telemetriedaten in der Spalte Messungen sehen wie folgt aus:

    {"temperature":85.21208,"pressure":59.97321,"humidity":77.718124,"scale":"farenheit"}
    

Die Temperatur wird in Fahrenheit gesendet. Da das IoT Edge-Gerät die Daten des nachgeschalteten Geräts transformiert, werden die Telemetriedaten dem Gateway-Gerät in IoT Central zugeordnet. Um die transformierten Telemetriedaten zu visualisieren, erstellen Sie eine Ansicht in der Vorlage IoT Edge-Gatewaygerät und veröffentlichen sie erneut.

Datentransformation beim ausgehenden Datenverkehr

Sie können Ihre Geräte mit IoT Central verbinden, die Gerätedaten in eine Compute-Engine exportieren, um sie zu transformieren, und die transformierten Daten dann zur Geräteverwaltung und -analyse an IoT Central zurücksenden. Beispiel:

  • Ihre Geräte senden Standortdaten an IoT Central.
  • IoT Central exportiert die Daten in eine Compute-Engine, die die Standortdaten mit Wetterinformationen erweitert.
  • Die Compute-Engine sendet die erweiterten Daten zurück an IoT Central.

Sie können die IoT Central-Gerätebrücke als Compute-Engine verwenden, um aus IoT Central exportierte Daten zu transformieren.

Ein Vorteil der Transformation bei ausgehendem Datenverkehr besteht darin, dass Ihre Geräte direkt mit IoT Central verbunden sind, was das Senden von Befehlen an Geräte oder das Aktualisieren von Geräteeigenschaften erleichtert. Mit dieser Methode können Sie jedoch mehr Meldungen als ihre monatliche Zuteilung verwenden und die Kosten für die Verwendung von Azure IoT Central erhöhen.

Verwenden der IoT Central-Gerätebrücke zum Transformieren von Gerätedaten

Data transformation on egress using IoT Edge

In diesem Szenario transformiert eine Compute-Engine aus IoT Central exportierte Gerätedaten, bevor sie an Ihre IoT Central zurücksenden. Die allgemeinen Schritte zum Konfigurieren dieses Szenarios lauten wie folgt:

  1. Richten Sie die Compute-Engine ein: Erstellen Sie eine IoT Central-Gerätebrücke, die als Compute-Engine für die Datentransformation fungieren soll.

  2. Transformieren von Gerätedaten in der Gerätebrücke: Transformieren Sie Daten in der Gerätebrücke, indem Sie den Funktionscode der Gerätebrücke für Ihren Datentransformations-Einsatzfall ändern.

  3. Aktivieren Sie den Datenfluss von IoT Central zur Gerätebrücke: Exportieren Sie die Daten aus IoT Central zur Transformation in die Gerätebrücke. Anschließend werden die transformierten Daten an die IoT Central weitergeleitet. Wenn Sie den Datenexport erstellen, verwenden Sie Nachrichteneigenschaftsfilter, um nur nicht übersetzte Daten zu exportieren.

  4. Überprüfen: Verbinden Sie Ihr Gerät mit der IoT Central-App, und überprüfen Sie sowohl rohe Gerätedaten als auch transformierte Daten in IoT Central.

Im Beispiel, das in den folgenden Abschnitten beschriebenen wird, sendet das Gerät CSV-Daten im folgenden Format an das IoT Edge Gateway-Gerät:

"<temperature in degrees C>, <humidity>, <latitude>, <longitude>"

Sie verwenden die Gerätebrücke, um die Gerätedaten zu transformieren, indem Sie:

  • Die Temperatureinheit von Centigrade in Fahrenheit ändern.
  • Die Gerätedaten mit Wetterdaten anreichern, die dem Open Weather-Dienst für die Werte für Breiten- und Längengrad entnommen werden.

Die Gerätebrücke sendet dann die transformierten Daten im folgenden Format an IoT Central:

{
  "temp": <temperature in degrees F>,
  "humidity": <humidity>,
  "lat": <latitude>,
  "lon": <logitude>,
  "weather": {
    "weather_temp": <temperature at lat/lon>,
    "weather_humidity": <humidity at lat/lon>,
    "weather_pressure": <pressure at lat/lon>,
    "weather_windspeed": <wind speed at lat/lon>,
    "weather_clouds": <cloud cover at lat/lon>,
    "weather_uvi": <UVI at lat/lon>
  }
}

Die folgenden Schritte zeigen, wie Sie dieses Szenario einrichten und konfigurieren:

Abrufen ihrer IoT Central-Verbindungseinstellungen

Bevor Sie dieses Szenario einrichten, müssen Sie einige Verbindungseinstellungen aus Ihrer IoT Central abrufen:

  1. Melden Sie sich bei Ihrer IoT Central-Anwendung an.

  2. Navigieren Sie zu Berechtigungen > Geräteverbindungsgruppen.

  3. Notieren Sie sich den Wert für den ID-Bereich. Sie werden diesen Wert später noch verwenden.

  4. Wählen Sie die Registrierungsgruppe SaS-IoT-Devices aus. Notieren Sie sich den SAS-Primärschlüssel (Shared Access Signature). Sie werden diesen Wert später noch verwenden.

Einrichten einer Compute-Engine

In diesem Szenario wird die gleiche Azure Functions-Bereitstellung wie für die IoT Central-Gerätebrücke verwendet. Wählen Sie zum Bereitstellen der Gerätebrücke die Schaltfläche In Azure bereitstellen aus, die nach der folgenden Tabelle gezeigt wird. Füllen Sie das Formular Benutzerdefinierte Bereitstellung anhand der Informationen in der Tabelle aus:

Feld Wert
Resource group Erstellen Sie eine neue Ressourcengruppe namens egress-scenario
Region Wählen Sie die Ihnen am nächsten gelegene Region aus.
Bereichs-ID Verwenden Sie den zuvor notierten ID-Bereich.
IoT Central SAS-Schlüssel Verwenden Sie den SAS-Primärschlüssel für die Registrierungsgruppe SaS-IoT-Devices. Sie haben sich diesen Wert zuvor notiert.

Deploy to Azure.

Wählen Sie Überprüfen + erstellen und danach Erstellen aus. Es dauert einige Minuten, die Azure-Funktion und die zugehörigen Ressourcen in der Ressourcengruppe für das Ausgangsszenario zu erstellen.

Transformieren von Gerätedaten in der Gerätebrücke

So konfigurieren Sie die Gerätebrücke zum Transformieren der exportierten Gerätedaten:

  1. Rufen Sie einen Anwendungs-API-Schlüssel aus dem Open Weather-Dienst ab. Das Konto ist kostenlos mit eingeschränkter Nutzung des Diensts. Legen Sie zum Erstellen eines Anwendungs-API-Schlüssels im Open Weather Dienstportal ein Konto an und befolgen Sie die Anweisungen. Sie verwenden Ihren Open Weather-API-Schlüssel später.

  2. Navigieren Sie im Azure-Portal zur Funktions-App in der Ressourcengruppe für das Ausgangsszenario.

  3. Wählen Sie im linken Navigationsbereich unter Entwicklungstools die Option App Service-Editor (Vorschau) aus.

  4. Wählen Sie Go →, um die Seite App Service-Editor zu öffnen. Nehmen Sie die folgenden Änderungen vor:

    1. Öffnen Sie die wwwroot/IoTCIntegration/index.js-Datei. Ersetzen Sie den gesamten Code in dieser Datei durch den Code in index.js.

    2. Aktualisieren Sie im neuen index.js die openWeatherAppId-Variablendatei mit dem Open Weather-API-Schlüssel, den Sie zuvor abgerufen haben.

      const openWeatherAppId = '<Your Open Weather API Key>'
      
    3. Fügen Sie den Daten, die von der Funktion an IoT Central gesendet werden, eine Nachrichteneigenschaft hinzu. IoT Central verwendet diese Eigenschaft, um das Exportieren der transformierten Daten zu verhindern. Öffnen Sie die Datei wwwroot/IoTCIntegration/lib/engine.js, um diese Änderung vorzunehmen. Suchen Sie den folgenden Code:

      if (timestamp) {
        message.properties.add('iothub-creation-time-utc', timestamp);
      }
      

      Fügen Sie den folgenden Code direkt nach dem Code im vorherigen Schritt hinzu:

      // add a message property that we can look for in data export to not re-compute computed telemetry
      message.properties.add('computed', true);
      

      Als Referenz können Sie ein vollständiges Beispiel für die engine.js-Datei anzeigen lassen.

  5. Wählen Sie im App Service-Editor im linken Navigationsbereich Konsole aus. Führen Sie die folgenden Befehle aus, um die erforderlichen Pakete zu installieren:

    cd IoTCIntegration
    npm install
    

    Die Ausführung dieses Befehls kann einige Minuten in Anspruch nehmen.

  6. Kehren Sie zur Übersichtsseite der Azure-Funktion zurück, und starten Sie die Funktion neu:

    Restart the function

  7. Wählen Sie im linken Navigationsbereich Funktionen aus. Wählen Sie dann IoTCIntegration aus. Wählen Sie Code + Test aus.

  8. Notieren Sie sich die Funktions-URL, Sie benötigen diesen Wert später:

    Get the function URL

Aktivieren des Datenflusses von IoT Central zur Gerätebrücke

In diesem Abschnitt wird beschrieben, wie Sie die Azure IoT Central-Anwendung einrichten.

Speichern Sie zunächst die Gerätemodell-Datei auf Ihrem lokalen Computer.

Navigieren Sie zum Hinzufügen einer Gerätevorlage zu Ihrer IoT Central-Anwendung selbiger und gehen Sie dann wie hier vor:

  1. Melden Sie sich bei Ihrer IoT Central-Anwendung an, und navigieren Sie zur Seite mit den Gerätevorlagen.

  2. Wählen Sie + Neuaus, wählen Sie IoT-Gerät aus, wählen Sie Weiter: Anpassen aus und geben Sie Computemodell als Name für die Vorlage ein. Klicken Sie auf Weiter: Review (Weiter: Überprüfen). Wählen Sie dann Erstellen aus.

  3. Wählen Sie Modell importieren aus und navigieren Sie zur Datei model.json, die Sie zuvor heruntergeladen haben.

  4. Nachdem das Modell importiert wurde, wählen Sie Veröffentlichen aus, um die Gerätevorlage Computemodell zu veröffentlichen.

Richten Sie den Datenexport zum Senden von Daten an Ihre Gerätebrücke ein:

  1. Wählen Sie in Ihrer IoT Central-Anwendung Datenexport aus.

  2. Wählen Sie + Neues Ziel aus, um ein Ziel für die Verwendung mit der Geräte-Bridge zu erstellen. Rufen Sie die Compute-Zielfunktion auf und wählen Sie für denZieltyp die OptionWebhook aus. Fügen Sie als Rückruf-URL die Funktions-URL ein, die Sie sich zuvor notiert haben. Lassen Sie die Autorisierung als No Auth (Keine Authentifizierung) bestehen.

  3. Speichern Sie die Änderungen.

  4. Wählen Sie + Neuer Export aus und erstellen Sie einen Datenexport namens Compute-Export.

  5. Fügen Sie einen Filter hinzu, um nur Gerätedaten für die von Ihnen verwendete Gerätevorlage zu exportieren. Wählen Sie nacheinander + Filter, das Element Gerätevorlage, den Operator Ist gleich und die soeben erstellte Gerätevorlage Computemodell aus.

  6. Fügen Sie einen Meldungsfilter hinzu, um zwischen transformierten und nicht transformierten Daten zu unterscheiden. Dieser Filter verhindert, dass transformierte Werte zurück an die Gerätebrücke gesendet werden. Wählen Sie + Nachrichteneigenschaftenfilter aus, geben Sie den berechnetenNamenswert ein und wählen Sie dann den Operator Nicht vorhanden aus. Die Zeichenfolge computed wird als Schlüsselwort im Beispielcode der Gerätebrücke verwendet.

  7. Wählen Sie als Ziel das Computefunktionsziel aus, das Sie zuvor erstellt haben.

  8. Speichern Sie die Änderungen. Nach etwa einer Minute wird der Exportstatus als Fehlerfrei angezeigt.

Überprüfen

Das Beispielgerät, das Sie zum Testen des Szenarios verwenden, ist in Node.js geschrieben. Vergewissern Sie sich, dass auf Ihrem lokalen Computer „Node.js“ und „npm“ installiert ist. Wenn Sie diese Voraussetzungen nicht installieren möchten, verwenden Sie die Azure Cloud Shell, in der sie vorinstalliert sind.

So führen Sie ein Beispielgerät aus, das das Szenario testet:

  1. Führen Sie den folgenden Befehl aus, um das GitHub-Repository zu klonen, das den Beispielcode des Moduls enthält:

    git clone https://github.com/Azure/iot-central-compute
    
  2. Um das Beispielgerät mit Ihrer IoT Central-Anwendung zu verbinden, bearbeiten Sie die Verbindungseinstellungen in der Datei iot-central-compute/device/device.js. Ersetzen Sie die Bereichs-ID und den SAS-Gruppenschlüssel durch die Werte, die Sie sich zuvor notiert haben:

    // These values need to be filled in from your Azure IoT Central application
    //
    const scopeId = "<IoT Central Scope Id value>";
    const groupSasKey = "<IoT Central Group SAS key>";
    //
    

    Speichern Sie die Änderungen.

  3. Führen Sie die folgenden Befehle aus, um die erforderlichen Pakete zu installieren und das Gerät auszuführen:

    cd ~/iot-central-compute/device
    npm install
    node device.js
    
  4. Das Ergebnis dieses Befehls sieht wie die folgende Ausgabe aus:

    registration succeeded
    assigned hub=iotc-2bd611b0....azure-devices.net
    deviceId=computeDevice
    Client connected
    send status: MessageEnqueued [{"data":"33.23, 69.09, 30.7213, -61.1192"}]
    send status: MessageEnqueued [{"data":"2.43, 75.86, -2.6358, 162.935"}]
    send status: MessageEnqueued [{"data":"6.19, 76.55, -14.3538, -82.314"}]
    send status: MessageEnqueued [{"data":"33.26, 48.01, 71.9172, 48.6606"}]
    send status: MessageEnqueued [{"data":"40.5, 36.41, 14.6043, 14.079"}]
    
  5. Navigieren Sie in Ihrer IoT Central-Anwendung zum Gerät namens computeDevice. In der Ansicht Rohdaten gibt es zwei verschiedene Telemetriedatenströme, die ungefähr alle fünf Sekunden angezeigt werden. Der Datenstrom mit nicht modellierten Daten ist die ursprüngliche Telemetrie; der Datenstrom mit modellierten Daten besteht aus den Daten, die durch die Funktion transformiert wurden:

    Screenshot that shows original and transformed raw data.

Bereinigen von Ressourcen

Wenn Sie die erstellten Azure-Ressourcen nicht mehr benötigen, während Sie die Schritte in diesem Leitfaden ausführen, löschen Sie die Ressourcengruppen im Azure-Portal.

Die beiden Ressourcengruppen, die Sie in diesem Leitfaden verwendet haben, sind Eingangsszenario und Ausgangsszenario.

Nächste Schritte

In diesem Artikel haben Sie die verschiedenen Optionen zum Transformieren von Gerätedaten für IoT Central sowohl beim eingehenden als auch beim ausgehenden Datenverkehr kennengelernt. Der Artikel enthält exemplarische Vorgehensweisen für zwei spezifische Szenarien:

  • Verwenden Sie ein IoT Edge-Modul, um Daten von nachgeschalteten Geräten zu transformieren, bevor Sie die Daten an Ihre IoT Central gesendet werden.
  • Verwenden Azure Functions zum Transformieren von Daten außerhalb von IoT Central. In diesem Szenario verwendet IoT Central einen Datenexport, um eingehende Daten an eine zu transformierte Azure-Funktion zu senden. Die Funktion sendet die transformierten Daten zurück an Ihre IoT Central-Anwendung.

Nachdem Sie erfahren haben, wie Sie Gerätedaten außerhalb Ihrer Azure IoT Central-Anwendung transformieren, können Sie jetzt etwas über das Analysieren von Gerätedaten in IoT Central mithilfe des Daten-Explorers erfahren.