Share via


Guide pratique pour connecter des appareils via une passerelle transparente IoT Edge

Un appareil IoT Edge peut fonctionner en tant que passerelle fournissant une connexion entre d’autres appareils sur un réseau local et votre application IoT Central. Vous utilisez une passerelle lorsque l’appareil ne peut pas accéder directement à votre application IoT Central.

IoT Edge prend en charge les modèles de passerelle transparente et de traduction. Cet article résume l’implémentation du modèle de passerelle transparente. Dans ce modèle, la passerelle transmet les messages de l’appareil en aval au point de terminaison IoT Hub dans votre application IoT Central. La passerelle ne manipule pas les messages qui la traversent. Dans IoT Central, chaque appareil en aval apparaît en tant qu’enfant de l’appareil de passerelle :

Diagram that shows IoT Edge as a transparent gateway.

Par souci de simplicité, cet article utilise des machines virtuelles pour héberger les appareils en aval et de passerelle. Dans un scénario réel, l’appareil en aval et la passerelle s’exécutent sur des appareils physiques de votre réseau local.

Cet article explique comment implémenter le scénario à l’aide du runtime IoT Edge 1.4.

Prérequis

Pour accomplir les étapes décrites dans cet article, vous avez besoin de ce qui suit :

Pour suivre les étapes de cet article, téléchargez les fichiers suivants sur votre ordinateur :

Importer un manifeste de déploiement

Chaque appareil IoT Edge a besoin d’un manifeste de déploiement pour configurer le runtime IoT Edge. Pour importer un manifeste de déploiement pour la passerelle transparente IoT Edge :

  1. Accédez à Manifestes Edge.

  2. Sélectionnez + Nouveau, entrez un nom pour le manifeste de déploiement, par exemple Transparent gateway (Passerelle transparente), puis chargez le fichier EdgeTransparentGatewayManifest.json que vous avez téléchargé précédemment.

  3. Sélectionnez Créer pour enregistrer le manifeste de déploiement dans votre application.

Ajouter des modèles d’appareil

Les appareils en aval et l’appareil de passerelle peuvent utiliser des modèles d’appareil dans IoT Central. IoT Central vous permet de modéliser la relation entre vos appareils en aval et votre passerelle afin de les afficher et de les gérer une fois qu’ils sont connectés. Un modèle d’appareil n’est pas nécessaire pour attacher un appareil en aval à une passerelle.

Pour créer un modèle d’appareil pour un appareil en aval, créez un modèle d’appareil standard qui modélise les fonctionnalités de votre appareil. L’exemple présenté dans cet article utilise le modèle d’appareil avec thermostat que vous avez téléchargé.

Pour créer un modèle d’appareil pour un appareil en aval :

  1. Créez un modèle d’appareil et choisissez Appareil IoT comme type de modèle.

  2. Dans la page Personnaliser de l’assistant, entrez un nom tel que Thermostat pour le modèle d’appareil.

  3. Après avoir créé le modèle d’appareil, sélectionnez Importer un modèle. Sélectionnez un modèle tel que le fichier thermostat-1.json que vous avez téléchargé précédemment.

  4. Pour générer des vues par défaut pour le thermostat, sélectionnez des vues, puis choisissez Générer des vues par défaut.

  5. Publier le modèle d’appareil.

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

  1. Créez un modèle d’appareil et choisissez Azure IoT Edge comme type de modèle.

  2. Dans la page Personnaliser de l’assistant, entrez un nom tel que Edge Gateway pour le modèle d’appareil.

  3. Dans la page Personnaliser de l’Assistant, cochez Il s’agit d’un appareil de passerelle.

  4. Dans la page Vérifier, sélectionnez Créer.

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

  6. Ajoutez une entrée dans la section Relations du modèle d’appareil en aval.

La capture d’écran suivante montre la page Relations d’un appareil de passerelle IoT Edge avec des appareils en aval qui utilisent le modèle d’appareil Thermostat :

Screenshot showing IoT Edge gateway device template relationship with a thermostat downstream device template.

La capture d’écran précédente montre un modèle d’appareil de passerelle IoT Edge sans aucun module défini. Une passerelle transparente ne nécessite aucun module, car le runtime IoT Edge transfère les messages des appareils en aval directement à IoT Central. Si la passerelle elle-même doit envoyer des données de télémétrie, synchroniser des propriétés, ou gérer des commandes, vous pouvez définir ces fonctionnalités dans le composant racine ou dans un module.

Ajoutez les propriétés de cloud et les vues requises avant de publier la passerelle et les modèles d’appareil en aval.

Ajouter les appareils

Lorsque vous ajoutez les appareils à votre application IoT Central, vous pouvez définir la relation entre les appareils en aval et la passerelle transparente.

Pour ajouter les appareils :

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

  2. Ajoutez une instance de l’appareil de passerelle transparente IoT Edge. Lorsque vous ajoutez l’appareil, veillez à sélectionner le manifeste de déploiement Transparent gateway. Dans cet article, l’ID d’appareil de passerelle est edgegateway.

  3. Ajoutez une ou plusieurs instances de l’appareil en aval. Dans cet article, les appareils en aval sont des thermostats avec les ID thermostat1 et thermostat2.

  4. Dans la liste des appareils, choisissez chaque appareil en aval, puis sélectionnez Attacher à la passerelle.

La capture d’écran suivante montre comment afficher la liste des appareils attachés à une passerelle sur la page Appareils en aval :

Screenshot that shows the list of downstream devices connected to a transparent gateway.

Dans une passerelle transparente, les appareils en aval se connectent à la passerelle elle-même et non à un module personnalisé hébergé par la passerelle.

Avant de déployer les appareils, vous avez besoin des éléments suivants :

  • Étendue de l’ID de votre application IoT Central.
  • Valeurs d'ID d’appareil pour la passerelle et les appareils en aval.
  • Valeurs de clé primaire pour la passerelle et les appareils en aval.

Pour rechercher ces valeurs, accédez à chaque appareil dans la liste des appareils, puis sélectionnez Se connecter. Prenez note de ces valeurs avant de continuer.

Conseil

Vous pouvez connecter les appareils et établir des relations sans créer au préalable des modèles d’appareil pour les appareils. Vous pouvez attacher un appareil en aval non attribué à un appareil de passerelle non attribué.

Déployer la passerelle et les appareils

Pour vous permettre de tester ce scénario, les étapes suivantes vous montrent comment déployer la passerelle et les appareils en aval sur des machines virtuelles Azure.

Conseil

Pour savoir comment déployer le runtime IoT Edge sur un appareil physique, consultez Créer un appareil IoT Edge dans la documentation d’IoT Edge.

Pour tester le scénario de passerelle transparente, sélectionnez le bouton suivant pour déployer deux machines virtuelles Linux. Une machine virtuelle sur laquelle le runtime IoT Edge 1.4 est installé fait office de passerelle IoT Edge transparente. L’autre machine virtuelle est un appareil en aval sur lequel vous exécutez du code pour envoyer une télémétrie de thermostat simulé :

Deploy to Azure Button

Lorsque les deux machines virtuelles sont déployées et en cours d’exécution, vérifiez que l’appareil de passerelle IoT Edge est en cours d’exécution sur la machine virtuelle edgegateway :

  1. Accédez à la page Appareils dans votre application IoT Central. Si l’appareil de passerelle IoT Edge est connecté à IoT Central, son état indique Provisioned (Approvisionné).

  2. Ouvrez l’appareil de passerelle IoT Edge et vérifiez l’état des modules sur la page Modules. Si le runtime IoT Edge a démarré avec succès, l’état des modules $edgeAgent et $edgeHub indique Running :

    Screenshot showing the $edgeAgent and $edgeHub version 1.4 modules running on the IoT Edge gateway.

    Conseil

    Vous devrez peut-être patienter quelques minutes pendant le démarrage de la machine virtuelle et l’approvisionnement de l’appareil dans votre application IoT Central.

Configurer la passerelle

Pour que votre appareil IoT Edge fonctionne comme une passerelle transparente, 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.

  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é depuis le fichier de configuration IoT Edge. 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. Recherchez les paramètres suivants dans le fichier de configuration. Ajoutez 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 queAzureUser et que vous avez créé un certificat d’autorité de certification d’appareil appelé « mycacert ».

  5. Enregistrez les modifications, puis 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 (en cours d’exécution) 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 de configuration IoT Edge, puis consultez Résoudre les problèmes de votre appareil IoT Edge.

Votre passerelle transparente est maintenant configurée et prête à démarrer le transfert de données de télémétrie à partir des appareils en aval.

Approvisionner un appareil en aval

IoT Central s’appuie sur le service Device Provisioning Service (DPS) pour provisionner des appareils dans IoT Central. Actuellement, IoT Edge ne peut pas utiliser DPS pour provisionner un appareil en aval dans votre application IoT Central. Les étapes suivantes vous montrent comment provisionner l’appareil thermostat1 manuellement. Pour effectuer cette procédure, vous avez besoin d’un environnement avec Python installé et d’une connectivité Internet. Consultez le Kit de développement logiciel (SDK) Python Azure IoT pour connaître les exigences actuelles en matière de version de Python. Python est préinstallé dans Azure Cloud Shell :

  1. Exécutez la commande suivante pour installer le module azure.iot.device :

    pip install azure.iot.device
    
  2. Exécutez la commande suivante pour télécharger le script Python qui effectue le provisionnement de l’appareil :

    wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/transparent-gateway-1-4/provision_device.py
    
  3. Pour provisionner l’appareil en aval thermostat1 dans votre application IoT Central, exécutez les commandes suivantes, en remplaçant {your application id scope} et {your device primary key}. Vous avez noté ces valeurs lorsque vous avez ajouté les appareils à votre application IoT Central :

    export IOTHUB_DEVICE_DPS_DEVICE_ID=thermostat1
    export IOTHUB_DEVICE_DPS_ID_SCOPE={your application id scope}
    export IOTHUB_DEVICE_DPS_DEVICE_KEY={your device primary key}
    python provision_device.py
    

Dans votre application IoT Central, vérifiez que l’État de l’appareilthermostat1 indique maintenant Provisionné.

Configurer un appareil en aval

Dans la section précédente, vous avez configuré la machine virtuelle edgegateway avec les certificats de démonstration pour lui permettre de s’exécuter en tant que passerelle. La machine virtuelle leafdevice est prête à installer un simulateur de thermostat qui utilise la passerelle pour se connecter à IoT Central.

La machine virtuelle leafdevice a besoin d’une copie du certificat d’autorité de certification racine que vous avez créé sur la machine virtuelle edgegateway. Copiez le fichier /home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem de la machine virtuelle edgegateway vers votre répertoire de base sur la machine virtuelle leafdevice. Vous pouvez utiliser la commande scp pour copier des fichiers entre des machines virtuelles Linux. Par exemple, à partir de la machine leafdevice :

scp AzureUser@edgegateway:/home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem .

Pour savoir comment vérifier la connexion entre l’appareil en aval et la passerelle, consultez Test de connexion à la passerelle.

Pour exécuter le simulateur de thermostat sur la machine virtuelle leafdevice :

  1. Utilisez SSH pour vous connecter à votre machine virtuelle leafdevice.

  2. Téléchargez l’exemple Python dans votre répertoire de base :

    cd ~
    wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/transparent-gateway-1-4/simple_thermostat.py
    
  3. Installez le module Python de l’appareil Azure IoT :

    sudo apt update
    sudo apt install python3-pip
    pip3 install azure.iot.device
    
  4. Définissez les variables d’environnement pour configurer l’exemple. Remplacez {your device shared key} par la clé primaire de la valeur thermostat1 que vous avez notée précédemment. Ces variables supposent que le nom de la machine virtuelle de passerelle est edgegateway, et que l’ID de l’appareil de thermostat est thermostat1 :

    export IOTHUB_DEVICE_SECURITY_TYPE=connectionString
    export IOTHUB_DEVICE_CONNECTION_STRING="HostName=edgegateway;DeviceId=thermostat1;SharedAccessKey={your device shared key}"
    export IOTEDGE_ROOT_CA_CERT_PATH=~/azure-iot-test-only.root.ca.cert.pem
    

    Notez que la chaîne de connexion utilise le nom de l’appareil de passerelle et non celui d’un IoT Hub.

  5. Pour exécuter le code, utilisez la commande suivante :

    python3 simple_thermostat.py
    

    La sortie de cette commande ressemble à ceci :

    Connecting using Connection String HostName=edgegateway;DeviceId=thermostat1;SharedAccessKey={your device shared key}
    Listening for command requests and property updates
    Press Q to quit
    Sending telemetry for temperature
    Sent message
    Sent message
    Sent message
    ...
    

    Conseil

    Si vous voyez une erreur quand l’appareil en aval tente de se connecter. Essayez de réexécuter les étapes de provisionnement d’appareil.

  6. Pour afficher les données de télémétrie dans IoT Central, accédez à la page Vue d’ensemble de l’appareil thermostat1 :

    Screenshot showing telemetry from the downstream device.

    La page À propos de affiche les valeurs de propriétés envoyées à partir de l’appareil en aval, et la page Commande vous permet d’appeler des commandes sur l’appareil en aval.