

Avis de fin de support : le 7 octobre 2026, AWS le support de. AWS IoT Greengrass Version 1 Après le 7 octobre 2026, vous ne pourrez plus accéder aux AWS IoT Greengrass V1 ressources. Pour plus d'informations, rendez-vous sur [Migrer depuis AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Module 5 : Interaction avec les Device Shadows
<a name="module5"></a>

Ce module avancé vous montre comment les appareils clients peuvent interagir avec les [ombres des AWS IoT appareils](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html) au AWS IoT Greengrass sein d'un groupe. Un *shadow* est un document JSON utilisé pour stocker les informations sur l'état actuel ou souhaité d'un objet. Dans ce module, vous découvrirez comment un appareil client (`GG_Switch`) peut modifier l'état d'un autre appareil client (`GG_TrafficLight`) et comment ces états peuvent être synchronisés avec le AWS IoT Greengrass cloud :

![\[AWS IoT Greengrass le noyau est connecté à une ombre de dispositif de signalisation et à un dispositif d'interrupteur d'éclairage.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-077.5.png)


Avant de commencer, exécutez le script de [configuration de l'appareil Greengrass](quick-start.md) ou assurez-vous que vous avez effectué le [Module 1](module1.md) et le [Module 2](module2.md). Vous devez également comprendre comment connecter des appareils clients à un AWS IoT Greengrass cœur ([module 4](module4.md)). Vous n'avez pas besoin d'autres composants ou appareils.

Ce module dure environ 30 minutes.

**Topics**
+ [Configuration des appareils et des abonnements](config-dev-subs.md)
+ [Téléchargement des fichiers requis](file-download.md)
+ [Test des communications (synchronisation des périphériques désactivée)](comms-disabled.md)
+ [Test des communications (synchronisation des appareils activée)](comms-enabled.md)

# Configuration des appareils et des abonnements
<a name="config-dev-subs"></a>

Les ombres peuvent être synchronisées AWS IoT lorsque le AWS IoT Greengrass noyau est connecté à Internet. Dans ce module, vous allez d'abord utiliser les shadows locaux sans les synchroniser avec le cloud. Vous activerez ensuite la synchronisation du cloud.

Chaque appareil client possède sa propre ombre. Pour plus d'informations, consultez [Device Shadow Service AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html) dans le *Guide du AWS IoT développeur*.

1. Sur la page de configuration du groupe, choisissez l'onglet **Appareils clients**.

1. Dans l'onglet **Appareils clients**, ajoutez deux nouveaux appareils clients dans votre AWS IoT Greengrass groupe. Pour obtenir les étapes détaillées de ce processus, consultez [Création d'appareils clients dans un AWS IoT Greengrass groupe](device-group.md).
   + Nommez les appareils clients **GG\$1Switch** et**GG\$1TrafficLight**.
   + Générez et téléchargez les ressources de sécurité pour les deux appareils clients.
   + Notez l'ID du certificat dans les noms de fichiers des ressources de sécurité pour les appareils clients. Vous utiliserez ces valeurs ultérieurement.

1. Créez un dossier sur votre ordinateur pour les informations d'identification de sécurité de ces appareils clients. Copiez les certificats et les clés dans ce dossier.

1. Assurez-vous que les appareils clients sont configurés pour utiliser les ombres locales et ne pas être synchronisés avec le AWS Cloud. Si ce n'est pas le cas, sélectionnez le périphérique client, choisissez **Synchroniser l'ombre**, puis choisissez **Désactiver la synchronisation des ombres avec le cloud**.

1. <a name="module5-subscriptions"></a>Ajoutez les abonnements du tableau suivant à votre groupe. Par exemple, pour créer le premier abonnement :

   1. Sur la page de configuration du groupe, choisissez l'onglet **Abonnements**, puis sélectionnez **Ajouter**.

   1. Pour **Type de source**, choisissez **Appareil client**, puis **GG\$1Switch**.

   1. Pour **Type de cible**, choisissez **Service**, puis **Local Shadow Service**.

   1. Pour **Filtre de rubriques**, tapez **\$1aws/things/GG\$1TrafficLight/shadow/update**.

   1. Choisissez **Create subscription** (Créer un abonnement).

   Les rubriques doivent être entrées exactement comme indiqué dans le tableau. Bien qu'il soit possible d'utiliser des caractères génériques pour consolider certains abonnements, nous vous déconseillons cette pratique. Pour plus d'informations, consultez les [rubriques relatives au Shadow MQTT](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html) dans le *Guide du AWS IoT développeur*.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/config-dev-subs.html)

   Les nouveaux abonnements sont affichés dans l'onglet **Abonnements**.
**Note**  
Pour de plus amples informations sur le caractère `$`, veuillez consulter [Rubriques réservées](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html#reserved-topics).

1. <a name="enable-automatic-detection"></a>Assurez-vous que la détection automatique est activée afin que le noyau Greengrass puisse publier une liste de ses adresses IP. Les appareils clients utilisent ces informations pour découvrir le cœur. Procédez comme suit :

   1. Sur la page de configuration du groupe, choisissez l'onglet **Fonctions Lambda**.

   1. **Sous **Fonctions Lambda du système**, sélectionnez **Détecteur IP**, puis Modifier.**

   1. **Dans les **paramètres Modifier le détecteur IP**, choisissez **Détecter et remplacer automatiquement les points de terminaison du broker MQTT**, puis sélectionnez Enregistrer.**

1. Assurez-vous que le daemon Greengrass est en cours d'exécution, comme décrit dans. [Déploiement des configurations cloud sur un appareil Core](configs-core.md)

1. <a name="console-actions-deploy"></a>Sur la page de configuration du groupe, choisissez **Deploy**.

# Téléchargement des fichiers requis
<a name="file-download"></a>

1. Si ce n'est pas déjà fait, installez le Kit SDK des appareils AWS IoT pour Python. Pour obtenir des instructions, consultez l'étape 1 dans [Installez le Kit SDK des appareils AWS IoT pour Python](IoT-SDK.md).

   Ce SDK est utilisé par les appareils clients pour communiquer avec AWS IoT et avec les appareils AWS IoT Greengrass principaux.

1. À partir du dossier d'[ TrafficLight](https://github.com/aws/aws-greengrass-core-sdk-python/tree/master/examples/TrafficLight)exemples GitHub, téléchargez les `trafficLight.py` fichiers `lightController.py` et sur votre ordinateur. Enregistrez-les dans le dossier contenant les certificats et clés des appareils TrafficLight clients GG\$1Switch et GG\$1.

   Le `lightController.py` script correspond au dispositif client GG\$1Switch, et le `trafficLight.py` script correspond au dispositif client GG\$1TrafficLight .   
![\[Capture d'écran de fichiers, notamment les deux scripts Python, les certificats d'appareil et les clés.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-082.png)
**Note**  
Les fichiers Python d'exemple sont stockés dans le référentiel AWS IoT Greengrass Core SDK pour Python pour des raisons pratiques, mais ils n'utilisent pas le SDK AWS IoT Greengrass Core.

# Test des communications (synchronisation des périphériques désactivée)
<a name="comms-disabled"></a>

1. <a name="ping-device"></a>Assurez-vous que votre ordinateur et le périphérique AWS IoT Greengrass principal sont connectés à Internet via le même réseau.

   1. Sur le périphérique AWS IoT Greengrass principal, exécutez la commande suivante pour trouver son adresse IP.

      ```
      hostname -I
      ```

   1. Sur votre ordinateur, exécutez la commande suivante à l'aide de l'adresse IP du noyau. Vous pouvez utilisez Ctrl \$1 C pour arrêter la commande **ping**.

      ```
      ping IP-address
      ```

      Un résultat similaire à ce qui suit indique une communication réussie entre l'ordinateur et le périphérique AWS IoT Greengrass principal (0 % de perte de paquets) :  
![\[Sortie de commande ping réussie.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-075.5.png)
**Note**  
Si vous ne parvenez pas à envoyer un ping à une EC2 instance en cours d'exécution AWS IoT Greengrass, assurez-vous que les règles du groupe de sécurité entrant pour l'instance autorisent le trafic ICMP pour les messages de [demande Echo](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules-reference.html#sg-rules-ping). Pour plus d'informations, consultez la section [Ajouter des règles à un groupe de sécurité](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#adding-security-group-rule) dans le *guide de EC2 l'utilisateur Amazon*.  
Sur les ordinateurs hôtes Windows, dans l'application Windows Firewall with Advanced Security, vous devrez peut-être également activer une règle entrante autorisant les demandes d'écho entrantes (par exemple, **partage de fichiers et d'imprimantes (Echo Request - ICMPv4 -In))**, ou en créer une.

1. Obtenez votre AWS IoT point de terminaison.

   1. <a name="iot-settings"></a>Dans le volet de navigation de la [AWS IoT console](https://console.aws.amazon.com/iot/), sélectionnez **Paramètres**.

   1. <a name="iot-settings-endpoint"></a>Sous Point de **terminaison des données de l'appareil**, notez la valeur du **point de terminaison**. Vous utilisez cette valeur pour remplacer l'*AWS\$1IOT\$1ENDPOINT*espace réservé dans les commandes au cours des étapes suivantes.
**Note**  
Assurez-vous que vos [points de terminaison correspondent à votre type de certificat](gg-core.md#certificate-endpoints).

1. <a name="repeated-step"></a>Sur votre ordinateur (et non sur le périphérique AWS IoT Greengrass principal), ouvrez deux fenêtres de [ligne de commande](https://en.wikipedia.org/wiki/Command-line_interface) (terminal ou invite de commande). Une fenêtre représente le périphérique client GG\$1Switch et l'autre représente le périphérique client GG\$1TrafficLight .

   1. <a name="run-switch-device"></a>Dans la fenêtre de l'appareil client GG\$1Switch, exécutez les commandes suivantes.
      + Remplacez *path-to-certs-folder* par le chemin d'accès au dossier contenant les certificats, les clés et les fichiers Python.
      + *AWS\$1IOT\$1ENDPOINT*Remplacez-le par votre terminal.
      + Remplacez les deux *switchCertId* instances par l'ID du certificat dans le nom de fichier de votre appareil client GG\$1Switch.

      ```
      cd path-to-certs-folder
      python lightController.py --endpoint AWS_IOT_ENDPOINT --rootCA AmazonRootCA1.pem --cert switchCertId-certificate.pem.crt --key switchCertId-private.pem.key --thingName GG_TrafficLight --clientId GG_Switch
      ```

   1. <a name="run-trafficlight-device"></a>Dans la fenêtre de l'appareil TrafficLight client GG\$1, exécutez les commandes suivantes.
      + Remplacez *path-to-certs-folder* par le chemin d'accès au dossier contenant les certificats, les clés et les fichiers Python.
      + *AWS\$1IOT\$1ENDPOINT*Remplacez-le par votre terminal.
      + Remplacez les deux *lightCertId* instances par l'ID du certificat dans le nom de fichier de votre appareil TrafficLight client GG\$1.

      ```
      cd path-to-certs-folder
      python trafficLight.py --endpoint AWS_IOT_ENDPOINT --rootCA AmazonRootCA1.pem --cert lightCertId-certificate.pem.crt --key lightCertId-private.pem.key --thingName GG_TrafficLight --clientId GG_TrafficLight
      ```

      Toutes les 20 secondes, le commutateur met à jour l'état du shadow sur V, J et R, et le feu affiche son nouvel état, comme illustré ci-après.

      Sortie GG\$1Switch :  
![\[Capture d'écran de la sortie associée à GG_Switch.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-083.png)

      TrafficLight Sortie GG\$1 :  
![\[Capture d'écran de la sortie associée à GG_TrafficLight.\]](http://docs.aws.amazon.com/fr_fr/greengrass/v1/developerguide/images/gg-get-started-084.png)

   Lorsqu'il est exécuté pour la première fois, chaque script de périphérique client exécute le service de AWS IoT Greengrass découverte pour se connecter au AWS IoT Greengrass cœur (via Internet). Une fois qu'un appareil client a découvert et s'est connecté avec succès au AWS IoT Greengrass cœur, les futures opérations peuvent être exécutées localement.
**Note**  
<a name="check-connection-info"></a> Les scripts `lightController.py` et `trafficLight.py` stockent les informations de connexion dans le dossier `groupCA`, qui est créé dans le même dossier que les scripts. Si vous recevez des erreurs de connexion, assurez-vous que l'adresse IP du `ggc-host` fichier correspond au point de terminaison de l'adresse IP de votre cœur.

1. Dans la AWS IoT console, choisissez votre AWS IoT Greengrass groupe, choisissez l'onglet **Appareils clients**, puis choisissez **GG\$1 TrafficLight** pour ouvrir la page des détails de l' AWS IoT appareil client.

1. Choisissez l'onglet **Device Shadows**. Une fois que le GG\$1Switch a changé d'état, aucune mise à jour ne devrait être apportée à cette ombre. C'est parce que le GG\$1 TrafficLight est configuré pour **désactiver la synchronisation des ombres avec le cloud**.

1. Appuyez sur Ctrl \$1 C dans la fenêtre de l'appareil client GG\$1Switch (`lightController.py`). Vous devriez voir que la fenêtre GG\$1 TrafficLight (`trafficLight.py`) cesse de recevoir des messages de changement d'état.

   Ces fenêtres doivent rester ouvertes, afin que vous puissiez exécuter les commandes de la section suivante.

# Test des communications (synchronisation des appareils activée)
<a name="comms-enabled"></a>

Pour ce test, vous devez configurer l'ombre du TrafficLight périphérique GG\$1 avec laquelle il doit être synchronisé. AWS IoT Vous exécutez les mêmes commandes que celles du test précédent, mais cette fois l'état du shadow dans le cloud est mis à jour lorsque GG\$1Switch envoie une demande de mise à jour.

1. Dans la AWS IoT console, choisissez votre AWS IoT Greengrass groupe, puis cliquez sur l'onglet **Appareils clients**.

1. Sélectionnez l'TrafficLight appareil GG\$1, choisissez **Synchroniser l'ombre**, puis sélectionnez **Activer la synchronisation des ombres avec le cloud**.

   Vous devriez recevoir une notification indiquant que l'état de synchronisation instantanée de l'appareil a été mis à jour.

1. <a name="console-actions-deploy"></a>Sur la page de configuration du groupe, choisissez **Deploy**.

1. [Dans vos deux fenêtres de ligne de commande, exécutez les commandes du test précédent pour les appareils clients [GG\$1Switch et GG\$1](comms-disabled.md#run-switch-device). TrafficLight](comms-disabled.md#run-trafficlight-device)

1. Maintenant, vérifiez l'état de l'ombre dans la AWS IoT console. Choisissez votre AWS IoT Greengrass groupe, choisissez l'onglet **Appareils clients**, **GG\$1 TrafficLight**, **Device Shadows**, puis **Classic Shadow**.

   Comme vous avez activé la synchronisation de l'TrafficLight ombre GG\$1 avec AWS IoT, l'état de l'ombre dans le cloud doit être mis à jour chaque fois que GG\$1Switch envoie une mise à jour. Cette fonctionnalité peut être utilisée pour exposer l'état d'un appareil client à AWS IoT.
**Note**  
Si nécessaire, vous pouvez résoudre les problèmes en consultant les AWS IoT Greengrass principaux journaux, notamment `runtime.log` :  

   ```
   cd /greengrass/ggc/var/log
   sudo cat system/runtime.log | more
   ```
 Vous pouvez également consulter les fichiers `GGShadowSyncManager.log` et `GGShadowService.log`. Pour de plus amples informations, veuillez consulter [Résolution des problèmes AWS IoT Greengrass](gg-troubleshooting.md). 

Maintenez les appareils clients et les abonnements configurés. Vous les utiliserez dans le module suivant. Vous exécutez également les mêmes commandes.