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.
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 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)
-
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:
-
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
-
Instale la SDK para dispositivos con AWS IoT versión 2 para Python.
python3 -m pip install --user ./aws-iot-device-sdk-python-v2
-
-
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
-
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-
MyClientDevice1
Sustitúyala por el nombre del dispositivo cliente. -
~/certs/AmazonRootCA1.pem
Sustitúyalo por la ruta al certificado de CA raíz de Amazon en el dispositivo cliente. -
~/certs/device.pem.crt
Sustitúyalo por la ruta al certificado del dispositivo del dispositivo cliente. -
~/certs/private.pem.key
Sustitúyalo por la ruta al archivo de clave privada del dispositivo cliente. -
us-east-1
Sustitú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
\\ --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 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++
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++)
-
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:
-
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
-
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
-
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
-
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
-
-
Cree la aplicación de ejemplo Greengrass Discovery en la SDK para dispositivos con AWS IoT versión 2 para C++. Haga lo siguiente:
-
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
-
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-
MyClientDevice1
Sustitúyala por el nombre del dispositivo cliente. -
~/certs/AmazonRootCA1.pem
Sustitúyalo por la ruta al certificado de CA raíz de Amazon en el dispositivo cliente. -
~/certs/device.pem.crt
Sustitúyalo por la ruta al certificado del dispositivo del dispositivo cliente. -
~/certs/private.pem.key
Sustitúyalo por la ruta al archivo de clave privada del dispositivo cliente. -
us-east-1
Sustitú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
\ --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 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
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
-
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:
-
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
-
Instale la SDK para dispositivos con AWS IoT v2 para JavaScript.
cd aws-iot-device-sdk-js-v2 npm install
-
-
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
-
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-
MyClientDevice1
Sustitúyalo por el nombre del dispositivo cliente. -
~/certs/AmazonRootCA1.pem
Sustitúyalo por la ruta al certificado de CA raíz de Amazon en el dispositivo cliente. -
~/certs/device.pem.crt
Sustitúyalo por la ruta al certificado del dispositivo del dispositivo cliente. -
~/certs/private.pem.key
Sustitúyalo por la ruta al archivo de clave privada del dispositivo cliente. -
us-east-1
Sustitú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
\ --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 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
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)
-
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:
-
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
-
Cambie a la carpeta SDK para dispositivos con AWS IoT v2 para Java.
-
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
-
-
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
MyClientDevice1
de por el nombre del dispositivo cliente. -
$HOME/certs/AmazonRootCA1.pem
Sustitúyalo por la ruta al certificado de CA raíz de Amazon en el dispositivo cliente. -
$HOME/certs/device.pem.crt
Sustitúyalo por la ruta al certificado del dispositivo del dispositivo cliente. -
$HOME/certs/private.pem.key
Sustitúyalo por la ruta al archivo de clave privada del dispositivo cliente. -
us-east-1
Sustitú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
\ --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 Supervise AWS IoT Greengrass los registros.