選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

測試用戶端裝置通訊

焦點模式
測試用戶端裝置通訊 - AWS IoT Greengrass

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

用戶端裝置可以使用 AWS IoT Device SDK 來探索、連線核心裝置,以及與核心裝置通訊。您可以在 中使用 Greengrass 探索用戶端 AWS IoT Device SDK 來使用 Greengrass 探索 API,這會傳回用戶端裝置可連線之核心裝置的相關資訊。API 回應包含要連線的 MQTT 代理程式端點,以及用來驗證每個核心裝置的身分的憑證。然後,用戶端裝置可以嘗試每個端點,直到成功連接到核心裝置為止。

用戶端裝置只能探索您與其建立關聯的核心裝置。在測試用戶端裝置與核心裝置之間的通訊之前,您必須將用戶端裝置與核心裝置建立關聯。如需詳細資訊,請參閱關聯用戶端裝置

Greengrass 探索 API 會傳回您指定的核心裝置 MQTT 代理程式端點。您可以使用 IP 偵測器元件來為您管理這些端點,也可以為每個核心裝置手動管理它們。如需詳細資訊,請參閱管理核心裝置端點

注意

若要使用 Greengrass 探索 API,用戶端裝置必須具有 greengrass:Discover許可。如需詳細資訊,請參閱用戶端裝置的最低 AWS IoT 政策

AWS IoT Device SDK 提供多種程式設計語言。如需詳細資訊,請參閱《 AWS IoT Core 開發人員指南》中的AWS IoT 裝置SDKs

測試通訊 (Python)

在本節中,您會在 AWS IoT Device SDK v2 for Python 中使用 Greengrass 探索範例來測試用戶端裝置與核心裝置之間的通訊。

重要

若要使用 AWS IoT Device SDK v2 for Python,裝置必須執行 Python 3.6 或更新版本。

測試通訊 (AWS IoT Device SDK v2 for Python)
  1. AWS IoT Device SDK v2 for Python 下載並安裝到 AWS IoT 物件,以做為用戶端裝置進行連線。

    在用戶端裝置上,執行下列動作:

    1. 複製 AWS IoT Device SDK v2 for Python 儲存庫以進行下載。

      git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
    2. 安裝 AWS IoT Device SDK v2 for Python。

      python3 -m pip install --user ./aws-iot-device-sdk-python-v2
  2. 變更為 AWS IoT Device SDK v2 for Python 中的範例資料夾。

    cd aws-iot-device-sdk-python-v2/samples
  3. 執行範例 Greengrass 探索應用程式。此應用程式預期引數會指定用戶端裝置物件名稱、要使用的 MQTT 主題和訊息,以及驗證和保護連線的憑證。下列範例會將 Hello World 訊息傳送至clients/MyClientDevice1/hello/world主題。

    • MyClientDevice1 取代為用戶端裝置的物件名稱。

    • ~/certs/AmazonRootCA1.pem 取代為用戶端裝置上 Amazon 根 CA 憑證的路徑。

    • ~/certs/device.pem.crt 取代為用戶端裝置上裝置憑證的路徑。

    • ~/certs/private.pem.key 取代為用戶端裝置上私有金鑰檔案的路徑。

    • us-east-1 取代為您的用戶端裝置和核心裝置運作 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 \\ --region us-east-1 \\ --verbosity Warn

    探索範例應用程式會傳送訊息 10 次並中斷連線。它也會訂閱發佈訊息的相同主題。如果輸出指出應用程式收到有關主題的 MQTT 訊息,用戶端裝置可以成功與核心裝置通訊。

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

    如果應用程式輸出錯誤,請參閱對 Greengrass 探索問題進行故障診斷

    您也可以在核心裝置上檢視 Greengrass 日誌,以驗證用戶端裝置是否成功連線並傳送訊息。如需詳細資訊,請參閱監控 AWS IoT Greengrass 日誌

測試通訊 (C++)

在本節中,您會在適用於 AWS IoT Device SDK C++ 的 v2 中使用 Greengrass 探索範例來測試用戶端裝置與核心裝置之間的通訊。

若要建置適用於 C++ 的 AWS IoT Device SDK v2,裝置必須具備下列工具:

  • C++ 11 或更新版本

  • CMake 3.1 或更新版本

  • 下列其中一個編譯器:

    • GCC 4.8 或更新版本

    • Clang 3.9 或更新版本

    • MSVC 2015 或更新版本

測試通訊 (AWS IoT Device SDK v2 for C++)
  1. 將適用於 AWS IoT Device SDK C++ 的 v2 下載並建置到 AWS IoT 物件,以做為用戶端裝置進行連線。

    在用戶端裝置上,執行下列動作:

    1. 為 AWS IoT Device SDK v2 for C++ 工作區建立資料夾,然後變更為資料夾。

      cd mkdir iot-device-sdk-cpp cd iot-device-sdk-cpp
    2. 複製適用於 C++ 儲存庫的 AWS IoT Device SDK v2 以進行下載。--recursive 旗標指定 下載子模組。

      git clone --recursive https://github.com/aws/aws-iot-device-sdk-cpp-v2.git
    3. 建立適用於 C++ 組建輸出的 AWS IoT Device SDK v2 資料夾,然後變更至該資料夾。

      mkdir aws-iot-device-sdk-cpp-v2-build cd aws-iot-device-sdk-cpp-v2-build
    4. 建置適用於 C++ 的 AWS IoT Device SDK v2。

      cmake -DCMAKE_INSTALL_PREFIX="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" ../aws-iot-device-sdk-cpp-v2 cmake --build . --target install
  2. 在適用於 C++ 的 AWS IoT Device SDK v2 中建置 Greengrass 探索範例應用程式。請執行下列操作:

    1. 變更為適用於 C++ 的 AWS IoT Device SDK v2 中的 Greengrass 探索範例資料夾。

      cd ../aws-iot-device-sdk-cpp-v2/samples/greengrass/basic_discovery
    2. 建立 Greengrass 探索範例建置輸出的資料夾,然後變更為該資料夾。

      mkdir build cd build
    3. 建置 Greengrass 探索範例應用程式。

      cmake -DCMAKE_PREFIX_PATH="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" .. cmake --build . --config "Release"
  3. 執行範例 Greengrass 探索應用程式。此應用程式預期引數會指定用戶端裝置物件名稱、要使用的 MQTT 主題,以及驗證和保護連線的憑證。下列範例會訂閱clients/MyClientDevice1/hello/world主題,並將您在命令列中輸入的訊息發佈至相同的主題。

    • MyClientDevice1 取代為用戶端裝置的物件名稱。

    • ~/certs/AmazonRootCA1.pem 取代為用戶端裝置上 Amazon 根 CA 憑證的路徑。

    • ~/certs/device.pem.crt 取代為用戶端裝置上裝置憑證的路徑。

    • ~/certs/private.pem.key 取代為用戶端裝置上私有金鑰檔案的路徑。

    • us-east-1 取代為您的用戶端裝置和核心裝置運作 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 \ --region us-east-1

    探索範例應用程式會訂閱主題,並提示您輸入要發佈的訊息。

    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.

    如果應用程式輸出錯誤,請參閱對 Greengrass 探索問題進行故障診斷

  4. 輸入訊息,例如 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!

    如果輸出指出應用程式收到主題的 MQTT 訊息,用戶端裝置可以成功與核心裝置通訊。

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

    您也可以在核心裝置上檢視 Greengrass 日誌,以驗證用戶端裝置是否成功連線並傳送訊息。如需詳細資訊,請參閱監控 AWS IoT Greengrass 日誌

測試通訊 (JavaScript)

在本節中,您會使用適用於 AWS IoT Device SDK JavaScript 的 v2 中的 Greengrass 探索範例來測試用戶端裝置與核心裝置之間的通訊。

重要

若要使用 AWS IoT Device SDK v2 for JavaScript,裝置必須執行 Node v10.0 或更新版本。

測試通訊 (AWS IoT Device SDK v2 for JavaScript)
  1. AWS IoT Device SDK v2 for JavaScript 下載並安裝到 AWS IoT 物件,以做為用戶端裝置進行連線。

    在用戶端裝置上,執行下列動作:

    1. 複製 AWS IoT Device SDK v2 for JavaScript 儲存庫以進行下載。

      git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
    2. 安裝適用於 JavaScript 的 AWS IoT Device SDK v2。

      cd aws-iot-device-sdk-js-v2 npm install
  2. 變更為適用於 JavaScript 的 AWS IoT Device SDK v2 中的 Greengrass 探索範例資料夾。

    cd samples/node/basic_discovery
  3. 安裝 Greengrass 探索範例應用程式。

    npm install
  4. 執行範例 Greengrass 探索應用程式。此應用程式預期引數會指定用戶端裝置物件名稱、要使用的 MQTT 主題和訊息,以及驗證和保護連線的憑證。下列範例會將 Hello World 訊息傳送至clients/MyClientDevice1/hello/world主題。

    • MyClientDevice1 取代為用戶端裝置的物件名稱。

    • ~/certs/AmazonRootCA1.pem 取代為用戶端裝置上 Amazon 根 CA 憑證的路徑。

    • ~/certs/device.pem.crt 取代為用戶端裝置上裝置憑證的路徑。

    • ~/certs/private.pem.key 取代為用戶端裝置上私有金鑰檔案的路徑。

    • us-east-1 取代為您的用戶端裝置和核心裝置運作 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 \ --region us-east-1 \ --verbose warn

    探索範例應用程式會傳送訊息 10 次並中斷連線。它也會訂閱發佈訊息的相同主題。如果輸出指出應用程式收到有關主題的 MQTT 訊息,用戶端裝置可以成功與核心裝置通訊。

    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!

    如果應用程式輸出錯誤,請參閱對 Greengrass 探索問題進行故障診斷

    您也可以在核心裝置上檢視 Greengrass 日誌,以驗證用戶端裝置是否成功連線並傳送訊息。如需詳細資訊,請參閱監控 AWS IoT Greengrass 日誌

測試通訊 (Java)

在本節中,您會在適用於 AWS IoT Device SDK Java 的 v2 中使用 Greengrass 探索範例來測試用戶端裝置與核心裝置之間的通訊。

重要

若要建置適用於 Java 的 AWS IoT Device SDK v2,裝置必須具備下列工具:

  • Java 8 或更新版本,並JAVA_HOME指向 Java 資料夾。

  • Apache Maven

測試通訊 (AWS IoT Device SDK v2 for Java)
  1. 下載並建置適用於 AWS IoT Device SDK Java 的 v2 至 AWS IoT 物件,以做為用戶端裝置進行連線。

    在用戶端裝置上,執行下列動作:

    1. 複製 AWS IoT Device SDK v2 for Java 儲存庫以下載。

      git clone https://github.com/aws/aws-iot-device-sdk-java-v2.git
    2. 變更為 AWS IoT Device SDK v2 for Java 資料夾。

    3. 建置適用於 Java 的 AWS IoT Device SDK v2。

      cd aws-iot-device-sdk-java-v2 mvn versions:use-latest-versions -Dincludes="software.amazon.awssdk.crt*" mvn clean install
  2. 執行範例 Greengrass 探索應用程式。此應用程式預期引數會指定用戶端裝置物件名稱、要使用的 MQTT 主題,以及驗證和保護連線的憑證。下列範例會訂閱 clients/MyClientDevice1/hello/world主題,並將您在命令列中輸入的訊息發佈至相同的主題。

    • MyClientDevice1 的兩個執行個體取代為用戶端裝置的物件名稱。

    • $HOME/certs/AmazonRootCA1.pem 取代為用戶端裝置上 Amazon 根 CA 憑證的路徑。

    • $HOME/certs/device.pem.crt 取代為用戶端裝置上裝置憑證的路徑。

    • $HOME/certs/private.pem.key 取代為用戶端裝置上的私有金鑰檔案路徑。

    • us-east-1 取代為您的用戶端裝置和核心裝置運作 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 \ --region us-east-1" mvn exec:java -pl samples/Greengrass \ -Dexec.mainClass=greengrass.BasicDiscovery \ -Dexec.args="$DISCOVERY_SAMPLE_ARGS"

    探索範例應用程式會訂閱主題,並提示您輸入要發佈的訊息。

    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:

    如果應用程式輸出錯誤,請參閱對 Greengrass 探索問題進行故障診斷

  3. 輸入訊息,例如 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!

    如果輸出指出應用程式收到主題的 MQTT 訊息,用戶端裝置可以成功與核心裝置通訊。

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

    您也可以在核心裝置上檢視 Greengrass 日誌,以驗證用戶端裝置是否成功連線並傳送訊息。如需詳細資訊,請參閱監控 AWS IoT Greengrass 日誌

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。