測試通訊 - AWS IoT Greengrass

AWS IoT Greengrass Version 1 於 2023 年 6 月 30 日進入延長使用壽命階段。如需詳細資訊,請參閱AWS IoT Greengrass V1 維護政策。在此日期之後, AWS IoT Greengrass V1 將不會發行提供功能、增強功能、錯誤修正或安全性修補程式的更新。在上運行的設備 AWS IoT Greengrass V1 不會中斷,並將繼續運行並連接到雲。我們強烈建議您移轉至 AWS IoT Greengrass Version 2,這會增加重要的新功能,並支援其他平台

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

測試通訊

  1. 確保您的計算機和 AWS IoT Greengrass 核心設備使用相同的網絡連接到互聯網。

    1. 在 AWS IoT Greengrass 核心裝置上,執行下列命令以尋找其 IP 位址。

      hostname -I
    2. 在您的電腦,使用核心的 IP 地址執行以下命令。您可以使用 Ctrl + C 來停止 ping 命令。

      ping IP-address

      類似下面的輸出表示計算機和 AWS IoT Greengrass 核心設備之間的通信成功(0% 的數據包丟失):

      ping 命令成功輸出。
      注意

      如果您無法 ping 執行中的 EC2 執行個體 AWS IoT Greengrass,請確定執行個體的輸入安全群組規則允許 Echo 要求訊息的 ICMP 流量。如需詳細資訊,請參Amazon EC2 使用者指南中的將規則新增至安全群組

      在 Windows 主機電腦的 Windows 防火牆和進階安全應用程式中,您也可能需要啟用允許傳入回聲請求的內送規則 (例如,File and Printer Sharing (Echo Request - ICMPv4-In) (檔案和印表機共用 (回聲請求 - ICMPv4-In)) 或建立規則。

  2. 取得您的 AWS IoT 端點。

    1. AWS IoT 主控台瀏覽窗格中,選擇 [設定]。

    2. 在 [裝置資料端點] 下,記下 [端點] 的值。您可以使用這個值,在以下步驟的命令中取代 AWS_IOT_ENDPOINT 預留位置。

      注意
  3. 在您的電腦 (不是 AWS IoT Greengrass 核心裝置) 上,開啟兩個命令列 (終端機或命令提示字元) 視窗。其中一個視窗代表 HelloWorld _Publisher 用戶端裝置,另一個視窗代表 HelloWorld _Sublisher 用戶端裝置。

    執行時,會basicDiscovery.py嘗試收集核心端點上 AWS IoT Greengrass 核心位置的相關資訊。此資訊會在發現用戶端裝置並成功連線至核心之後儲存。這讓未來的簡訊和操作可在本機執行 (而不需要網際網路連線)。

    注意

    用於 MQTT 連線的用戶端 ID 必須與用戶端裝置的物件名稱相符。指basicDiscovery.py令碼會將 MQTT 連線的用戶端識別碼設定為您在執行指令碼時指定的物件名稱。

    從包含檔案的資料夾執行下列命令,以取得basicDiscovery.py詳細的指令碼使用資訊:

    python basicDiscovery.py --help
  4. 從 HelloWorld _Publisher 用戶端裝置視窗中,執行下列命令。

    • path-to-certs-folder 替換為包含憑證、金鑰和 basicDiscovery.py 的資料夾路徑。

    • AWS_IOT_ENDPOINT 取代為您的端點。

    • 將兩個發CertId行者執行個體取代為 HelloWorld _Publisher 用戶端裝置檔案名稱中的憑證 ID。

    cd path-to-certs-folder python basicDiscovery.py --endpoint AWS_IOT_ENDPOINT --rootCA AmazonRootCA1.pem --cert publisherCertId-certificate.pem.crt --key publisherCertId-private.pem.key --thingName HelloWorld_Publisher --topic 'hello/world/pubsub' --mode publish --message 'Hello, World! Sent from HelloWorld_Publisher'

    您應該會看到類似以下的輸出,其中包含像是 Published topic 'hello/world/pubsub': {"message": "Hello, World! Sent from HelloWorld_Publisher", "sequence": 1} 的項目。

    注意

    如果指令碼傳回 error: unrecognized arguments 訊息,會將 --topic--message 參數的單引號變更為雙引號並再次執行命令。

    若要排除連線問題,您可以嘗試使用手動 IP 偵測

    發佈者輸出的螢幕擷取畫面。
  5. 從 HelloWorld _Sublisher 用戶端裝置視窗中,執行下列命令。

    • path-to-certs-folder 替換為包含憑證、金鑰和 basicDiscovery.py 的資料夾路徑。

    • AWS_IOT_ENDPOINT 取代為您的端點。

    • 將兩個訂閱者CertId執行個體取代為 HelloWorld _Subitor 用戶端裝置檔案名稱中的憑證識別碼。

    cd path-to-certs-folder python basicDiscovery.py --endpoint AWS_IOT_ENDPOINT --rootCA AmazonRootCA1.pem --cert subscriberCertId-certificate.pem.crt --key subscriberCertId-private.pem.key --thingName HelloWorld_Subscriber --topic 'hello/world/pubsub' --mode subscribe

    您應該會看到類似以下的輸出,其中包含像是 Received message on topic hello/world/pubsub: {"message": "Hello, World! Sent from HelloWorld_Publisher", "sequence": 1} 的項目。

    訂閱者輸出的螢幕擷取畫面。

關閉視HelloWorld_Publisher窗,停止在視HelloWorld_Subscriber窗中累積訊息。

在企業網路上測試可能會影響對核心的連線。若要解決這項問題,您可以手動輸入端點。這可確保指basicDiscovery.py令碼連線至 AWS IoT Greengrass 核心裝置的正確 IP 位址。

手動輸入端點
  1. 在 AWS IoT 主控台瀏覽窗格的 [管理] 下,展開 [Greengrass 裝置],然後選擇 [群組 (V1)]。

  2. 綠色群組下,選擇您的群組

  3. 設定核心以手動管理 MQTT 代理程式端點。請執行下列操作:

    1. 在群組設定頁面上,選擇 Lambda 函數索引標籤。

    2. 系統 Lambda 函數下,選擇 IP 偵測器,然後選擇編輯

    3. 在 [編輯 IP 偵測器設定] 中,選擇 [手動管理 MQTT 代理程式端點],然後選擇 [儲存]。

  4. 輸入核心的 MQTT 代理程式端點。請執行下列操作:

    1. 在「概觀」下,選擇 Greengr ass 心」。

    2. 在「MQTT 代理程式端點」下,選擇「管理端點」。

    3. 選擇 [新增端點],並確定您只有一個端點值。此值必須是 AWS IoT Greengrass 核心裝置連接埠 8883 的 IP 位址端點 (例如192.168.1.4)。

    4. 選擇更新