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:
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. |
Nachrichtenerweiterung | 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:
Ein aktives Azure-Abonnement. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Eine IoT Central-Anwendung, die mit der Vorlage Benutzerdefinierte Anwendung erstellt wurde. Weitere Informationen finden Sie unter Erstellen einer IoT Central-Anwendung und Über Ihre Anwendung.
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
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:
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.
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.
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.
Ü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"
}
}
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:
Öffnen Sie die Azure Cloud Shell und melden Sie sich bei Ihrem Azure-Abonnement an.
Wählen Sie die Bash-Shell aus.
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
- undpassword
-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:
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
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 umwandelt, werden die Telemetriedaten aller nachgeschalteten Geräte in IoT Central so empfangen, als ob sie vom IoT Edge-Gerät gesendet worden wären.
Wie eine Gerätevorlage für ein IoT Edge-Gateway-Gerät erstellt wird:
Speichern Sie eine Kopie des Bereitstellungsmanifests auf Ihrem lokalen Entwicklungscomputer: moduledeployment.json.
Öffnen Sie ihre lokale Kopie der Manifestdatei moduledeployment.json in einem Text-Editor.
Suchen Sie nach dem Abschnitt
registryCredentials
und ersetzen Sie die Platzhalter durch die Werte, die Sie sich beim Erstellen der Azure-Containerregistrierung notiert haben. Deraddress
-Wert lautet{your username}.azurecr.io
.Suchen Sie den
settings
-Abschnitt für dietransformmodule
. Ersetzen Sie{your username}
durch denselben Wert, den Sie im vorhergehenden Schritt verwendet haben. Speichern Sie die Änderungen.Navigieren Sie in Ihrer IoT Central-Anwendung zur Seite Edgemanifeste.
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.
Wählen Sie Weiter und dann Erstellen aus.
Navigieren Sie in Ihrer IoT Central-Anwendung zur Seite Gerätevorlagen.
Wählen Sie + Neu und dann Azure IoT Edge aus und wählen Sie dann Weiter: Anpassen aus.
Geben IoT Edge Gateway-Gerät als Name für die Gerätevorlage ein. Wählen Sie Dies ist ein Gatewaygerät aus.
Wählen Sie Weiter: Überprüfen und dann Erstellen aus.
Wählen Sie auf der Seite Modell erstellen die Option Benutzerdefiniertes Modell aus.
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:
Wählen Sie im Abschnitt Module der Vorlage IoT Edge-Gatewaygerät das Modul „transformmodule“ aus.
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 Objekt Objektdefinition:
Anzeigename Name Schema Geräte-ID deviceId String Speichern Sie die Änderungen.
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 Objekt Objektdefinition:
Anzeigename Name Schema Temperatur Temperatur Double Druck pressure Double Feuchtigkeit humidity Double Skalieren Skalierung String Speichern Sie die Änderungen.
Wählen Sie im Modell die Option Beziehungen aus. Wählen Sie Beziehungen nicht im Modul transformmodule aus.
Wählen Sie Beziehung hinzufügen aus.
Geben Sie Downstreamsensor als Anzeigenamen und Sensor als Namen ein, und wählen Sie Beliebig als Ziel aus. Wählen Sie Speichern.
Wählen Sie Veröffentlichen aus, um die Gerätevorlage zu veröffentlichen.
Wie ein Gateway-Gerät in IoT Central registriert wird:
Navigieren Sie in Ihrer IoT Central-Anwendung zur Seite Geräte.
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.
Klicken Sie in der Liste der Geräte auf das IoT Edge-Gateway-Gerät und wählen Sie dann Verbinden aus.
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:
Navigieren Sie in Ihrer IoT Central-Anwendung zur Seite Geräte.
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.
Klicken Sie in der Geräteliste auf das Gerät Downstream 01, und wählen Sie Gerät verwalten > An Gateway anfügen aus.
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.
Wählen Sie auf dem Gerät Downstream 01 die Option Verbinden aus.
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. |
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:
Ö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.
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, ist der Status der drei Module Wird 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:
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.
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.
Öffnen Sie die Datei config.toml in einem Text-Editor. Zum Beispiel:
sudo nano /etc/aziot/config.toml
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.
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
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:
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.
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
Führen Sie die folgenden
scp
-Befehle aus, um das erforderliche Zertifikat vom Gatewaygerät zu kopieren. Dieserscp
-Befehl verwendet den Hostnamenedgegateway
, um den virtuellen Gatewaycomputer zu identifizieren. Sie werden zur Eingabe des Kennworts aufgefordert:cd ~/iot-central-transform-with-iot-edge scp AzureUser@edgegateway:/home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem leafdevice/certs
Navigieren Sie zum leafdevice-Ordner und installieren Sie die benötigten Pakete. Führen Sie dann die
build
- undstart
-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 dannY
.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:
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. Zum 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
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:
Richten Sie die Compute-Engine ein: Erstellen Sie eine IoT Central-Gerätebrücke, die als Compute-Engine für die Datentransformation fungieren soll.
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.
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.
Ü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:
Melden Sie sich bei Ihrer IoT Central-Anwendung an.
Navigieren Sie zu Berechtigungen > Geräteverbindungsgruppen.
Notieren Sie sich den Wert für den ID-Bereich. Sie werden diesen Wert später noch verwenden.
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. |
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:
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.
Navigieren Sie im Azure-Portal zur Funktions-App in der Ressourcengruppe für das Ausgangsszenario.
Wählen Sie im linken Navigationsbereich unter Entwicklungstools die Option App Service-Editor (Vorschau) aus.
Wählen Sie Go →, um die Seite App Service-Editor zu öffnen. Nehmen Sie die folgenden Änderungen vor:
Öffnen Sie die wwwroot/IoTCIntegration/index.js-Datei. Ersetzen Sie den gesamten Code in dieser Datei durch den Code in index.js.
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>'
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.
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.
Kehren Sie zur Übersichtsseite der Azure-Funktion zurück, und starten Sie die Funktion neu:
Wählen Sie im linken Navigationsbereich Funktionen aus. Wählen Sie dann IoTCIntegration aus. Wählen Sie Code + Test aus.
Notieren Sie sich die Funktions-URL, Sie benötigen diesen Wert später:
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:
Melden Sie sich bei Ihrer IoT Central-Anwendung an, und navigieren Sie zur Seite mit den Gerätevorlagen.
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). Klicken Sie anschließend auf Erstellen.
Wählen Sie Modell importieren aus und navigieren Sie zur Datei model.json, die Sie zuvor heruntergeladen haben.
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:
Wählen Sie in Ihrer IoT Central-Anwendung Datenexport aus.
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.
Speichern Sie die Änderungen.
Wählen Sie + Neuer Export aus und erstellen Sie einen Datenexport namens Compute-Export.
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.
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.Wählen Sie als Ziel das Computefunktionsziel aus, das Sie zuvor erstellt haben.
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:
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
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.
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
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"}]
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:
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.