Testen der Kommunikation von Client-Geräten - AWS IoT Greengrass

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Testen der Kommunikation von Client-Geräten

Client-Geräte können die verwenden, AWS IoT Device SDK um ein Core-Gerät zu erkennen, eine Verbindung herzustellen und mit ihm zu kommunizieren. Sie können den Greengrass-Discovery-Client in der verwenden, AWS IoT Device SDK um die Greengrass-Discovery-API zu verwenden, die Informationen über Core-Geräte zurückgibt, mit denen ein Client-Gerät eine Verbindung herstellen kann. Die API-Antwort enthält MQTT-Broker-Endpunkte zum Herstellen einer Verbindung und Zertifikate zum Überprüfen der Identität jedes Core-Geräts. Anschließend kann das Client-Gerät jeden Endpunkt ausprobieren, bis es erfolgreich eine Verbindung zu einem Core-Gerät herstellt.

Client-Geräte können nur -Core-Geräte erkennen, denen Sie sie zuordnen. Bevor Sie die Kommunikation zwischen einem Client-Gerät und einem Core-Gerät testen, müssen Sie das Client-Gerät dem Core-Gerät zuordnen. Weitere Informationen finden Sie unter Zuordnen von Client-Geräten.

Die Greengrass Discovery API gibt die MQTT-Broker-Endpunkte des Core-Geräts zurück, die Sie angeben. Sie können die IP-Detektorkomponente verwenden, um diese Endpunkte für Sie zu verwalten, oder Sie können sie für jedes Kerngerät manuell verwalten. Weitere Informationen finden Sie unter Verwalten von -Core-Geräteendpunkten.

Anmerkung

Um die Greengrass-Erkennungs-API verwenden zu können, muss ein Client-Gerät über die -greengrass:DiscoverBerechtigung verfügen. Weitere Informationen finden Sie unter Minimale AWS IoT Richtlinie für Client-Geräte.

Die AWS IoT Device SDK ist in mehreren Programmiersprachen verfügbar. Weitere Informationen finden Sie unter AWS IoT Geräte-SDKs im AWS IoT Core -Entwicklerhandbuch.

Testen der Kommunikation (Python)

In diesem Abschnitt verwenden Sie das Greengrass-Erkennungsbeispiel in der AWS IoT Device SDK v2 für Python, um die Kommunikation zwischen einem Client-Gerät und einem Core-Gerät zu testen.

Wichtig

Um AWS IoT Device SDK v2 für Python verwenden zu können, muss ein Gerät Python 3.6 oder höher ausführen.

So testen Sie die Kommunikation (AWS IoT Device SDK v2 für Python)
  1. Laden Sie AWS IoT Device SDK v2 für Python herunter und installieren Sie es auf dem AWS IoT Objekt, um eine Verbindung als Client-Gerät herzustellen.

    Gehen Sie auf dem Client-Gerät wie folgt vor:

    1. Klonen Sie das Repository AWS IoT Device SDK v2 für Python, um es herunterzuladen.

      git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
    2. Installieren Sie AWS IoT Device SDK v2 für Python.

      python3 -m pip install --user ./aws-iot-device-sdk-python-v2
  2. Wechseln Sie in den Ordner Beispiele in AWS IoT Device SDK v2 für Python.

    cd aws-iot-device-sdk-python-v2/samples
  3. Führen Sie die Greengrass-Erkennungs-Beispielanwendung aus. Diese Anwendung erwartet Argumente, die den Objektnamen des Client-Geräts, das zu verwendende MQTT-Thema und die Nachricht sowie die Zertifikate angeben, die die Verbindung authentifizieren und sichern. Im folgenden Beispiel wird eine Hello World-Nachricht an das clients/MyClientDevice1/hello/world Thema gesendet.

    • Ersetzen Sie MyClientDevice1 durch den Objektnamen des Client-Geräts.

    • Ersetzen Sie ~/certs/AmazonRootCA1.pem durch den Pfad zum Amazon-Root-CA-Zertifikat auf dem Client-Gerät.

    • Ersetzen Sie ~/certs/device.pem.crt durch den Pfad zum Gerätezertifikat auf dem Client-Gerät.

    • Ersetzen Sie ~/certs/private.pem.key durch den Pfad zur Datei mit dem privaten Schlüssel auf dem Client-Gerät.

    • Ersetzen Sie us-east-1 durch die AWS Region, in der Ihr Client-Gerät und Ihr Core-Gerät betrieben werden.

    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

    Die Discovery-Beispielanwendung sendet die Nachricht 10 Mal und trennt die Verbindung. Es abonniert auch dasselbe Thema, in dem es Nachrichten veröffentlicht. Wenn die Ausgabe angibt, dass die Anwendung MQTT-Nachrichten zum Thema erhalten hat, kann das Client-Gerät erfolgreich mit dem Core-Gerät kommunizieren.

    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}'

    Wenn die Anwendung stattdessen einen Fehler ausgibt, finden Sie weitere Informationen unter Fehlerbehebung bei Greengrass-Erkennungsproblemen.

    Sie können auch die Greengrass-Protokolle auf dem Core-Gerät anzeigen, um zu überprüfen, ob das Client-Gerät erfolgreich eine Verbindung herstellt und Nachrichten sendet. Weitere Informationen finden Sie unter Überwachen von AWS IoT Greengrass Protokollen.

Testen der Kommunikation (C++)

In diesem Abschnitt verwenden Sie das Greengrass-Erkennungsbeispiel in der AWS IoT Device SDK v2 für C++, um die Kommunikation zwischen einem Client-Gerät und einem Core-Gerät zu testen.

Um AWS IoT Device SDK v2 für C++ zu erstellen, muss ein Gerät über die folgenden Tools verfügen:

  • C++ 11 oder höher

  • CMake 3.1 oder höher

  • Einer der folgenden Compiler:

    • GCC 4.8 oder höher

    • Clang 3.9 oder höher

    • MSVC 2015 oder höher

So testen Sie die Kommunikation (AWS IoT Device SDK v2 für C++)
  1. Laden Sie AWS IoT Device SDK v2 für C++ herunter und erstellen Sie es auf dem AWS IoT Objekt, um eine Verbindung als Client-Gerät herzustellen.

    Gehen Sie auf dem Client-Gerät wie folgt vor:

    1. Erstellen Sie einen Ordner für den Workspace AWS IoT Device SDK v2 für C++ und wechseln Sie zu diesem.

      cd mkdir iot-device-sdk-cpp cd iot-device-sdk-cpp
    2. Klonen Sie das Repository AWS IoT Device SDK v2 für C++, um es herunterzuladen. Das --recursive Flag gibt an, dass Submodule heruntergeladen werden sollen.

      git clone --recursive https://github.com/aws/aws-iot-device-sdk-cpp-v2.git
    3. Erstellen Sie einen Ordner für die Build-Ausgabe AWS IoT Device SDK v2 für C++ und wechseln Sie zu diesem.

      mkdir aws-iot-device-sdk-cpp-v2-build cd aws-iot-device-sdk-cpp-v2-build
    4. Erstellen Sie AWS IoT Device SDK v2 für C++.

      cmake -DCMAKE_INSTALL_PREFIX="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" ../aws-iot-device-sdk-cpp-v2 cmake --build . --target install
  2. Erstellen Sie die Greengrass Discovery-Beispielanwendung in der AWS IoT Device SDK v2 für C++. Gehen Sie wie folgt vor:

    1. Wechseln Sie in den Greengrass Discovery-Beispielordner in AWS IoT Device SDK v2 für C++.

      cd ../aws-iot-device-sdk-cpp-v2/samples/greengrass/basic_discovery
    2. Erstellen Sie einen Ordner für die Greengrass-Erkennungsbeispiel-Build-Ausgabe und ändern Sie in diesen.

      mkdir build cd build
    3. Erstellen Sie die Greengrass Discovery-Beispielanwendung.

      cmake -DCMAKE_PREFIX_PATH="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" .. cmake --build . --config "Release"
  3. Führen Sie die Greengrass-Erkennungs-Beispielanwendung aus. Diese Anwendung erwartet Argumente, die den Objektnamen des Client-Geräts, das zu verwendende MQTT-Thema und die Zertifikate angeben, die die Verbindung authentifizieren und sichern. Im folgenden Beispiel wird das clients/MyClientDevice1/hello/world Thema abonniert und eine Nachricht veröffentlicht, die Sie in der Befehlszeile für dasselbe Thema eingeben.

    • Ersetzen Sie MyClientDevice1 durch den Objektnamen des Client-Geräts.

    • Ersetzen Sie ~/certs/AmazonRootCA1.pem durch den Pfad zum Amazon-Root-CA-Zertifikat auf dem Client-Gerät.

    • Ersetzen Sie ~/certs/device.pem.crt durch den Pfad zum Gerätezertifikat auf dem Client-Gerät.

    • Ersetzen Sie ~/certs/private.pem.key durch den Pfad zur Datei mit dem privaten Schlüssel auf dem Client-Gerät.

    • Ersetzen Sie us-east-1 durch die AWS Region, in der Ihr Client-Gerät und Ihr Core-Gerät betrieben werden.

    ./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

    Die Discovery-Beispielanwendung abonniert das Thema und fordert Sie auf, eine Nachricht zur Veröffentlichung einzugeben.

    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.

    Wenn die Anwendung stattdessen einen Fehler ausgibt, finden Sie weitere Informationen unter Fehlerbehebung bei Greengrass-Erkennungsproblemen.

  4. Geben Sie eine Nachricht ein, z. B. 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!

    Wenn die Ausgabe angibt, dass die Anwendung die MQTT-Nachricht zum Thema erhalten hat, kann das Client-Gerät erfolgreich mit dem Core-Gerät kommunizieren.

    Operation on packetId 2 Succeeded Publish received on topic clients/MyClientDevice1/hello/world Message: Hello World!

    Sie können auch die Greengrass-Protokolle auf dem Core-Gerät anzeigen, um zu überprüfen, ob das Client-Gerät erfolgreich eine Verbindung herstellt und Nachrichten sendet. Weitere Informationen finden Sie unter Überwachen von AWS IoT Greengrass Protokollen.

Testen der Kommunikation (JavaScript)

In diesem Abschnitt verwenden Sie das Greengrass-Erkennungsbeispiel in der AWS IoT Device SDK v2 für JavaScript , um die Kommunikation zwischen einem Client-Gerät und einem Core-Gerät zu testen.

Wichtig

Um AWS IoT Device SDK v2 für verwenden zu können JavaScript, muss ein Gerät Node v10.0 oder höher ausführen.

So testen Sie die Kommunikation (AWS IoT Device SDK v2 für JavaScript)
  1. Laden Sie AWS IoT Device SDK v2 für JavaScript herunter und installieren Sie es auf dem AWS IoT Objekt, um eine Verbindung als Client-Gerät herzustellen.

    Gehen Sie auf dem Client-Gerät wie folgt vor:

    1. Klonen Sie das AWS IoT Device SDK v2 für das JavaScript Repository, um es herunterzuladen.

      git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
    2. Installieren Sie AWS IoT Device SDK v2 für JavaScript.

      cd aws-iot-device-sdk-js-v2 npm install
  2. Wechseln Sie in den Greengrass Discovery-Beispielordner in der AWS IoT Device SDK v2 für JavaScript.

    cd samples/node/basic_discovery
  3. Installieren Sie die Greengrass-Discovery-Beispielanwendung.

    npm install
  4. Führen Sie die Greengrass-Erkennungs-Beispielanwendung aus. Diese Anwendung erwartet Argumente, die den Objektnamen des Client-Geräts, das zu verwendende MQTT-Thema und die Nachricht sowie die Zertifikate angeben, die die Verbindung authentifizieren und sichern. Im folgenden Beispiel wird eine Hello World-Nachricht an das clients/MyClientDevice1/hello/world Thema gesendet.

    • Ersetzen Sie MyClientDevice1 durch den Objektnamen des Client-Geräts.

    • Ersetzen Sie ~/certs/AmazonRootCA1.pem durch den Pfad zum Amazon-Root-CA-Zertifikat auf dem Client-Gerät.

    • Ersetzen Sie ~/certs/device.pem.crt durch den Pfad zum Gerätezertifikat auf dem Client-Gerät.

    • Ersetzen Sie ~/certs/private.pem.key durch den Pfad zur Datei mit dem privaten Schlüssel auf dem Client-Gerät.

    • Ersetzen Sie us-east-1 durch die AWS Region, in der Ihr Client-Gerät und Ihr Core-Gerät betrieben werden.

    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

    Die Discovery-Beispielanwendung sendet die Nachricht 10 Mal und trennt die Verbindung. Es abonniert auch dasselbe Thema, in dem es Nachrichten veröffentlicht. Wenn die Ausgabe angibt, dass die Anwendung MQTT-Nachrichten zum Thema erhalten hat, kann das Client-Gerät erfolgreich mit dem Core-Gerät kommunizieren.

    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!

    Wenn die Anwendung stattdessen einen Fehler ausgibt, finden Sie weitere Informationen unter Fehlerbehebung bei Greengrass-Erkennungsproblemen.

    Sie können auch die Greengrass-Protokolle auf dem Core-Gerät anzeigen, um zu überprüfen, ob das Client-Gerät erfolgreich eine Verbindung herstellt und Nachrichten sendet. Weitere Informationen finden Sie unter Überwachen von AWS IoT Greengrass Protokollen.

Testen der Kommunikation (Java)

In diesem Abschnitt verwenden Sie das Greengrass-Erkennungsbeispiel in AWS IoT Device SDK v2 für Java, um die Kommunikation zwischen einem Client-Gerät und einem Core-Gerät zu testen.

Wichtig

Um AWS IoT Device SDK v2 für Java zu erstellen, muss ein Gerät über die folgenden Tools verfügen:

  • Java 8 oder höher, wobei auf den Java-Ordner JAVA_HOME verweist.

  • Apache Maven

So testen Sie die Kommunikation (AWS IoT Device SDK v2 für Java)
  1. Laden Sie AWS IoT Device SDK v2 für Java herunter und erstellen Sie es auf dem AWS IoT Objekt, um eine Verbindung als Client-Gerät herzustellen.

    Gehen Sie auf dem Client-Gerät wie folgt vor:

    1. Klonen Sie das Repository AWS IoT Device SDK v2 für Java, um es herunterzuladen.

      git clone https://github.com/aws/aws-iot-device-sdk-java-v2.git
    2. Wechseln Sie zum Ordner AWS IoT Device SDK v2 für Java.

    3. Erstellen Sie AWS IoT Device SDK v2 für Java.

      cd aws-iot-device-sdk-java-v2 mvn versions:use-latest-versions -Dincludes="software.amazon.awssdk.crt*" mvn clean install
  2. Führen Sie die Greengrass-Erkennungs-Beispielanwendung aus. Diese Anwendung erwartet Argumente, die den Objektnamen des Client-Geräts, das zu verwendende MQTT-Thema und die Zertifikate angeben, die die Verbindung authentifizieren und sichern. Im folgenden Beispiel wird das clients/MyClientDevice1/hello/world Thema abonniert und eine Nachricht veröffentlicht, die Sie in der Befehlszeile für dasselbe Thema eingeben.

    • Ersetzen Sie beide Instances von MyClientDevice1 durch den Objektnamen des Client-Geräts.

    • Ersetzen Sie $HOME/certs/AmazonRootCA1.pem durch den Pfad zum Amazon-Root-CA-Zertifikat auf dem Client-Gerät.

    • Ersetzen Sie $HOME/certs/device.pem.crt durch den Pfad zum Gerätezertifikat auf dem Client-Gerät.

    • Ersetzen Sie $HOME/certs/private.pem.key durch den Pfad zur Datei mit dem privaten Schlüssel auf dem Client-Gerät.

    • Ersetzen Sie us-east-1 durch die AWS-Region, in der Ihr Client-Gerät und Ihr Core-Gerät ausgeführt werden.

    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"

    Die Discovery-Beispielanwendung abonniert das Thema und fordert Sie auf, eine Nachricht zur Veröffentlichung einzugeben.

    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:

    Wenn die Anwendung stattdessen einen Fehler ausgibt, finden Sie weitere Informationen unter Fehlerbehebung bei Greengrass-Erkennungsproblemen.

  3. Geben Sie eine Nachricht ein, z. B. 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!

    Wenn die Ausgabe angibt, dass die Anwendung die MQTT-Nachricht zum Thema erhalten hat, kann das Client-Gerät erfolgreich mit dem Core-Gerät kommunizieren.

    Message received on topic clients/MyClientDevice1/hello/world: Hello World!

    Sie können auch die Greengrass-Protokolle auf dem Core-Gerät anzeigen, um zu überprüfen, ob das Client-Gerät erfolgreich eine Verbindung herstellt und Nachrichten sendet. Weitere Informationen finden Sie unter Überwachen von AWS IoT Greengrass Protokollen.