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 de cliente pueden usar SDK para dispositivos con AWS IoT para detectar, conectarse y comunicarse con un dispositivo principal. Puede usar el cliente de detección de Greengrass en el SDK para dispositivos con AWS IoT para usar la API de detección de Greengrass, que devuelve información sobre los dispositivos principales a los que se puede conectar un dispositivo de 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 Política mínima de AWS IoT para los dispositivos de cliente.
El SDK para dispositivos con AWS IoT está disponible en varios lenguajes de programación. Para obtener más información, consulte la sección AWS IoT Device SDKs en la Guía para desarrolladores de AWS IoT Core.
Temas
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
importante
Para utilizar SDK para dispositivos con AWS IoT versión 2 para Python, el dispositivo debe ejecutar Python 3.6 o posterior.
Cómo probar las comunicaciones (SDK para dispositivos con AWS IoT v2 para Python)
-
Descargue e instale la versión 2 del SDK para dispositivos con AWS IoT para Python
en el objeto AWS IoT para conectarlo como dispositivo de cliente. En el dispositivo de cliente, haga lo siguiente:
-
Clone el repositorio de la v2 del SDK para dispositivos con AWS IoT para Python para descargarlo.
git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
-
Instale la v2 del SDK para dispositivos con AWS IoT para Python.
python3 -m pip install --user ./aws-iot-device-sdk-python-v2
-
-
Cambie a la carpeta de muestras en la versión 2 del SDK para dispositivos con AWS IoT para Python.
cd aws-iot-device-sdk-python-v2/samples
-
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-
Reemplace
MyClientDevice1
por el nombre del objeto del dispositivo de cliente. -
Reemplace
~/certs/AmazonRootCA1.pem
por la ruta al certificado de CA raíz de Amazon en el dispositivo de cliente. -
Reemplace
~/certs/device.pem.crt
por la ruta al certificado del dispositivo en el dispositivo de cliente. -
Reemplace
~/certs/private.pem.key
por la ruta al archivo de clave privada en el dispositivo de cliente. -
Reemplace
us-east-1
por la región de AWS en la que funcionan el dispositivo de 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
\\ --regionus-east-1
\\ --verbosity WarnLa 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 Supervisión de los registros de AWS IoT Greengrass.
-
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++
Para compilar el 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 posterior
-
Uno de los siguientes copiladores:
-
GCC 4.8 o posterior
-
Clang 3.9 o posterior
-
MSVC 2015 o posterior
-
Cómo probar las comunicaciones (SDK para dispositivos con AWS IoT v2 para C++)
-
Descargue y cree el SDK para dispositivos con AWS IoT versión 2 para C++
en el objeto AWS IoT que desee conectar como dispositivo de cliente. En el dispositivo de cliente, haga lo siguiente:
-
Cree una carpeta para el espacio de trabajo de SDK para dispositivos con AWS IoT versión 2 para C++ y cambie a ella.
cd mkdir iot-device-sdk-cpp cd iot-device-sdk-cpp
-
Clone el repositorio del SDK para dispositivos con AWS IoT 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
-
Cree una carpeta para el resultado de la compilación del SDK para dispositivos con AWS IoT versión 2 para C++ y cambie a ella.
mkdir aws-iot-device-sdk-cpp-v2-build cd aws-iot-device-sdk-cpp-v2-build
-
Compile el 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
-
-
Cree la aplicación de ejemplo de detección de Greengrass en SDK para dispositivos con AWS IoT versión 2 para C++. Haga lo siguiente:
-
Cambie a la carpeta de ejemplo de detección de Greengrass en SDK para dispositivos con AWS IoT versión 2 para C++.
cd ../aws-iot-device-sdk-cpp-v2/samples/greengrass/basic_discovery
-
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
-
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"
-
-
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/
y se publica un mensaje sobre el mismo tema que se introduce en la línea de comandos.MyClientDevice1
/hello/world-
Reemplace
MyClientDevice1
por el nombre del objeto del dispositivo de cliente. -
Reemplace
~/certs/AmazonRootCA1.pem
por la ruta al certificado de CA raíz de Amazon en el dispositivo de cliente. -
Reemplace
~/certs/device.pem.crt
por la ruta al certificado del dispositivo en el dispositivo de cliente. -
Reemplace
~/certs/private.pem.key
por la ruta al archivo de clave privada en el dispositivo de cliente. -
Reemplace
us-east-1
por la región de AWS en la que funcionan el dispositivo de 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
\ --regionus-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.
-
-
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 Supervisión de los registros de AWS IoT Greengrass.
Prueba de comunicaciones (JavaScript)
En esta sección, utilizará una ejemplo de detección de Greengrass en el SDK para dispositivos con AWS IoT versión 2 para JavaScript
importante
Para usar SDK para dispositivos con AWS IoT versión 2 para JavaScript, el dispositivo debe ejecutar Node 10.0 o una versión posterior.
Cómo probar las comunicaciones (SDK para dispositivos con AWS IoT v2 para JavaScript)
-
Descargue e instale el SDK para dispositivos con AWS IoT versión 2 para JavaScript
en el objeto AWS IoT para conectarlo como dispositivo de cliente. En el dispositivo de cliente, haga lo siguiente:
-
Clone el repositorio del SDK para dispositivos con AWS IoT v2 para JavaScript para descargarlo.
git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
-
Instale el SDK para dispositivos con AWS IoT v2 para JavaScript.
cd aws-iot-device-sdk-js-v2 npm install
-
-
Cambie a la carpeta de ejemplo de detección de Greengrass en el SDK para dispositivos con AWS IoT versión 2 para JavaScript.
cd samples/node/basic_discovery
-
Instale la aplicación de ejemplo de detección de Greengrass.
npm install
-
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-
Reemplace
MyClientDevice1
por el nombre del objeto del dispositivo de cliente. -
Reemplace
~/certs/AmazonRootCA1.pem
por la ruta al certificado de CA raíz de Amazon en el dispositivo de cliente. -
Reemplace
~/certs/device.pem.crt
por la ruta al certificado del dispositivo en el dispositivo de cliente. -
Reemplace
~/certs/private.pem.key
por la ruta al archivo de clave privada en el dispositivo de cliente. -
Reemplace
us-east-1
por la región de AWS en la que funcionan el dispositivo de 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
\ --regionus-east-1
\ --verbose warnLa 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-----\n
MIICiT...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 Supervisión de los registros de AWS IoT Greengrass.
-
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
importante
Para compilar el 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
Cómo probar las comunicaciones (SDK para dispositivos con AWS IoT v2 para Java)
-
Descargue y cree el SDK para dispositivos con AWS IoT versión 2 para Java
en el objeto AWS IoT que desee conectar como dispositivo de cliente. En el dispositivo de cliente, haga lo siguiente:
-
Clone el repositorio del SDK para dispositivos con AWS IoT versión 2 para Java para descargarlo.
git clone https://github.com/aws/aws-iot-device-sdk-java-v2.git
-
Cambie a la carpeta del SDK para dispositivos con AWS IoT versión 2 para Java.
-
Compile el 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
-
-
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/
y se publica un mensaje sobre el mismo tema que se introduce en la línea de comandos.MyClientDevice1
/hello/world-
Sustituya ambas instancias de
MyClientDevice1
por el nombre de objeto del dispositivo de cliente. -
Sustituya
$HOME/certs/AmazonRootCA1.pem
por la ruta al certificado de la CA raíz de Amazon en el dispositivo de cliente. -
Sustituya
$HOME/certs/device.pem.crt
por la ruta al certificado del dispositivo en el dispositivo de cliente. -
Sustituya
$HOME/certs/private.pem.key
por la ruta al archivo de clave privada del dispositivo de cliente. -
Sustituya el
us-east-1
por la Región de AWS en donde funcionan el dispositivo de 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
\ --regionus-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.
-
-
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 Supervisión de los registros de AWS IoT Greengrass.