Pruebe las comunicaciones del dispositivo 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.

Pruebe las comunicaciones del dispositivo 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 finales del broker MQTT para conectarse y los certificados que se utilizan para verificar la identidad de cada dispositivo principal. A continuación, el dispositivo cliente puede probar cada punto final hasta que se conecte correctamente a un dispositivo principal.

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

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

nota

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

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

Comunicaciones de prueba (Python)

En esta sección, utilizará un ejemplo de descubrimiento de Greengrass en la SDK para dispositivos con AWS IoTversión 2 para Python 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 para Python, el dispositivo debe ejecutar Python 3.6 o una versión posterior.

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

    En el dispositivo 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 Greengrass Discovery de muestra. Esta aplicación espera argumentos que especifiquen el nombre del dispositivo cliente, el tema y el mensaje de MQTT que se van a utilizar y los certificados que autentican y protegen la conexión. En el siguiente ejemplo, se envía un mensaje de Hello World al clients/MyClientDevice1/hello/world tema.

    • Sustituya MyClientDevice1 por el nombre del dispositivo cliente.

    • Sustituya ~/certs/ AmazonRoot CA1.pem por la ruta al certificado de CA raíz de Amazon en el dispositivo cliente.

    • Sustituya ~/certs/device.pem.crt por la ruta al certificado del dispositivo cliente.

    • Sustituya ~/certs/private.pem.key por la ruta al archivo de clave privada del dispositivo cliente.

    • Sustituya us-east-1 por la región en la que funcionan el dispositivo cliente y el dispositivo principal. AWS

    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 Discovery 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 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, en cambio, la aplicación 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 cliente se conecta y envía mensajes correctamente. Para obtener más información, consulte Supervisar AWS IoT Greengrass registros.

Pruebe las comunicaciones (C++)

En esta sección, utilizará un ejemplo de descubrimiento de Greengrass en la SDK para dispositivos con AWS IoTversión 2 para C++ para probar las comunicaciones entre un dispositivo 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++ 1.1 o posterior

  • CMake 3.1 o posterior

  • Uno de los siguientes compiladores:

    • GCC 4.8 o posterior

    • Clang 3.9 o posterior

    • MSVC 2015 o posterior

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

    En el dispositivo 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 --recursive indicador 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 compilación SDK para dispositivos con AWS IoT 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 Greengrass Discovery y cámbiese a ella.

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

      cmake -DCMAKE_PREFIX_PATH="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" .. cmake --build . --config "Release"
  3. Ejecute la aplicación Greengrass Discovery de muestra. Esta aplicación espera argumentos que especifiquen el nombre del dispositivo 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 clients/MyClientDevice1/hello/world tema y se publica un mensaje sobre el mismo tema que se introduce en la línea de comandos.

    • Sustituya MyClientDevice1 por el nombre de la cosa del dispositivo cliente.

    • Sustituya ~/certs/ AmazonRoot CA1.pem por la ruta al certificado de CA raíz de Amazon en el dispositivo cliente.

    • Sustituya ~/certs/device.pem.crt por la ruta al certificado del dispositivo cliente.

    • Sustituya ~/certs/private.pem.key por la ruta al archivo de clave privada del dispositivo cliente.

    • Sustituya us-east-1 por la región en la que funcionan el dispositivo cliente y el dispositivo principal. AWS

    ./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 Discovery 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, en cambio, la aplicación genera un error, consulte Solución de problemas de detección de Greengrass.

  4. Introduzca un mensaje, por ejemplo. 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 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 cliente se conecta y envía mensajes correctamente. Para obtener más información, consulte Supervisar AWS IoT Greengrass registros.

Probar las comunicaciones () JavaScript

En esta sección, utilizará un ejemplo de descubrimiento de Greengrass en la SDK para dispositivos con AWS IoTversió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 IoTv2 para) JavaScript
  1. Descargue e instale la SDK para dispositivos con AWS IoTversión 2 JavaScript para el AWS IoT dispositivo que desee conectar como dispositivo cliente.

    En el dispositivo cliente, haga lo siguiente:

    1. Clona la SDK para dispositivos con AWS IoT versión 2 JavaScript del 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 Greengrass Discovery.

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

    • Sustituya MyClientDevice1 por el nombre del dispositivo cliente.

    • Sustituya ~/certs/ AmazonRoot CA1.pem por la ruta al certificado de CA raíz de Amazon en el dispositivo cliente.

    • Sustituya ~/certs/device.pem.crt por la ruta al certificado del dispositivo cliente.

    • Sustituya ~/certs/private.pem.key por la ruta al archivo de clave privada del dispositivo cliente.

    • Sustituya us-east-1 por la región en la que funcionan el dispositivo cliente y el dispositivo principal. AWS

    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 Discovery 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 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, en cambio, la aplicación 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 cliente se conecta y envía mensajes correctamente. Para obtener más información, consulte Supervisar AWS IoT Greengrass registros.

Pruebe las comunicaciones (Java)

En esta sección, utilizará un ejemplo de descubrimiento de Greengrass en la SDK para dispositivos con AWS IoTversión 2 para Java para probar las comunicaciones entre un dispositivo 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, JAVA_HOME apuntando a la carpeta Java.

  • Apache Maven

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

    En el dispositivo cliente, haga lo siguiente:

    1. Clone 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 Greengrass Discovery de muestra. Esta aplicación espera argumentos que especifiquen el nombre del dispositivo 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 clients/MyClientDevice1/hello/world tema y se publica un mensaje sobre el mismo tema que se introduce en la línea de comandos.

    • Sustituya las dos instancias de MyClientDevice1 por el nombre de la cosa del dispositivo cliente.

    • Sustituya $HOME/certs/ AmazonRoot CA1.pem por la ruta al certificado de CA raíz de Amazon en el dispositivo cliente.

    • Sustituya $HOME/certs/device.pem.crt por la ruta al certificado del dispositivo cliente.

    • Sustituya $HOME/certs/private.pem.key por la ruta al archivo de clave privada del dispositivo cliente.

    • Sustituya us-east-1 por el lugar donde funcionan el dispositivo cliente y el dispositivo principal. Región de AWS

    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 Discovery 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, en cambio, la aplicación genera un error, consulte Solución de problemas de detección de Greengrass.

  3. Introduzca un mensaje, por ejemplo. 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 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 cliente se conecta y envía mensajes correctamente. Para obtener más información, consulte Supervisar AWS IoT Greengrass registros.