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.
Temas
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
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)
-
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:
-
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 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/
tema.MyClientDevice1
/hello/world-
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
\\ --regionus-east-1
\\ --verbosity WarnLa 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
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++)
-
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:
-
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
--recursive
indicador 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 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
-
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 Greengrass Discovery y cámbiese a ella.
mkdir build cd build
-
Cree la aplicación de ejemplo Greengrass Discovery.
cmake -DCMAKE_PREFIX_PATH="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" .. cmake --build . --config "Release"
-
-
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/
tema y se publica un mensaje sobre el mismo tema que se introduce en la línea de comandos.MyClientDevice1
/hello/world-
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
\ --regionus-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.
-
-
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
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
-
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:
-
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
-
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 Greengrass Discovery.
npm install
-
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/
tema.MyClientDevice1
/hello/world-
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
\ --regionus-east-1
\ --verbose warnLa 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-----\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, 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
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)
-
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:
-
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
-
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 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/
tema y se publica un mensaje sobre el mismo tema que se introduce en la línea de comandos.MyClientDevice1
/hello/world-
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
\ --regionus-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.
-
-
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.