Utiliser Azure Functions pour filtrer les données à la périphérie

Effectué

Pour réduire la quantité de données de télémétrie envoyées à votre application IoT Central, vous devrez filtrer les données sur votre appareil IoT Edge avant de les envoyer.

Pour réduire les coûts associés à l’envoi de télémétrie depuis vos magasins vers votre application, et pour garantir que vos opérateurs voient seulement les données importantes, vous voulez filtrer les données sur l’appareil IoT Edge. Vous avez déterminé que les opérateurs doivent uniquement voir les données de télémétrie lorsque la température ambiante est supérieure à 21° C.

Ici, vous allez apprendre à utiliser Azure Functions en tant que module sur votre appareil IoT Edge pour implémenter le filtre. Vous allez aussi voir comment mettre à jour le manifeste de déploiement pour votre application IoT Central, de sorte que les appareils IoT Edge qui sont connectés à votre application IoT Central le téléchargent et mettent à jour les modules sur l’appareil.

Qu’est-ce qu’Azure Functions ?

Azure Functions est un service qui vous permet d’exécuter de petits morceaux de code, appelés fonctions, sans vous préoccuper de l’infrastructure de l’application. Avec Azure Functions, l’infrastructure cloud fournit tous les serveurs à jour dont vous avez besoin pour que votre application continue de s’exécuter à grande échelle.

Vous pouvez également utiliser Azure Functions pour déployer une fonction sur votre appareil IoT Edge en tant que module afin que la fonction s’exécute localement, à la périphérie, plutôt que dans le cloud.

Vous envisagez d’implémenter votre filtre à l’aide de Azure Functions pour exécuter l’un des modules sur votre appareil IoT Edge. Ce filtre limite la quantité de données de télémétrie de température de l’ordinateur envoyée à votre application IoT Central.

Comment créer un module IoT Edge qui contient une fonction

Vous pouvez utiliser plusieurs langages pour créer une fonction pour Azure Functions. Les étapes suivantes décrivent comment générer un module IoT Edge qui contient une fonction implémentée en C# :

  1. Créez un projet qui comprend la génération de modèles automatique pour un module Fonction Azure. Vous pouvez créer ce type de projet en utilisant Visual Studio Code ou à partir de la ligne de commande en utilisant la commande dotnet.
  2. Implémentez la logique métier pour la fonction en C#.
  3. Créez le projet pour générer une image Docker qui contient la fonction et le runtime Azure Functions obligatoire.
  4. Envoyez l’image Docker vers un registre de conteneur.
  5. Modifiez le manifeste de déploiement de votre appareil IoT Edge pour inclure votre nouveau module. La configuration comprend l’adresse de l’image Docker et la façon dont le module de fonction interagit avec d’autres modules dans le runtime IoT Edge.

L’extrait de code suivant présente la section modules avec le nouveau module filterfunction dans le manifeste de déploiement mis à jour :

"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": ""
    }
  }
}

Selon le registre de conteneurs que vous utilisez et sa configuration, votre manifeste de déploiement peut avoir besoin d’inclure des informations d’identification pour accéder au registre.

L’extrait de code suivant montre comment les données de télémétrie sont acheminées entre les modules du manifeste de déploiement mis à jour :

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

Mettre à jour le manifeste de déploiement dans IoT Central

Pour déployer le nouveau module sur votre appareil IoT Edge, mettez à jour le manifeste de déploiement sur votre application IoT Central. Quand vous mettez à jour un manifeste de déploiement comme celui-ci, les appareils IoT Edge connectés à votre application IoT Central le téléchargent et mettent à jour les modules sur l’appareil.

Utiliser Azure Functions à la périphérie

1.

Où pouvez-vous exécuter une fonction Azure ?

2.

Quel est le rôle du routage dans un manifeste de déploiement ?