Verwenden von Azure Functions zum Filtern von Daten im Edgebereich
Um die Menge an Telemetriedaten zu reduzieren, die an Ihre Azure IoT Central-Anwendung gesendet werden, sollten Sie die Daten auf Ihrem IoT Edge-Gerät vor dem Senden filtern.
Um die Kosten zu reduzieren, die mit dem Senden von Telemetrie aus Ihren Stores an Ihre Anwendung verbunden sind, möchten Sie die Daten auf dem IoT Edge-Gerät filtern. Dadurch wird auch sichergestellt, dass Ihre Operatoren nur wichtige Daten sehen. Sie haben festgestellt, dass für Operatoren 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 überprüfen Sie, wie Sie das Bereitstellungsmanifest auf Ihre Azure IoT Central-Anwendung aktualisieren. Anschließend laden IoT Edge-Geräte, die mit Ihrer Azure IoT Central-Anwendung verbunden sind, herunter, und aktualisieren Sie die Module auf dem Gerät.
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 Azure 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:
- 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. - Implementieren Sie die Geschäftslogik für die Funktion in C#.
- Erstellen Sie das Projekt, um ein Docker-Image zu generieren, das die Funktion und die erforderliche Azure Functions-Runtime enthält.
- Laden Sie das Docker-Image in eine Containerregistrierung hoch.
- Ä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 erfordert Ihr Bereitstellungsmanifest unter Umständen Anmeldeinformationen für den Zugriff auf die Registrierung.
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 Azure IoT Central
Um das neue Modul auf Ihrem IoT Edge-Gerät bereitzustellen, aktualisieren Sie das Bereitstellungsmanifest in Ihrer Azure IoT Central-Anwendung. Wenn Sie ein Bereitstellungsmanifest wie dieses aktualisieren, laden die IoT Edge-Geräte, die mit Ihrer Azure IoT Central-Anwendung verbunden sind, es herunter und aktualisieren die Module auf dem Gerät.