Prueba de las comunicaciones del dispositivo de cliente - AWS IoT Greengrass

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Prueba de las comunicaciones del dispositivo de cliente

Los dispositivos cliente pueden SDK para dispositivos con AWS IoT utilizarla para detectar, conectarse y comunicarse con un dispositivo principal. Puede usar el cliente de descubrimiento de Greengrass SDK para dispositivos con AWS IoT para usar la API de descubrimiento de Greengrass, que devuelve información sobre los dispositivos principales a los que se puede conectar un dispositivo cliente. La respuesta de la API incluye los puntos de conexión del agente MQTT para conectarse y los certificados que se utilizan para verificar la identidad de cada dispositivo principal. A continuación, el dispositivo de cliente puede probar cada punto de conexión hasta que se conecte correctamente a un dispositivo principal.

Los dispositivos de cliente solo pueden detectar los dispositivos principales a los que se asocien. Antes de probar las comunicaciones entre un dispositivo de cliente y un dispositivo principal, debe asociar el dispositivo de cliente al dispositivo principal. Para obtener más información, consulte Asociación de los dispositivos de cliente.

La API de detección de Greengrass devuelve los puntos de conexión del agente MQTT del dispositivo principal que especifique. Puede usar el componente detector de IP para administrar estos puntos de conexión por usted, o puede administrarlos manualmente para cada dispositivo principal. Para obtener más información, consulte Administración de puntos de conexión del dispositivo principal.

nota

Para usar la API de detección de Greengrass, un dispositivo de cliente debe tener el permiso greengrass:Discover. Para obtener más información, consulte AWS IoT Política mínima para los dispositivos cliente.

SDK para dispositivos con AWS IoT Está disponible en varios lenguajes de programación. Para obtener más información, consulte AWS IoT Dispositivo SDKs en la Guía para AWS IoT Core desarrolladores.

Prueba de comunicaciones (Python)

En esta sección, utilizará un ejemplo de detección de Greengrass en SDK para dispositivos con AWS IoT versión 2 para Python para probar las comunicaciones entre un dispositivo de cliente y un dispositivo principal.

importante

Para usar la SDK para dispositivos con AWS IoT versión 2 para Python, el dispositivo debe ejecutar Python 3.6 o una versión posterior.

Para probar las comunicaciones (SDK para dispositivos con AWS IoT v2 para Python)
  1. Descargue e instale la SDK para dispositivos con AWS IoT versión 2 para Python en el AWS IoT dispositivo para conectarlo como dispositivo cliente.

    En el dispositivo de cliente, haga lo siguiente:

    1. Clona el repositorio SDK para dispositivos con AWS IoT v2 para Python para descargarlo.

      git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
    2. Instale la SDK para dispositivos con AWS IoT versión 2 para Python.

      python3 -m pip install --user ./aws-iot-device-sdk-python-v2
  2. Cambie a la carpeta de muestras de la SDK para dispositivos con AWS IoT versión 2 para Python.

    cd aws-iot-device-sdk-python-v2/samples
  3. Ejecute la aplicación de ejemplo de detección de Greengrass. Esta aplicación espera argumentos que especifican el nombre del objeto del dispositivo de cliente, el tema y el mensaje de MQTT que se van a usar y los certificados que autentican y protegen la conexión. En el siguiente ejemplo, se envía el mensaje “Hello World” al tema clients/MyClientDevice1/hello/world.

    • MyClientDevice1Sustitúyala por el nombre del dispositivo cliente.

    • ~/certs/AmazonRootCA1.pemSustitúyalo por la ruta al certificado de CA raíz de Amazon en el dispositivo cliente.

    • ~/certs/device.pem.crtSustitúyalo por la ruta al certificado del dispositivo del dispositivo cliente.

    • ~/certs/private.pem.keySustitúyalo por la ruta al archivo de clave privada del dispositivo cliente.

    • us-east-1Sustitúyala por la AWS región en la que funcionan el dispositivo cliente y el dispositivo 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

    La aplicación de ejemplo de detección envía el mensaje 10 veces y se desconecta. También se suscribe al mismo tema en el que publica los mensajes. Si el resultado indica que la aplicación recibió mensajes MQTT sobre el tema, el dispositivo de cliente puede comunicarse correctamente con el dispositivo 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 el comando genera un error, consulte Solución de problemas de detección de Greengrass.

    También puede ver los registros de Greengrass en el dispositivo principal para comprobar si el dispositivo de cliente se conecta y envía mensajes correctamente. Para obtener más información, consulte Supervise AWS IoT Greengrass los registros.

Prueba de las comunicaciones (C++)

En esta sección, utilizará un ejemplo de detección de Greengrass en el SDK para dispositivos con AWS IoT versión 2 para C++ a fin de probar las comunicaciones entre un dispositivo de cliente y un dispositivo principal.

Para compilar la SDK para dispositivos con AWS IoT versión 2 para C++, un dispositivo debe tener las siguientes herramientas:

  • C++ 11 o posterior

  • CMake 3.1 o una versión posterior

  • Uno de los siguientes copiladores:

    • GCC 4.8 o posterior

    • Clang 3.9 o posterior

    • MSVC 2015 o posterior

Para probar las comunicaciones (SDK para dispositivos con AWS IoT v2 para C++)
  1. Descargue y cree la SDK para dispositivos con AWS IoT versión 2 para C++ en AWS IoT el dispositivo que desee conectar como dispositivo cliente.

    En el dispositivo de cliente, haga lo siguiente:

    1. Cree una carpeta para el espacio de trabajo SDK para dispositivos con AWS IoT de la versión 2 para C++ y cámbiela a ella.

      cd mkdir iot-device-sdk-cpp cd iot-device-sdk-cpp
    2. Clona el SDK para dispositivos con AWS IoT repositorio de la versión 2 para C++ para descargarlo. El indicador --recursive especifica la descarga de submódulos.

      git clone --recursive https://github.com/aws/aws-iot-device-sdk-cpp-v2.git
    3. Cree una carpeta para el resultado de la SDK para dispositivos con AWS IoT compilación de la versión 2 para C++ y cámbiela a ella.

      mkdir aws-iot-device-sdk-cpp-v2-build cd aws-iot-device-sdk-cpp-v2-build
    4. Compila la SDK para dispositivos con AWS IoT v2 para C++.

      cmake -DCMAKE_INSTALL_PREFIX="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" ../aws-iot-device-sdk-cpp-v2 cmake --build . --target install
  2. Cree la aplicación de ejemplo Greengrass Discovery en la SDK para dispositivos con AWS IoT versión 2 para C++. Haga lo siguiente:

    1. Cambie a la carpeta de ejemplos de Greengrass Discovery en la SDK para dispositivos con AWS IoT versión 2 para C++.

      cd ../aws-iot-device-sdk-cpp-v2/samples/greengrass/basic_discovery
    2. Cree una carpeta para el resultado de la compilación de ejemplo de detección de Greengrass y cambie a ella.

      mkdir build cd build
    3. Cree la aplicación de ejemplo de detección de Greengrass.

      cmake -DCMAKE_PREFIX_PATH="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" .. cmake --build . --config "Release"
  3. Ejecute la aplicación de ejemplo de detección de Greengrass. Esta aplicación espera argumentos que especifiquen el nombre del dispositivo de cliente, el tema de MQTT que se va a utilizar y los certificados que autentican y protegen la conexión. En el siguiente ejemplo, se suscribe al tema clients/MyClientDevice1/hello/world y se publica un mensaje sobre el mismo tema que se introduce en la línea de comandos.

    • MyClientDevice1Sustitúyala por el nombre del dispositivo cliente.

    • ~/certs/AmazonRootCA1.pemSustitúyalo por la ruta al certificado de CA raíz de Amazon en el dispositivo cliente.

    • ~/certs/device.pem.crtSustitúyalo por la ruta al certificado del dispositivo del dispositivo cliente.

    • ~/certs/private.pem.keySustitúyalo por la ruta al archivo de clave privada del dispositivo cliente.

    • us-east-1Sustitúyala por la AWS región en la que funcionan el dispositivo cliente y el dispositivo 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

    La aplicación de ejemplo de detección se suscribe al tema y le pide que introduzca un mensaje para publicarlo.

    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 el comando genera un error, consulte Solución de problemas de detección de Greengrass.

  4. Introduzca un mensaje, como Hello 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 el resultado indica que la aplicación recibió el mensaje MQTT sobre el tema, el dispositivo de cliente puede comunicarse correctamente con el dispositivo principal.

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

    También puede ver los registros de Greengrass en el dispositivo principal para comprobar si el dispositivo de cliente se conecta y envía mensajes correctamente. Para obtener más información, consulte Supervise AWS IoT Greengrass los registros.

Pruebe las comunicaciones (JavaScript)

En esta sección, utilizará un ejemplo de descubrimiento de Greengrass en la SDK para dispositivos con AWS IoT versión 2 JavaScript para probar las comunicaciones entre un dispositivo cliente y un dispositivo principal.

importante

Para usar la SDK para dispositivos con AWS IoT versión 2 JavaScript, un dispositivo debe ejecutar Node v10.0 o una versión posterior.

Para probar las comunicaciones (SDK para dispositivos con AWS IoT v2 para) JavaScript
  1. Descargue e instale la SDK para dispositivos con AWS IoT versión 2 JavaScript para el AWS IoT dispositivo que desee conectar como dispositivo cliente.

    En el dispositivo de cliente, haga lo siguiente:

    1. Clona la SDK para dispositivos con AWS IoT v2 para el JavaScript repositorio para descargarla.

      git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
    2. Instale la SDK para dispositivos con AWS IoT v2 para JavaScript.

      cd aws-iot-device-sdk-js-v2 npm install
  2. Cambie a la carpeta de ejemplos de Greengrass discovery en la SDK para dispositivos con AWS IoT versión 2 para. JavaScript

    cd samples/node/basic_discovery
  3. Instale la aplicación de ejemplo de detección de Greengrass.

    npm install
  4. Ejecute la aplicación de ejemplo de detección de Greengrass. Esta aplicación espera argumentos que especifican el nombre del objeto del dispositivo de cliente, el tema y el mensaje de MQTT que se van a usar y los certificados que autentican y protegen la conexión. En el siguiente ejemplo, se envía el mensaje “Hello World” al tema clients/MyClientDevice1/hello/world.

    • MyClientDevice1Sustitúyalo por el nombre del dispositivo cliente.

    • ~/certs/AmazonRootCA1.pemSustitúyalo por la ruta al certificado de CA raíz de Amazon en el dispositivo cliente.

    • ~/certs/device.pem.crtSustitúyalo por la ruta al certificado del dispositivo del dispositivo cliente.

    • ~/certs/private.pem.keySustitúyalo por la ruta al archivo de clave privada del dispositivo cliente.

    • us-east-1Sustitúyala por la AWS región en la que funcionan el dispositivo cliente y el dispositivo 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

    La aplicación de ejemplo de detección envía el mensaje 10 veces y se desconecta. También se suscribe al mismo tema en el que publica los mensajes. Si el resultado indica que la aplicación recibió mensajes MQTT sobre el tema, el dispositivo de cliente puede comunicarse correctamente con el dispositivo 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 el comando genera un error, consulte Solución de problemas de detección de Greengrass.

    También puede ver los registros de Greengrass en el dispositivo principal para comprobar si el dispositivo de cliente se conecta y envía mensajes correctamente. Para obtener más información, consulte Supervise AWS IoT Greengrass los registros.

Prueba de comunicaciones (Java)

En esta sección, utilizará un ejemplo de detección de Greengrass en el SDK para dispositivos con AWS IoT versión 2 para Java para probar las comunicaciones entre un dispositivo de cliente y un dispositivo principal.

importante

Para compilar la SDK para dispositivos con AWS IoT versión 2 para Java, un dispositivo debe tener las siguientes herramientas:

  • Java 8 o posterior, con JAVA_HOME apuntando a la carpeta de Java.

  • Apache Maven

Para probar las comunicaciones (SDK para dispositivos con AWS IoT v2 para Java)
  1. Descargue y cree la SDK para dispositivos con AWS IoT versión 2 para Java en el AWS IoT dispositivo que desee conectar como dispositivo cliente.

    En el dispositivo de cliente, haga lo siguiente:

    1. Clona el SDK para dispositivos con AWS IoT repositorio de la versión 2 para Java para descargarlo.

      git clone https://github.com/aws/aws-iot-device-sdk-java-v2.git
    2. Cambie a la carpeta SDK para dispositivos con AWS IoT v2 para Java.

    3. Compila la SDK para dispositivos con AWS IoT v2 para Java.

      cd aws-iot-device-sdk-java-v2 mvn versions:use-latest-versions -Dincludes="software.amazon.awssdk.crt*" mvn clean install
  2. Ejecute la aplicación de ejemplo de detección de Greengrass. Esta aplicación espera argumentos que especifiquen el nombre del dispositivo de cliente, el tema de MQTT que se va a utilizar y los certificados que autentican y protegen la conexión. En el siguiente ejemplo, se suscribe al tema clients/MyClientDevice1/hello/world y se publica un mensaje sobre el mismo tema que se introduce en la línea de comandos.

    • Sustituya ambas instancias MyClientDevice1 de por el nombre del dispositivo cliente.

    • $HOME/certs/AmazonRootCA1.pemSustitúyalo por la ruta al certificado de CA raíz de Amazon en el dispositivo cliente.

    • $HOME/certs/device.pem.crtSustitúyalo por la ruta al certificado del dispositivo del dispositivo cliente.

    • $HOME/certs/private.pem.keySustitúyalo por la ruta al archivo de clave privada del dispositivo cliente.

    • us-east-1Sustitúyalo por el Región de AWS lugar donde funcionan el dispositivo cliente y el dispositivo 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"

    La aplicación de ejemplo de detección se suscribe al tema y le pide que introduzca un mensaje para publicarlo.

    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 el comando genera un error, consulte Solución de problemas de detección de Greengrass.

  3. Introduzca un mensaje, como Hello 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 el resultado indica que la aplicación recibió el mensaje MQTT sobre el tema, el dispositivo de cliente puede comunicarse correctamente con el dispositivo principal.

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

    También puede ver los registros de Greengrass en el dispositivo principal para comprobar si el dispositivo de cliente se conecta y envía mensajes correctamente. Para obtener más información, consulte Supervise AWS IoT Greengrass los registros.