As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Teste as comunicações entre dispositivos clientes
Os dispositivos cliente podem usar o AWS IoT Device SDK para descobrir, conectar e se comunicar com um dispositivo principal. Você pode usar o cliente de descoberta do Greengrass no AWS IoT Device SDK para usar a API de descoberta do Greengrass, que retorna informações sobre os dispositivos principais aos quais um dispositivo cliente pode se conectar. A resposta da API inclui endpoints do broker MQTT para conexão e certificados a serem usados para verificar a identidade de cada dispositivo principal. Em seguida, o dispositivo cliente pode testar cada endpoint até se conectar com êxito a um dispositivo principal.
Os dispositivos cliente podem descobrir somente os dispositivos principais aos quais você os associa. Antes de testar as comunicações entre um dispositivo cliente e um dispositivo principal, você deve associar o dispositivo cliente ao dispositivo principal. Para ter mais informações, consulte Associe dispositivos do cliente.
A API de descoberta do Greengrass retorna os endpoints do broker MQTT do dispositivo principal que você especifica. Você pode usar o componente detector de IP para gerenciar esses endpoints para você ou pode gerenciá-los manualmente para cada dispositivo principal. Para ter mais informações, consulte Gerencie os endpoints principais do dispositivo.
nota
Para usar a API de descoberta do Greengrass, um dispositivo cliente deve ter a greengrass:Discover
permissão. Para ter mais informações, consulte AWS IoTPolítica mínima para dispositivos clientes.
O AWS IoT Device SDK está disponível em várias linguagens de programação. Para obter mais informações, consulte Dispositivos SDK AWS IoT no Guia do desenvolvedor do AWS IoT Core.
Tópicos
Comunicações de teste (Python)
Nesta seção, você usa a amostra de descoberta do Greengrass na AWS IoT Device SDKv2 para Python para
Importante
Para usar a AWS IoT Device SDK v2 para Python, um dispositivo deve executar o Python 3.6 ou posterior.
Para testar as comunicações (AWS IoT Device SDKv2 para Python)
-
Baixe e instale a AWS IoT Device SDKv2 para Python
AWS IoT na coisa para se conectar como um dispositivo cliente. No dispositivo cliente, faça o seguinte:
-
Clone o repositório AWS IoT Device SDK v2 for Python para baixá-lo.
git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
-
Instale a AWS IoT Device SDK v2 para Python.
python3 -m pip install --user ./aws-iot-device-sdk-python-v2
-
-
Mude para a pasta de amostras na AWS IoT Device SDK v2 para Python.
cd aws-iot-device-sdk-python-v2/samples
-
Execute o aplicativo de descoberta Greengrass de amostra. Esse aplicativo espera argumentos que especifiquem o nome do dispositivo cliente, o tópico e a mensagem do MQTT a serem usados e os certificados que autenticam e protegem a conexão. O exemplo a seguir envia uma mensagem Hello World para o
clients/
tópico.MyClientDevice1
/hello/world-
Substitua
MyClientDevice1
pelo nome do item do dispositivo cliente. -
Substitua
~/certs/ AmazonRoot CA1.pem
pelo caminho para o certificado CA raiz da Amazon no dispositivo cliente. -
Substitua
~/certs/device.pem.crt
pelo caminho para o certificado do dispositivo no dispositivo cliente. -
Substitua
~/certs/private.pem.key pelo caminho para o arquivo de chave
privada no dispositivo cliente. -
Substitua
us-east-1
pela AWS região em que seu dispositivo cliente e dispositivo principal operam.
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 WarnO aplicativo de amostra de descoberta envia a mensagem 10 vezes e se desconecta. Ele também se inscreve no mesmo tópico em que publica mensagens. Se a saída indicar que o aplicativo recebeu mensagens MQTT sobre o tópico, o dispositivo cliente poderá se comunicar com êxito com o 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}'Se, em vez disso, o aplicativo gerar um erro, consulte Solução de problemas de descoberta do Greengrass.
Você também pode ver os registros do Greengrass no dispositivo principal para verificar se o dispositivo cliente se conecta e envia mensagens com sucesso. Para ter mais informações, consulte Monitore AWS IoT Greengrass os registros.
-
Comunicações de teste (C++)
Nesta seção, você usa a amostra de descoberta do Greengrass na AWS IoT Device SDKv2 para C++ para
Para criar a AWS IoT Device SDK v2 para C++, um dispositivo deve ter as seguintes ferramentas:
-
C++ 11 ou posterior
-
CMake 3.1 ou posterior
-
Um dos seguintes compiladores:
-
GCC 4.8 ou posterior
-
Clang 3.9 ou posterior
-
MSVC 2015 ou posterior
-
Para testar as comunicações (AWS IoT Device SDKv2 para C++)
-
Baixe e crie a AWS IoT Device SDKversão 2 para C++
para AWS IoT conectar como um dispositivo cliente. No dispositivo cliente, faça o seguinte:
-
Crie uma pasta para o espaço de trabalho AWS IoT Device SDK v2 for C++ e altere para ela.
cd mkdir iot-device-sdk-cpp cd iot-device-sdk-cpp
-
Clone o repositório AWS IoT Device SDK v2 para C++ para baixá-lo. O
--recursive
sinalizador especifica o download de submódulos.git clone --recursive https://github.com/aws/aws-iot-device-sdk-cpp-v2.git
-
Crie uma pasta para a saída de compilação AWS IoT Device SDK v2 for C++ e altere-a para ela.
mkdir aws-iot-device-sdk-cpp-v2-build cd aws-iot-device-sdk-cpp-v2-build
-
Crie a AWS IoT Device SDK 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
-
-
Crie o aplicativo de amostra Greengrass discovery na AWS IoT Device SDK v2 para C++. Faça o seguinte:
-
Mude para a pasta de amostra do Greengrass discovery na AWS IoT Device SDK v2 para C++.
cd ../aws-iot-device-sdk-cpp-v2/samples/greengrass/basic_discovery
-
Crie uma pasta para a saída de compilação de amostra do Greengrass discovery e altere-a para ela.
mkdir build cd build
-
Crie o aplicativo de amostra de descoberta do Greengrass.
cmake -DCMAKE_PREFIX_PATH="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" .. cmake --build . --config "Release"
-
-
Execute o aplicativo de descoberta Greengrass de amostra. Esse aplicativo espera argumentos que especifiquem o nome do dispositivo cliente, o tópico do MQTT a ser usado e os certificados que autenticam e protegem a conexão. O exemplo a seguir se inscreve no
clients/
tópico e publica uma mensagem que você insere na linha de comando para o mesmo tópico.MyClientDevice1
/hello/world-
Substitua
MyClientDevice1
pelo nome do item do dispositivo cliente. -
Substitua
~/certs/ AmazonRoot CA1.pem
pelo caminho para o certificado CA raiz da Amazon no dispositivo cliente. -
Substitua
~/certs/device.pem.crt
pelo caminho para o certificado do dispositivo no dispositivo cliente. -
Substitua
~/certs/private.pem.key pelo caminho para o arquivo de chave
privada no dispositivo cliente. -
Substitua
us-east-1
pela AWS região em que seu dispositivo cliente e dispositivo principal operam.
./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
O aplicativo de amostra de descoberta se inscreve no tópico e solicita que você insira uma mensagem para publicar.
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.
Se, em vez disso, o aplicativo gerar um erro, consulte Solução de problemas de descoberta do Greengrass.
-
-
Insira uma mensagem, 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!
Se a saída indicar que o aplicativo recebeu a mensagem MQTT sobre o tópico, o dispositivo cliente poderá se comunicar com êxito com o dispositivo principal.
Operation on packetId 2 Succeeded Publish received on topic clients/MyClientDevice1/hello/world Message: Hello World!
Você também pode ver os registros do Greengrass no dispositivo principal para verificar se o dispositivo cliente se conecta e envia mensagens com sucesso. Para ter mais informações, consulte Monitore AWS IoT Greengrass os registros.
Comunicações de teste (JavaScript)
Nesta seção, você usa a amostra de descoberta do Greengrass na AWS IoT Device SDKv2 JavaScript para
Importante
Para usar a AWS IoT Device SDK v2 JavaScript, um dispositivo deve executar o Node v10.0 ou posterior.
Para testar as comunicações (AWS IoT Device SDKv2 para JavaScript)
-
Baixe e instale a AWS IoT Device SDKv2 para JavaScript
que a AWS IoT coisa se conecte como um dispositivo cliente. No dispositivo cliente, faça o seguinte:
-
Clone a AWS IoT Device SDK v2 do JavaScript repositório para baixá-la.
git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
-
Instale a AWS IoT Device SDK v2 para JavaScript.
cd aws-iot-device-sdk-js-v2 npm install
-
-
Vá para a pasta de amostra do Greengrass discovery na AWS IoT Device SDK v2 para. JavaScript
cd samples/node/basic_discovery
-
Instale o aplicativo de amostra Greengrass discovery.
npm install
-
Execute o aplicativo de descoberta Greengrass de amostra. Esse aplicativo espera argumentos que especifiquem o nome do dispositivo cliente, o tópico e a mensagem do MQTT a serem usados e os certificados que autenticam e protegem a conexão. O exemplo a seguir envia uma mensagem Hello World para o
clients/
tópico.MyClientDevice1
/hello/world-
Substitua
MyClientDevice1
pelo nome do item do dispositivo cliente. -
Substitua
~/certs/ AmazonRoot CA1.pem
pelo caminho para o certificado CA raiz da Amazon no dispositivo cliente. -
Substitua
~/certs/device.pem.crt
pelo caminho para o certificado do dispositivo no dispositivo cliente. -
Substitua
~/certs/private.pem.key pelo caminho para o arquivo de chave
privada no dispositivo cliente. -
Substitua
us-east-1
pela AWS região em que seu dispositivo cliente e dispositivo principal operam.
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 warnO aplicativo de amostra de descoberta envia a mensagem 10 vezes e se desconecta. Ele também se inscreve no mesmo tópico em que publica mensagens. Se a saída indicar que o aplicativo recebeu mensagens MQTT sobre o tópico, o dispositivo cliente poderá se comunicar com êxito com o 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!Se, em vez disso, o aplicativo gerar um erro, consulte Solução de problemas de descoberta do Greengrass.
Você também pode ver os registros do Greengrass no dispositivo principal para verificar se o dispositivo cliente se conecta e envia mensagens com sucesso. Para ter mais informações, consulte Monitore AWS IoT Greengrass os registros.
-
Comunicações de teste (Java)
Nesta seção, você usa a amostra de descoberta do Greengrass na AWS IoT Device SDKv2 para Java para
Importante
Para criar a AWS IoT Device SDK v2 para Java, um dispositivo deve ter as seguintes ferramentas:
-
Java 8 ou posterior,
JAVA_HOME
apontando para a pasta Java. -
Apache Maven
Para testar as comunicações (AWS IoT Device SDKv2 para Java)
-
Baixe e crie a AWS IoT Device SDKversão 2 para Java
para AWS IoT conectar-se como um dispositivo cliente. No dispositivo cliente, faça o seguinte:
-
Clone o repositório AWS IoT Device SDK v2 for Java para baixá-lo.
git clone https://github.com/aws/aws-iot-device-sdk-java-v2.git
-
Mude para a pasta AWS IoT Device SDK v2 for Java.
-
Crie a AWS IoT Device SDK v2 para Java.
cd aws-iot-device-sdk-java-v2 mvn versions:use-latest-versions -Dincludes="software.amazon.awssdk.crt*" mvn clean install
-
-
Execute o aplicativo de descoberta Greengrass de amostra. Esse aplicativo espera argumentos que especifiquem o nome do dispositivo cliente, o tópico do MQTT a ser usado e os certificados que autenticam e protegem a conexão. O exemplo a seguir se inscreve no
clients/
tópico e publica uma mensagem que você insere na linha de comando para o mesmo tópico.MyClientDevice1
/hello/world-
Substitua as duas instâncias de
MyClientDevice1
pelo nome da coisa do dispositivo cliente. -
Substitua
$HOME/certs/ AmazonRoot CA1.pem
pelo caminho para o certificado CA raiz da Amazon no dispositivo cliente. -
Substitua
$HOME/certs/device.pem.crt
pelo caminho para o certificado do dispositivo no dispositivo cliente. -
Substitua
$HOME/certs/private.pem.key pelo caminho para o arquivo de chave
privada no dispositivo cliente. -
Substitua
us-east-1
pelo Região da AWS local em que seu dispositivo cliente e dispositivo principal operam.
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"O aplicativo de amostra de descoberta se inscreve no tópico e solicita que você insira uma mensagem para publicar.
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:
Se, em vez disso, o aplicativo gerar um erro, consulte Solução de problemas de descoberta do Greengrass.
-
-
Insira uma mensagem, 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!
Se a saída indicar que o aplicativo recebeu a mensagem MQTT sobre o tópico, o dispositivo cliente poderá se comunicar com êxito com o dispositivo principal.
Message received on topic clients/MyClientDevice1/hello/world: Hello World!
Você também pode ver os registros do Greengrass no dispositivo principal para verificar se o dispositivo cliente se conecta e envia mensagens com sucesso. Para ter mais informações, consulte Monitore AWS IoT Greengrass os registros.