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 :
Important
Cet article comprend les étapes à suivre pour connecter un appareil en utilisant une signature d’accès partagé, également appelée « authentification par clé symétrique ». Cette méthode d’authentification est pratique pour les tests et les évaluations, mais l’authentification d’un appareil en utilisant des certificats X.509 est une approche plus sécurisée. Pour plus d’informations, consultez Meilleures pratiques de sécurité > Sécurité des connexions.
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 :
Un abonnement Azure actif. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Application IoT Central créée à partir du modèle Application personnalisée. Pour plus d’informations, consultez Créer une application IoT Central.
Pour suivre les étapes de cet article, téléchargez les fichiers suivants sur votre ordinateur :
- Modèle d’appareil Thermostat (thermostat-1.json) : ce fichier est le modèle d’appareil pour les appareils en aval.
- Manifeste de la passerelle transparente (EdgeTransparentGatewayManifest.json) : ce fichier est le manifeste de déploiement IoT Edge pour l’appareil de passerelle.
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 :
Accédez à Manifestes Edge.
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.
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 :
Créez un modèle d’appareil et choisissez Appareil IoT comme type de modèle.
Dans la page Personnaliser de l’assistant, entrez un nom tel que Thermostat pour le modèle d’appareil.
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.
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.
Publier le modèle d’appareil.
Pour créer un modèle d’appareil pour un appareil de passerelle transparente IoT Edge :
Créez un modèle d’appareil et choisissez Azure IoT Edge comme type de modèle.
Dans la page Personnaliser de l’assistant, entrez un nom tel que Edge Gateway pour le modèle d’appareil.
Dans la page Personnaliser de l’Assistant, cochez Il s’agit d’un appareil de passerelle.
Dans la page Vérifier, sélectionnez Créer.
Dans la page Créer un modèle, sélectionnez Modèle personnalisé.
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 :
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 :
Accédez à la page des appareils de votre application IoT Central.
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
.Ajoutez une ou plusieurs instances de l’appareil en aval. Dans cet article, les appareils en aval sont des thermostats avec les ID
thermostat1
etthermostat2
.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 :
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é :
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
:
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é).
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 :
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 :
Utilisez SSH pour vous connecter à la machine virtuelle de votre appareil de passerelle.
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.
Ouvrez le fichier config.toml dans un éditeur de texte. Par exemple :
sudo nano /etc/aziot/config.toml
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 ».
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 :
Exécutez la commande suivante pour installer le module
azure.iot.device
:pip install azure.iot.device
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
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’appareil thermostat1
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
:
Utilisez SSH pour vous connecter à votre machine virtuelle
leafdevice
.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
Installez le module Python de l’appareil Azure IoT :
sudo apt update sudo apt install python3-pip pip3 install azure.iot.device
Définissez les variables d’environnement pour configurer l’exemple. Remplacez
{your device shared key}
par la clé primaire de la valeurthermostat1
que vous avez notée précédemment. Ces variables supposent que le nom de la machine virtuelle de passerelle estedgegateway
, et que l’ID de l’appareil de thermostat estthermostat1
: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.
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.
Pour afficher les données de télémétrie dans IoT Central, accédez à la page Vue d’ensemble de l’appareil thermostat1 :
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.