本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
用戶端裝置可以使用 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
重要
若要使用 AWS IoT Device SDK v2 for Python,裝置必須執行 Python 3.6 或更新版本。
測試通訊 (AWS IoT Device SDK v2 for Python)
-
將 AWS IoT Device SDK v2 for Python
下載並安裝到 AWS IoT 物件,以做為用戶端裝置進行連線。 在用戶端裝置上,執行下列動作:
-
複製 AWS IoT Device SDK v2 for Python 儲存庫以進行下載。
git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
-
安裝 AWS IoT Device SDK v2 for Python。
python3 -m pip install --user ./aws-iot-device-sdk-python-v2
-
-
變更為 AWS IoT Device SDK v2 for Python 中的範例資料夾。
cd aws-iot-device-sdk-python-v2/samples
-
執行範例 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
\\ --regionus-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
若要建置適用於 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++)
-
將適用於 AWS IoT Device SDK C++ 的 v2
下載並建置到 AWS IoT 物件,以做為用戶端裝置進行連線。 在用戶端裝置上,執行下列動作:
-
為 AWS IoT Device SDK v2 for C++ 工作區建立資料夾,然後變更為資料夾。
cd mkdir iot-device-sdk-cpp cd iot-device-sdk-cpp
-
複製適用於 C++ 儲存庫的 AWS IoT Device SDK v2 以進行下載。
--recursive
旗標指定 下載子模組。git clone --recursive https://github.com/aws/aws-iot-device-sdk-cpp-v2.git
-
建立適用於 C++ 組建輸出的 AWS IoT Device SDK v2 資料夾,然後變更至該資料夾。
mkdir aws-iot-device-sdk-cpp-v2-build cd aws-iot-device-sdk-cpp-v2-build
-
建置適用於 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
-
-
在適用於 C++ 的 AWS IoT Device SDK v2 中建置 Greengrass 探索範例應用程式。請執行下列操作:
-
變更為適用於 C++ 的 AWS IoT Device SDK v2 中的 Greengrass 探索範例資料夾。
cd ../aws-iot-device-sdk-cpp-v2/samples/greengrass/basic_discovery
-
建立 Greengrass 探索範例建置輸出的資料夾,然後變更為該資料夾。
mkdir build cd build
-
建置 Greengrass 探索範例應用程式。
cmake -DCMAKE_PREFIX_PATH="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" .. cmake --build . --config "Release"
-
-
執行範例 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
\ --regionus-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 探索問題進行故障診斷。
-
-
輸入訊息,例如
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
重要
若要使用 AWS IoT Device SDK v2 for JavaScript,裝置必須執行 Node v10.0 或更新版本。
測試通訊 (AWS IoT Device SDK v2 for JavaScript)
-
將 AWS IoT Device SDK v2 for JavaScript
下載並安裝到 AWS IoT 物件,以做為用戶端裝置進行連線。 在用戶端裝置上,執行下列動作:
-
複製 AWS IoT Device SDK v2 for JavaScript 儲存庫以進行下載。
git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
-
安裝適用於 JavaScript 的 AWS IoT Device SDK v2。
cd aws-iot-device-sdk-js-v2 npm install
-
-
變更為適用於 JavaScript 的 AWS IoT Device SDK v2 中的 Greengrass 探索範例資料夾。
cd samples/node/basic_discovery
-
安裝 Greengrass 探索範例應用程式。
npm install
-
執行範例 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
\ --regionus-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-----\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!如果應用程式輸出錯誤,請參閱對 Greengrass 探索問題進行故障診斷。
您也可以在核心裝置上檢視 Greengrass 日誌,以驗證用戶端裝置是否成功連線並傳送訊息。如需詳細資訊,請參閱監控 AWS IoT Greengrass 日誌。
-
測試通訊 (Java)
在本節中,您會在適用於 AWS IoT Device SDK Java 的 v2
重要
若要建置適用於 Java 的 AWS IoT Device SDK v2,裝置必須具備下列工具:
-
Java 8 或更新版本,並
JAVA_HOME
指向 Java 資料夾。 -
Apache Maven
測試通訊 (AWS IoT Device SDK v2 for Java)
-
下載並建置適用於 AWS IoT Device SDK Java 的 v2
至 AWS IoT 物件,以做為用戶端裝置進行連線。 在用戶端裝置上,執行下列動作:
-
複製 AWS IoT Device SDK v2 for Java 儲存庫以下載。
git clone https://github.com/aws/aws-iot-device-sdk-java-v2.git
-
變更為 AWS IoT Device SDK v2 for Java 資料夾。
-
建置適用於 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
-
-
執行範例 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
\ --regionus-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 探索問題進行故障診斷。
-
-
輸入訊息,例如
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 日誌。