Transformer des données en externe pour IoT Central

Les appareils IoT envoient des données dans différents formats. Pour utiliser les données d’appareil avec votre application IoT Central, vous devrez peut-être utiliser une transformation pour :

  • Rendre le format des données compatible avec votre application IoT Central.
  • Convertir des unités.
  • Calculer de nouvelles métriques.
  • Enrichir les données à partir d’autres sources.

Cet article explique comment transformer des données d’appareil en dehors d’IoT Central en entrée ou en sortie.

Remarque

IoT Central pouvez également transformer des données en interne, pour en savoir plus, consultez la rubrique mapper la télémétrie à l’entrée pour IOT central et transformer des données à l’intérieur de votre application IOT central pour l’exportation.

Le diagramme suivant illustre trois itinéraires pour les données qui incluent des transformations :

Résumé des itinéraires de transformation des données à la fois entrantes et sortantes

Le tableau suivant présente trois exemples de types de transformation :

Transformation Description Exemple Notes
Format de message Convertit ou manipule des messages JSON. CSV vers JSON À l’entrée. IoT Central accepte uniquement les messages JSON avec valeur. Pour en savoir plus, consultez Charges utiles de télémétrie, de propriétés et de commandes.
Calculs Fonctions mathématiques qu’Azure Functions peuvent exécuter. Conversion d’unités de Fahrenheit en Celsius. Transformation à l’aide du modèle de sortie pour tirer parti de l’entrée de l’appareil scalable via une connexion directe à IoT Central. La transformation des données vous permet d’utiliser des fonctionnalités d’IoT Central telles que les visualisations et les travaux.
Enrichissement des messages Enrichissements provenant de sources de données externes introuvables dans les propriétés ou la télémétrie de l’appareil. Pour en savoir plus sur les enrichissements internes, consultez Exporter des données IoT vers des destinations cloud à l’aide des fonctionnalités de stockage Blob. Ajoutez des informations météorologiques aux messages à l’aide des données d’emplacement des appareils. Transformation à l’aide du modèle de sortie pour tirer parti de l’entrée de l’appareil scalable via une connexion directe à IoT Central.

Prérequis

Pour suivre les étapes décrites dans ce guide pratique, vous devez disposer des éléments suivants :

Transformation des données à l’entrée

Pour transformer les données des appareils à l’entrée, deux options existent :

  • IoT Edge : utilisez un module IoT Edge pour transformer des données à partir d’appareils en aval avant d’envoyer les données à votre application IoT Central.

  • Pont d’appareil IoT Central : le pont d’appareil IoT Central connecte d’autres clouds d’appareils IoT, tels que Sigfox, Particle et The Things Network à IoT Central. Le pont d’appareil utilise une fonction Azure pour transférer les données et vous pouvez personnaliser la fonction pour transformer les données de l’appareil.

Utiliser IoT Edge pour transformer des données d’appareil

Transformation de données en entrée à l’aide d’IoT Edge

Dans ce scénario, un module IoT Edge transforme les données des appareils en aval avant de les transférer à votre application IoT Central. À un haut niveau, voici les étapes générales à suivre pour configurer ce scénario :

  1. Configurer un appareil IoT Edge : Installez et configurez un appareil IoT Edge en tant que passerelle et connectez la passerelle à votre application IoT Central.

  2. Connectez l’appareil en aval à l’appareil IoT Edge : Connectez les appareils en aval à l’appareil IoT Edge et configurez-les dans votre application IoT Central.

  3. Transformer les données de l’appareil dans IoT Edge : Créez un module IoT Edge pour transformer les données. Déployez le module sur l’appareil de passerelle IoT Edge qui transmet les données de l’appareil transformées à votre application IoT Central.

  4. Vérifier : Envoyez des données d’un appareil en aval à la passerelle et vérifiez que les données de l’appareil transformées atteignent votre application IoT Central.

Dans l’exemple décrit dans les sections suivantes, l’appareil en aval envoie des données JSON au format suivant à l’appareil de passerelle IoT Edge :

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

Vous utilisez un module IoT Edge pour transformer les données et convertir la valeur de température de Celsius en Fahrenheit avant de l’envoyer à IoT Central :

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

Parcourir le code

Les étapes suivantes vous montrent comment préparer et configurer ce scénario :

Générer le module personnalisé

Dans ce scénario, l’appareil IoT Edge exécute un module personnalisé qui transforme les données de l’appareil en aval. Avant de déployer et de configurer l’appareil IoT Edge, vous devez :

  • Générer le module personnalisé.
  • Ajouter le module personnalisé à un registre de conteneurs.

Le runtime IoT Edge télécharge des modules personnalisés à partir d’un registre de conteneurs, comme un registre de conteneurs Azure ou Docker Hub. Azure Cloud Shell dispose de tous les outils dont vous avez besoin pour créer un registre de conteneurs, générer le module et charger le module dans le registre :

Pour créer un registre de conteneurs :

  1. Ouvrez Azure Cloud Shell et connectez-vous à votre abonnement Azure.

  2. Sélectionnez l’interpréteur de commandes Bash.

  3. Exécutez les commandes suivantes pour créer un registre de conteneurs Azure :

    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
    

    Prenez note des valeurs username et password, vous les utiliserez plus tard. Vous n’avez besoin que d’un seul des mots de passe indiqués dans la sortie de la commande.

Pour générer le module personnalisé dans Azure Cloud Shell :

  1. Dans Azure Cloud Shell, clonez le dépôt GitHub qui contient le code source du module :

    git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
    
  2. Pour générer le module personnalisé, exécutez les commandes suivantes dans Azure Cloud Shell :

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

    L’exécution des commandes précédentes peut prendre plusieurs minutes.

Configurer un appareil IoT Edge

Ce scénario utilise une passerelle IoT Edge pour transformer les données de n’importe quel appareil en aval. Cette section décrit comment créer un modèle d’appareil IoT Central pour l’appareil de passerelle dans votre application IoT Central. Les appareils IoT Edge utilisent un manifeste de déploiement pour configurer leurs modules.

Dans cet exemple, l’appareil en aval n’a pas besoin d’un modèle d’appareil. L’appareil en aval est inscrit dans IoT Central afin que vous puissiez générer les informations d’identification nécessaires pour connecter l’appareil IoT Edge. Dans la mesure où le module IoT Edge transforme les données, toute la télémétrie du périphérique en aval arrive dans IoT Central comme si elle avait été envoyée par le périphérique IoT Edge.

Pour créer un modèle d’appareil pour l’appareil de passerelle IoT Edge :

  1. Enregistrez une copie du manifeste de déploiement sur votre ordinateur de développement local : moduledeployment.json.

  2. Ouvrez votre copie locale du fichier manifeste moduledeployment.json dans un éditeur de texte.

  3. Recherchez la section registryCredentials et remplacez les espaces réservés par les valeurs que vous avez notées lorsque vous avez créé le registre de conteneurs Azure. La valeur address ressemble à {your username}.azurecr.io.

  4. Recherchez la section settings pour le transformmodule. Remplacez {your username} par la valeur que vous avez utilisée à l’étape précédente. Enregistrez les modifications.

  5. Dans votre application IoT Central, accédez à la page Manifestes Edge.

  6. Cliquez sur + Nouveau. Entrez un nom pour votre manifeste de déploiement, par exemple Transformer (Transformateur), puis chargez le fichier moduledeployment.json que vous avez téléchargé précédemment. Le manifeste de déploiement comprend un module personnalisé appelé transformmodule.

  7. Sélectionnez Suivant, puis Créer.

  8. Accédez à la page Modèles d’appareil dans votre application IoT Central.

  9. Sélectionnez + Nouveau, Azure IoT Edge, puis sélectionnez Suivant : Personnaliser.

  10. Entrez Appareil de passerelle IoT Edge comme nom de modèle d’appareil. Sélectionnez Il s’agit d’un appareil de passerelle.

  11. Sélectionnez Suivant : Vérifier, puis Créer.

  12. Dans la page Créer un modèle, sélectionnez Modèle personnalisé.

  13. Dans le modèle, sélectionnez Modules, puis Importer des modules à partir d’un manifeste. Sélectionnez le manifeste de déploiement Transformer, puis sélectionnez Importer.

Le manifeste de déploiement ne spécifie pas la télémétrie envoyée par le module. Pour ajouter les définitions de télémétrie au modèle d’appareil :

  1. Sélectionnez le module transformmodule dans la section Modules du modèle Appareil de passerelle IoT Edge.

  2. Sélectionnez Ajouter une fonctionnalité et utilisez les informations des tableaux suivants pour ajouter un nouveau type de télémétrie :

    Paramètre Valeur
    Nom complet Appareil
    Nom device
    Type de fonctionnalité Télémétrie
    Type de sémantique Aucun
    schéma Object

    Définition de l’objet :

    Nom complet Nom schéma
    ID de périphérique deviceId Chaîne

    Enregistrez vos modifications.

  3. Sélectionnez Ajouter une fonctionnalité et utilisez les informations des tableaux suivants pour ajouter un nouveau type de télémétrie :

    Paramètre Valeur
    Nom complet Mesures
    Nom measurements (mesures)
    Type de fonctionnalité Télémétrie
    Type de sémantique Aucun
    schéma Object

    Définition de l’objet :

    Nom complet Nom schéma
    Température température Double
    Pression pressure Double
    Humidité humidité Double
    Scale scale Chaîne

    Enregistrez vos modifications.

  4. Dans le modèle, sélectionnez Relations. Ne sélectionnez pas Relations dans le module transformmodule.

  5. Sélectionnez Ajouter une relation.

  6. Entrez Capteur en aval comme nom d’affichage et capteur comme nom, puis sélectionnez N’importe lequel comme cible. Sélectionnez Enregistrer.

  7. Sélectionnez Publier pour publier le modèle d’appareil.

Pour inscrire un appareil de passerelle dans IoT Central :

  1. Accédez à la page Appareils de votre application IoT Central.

  2. Sélectionnez Appareil de passerelle IoT Edge, puis + Nouveau. Entrez Appareil de passerelle IoT Edge comme nom d’appareil et gateway-01 comme identité d’appareil, et assurez-vous que l’option Appareil de passerelle IoT Edge est sélectionnée comme modèle d’appareil et que l’option Non est sélectionnée pour Simuler cet appareil ? Sélectionnez Transformer comme manifeste Edge. Sélectionnez Créer.

  3. Dans la liste des appareils, cliquez sur Appareil de passerelle IoT Edge, puis sélectionnez Se connecter.

  4. Prenez note de l’Étendue d’ID, de l’ID de l’appareil et des valeurs de Clé primaire pour l’appareil de passerelle IoT Edge. Vous les utiliserez plus tard.

Pour inscrire un appareil en aval dans IoT Central :

  1. Accédez à la page Appareils de votre application IoT Central.

  2. Ne sélectionnez pas un modèle d’appareil. Cliquez sur + Nouveau. Entrez Downstream 01 comme nom de l’appareil et downstream-01 comme identité d’appareil, et assurez-vous que le modèle d’appareil est Non affecté et que l’option Non est sélectionnée pour Simuler cet appareil ? Sélectionnez Créer.

  3. Dans la liste des appareils, cliquez sur l’appareil Downstream 01, puis sélectionnez Gérer l’appareil > Attacher à la passerelle.

  4. Dans la boîte de dialogue Attacher à une passerelle, sélectionnez le modèle d’appareil Appareil de passerelle IoT Edge et l’instance d’appareil Appareil de passerelle IoT Edge. Sélectionnez Attacher.

  5. Sur l’appareil Downstream 01, sélectionnez Connexion.

  6. Notez les valeurs Étendue d’ID, ID de l’appareil et Clé primaire pour Downstream 01. Vous les utiliserez plus tard.

Déployer la passerelle et les appareils en aval

Pour plus de commodité, cet article utilise des machines virtuelles Azure pour exécuter la passerelle et les appareils en aval. Pour créer les deux machines virtuelles Azure, sélectionnez le bouton Déployer sur Azure disponible sous le tableau suivant. Utilisez les informations du tableau pour remplir le formulaire de déploiement personnalisé :

Champ Valeur
Groupe de ressources ingress-scenario
Passerelle de préfixe d’étiquette DNS Un nom DNS unique pour cet ordinateur, tel que <your name>edgegateway
Préfixe d’étiquette DNS en aval Un nom DNS unique pour cet ordinateur, tel que <your name>downstream
ID de l’étendue Étendue d’ID que vous avez notée précédemment
ID d’appareil de passerelle IoT Edge gateway-01
Clé d’appareil de passerelle IoT Edge La valeur de clé primaire que vous avez notée précédemment
Type d’authentification Mot de passe
Mot de passe de l’administrateur ou clé Votre choix de mot de passe pour le compte AzureUser sur les deux machines virtuelles.

Bouton Déployer sur Azure

Sélectionnez Vérifier + créer, puis Créer. La création des machines virtuelles dans le groupe de ressources ingress-scenario prend quelques minutes.

Pour vérifier que l’appareil de passerelle IoT Edge s’exécute correctement :

  1. Ouvrez votre application IoT Central. Ensuite, accédez à Appareil de passerelle IoT Edge dans la liste des appareils sur la page Appareils .

  2. Sélectionnez l’onglet Modules et vérifiez l’état des trois modules. Le démarrage de l’exécution d’IoT Edge sur la machine virtuelle prend quelques minutes. Quand la machine virtuelle s’exécute, l’état des trois modules est En cours d’exécution. Si me runtime IoT Edge ne démarre pas, consultez Résoudre les problèmes liés à votre appareil IoT Edge.

Pour que votre appareil IoT Edge fonctionne comme une passerelle, il a besoin de certificats pour prouver son identité à tous les appareils en aval. Cet article utilise des certificats de démonstration. Dans un environnement de production, utilisez des certificats fournis par votre autorité de certification.

Pour générer les certificats de démonstration et les installer sur votre appareil de passerelle :

  1. Utilisez SSH pour vous connecter à la machine virtuelle de votre appareil de passerelle. Vous pouvez trouver le nom DNS de cette machine virtuelle dans le portail Azure. Accédez à la machine virtuelle edgegateway dans le groupe de ressources ingress-scenario.

    Conseil

    Vous devrez peut-être ouvrir le port 22 pour l’accès SSH sur vos machines virtuelles avant de pouvoir utiliser SSH pour vous connecter à partir de votre ordinateur local ou d’Azure Cloud Shell.

  2. Exécutez les commandes suivantes pour cloner le dépôt IoT Edge et générer vos certificats de démonstration :

    # 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"
    

    Après avoir exécuté les commandes précédentes, les fichiers ci-dessous sont prêts à être utilisés dans les étapes suivantes :

    • ~/certs/certs/azure-iot-test-only.root.ca.cert.pem - Le certificat d’autorité de certification racine utilisé pour créer tous les autres certificats de démonstration en vue de tester un scénario IoT Edge.
    • ~/certs/certs/iot-edge-device-mycacert-full-chain.cert.pem - Un certificat d’autorité de certification d’appareil, référencé à l’aide du fichier config.yaml. Dans un scénario de passerelle, ce certificat de l'autorité de certification précise comment l'appareil IoT Edge vérifie son identité auprès des appareils en aval.
    • ~/certs/private/iot-edge-device-mycacert.key.pem - La clé privée associée au certificat de l’autorité de certification de l’appareil.

    Pour en savoir plus sur ces certificats de démonstration, consultez Créer des certificats de démonstration pour tester les fonctionnalités de l’appareil IoT Edge.

  3. Ouvrez le fichier config.toml dans un éditeur de texte. Par exemple :

    sudo nano /etc/aziot/config.toml
    
  4. Supprimez les marques de commentaire et modifiez les paramètres du certificat comme suit :

    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"
    

    L’exemple précédent suppose que vous êtes connecté en tant qu’AzureUser et que vous avez créé un certificat d’autorité de certification d’appareil appelé « mycacert ».

  5. Enregistrez les modifications et exécutez la commande suivante pour vérifier que le fichier config.toml est correct :

    sudo iotedge check
    
  6. Redémarrez le runtime IoT Edge :

    sudo iotedge config apply
    

Si le runtime IoT Edge démarre correctement après vos modifications, l’état des modules $edgeAgent et $EdgeHub passe à Running. Vous pouvez voir ces valeurs d’état sur la page Modules de votre appareil de passerelle dans IoT Central.

Si le runtime ne démarre pas, vérifiez les modifications que vous avez apportées dans le fichier config.toml, puis consultez Résoudre les problèmes de votre appareil IoT Edge.

Connecter un appareil en aval à un appareil IoT Edge

Pour connecter un appareil en aval à la passerelle Azure IoT Edge :

  1. Utilisez SSH pour vous connecter à la machine virtuelle de votre appareil en aval. Vous pouvez trouver le nom DNS de cette machine virtuelle dans le portail Azure. Accédez à la machine virtuelle leafdevice dans le groupe de ressources ingress-scenario.

    Conseil

    Vous devrez peut-être ouvrir le port 22 pour l’accès SSH sur vos machines virtuelles avant de pouvoir utiliser SSH pour vous connecter à partir de votre ordinateur local ou d’Azure Cloud Shell.

  2. Pour cloner le référentiel GitHub avec le code source de l’exemple d’appareil en aval, exécutez la commande suivante :

    cd ~
    git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
    
  3. Pour copier le certificat requis à partir de l’appareil de passerelle, exécutez les commandes scp suivantes. Cette commande scp utilise le nom d’hôte edgegateway pour identifier la machine virtuelle de la passerelle. Vous êtes invité à entrer votre mot de passe :

    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. Accédez au dossier leafdevice et installez les packages requis. Exécutez ensuite les scripts build et start et pour approvisionner et connecter l’appareil à la passerelle :

    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
    

    Pendant les commandes sudo apt-get install nodejs, vous pouvez être invité à autoriser des installations : appuyez sur Y si vous y êtes invité.

  5. Entrez l’ID de l’appareil, l’ID de l’étendue et la clé SAS de l’appareil en aval que vous avez créé précédemment. Pour le nom d’hôte, entrez edgegateway. La sortie de la commande ressemble à ceci :

    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
    

Par souci de simplicité, le code de l’appareil en aval provisionne l’appareil dans IoT Central. En général, les appareils en aval se connectent via une passerelle, car ils ne peuvent pas se connecter à Internet et ne peuvent donc pas se connecter au point de terminaison du service Device Provisioning Service. Pour en savoir plus, consultez Guide pratique pour connecter des appareils via une passerelle transparente IoT Edge.

Vérification

Pour vérifier que le scénario est en cours d’exécution, accédez à votre appareil de passerelle IoT Edge dans IoT Central :

Capture d’écran montrant les données transformées sur la page Appareils.

  • Sélectionnez Modules. Vérifiez que les trois modules IoT Edge $edgeAgent, $edgeHub et transformmodule sont en cours d’exécution.

  • Sélectionnez Données brutes. Les données de télémétrie de la colonne Appareils se présentent ainsi :

    {"deviceId":"downstream-01"}
    

    Les données de télémétrie de la colonne Mesures se présentent ainsi :

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

La température est envoyée en degrés Fahrenheit. Étant donné que l’appareil IoT Edge transforme les données de l’appareil en aval, les données de télémétrie sont associées à l’appareil de passerelle dans IoT Central. Pour visualiser la télémétrie transformée, créez une vue dans le modèle Appareil de passerelle IoT Edge et republiez-la.

Transformation des données en sortie

Vous pouvez connecter vos appareils à IoT Central, exporter les données de l’appareil vers un moteur de calcul pour les transformer, puis renvoyer les données transformées à IoT Central pour la gestion et l’analyse des appareils. Par exemple :

  • Vos appareils envoient des données d’emplacement à IoT Central.
  • IoT Central exporte les données vers un moteur de calcul qui améliore les données d’emplacement avec des informations météorologiques.
  • Le moteur de calcul renvoie les données améliorées à IoT Central.

Vous pouvez utiliser le pont d’appareil IoT Central en tant que moteur de calcul pour transformer les données exportées à partir d’IoT Central.

L’un des avantages de la transformation des données en sortie est que vos appareils se connectent directement à IoT Central, ce qui facilite l’envoi des commandes aux appareils ou la mise à jour des propriétés de l’appareil. Toutefois, avec cette méthode, vous pourriez utiliser plus de messages que votre allocation mensuelle et augmenter le coût d’utilisation d’Azure IoT Central.

Utiliser le pont d’appareil IoT Central pour transformer les données d’appareil

Transformation de données en sortie à l’aide d’IoT Edge

Dans ce scénario, un moteur de calcul transforme les données des appareils exportés à partir d’IoT Central avant de les renvoyer à votre application IoT Central. À un haut niveau, voici les étapes générales à suivre pour configurer ce scénario :

  1. Configurer le moteur de calcul : Créez un pont d’appareil IoT Central pour agir en tant que moteur de calcul pour la transformation des données.

  2. Transformer les données d’appareil dans le pont d’appareil : Transformez les données dans le pont d’appareil en modifiant le code de la fonction de pont d’appareil pour votre cas d’utilisation de transformation de données.

  3. Activer le flux de données d’IoT Central vers le pont d’appareil : Exportez les données d’IoT Central vers le pont d’appareil pour transformation. Ensuite, transférez les données transformées vers IoT Central. Lorsque vous créez l’exportation de données, utilisez des filtres de propriétés de message pour exporter uniquement des données transformées.

  4. Vérifier : Connectez votre appareil à l’application IoT Central et vérifiez les données brutes de l’appareil et les données transformées dans IoT Central.

Dans l’exemple décrit dans les sections suivantes, l’appareil envoie des données CSV au format suivant à l’appareil de passerelle IoT Edge :

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

Vous utilisez le pont d’appareil pour transformer les données de l’appareil en :

  • Modifiant l’unité de température de centigrade en Fahrenheit.
  • Enrichissant des données d’appareil avec les données météorologiques tirées du service Open Weather pour les valeurs de latitude et de longitude.

Le pont d’appareil envoie ensuite les données transformées à IoT Central au format suivant :

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

Les étapes suivantes vous montrent comment préparer et configurer ce scénario :

Récupérer vos paramètres de connexion IoT Central

Avant de configurer ce scénario, vous devez vous procurer des paramètres de connexion à partir de votre application IoT Central :

  1. Connectez-vous à votre application IoT Central.

  2. Accédez à Autorisations > Groupes de connexion d’appareil.

  3. Notez l’étendue de l’ID. Vous utiliserez cette valeur plus tard.

  4. Sélectionnez le groupe d’inscriptions SaS-IoT-Devices. Notez la valeur clé primaire de la signature d’accès partagé. Vous utiliserez cette valeur plus tard.

Configurer un moteur de calcul

Ce scénario utilise le même déploiement Azure Functions que le pont d’appareil IoT Central. Pour déployer le pont d’appareil, sélectionnez le bouton Déployer sur Azure disponible sous le tableau suivant. Utilisez les informations du tableau pour remplir le formulaire de déploiement personnalisé :

Champ Valeur
Groupe de ressources Créez un groupe de ressources nommé egress-scenario
Région Sélectionnez la région la plus proche de vous.
ID de l’étendue Utilisez l’étendue d’ID que vous avez notée précédemment.
Clé SAS IoT Central Utilisez la clé primaire de signature d’accès partagé pour le groupe d’inscription SaS-IoT-Devices. Vous avez noté cette valeur précédemment.

Déployer sur Azure.

Sélectionnez Vérifier + créer, puis Créer. Il faut quelques minutes pour créer la fonction Azure et les ressources associées dans le groupe de ressources de egress-scenario.

Transformer les données d’appareil dans le pont d’appareil

Pour configurer le pont d’appareil afin de transformer les données d’appareil exportées :

  1. Obtenez une clé d’API d’application à partir du service Open Weather. Un compte est gratuit avec une utilisation limitée du service. Pour créer une clé d’API d’application, créez un compte dans le portail de service Open Weather et suivez les instructions. Vous utilisez votre clé d’API Open Weather ultérieurement.

  2. Dans le portail Azure, accédez à l’application de fonction dans le groupe de ressources egress-scenario.

  3. Dans le volet de navigation de gauche, dans Outils de développement, sélectionnez Éditeur App Service (préversion).

  4. Sélectionnez Aller → pour ouvrir la page Éditeur App Service. Apportez les modifications suivantes :

    1. Ouvrez le fichier wwwroot/IoTCIntegration/index.js. Remplacez tout le code de ce fichier par celui d’index.js.

    2. Dans le nouveau fichier index.js, mettez à jour le fichier de variable openWeatherAppId avec la clé d’API Open Weather que vous avez obtenue précédemment.

      const openWeatherAppId = '<Your Open Weather API Key>'
      
    3. Ajoutez une propriété de message aux données envoyées par la fonction à IoT Central. IoT Central utilise cette propriété pour empêcher l’exportation des données transformées. Pour effectuer cette modification, ouvrez le fichier wwwroot/IoTCIntegration/lib/engine.js. Recherchez le code suivant :

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

      Ajoutez le code suivant juste après le code de l’extrait de code précédent :

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

      Pour référence, vous pouvez consulter un exemple complet du fichier engine.js.

  5. Dans l’Éditeur App Service, sélectionnez Console dans le volet de navigation de gauche. Exécutez les commandes suivantes pour installer les packages nécessaires :

    cd IoTCIntegration
    npm install
    

    L’exécution de cette commande peut prendre quelques minutes.

  6. Revenez à la page Vue d’ensemble de la fonction Azure et redémarrez la fonction :

    Redémarrer la fonction

  7. Sélectionnez Fonctions dans le volet de navigation gauche. Sélectionnez ensuite IoTCIntegration. Sélectionnez Code + Test.

  8. Prenez note de l’URL de la fonction, vous aurez besoin de cette valeur plus tard :

    Obtenir l’URL de la fonction

Activer le flux de données d’IoT Central vers le pont d’appareil

Cette section décrit comment configurer l’application Azure IoT Central.

Tout d’abord, enregistrez le fichier de modèle d’appareil sur votre ordinateur local.

Pour ajouter un modèle d’appareil à votre application IoT Central, accédez à votre application IoT Central, puis :

  1. Connectez-vous à votre application IoT Central et accédez à la page Modèles d’appareil.

  2. Sélectionnez + Nouveau, Appareil IoT, puis Suivant : Personnaliser, et entrez Modèle de calcul comme nom de modèle. Sélectionnez Suivant : Vérification). Sélectionnez ensuite Créer.

  3. Sélectionnez Importer un modèle et accédez au fichier model.json que vous avez téléchargé précédemment.

  4. Une fois le modèle importé, sélectionnez Publier pour publier le modèle d’appareil Modèle de calcul.

Configurez l’exportation des données afin d’envoyer les données vers votre pont d’appareil :

  1. Dans votre application IoT Central, sélectionnez Exportation de données.

  2. Sélectionnez + Nouvelle destination pour créer une destination à utiliser avec le pont d’appareil. Appelez la Fonction de calcul de destination. Pour Type de destination, sélectionnez Webhook. Pour l’URL de rappel, collez l’URL de fonction que vous avez notée précédemment. Laissez Autorisation sur Pas d’authentification.

  3. Enregistrez les modifications.

  4. Sélectionnez + Nouvelle exportation, puis créez une exportation de données appelée Exportation de calcul.

  5. Ajoutez un filtre pour exporter uniquement les données d’appareil pour le modèle d’appareil que vous utilisez. Sélectionnez + Filtre, sélectionnez l’élément Modèle d’appareil, sélectionnez l’opérateur Est égal à, puis sélectionnez le modèle d’appareil Modèle de calcul que vous avez créé.

  6. Ajoutez un filtre de messages pour faire la différence entre les données transformées et non transformées. Ce filtre empêche l’envoi de valeurs transformées au pont d’appareil. Sélectionnez + Filtre de propriétés de message, entrez la valeur de nom calculé, puis choisissez l’opérateur N’existe pas. La chaîne computed est utilisée en tant que mot clé dans le code d’exemple de pont d’appareil.

  7. Pour la destination, sélectionnez la destination de la Fonction de calcul que vous avez créée précédemment.

  8. Enregistrez les modifications. Après une minute, l’État de l’exportation est alors Sain.

Vérification

L’exemple d’appareil que vous utilisez pour tester le scénario est écrit en Node.js. Vérifiez que Node.js et npm sont installés sur votre machine locale. Si vous ne souhaitez pas installer ces prérequis, utilisez Azure Cloud Shell à l’emplacement où ils sont préinstallés.

Pour exécuter un exemple d’appareil qui teste le scénario :

  1. Clonez le référentiel GitHub qui contient le code source du module avec la commande suivante :

    git clone https://github.com/Azure/iot-central-compute
    
  2. Pour connecter l’exemple d’appareil à votre application IoT Central, modifiez les paramètres de connexion dans le fichier iot-central-compute/device/device.js. Remplacez l’ID d’étendue et la clé SAS du groupe par les valeurs que vous avez notées précédemment :

    // 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>";
    //
    

    Enregistrez les modifications.

  3. Utilisez les commandes suivantes pour installer les packages requis et exécutez l’appareil :

    cd ~/iot-central-compute/device
    npm install
    node device.js
    
  4. Le résultat de cette commande ressemble à la sortie suivante :

    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. Dans votre application IoT Central, accédez à l’appareil computeDevice. La vue Données brutes affiche deux flux de télémétrie différents toutes les cinq secondes. Le flux avec des données non modélisées correspond à la télémétrie initiale, et le flux avec des données modélisées est celui des données transformées par la fonction :

    Capture d’écran montrant les données brutes d’origine et transformées.

Nettoyer les ressources

Si vous n’avez plus besoin des ressources Azure que vous avez créées en suivant les étapes décrites dans ce guide, supprimez les groupes de ressources dans le portail Azure.

Les deux groupes de ressources que vous avez utilisés dans ce guide sont ingress-scenario et egress-scenario.

Étapes suivantes

Dans cet article, vous avez appris les différentes options de transformation des données d’appareil pour IoT Central, à la fois en entrée et en sortie. L’article inclut des procédures pas à pas pour deux scénarios spécifiques :

  • Utiliser un module IoT Edge pour transformer des données à partir d’appareils en aval avant d’envoyer les données à votre application IoT Central.
  • Utiliser Azure Functions pour transformer des données en dehors d’IoT Central. Dans ce scénario, IoT Central utilise une exportation de données pour envoyer des données entrantes à une fonction Azure pour transformation. La fonction renvoie les données transformées à votre application IoT Central.

Maintenant que vous avez appris à transformer les données d’appareil en dehors de votre application Azure IoT Central, vous pouvez consulter Utilisation de l’explorateur de données pour analyser les données des appareils dans IoT Central.