Verwenden von Azure Functions zum Filtern von Daten im Edgebereich

Abgeschlossen

Um die Menge an Telemetriedaten zu reduzieren, die an Ihre IoT Central-Anwendung gesendet werden, sollten Sie die Daten auf Ihrem IoT Edge-Gerät vor dem Senden filtern.

Die Daten auf dem IoT Edge-Gerät sollten gefiltert werden, um die Kosten zu reduzieren, die für das Senden der Telemetriedaten aus Ihren Filialen an Ihre Anwendung anfallen, und um sicherzustellen, dass für Ihre Bediener*innen nur wichtige Daten angezeigt werden. Sie haben festgestellt, dass für Bediener Telemetriedaten nur dann angezeigt werden müssen, wenn die Umgebungstemperatur über 21 C liegt.

Hier wird beschrieben, wie Sie Azure Functions als Modul auf Ihrem IoT Edge-Gerät verwenden, um den Filter zu implementieren. Außerdem sehen Sie sich an, wie Sie das Bereitstellungsmanifest für Ihre IoT Central-Anwendung aktualisieren, damit IoT Edge-Geräte, die mit Ihrer IoT Central-Anwendung verbunden sind, es herunterladen, und wie Sie die Module auf dem Gerät aktualisieren.

Was ist Azure Functions?

Azure Functions ist ein Dienst, mit dem Sie kurze Codeabschnitte ausführen können, die als Funktionen bezeichnet werden, ohne dass Sie sich um die Anwendungsinfrastruktur kümmern müssen. Mit Azure Functions stellt die Cloudinfrastruktur alle aktuellen Server bereit, die Sie zur skalierten Ausführung Ihrer Anwendung benötigen.

Sie können Azure Functions auch nutzen, um eine Funktion auf Ihrem IoT Edge-Gerät so als Modul bereitzustellen, dass die Funktion nicht in der Cloud, sondern lokal im Edgebereich ausgeführt wird.

Sie planen, Ihren Filter mit Azure Functions zu implementieren, damit dieser als eines der Module auf Ihrem IoT Edge-Gerät ausgeführt wird. Mit diesem Filter wird die Menge an Telemetriedaten zur Computertemperatur beschränkt, die an Ihre IoT Central-Anwendung gesendet werden.

Erstellen eines IoT Edge-Moduls, in dem eine Funktion enthalten ist

Sie können verschiedene Sprachen verwenden, um eine Funktion für Azure Functions zu erstellen. In den folgenden Schritten wird beschrieben, wie Sie ein IoT Edge-Modul erstellen, das eine in C# implementierte Funktion enthält:

  1. Erstellen Sie ein Projekt, in dem das Gerüst eines Azure Functions-Moduls enthalten ist. Sie können ein Projekt dieser Art mit Visual Studio Code oder über die Befehlszeile mit dem Befehl dotnet erstellen.
  2. Implementieren Sie die Geschäftslogik für die Funktion in C#.
  3. Erstellen Sie das Projekt, um ein Docker-Image zu generieren, das die Funktion und die erforderliche Azure Functions-Runtime enthält.
  4. Laden Sie das Docker-Image in eine Containerregistrierung hoch.
  5. Ändern Sie das Bereitstellungsmanifest für Ihr IoT Edge-Gerät so, dass es Ihr neues Modul enthält. Die Konfiguration enthält die Adresse des Docker-Images und Informationen dazu, wie das Funktionsmodul mit anderen Modulen in der IoT Edge-Runtime interagiert.

Im folgenden Codeausschnitt ist der Abschnitt modules mit dem neuen Modul filterfunction im aktualisierten Bereitstellungsmanifest dargestellt:

"modules": {
  "SimulatedTemperatureSensor": {
    "version": "1.0",
    "type": "docker",
    "status": "running",
    "restartPolicy": "always",
    "settings": {
      "image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.4.6",
      "createOptions": "{}"
    }
  },
  "filterfunction": {
    "version": "1.0",
    "type": "docker",
    "status": "running",
    "restartPolicy": "always",
    "settings": {
      "image": "<YOUR CONTAINER REGISTRY NAME>.azurecr.io/filterfunction:v1",
      "createOptions": ""
    }
  }
}

Abhängig von der verwendeten Containerregistrierung und der zugehörigen Konfiguration muss Ihr Bereitstellungsmanifest unter Umständen Anmeldeinformationen für den Zugriff auf die Registrierung enthalten.

Im folgenden Codeausschnitt ist dargestellt, wie die Telemetriedaten zwischen den Modulen im aktualisierten Bereitstellungsmanifest weitergeleitet werden:

"routes": {
    "FilterFunctionToIoTCentral": "FROM /messages/modules/filterfunction/outputs/* INTO $upstream",
    "sensorToFilterFunction": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/filterfunction/inputs/input1\")"
  },

Aktualisieren des Bereitstellungsmanifests in IoT Central

Um das neue Modul auf Ihrem IoT Edge-Gerät bereitzustellen, aktualisieren Sie das Bereitstellungsmanifest in Ihrer IoT Central-Anwendung. Wenn Sie ein Bereitstellungsmanifest wie dieses aktualisieren, laden die IoT Edge-Geräte, die mit Ihrer IoT Central-Anwendung verbunden sind, es herunter und aktualisieren die Module auf dem Gerät.

Verwenden von Azure Functions im Edgebereich

1.

Wo können Sie eine Azure-Funktion ausführen?

2.

Welche Rolle spielt das Routing in einem Bereitstellungsmanifest?