Teste as comunicações entre dispositivos clientes - AWS IoT Greengrass

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.

Comunicações de teste (Python)

Nesta seção, você usa a amostra de descoberta do Greengrass na AWS IoT Device SDKv2 para Python para testar a comunicação entre um dispositivo cliente e um dispositivo principal.

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)
  1. 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:

    1. 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
    2. Instale a AWS IoT Device SDK v2 para Python.

      python3 -m pip install --user ./aws-iot-device-sdk-python-v2
  2. Mude para a pasta de amostras na AWS IoT Device SDK v2 para Python.

    cd aws-iot-device-sdk-python-v2/samples
  3. 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/MyClientDevice1/hello/world tópico.

    • 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 \\ --region us-east-1 \\ --verbosity Warn

    O 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 testar as comunicações entre um dispositivo cliente e um dispositivo principal.

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++)
  1. 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:

    1. 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
    2. 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
    3. 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
    4. 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
  2. Crie o aplicativo de amostra Greengrass discovery na AWS IoT Device SDK v2 para C++. Faça o seguinte:

    1. 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
    2. Crie uma pasta para a saída de compilação de amostra do Greengrass discovery e altere-a para ela.

      mkdir build cd build
    3. 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"
  3. 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/MyClientDevice1/hello/world tópico e publica uma mensagem que você insere na linha de comando para o mesmo tópico.

    • 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 \ --region us-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.

  4. Insira uma mensagem, comoHello 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 testar as comunicações entre um dispositivo cliente e um dispositivo principal.

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)
  1. 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:

    1. 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
    2. Instale a AWS IoT Device SDK v2 para JavaScript.

      cd aws-iot-device-sdk-js-v2 npm install
  2. Vá para a pasta de amostra do Greengrass discovery na AWS IoT Device SDK v2 para. JavaScript

    cd samples/node/basic_discovery
  3. Instale o aplicativo de amostra Greengrass discovery.

    npm install
  4. 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/MyClientDevice1/hello/world tópico.

    • 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 \ --region us-east-1 \ --verbose warn

    O 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-----\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!

    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 testar as comunicações entre um dispositivo cliente e um dispositivo principal.

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)
  1. 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:

    1. 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
    2. Mude para a pasta AWS IoT Device SDK v2 for Java.

    3. 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
  2. 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/MyClientDevice1/hello/world tópico e publica uma mensagem que você insere na linha de comando para o mesmo tópico.

    • 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 \ --region us-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.

  3. Insira uma mensagem, comoHello 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.