Tester les communications entre appareils clients - AWS IoT Greengrass

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.

Tester les communications entre appareils clients

Les appareils clients peuvent utiliser le Kit SDK des appareils AWS IoT pour découvrir, se connecter et communiquer avec un appareil principal. Vous pouvez utiliser le client de découverte Greengrass Kit SDK des appareils AWS IoT pour utiliser l'API de découverte Greengrass, qui renvoie des informations sur les principaux appareils auxquels un appareil client peut se connecter. La réponse de l'API inclut les points de terminaison du broker MQTT à connecter et les certificats à utiliser pour vérifier l'identité de chaque périphérique principal. Ensuite, l'appareil client peut essayer chaque point de terminaison jusqu'à ce qu'il se connecte avec succès à un périphérique principal.

Les appareils clients ne peuvent découvrir que les appareils principaux auxquels vous les associez. Avant de tester les communications entre un appareil client et un périphérique principal, vous devez associer l'appareil client au périphérique principal. Pour plus d’informations, consultez Associer des appareils clients.

L'API de découverte Greengrass renvoie les points de terminaison du broker MQTT du périphérique principal que vous spécifiez. Vous pouvez utiliser le composant de détection IP pour gérer ces points de terminaison à votre place, ou vous pouvez les gérer manuellement pour chaque périphérique principal. Pour plus d’informations, consultez Gérez les principaux points de terminaison des appareils.

Note

Pour utiliser l'API de découverte Greengrass, un appareil client doit disposer de cette autorisation. greengrass:Discover Pour plus d’informations, consultez AWS IoTPolitique minimale pour les appareils clients.

Kit SDK des appareils AWS IoTIl est disponible dans plusieurs langages de programmation. Pour plus d'informations, consultez la section SDK pour AWS IoT appareils dans le guide du AWS IoT Core développeur.

Tester les communications (Python)

Dans cette section, vous allez utiliser l'exemple de découverte de Greengrass dans la Kit SDK des appareils AWS IoTversion v2 pour Python afin de tester les communications entre un appareil client et un périphérique principal.

Important

Pour utiliser la Kit SDK des appareils AWS IoT version v2 pour Python, un périphérique doit exécuter Python 3.6 ou version ultérieure.

Pour tester les communications (Kit SDK des appareils AWS IoTv2 pour Python)
  1. Téléchargez et installez la Kit SDK des appareils AWS IoTversion 2 pour Python sur l'AWS IoTappareil à connecter en tant que périphérique client.

    Sur l'appareil client, procédez comme suit :

    1. Clonez le dépôt Kit SDK des appareils AWS IoT v2 pour Python pour le télécharger.

      git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
    2. Installez la Kit SDK des appareils AWS IoT v2 pour Python.

      python3 -m pip install --user ./aws-iot-device-sdk-python-v2
  2. Accédez au dossier d'échantillons dans la Kit SDK des appareils AWS IoT version 2 pour Python.

    cd aws-iot-device-sdk-python-v2/samples
  3. Exécutez l'exemple d'application de découverte Greengrass. Cette application attend des arguments qui spécifient le nom de l'objet du périphérique client, le sujet MQTT et le message à utiliser, ainsi que les certificats qui authentifient et sécurisent la connexion. L'exemple suivant envoie un message Hello World à la clients/MyClientDevice1/hello/world rubrique.

    • Remplacez MyClientDevice1 par le nom de l'objet de l'appareil client.

    • Remplacez ~/certs/ AmazonRoot CA1.pem par le chemin d'accès au certificat racine de l'autorité de certification Amazon sur l'appareil client.

    • Remplacez ~/certs/device.pem.crt par le chemin d'accès au certificat de périphérique sur le périphérique client.

    • Remplacez ~/certs/private.pem.key par le chemin d'accès au fichier de clé privée sur l'appareil client.

    • Remplacez us-east-1 par la AWS région où fonctionnent votre appareil client et votre appareil principal.

    python3 basic_discovery.py \\ --thing_name MyClientDevice1 \\ --topic 'clients/MyClientDevice1/hello/world' \\ --message 'Hello World!' \\ --ca_file ~/certs/AmazonRootCA1.pem \\ --cert ~/certs/device.pem.crt \\ --key ~/certs/private.pem.key \\ --region us-east-1 \\ --verbosity Warn

    L'exemple d'application de découverte envoie le message 10 fois et se déconnecte. Il s'abonne également au même sujet où il publie des messages. Si le résultat indique que l'application a reçu des messages MQTT sur le sujet, le dispositif client peut communiquer avec succès avec le dispositif principal.

    Performing greengrass discovery... awsiot.greengrass_discovery.DiscoverResponse(gg_groups=[awsiot.greengrass_discovery.GGGroup(gg_group_id='greengrassV2-coreDevice-MyGreengrassCore', cores=[awsiot.greengrass_discovery.GGCore(thing_arn='arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore', connectivity=[awsiot.greengrass_discovery.ConnectivityInfo(id='203.0.113.0', host_address='203.0.113.0', metadata='', port=8883)])], certificate_authorities=['-----BEGIN CERTIFICATE-----\ MIICiT...EXAMPLE=\ -----END CERTIFICATE-----\ '])]) Trying core arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore at host 203.0.113.0 port 8883 Connected! Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 0} Publish received on topic clients/MyClientDevice1/hello/world b'{"message": "Hello World!", "sequence": 0}' Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 1} Publish received on topic clients/MyClientDevice1/hello/world b'{"message": "Hello World!", "sequence": 1}' ... Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 9} Publish received on topic clients/MyClientDevice1/hello/world b'{"message": "Hello World!", "sequence": 9}'

    Si l'application génère plutôt une erreur, reportez-vous à la section Résolution des problèmes liés à la découverte de Greengrass.

    Vous pouvez également consulter les journaux Greengrass sur l'appareil principal pour vérifier si le périphérique client se connecte et envoie des messages avec succès. Pour plus d’informations, consultez AWS IoT GreengrassJournaux de surveillance.

Tester les communications (C++)

Dans cette section, vous allez utiliser l'exemple de découverte de Greengrass dans la Kit SDK des appareils AWS IoTversion v2 pour C++ pour tester les communications entre un appareil client et un périphérique principal.

Pour créer la Kit SDK des appareils AWS IoT version 2 pour C++, un périphérique doit disposer des outils suivants :

  • C++ 11 ou version ultérieure

  • CMake 3.1 ou version ultérieure

  • L'un des compilateurs suivants :

    • GCC 4.8 ou version ultérieure

    • Clang 3.9 ou version ultérieure

    • MSVC 2015 ou version ultérieure

Pour tester les communications (Kit SDK des appareils AWS IoTv2 pour C++)
  1. Téléchargez et compilez la Kit SDK des appareils AWS IoTv2 pour C++ sur l'AWS IoTappareil à connecter en tant que périphérique client.

    Sur l'appareil client, procédez comme suit :

    1. Créez un dossier pour l'espace de travail Kit SDK des appareils AWS IoT v2 pour C++ et modifiez-le.

      cd mkdir iot-device-sdk-cpp cd iot-device-sdk-cpp
    2. Clonez le dépôt Kit SDK des appareils AWS IoT v2 pour C++ pour le télécharger. L'--recursiveindicateur indique de télécharger les sous-modules.

      git clone --recursive https://github.com/aws/aws-iot-device-sdk-cpp-v2.git
    3. Créez un dossier pour la sortie de compilation Kit SDK des appareils AWS IoT v2 pour C++ et modifiez-le.

      mkdir aws-iot-device-sdk-cpp-v2-build cd aws-iot-device-sdk-cpp-v2-build
    4. Construisez la Kit SDK des appareils AWS IoT v2 pour C++.

      cmake -DCMAKE_INSTALL_PREFIX="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" ../aws-iot-device-sdk-cpp-v2 cmake --build . --target install
  2. Créez l'exemple d'application Greengrass Discovery dans la Kit SDK des appareils AWS IoT version 2 pour C++. Procédez comme suit :

    1. Accédez au dossier d'échantillons Greengrass Discovery dans la Kit SDK des appareils AWS IoT version 2 pour C++.

      cd ../aws-iot-device-sdk-cpp-v2/samples/greengrass/basic_discovery
    2. Créez un dossier pour l'exemple de sortie de build de Greengrass Discovery et modifiez-le.

      mkdir build cd build
    3. Créez l'exemple d'application Greengrass Discovery.

      cmake -DCMAKE_PREFIX_PATH="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" .. cmake --build . --config "Release"
  3. Exécutez l'exemple d'application de découverte Greengrass. Cette application attend des arguments qui spécifient le nom de l'objet du périphérique client, le sujet MQTT à utiliser et les certificats qui authentifient et sécurisent la connexion. L'exemple suivant s'abonne à la clients/MyClientDevice1/hello/world rubrique et publie un message que vous entrez sur la ligne de commande pour la même rubrique.

    • Remplacez MyClientDevice1 par le nom de l'objet de l'appareil client.

    • Remplacez ~/certs/ AmazonRoot CA1.pem par le chemin d'accès au certificat racine de l'autorité de certification Amazon sur l'appareil client.

    • Remplacez ~/certs/device.pem.crt par le chemin d'accès au certificat de périphérique sur le périphérique client.

    • Remplacez ~/certs/private.pem.key par le chemin d'accès au fichier de clé privée sur l'appareil client.

    • Remplacez us-east-1 par la AWS région où fonctionnent votre appareil client et votre appareil principal.

    ./basic-discovery \ --thing_name MyClientDevice1 \ --topic 'clients/MyClientDevice1/hello/world' \ --ca_file ~/certs/AmazonRootCA1.pem \ --cert ~/certs/device.pem.crt \ --key ~/certs/private.pem.key \ --region us-east-1

    L'exemple d'application Discovery s'abonne au sujet et vous invite à saisir un message à publier.

    Connecting to group greengrassV2-coreDevice-MyGreengrassCore with thing arn arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore, using endpoint 203.0.113.0:8883 Connected to group greengrassV2-coreDevice-MyGreengrassCore, using connection to 203.0.113.0:8883 Successfully subscribed to clients/MyClientDevice1/hello/world Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press enter. Enter 'exit' to exit this program.

    Si l'application génère plutôt une erreur, reportez-vous à la section Résolution des problèmes liés à la découverte de Greengrass.

  4. Entrez un message, tel queHello World!.

    Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press enter. Enter 'exit' to exit this program. Hello World!

    Si le résultat indique que l'application a reçu le message MQTT sur le sujet, le dispositif client peut communiquer avec succès avec le dispositif principal.

    Operation on packetId 2 Succeeded Publish received on topic clients/MyClientDevice1/hello/world Message: Hello World!

    Vous pouvez également consulter les journaux Greengrass sur l'appareil principal pour vérifier si le périphérique client se connecte et envoie des messages avec succès. Pour plus d’informations, consultez AWS IoT GreengrassJournaux de surveillance.

Tester les communications (JavaScript)

Dans cette section, vous allez utiliser l'exemple de découverte de Greengrass dans la Kit SDK des appareils AWS IoTversion v2 JavaScript pour tester les communications entre un appareil client et un appareil principal.

Important

Pour utiliser la Kit SDK des appareils AWS IoT version v2 pour JavaScript, un appareil doit exécuter Node v10.0 ou version ultérieure.

Pour tester les communications (Kit SDK des appareils AWS IoTversion 2 pour JavaScript)
  1. Téléchargez et installez la Kit SDK des appareils AWS IoTversion 2 JavaScript pour AWS IoT que l'appareil se connecte en tant que périphérique client.

    Sur l'appareil client, procédez comme suit :

    1. Clonez la Kit SDK des appareils AWS IoT v2 pour JavaScript le dépôt afin de la télécharger.

      git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
    2. Installez la Kit SDK des appareils AWS IoT v2 pour JavaScript.

      cd aws-iot-device-sdk-js-v2 npm install
  2. Accédez au dossier d'exemples de découverte Greengrass dans la Kit SDK des appareils AWS IoT version v2 pour. JavaScript

    cd samples/node/basic_discovery
  3. Installez l'exemple d'application Greengrass Discovery.

    npm install
  4. Exécutez l'exemple d'application de découverte Greengrass. Cette application attend des arguments qui spécifient le nom de l'objet du périphérique client, le sujet MQTT et le message à utiliser, ainsi que les certificats qui authentifient et sécurisent la connexion. L'exemple suivant envoie un message Hello World à la clients/MyClientDevice1/hello/world rubrique.

    • Remplacez MyClientDevice1 par le nom de l'objet de l'appareil client.

    • Remplacez ~/certs/ AmazonRoot CA1.pem par le chemin d'accès au certificat racine de l'autorité de certification Amazon sur l'appareil client.

    • Remplacez ~/certs/device.pem.crt par le chemin d'accès au certificat de périphérique sur le périphérique client.

    • Remplacez ~/certs/private.pem.key par le chemin d'accès au fichier de clé privée sur l'appareil client.

    • Remplacez us-east-1 par la AWS région où fonctionnent votre appareil client et votre appareil principal.

    node dist/index.js \ --thing_name MyClientDevice1 \ --topic 'clients/MyClientDevice1/hello/world' \ --message 'Hello World!' \ --ca_file ~/certs/AmazonRootCA1.pem \ --cert ~/certs/device.pem.crt \ --key ~/certs/private.pem.key \ --region us-east-1 \ --verbose warn

    L'exemple d'application de découverte envoie le message 10 fois et se déconnecte. Il s'abonne également au même sujet où il publie des messages. Si le résultat indique que l'application a reçu des messages MQTT sur le sujet, le dispositif client peut communiquer avec succès avec le dispositif principal.

    Discovery Response: {"gg_groups":[{"gg_group_id":"greengrassV2-coreDevice-MyGreengrassCore","cores":[{"thing_arn":"arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore","connectivity":[{"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""}]}],"certificate_authorities":["-----BEGIN CERTIFICATE-----\nMIICiT...EXAMPLE=\n-----END CERTIFICATE-----\n"]}]} Trying endpoint={"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""} [WARN] [2021-06-12T00:46:45Z] [00007f90c0e8d700] [socket] - id=0x7f90b8018710 fd=26: setsockopt() for NO_SIGNAL failed with errno 92. If you are having SIGPIPE signals thrown, you may want to install a signal trap in your application layer. Connected to endpoint={"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":1} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":2} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":3} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":4} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":5} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":6} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":7} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":8} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":9} Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false {"message":"Hello World!","sequence":10} Complete!

    Si l'application génère plutôt une erreur, reportez-vous à la section Résolution des problèmes liés à la découverte de Greengrass.

    Vous pouvez également consulter les journaux Greengrass sur l'appareil principal pour vérifier si le périphérique client se connecte et envoie des messages avec succès. Pour plus d’informations, consultez AWS IoT GreengrassJournaux de surveillance.

Tester les communications (Java)

Dans cette section, vous allez utiliser l'exemple de découverte de Greengrass dans la Kit SDK des appareils AWS IoTversion v2 pour Java pour tester les communications entre un appareil client et un appareil principal.

Important

Pour créer la Kit SDK des appareils AWS IoT v2 pour Java, un appareil doit disposer des outils suivants :

  • Java 8 ou version ultérieure, en JAVA_HOME pointant vers le dossier Java.

  • Apache Maven

Pour tester les communications (Kit SDK des appareils AWS IoTv2 pour Java)
  1. Téléchargez et compilez la Kit SDK des appareils AWS IoTv2 pour Java sur l'AWS IoTappareil à connecter en tant que périphérique client.

    Sur l'appareil client, procédez comme suit :

    1. Clonez le dépôt Kit SDK des appareils AWS IoT v2 pour Java pour le télécharger.

      git clone https://github.com/aws/aws-iot-device-sdk-java-v2.git
    2. Accédez au dossier Kit SDK des appareils AWS IoT v2 pour Java.

    3. Compilez la Kit SDK des appareils AWS IoT v2 pour Java.

      cd aws-iot-device-sdk-java-v2 mvn versions:use-latest-versions -Dincludes="software.amazon.awssdk.crt*" mvn clean install
  2. Exécutez l'exemple d'application de découverte Greengrass. Cette application attend des arguments qui spécifient le nom de l'objet du périphérique client, le sujet MQTT à utiliser et les certificats qui authentifient et sécurisent la connexion. L'exemple suivant s'abonne à la clients/MyClientDevice1/hello/world rubrique et publie un message que vous entrez sur la ligne de commande pour la même rubrique.

    • Remplacez les deux instances de MyClientDevice1 par le nom de l'objet de l'appareil client.

    • Remplacez $HOME/certs/ AmazonRoot CA1.pem par le chemin d'accès au certificat CA racine Amazon sur l'appareil client.

    • Remplacez $HOME/certs/device.pem.crt par le chemin d'accès au certificat de périphérique sur le périphérique client.

    • Remplacez $HOME/certs/private.pem.key par le chemin d'accès au fichier de clé privée sur l'appareil client.

    • Remplacez us-east-1 par l'Région AWSendroit où fonctionnent votre appareil client et votre appareil principal.

    DISCOVERY_SAMPLE_ARGS="--thing_name MyClientDevice1 \ --topic 'clients/MyClientDevice1/hello/world' \ --ca_file $HOME/certs/AmazonRootCA1.pem \ --cert $HOME/certs/device.pem.crt \ --key $HOME/certs/private.pem.key \ --region us-east-1" mvn exec:java -pl samples/Greengrass \ -Dexec.mainClass=greengrass.BasicDiscovery \ -Dexec.args="$DISCOVERY_SAMPLE_ARGS"

    L'exemple d'application Discovery s'abonne au sujet et vous invite à saisir un message à publier.

    Connecting to group ID greengrassV2-coreDevice-MyGreengrassCore, with thing arn arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore, using endpoint 203.0.113.0:8883 Started a clean session Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press Enter. Type 'exit' or 'quit' to exit this program:

    Si l'application génère plutôt une erreur, reportez-vous à la section Résolution des problèmes liés à la découverte de Greengrass.

  3. Entrez un message, tel queHello World!.

    Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press Enter. Type 'exit' or 'quit' to exit this program: Hello World!

    Si le résultat indique que l'application a reçu le message MQTT sur le sujet, le dispositif client peut communiquer avec succès avec le dispositif principal.

    Message received on topic clients/MyClientDevice1/hello/world: Hello World!

    Vous pouvez également consulter les journaux Greengrass sur l'appareil principal pour vérifier si le périphérique client se connecte et envoie des messages avec succès. Pour plus d'informations, consultez AWS IoT GreengrassJournaux de surveillance.