共用方式為


快速入門:佈建模擬 TPM 裝置

在本快速入門中,您將會在 Windows 機器上建立模擬裝置。 模擬裝置將設定為使用信賴平台模組 (TPM) 證明機制進行驗證。 設定裝置之後,您將使用 Azure IoT 中樞裝置佈建服務將其佈建至 IoT 中樞。 然後,將使用範例程式碼來協助向裝置佈建服務執行個體註冊裝置。

如果您不熟悉佈建程序,請檢閱佈建概觀。 繼續之前,請務必完成使用 Azure 入口網站設定 IoT 中樞裝置佈建服務中的步驟。

Azure IoT 裝置佈建服務支援兩種類型的註冊:

本文會示範個別註冊。

Python SDK 不支援信任平台模組 (TPM) 證明。 使用 Python,您可以使用對稱金鑰X.509 憑證佈建裝置。

必要條件

下列必要條件適用於 Windows 開發環境。 針對 Linux 或 macOS,請參閱 SDK 文件中準備您的開發環境中的適當章節。

  • Windows 主機上的 TPM 2.0 硬體安全性模組。

  • 在您的 Windows 電腦上安裝 .NET Core SDK 6.0 或更新版本。 您可以使用下列命令來檢查您的版本。

    dotnet --info
    
  • 安裝最新版的 Git。 確定 Git 已新增至可存取命令視窗的環境變數中。 請參閱 Software Freedom Conservancy 的 Git 用戶端工具以取得要安裝的最新版 git 工具,其中包括 Git Bash (您可用來與本機 Git 存放庫互動的命令列應用程式)。

準備您的開發環境

在本節中,您將會準備用來建置 Azure IoT C SDKTPM 裝置模擬器範例的開發環境。

  1. 下載最新版的 CMake 建置系統

    重要

    在開始安裝 CMake 之前,請確認您的電腦上已安裝 Visual Studio 必要條件 (Visual Studio 和 [使用 C++ 的桌面開發] 工作負載)。 在符合先決條件,並且驗證過下載項目之後,請安裝 CMake 建置系統。 另請注意,舊版的 CMake 建置系統無法產生本文中所用的解決方案檔案。 請務必使用最新版的 CMake。

  2. 開啟網頁瀏覽器,然後移至 Azure IoT C SDK 的 [版本] 頁面 (英文)。

  3. 選取頁面頂端的 [標籤] 索引標籤。

  4. 複製最新版 Azure IoT C SDK 的標籤名稱。

  5. 開啟命令提示字元或 Git Bash 殼層。 執行下列命令以複製最新版的 Azure IoT 裝置 SDK for C (英文) GitHub 存放庫。 將 <release-tag> 取代為您在上一個步驟中複製的標籤,例如:lts_01_2023

    git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git
    cd azure-iot-sdk-c
    git submodule update --init
    

    此作業可能需要幾分鐘的時間才能完成。

  6. 作業完成時,請從 azure-iot-sdk-c 目錄執行下列命令:

    mkdir cmake
    cd cmake
    
  1. 開啟 Git CMD 或 Git Bash 命令列環境。

  2. 使用下列命令複製 Azure IoT C# SDK (英文) GitHub 存放庫:

    git clone https://github.com/Azure/azure-iot-sdk-csharp.git
    
  1. 開啟 Git CMD 或 Git Bash 命令列環境。

  2. 使用下列命令複製 azure-utpm-c GitHub 存放庫:

    git clone https://github.com/Azure/azure-utpm-c.git --recursive
    
  1. 開啟 Git CMD 或 Git Bash 命令列環境。

  2. 使用下列命令複製 Java GitHub 存放庫:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    

建置並執行 TPM 裝置模擬器

在本節中,您將建置並執行 TPM 模擬器。 此模擬器會透過連接埠 2321 和 2322 上的通訊端來接聽。 請勿關閉命令視窗。 您必須讓此模擬器保持執行,直到此快速入門結束。

  1. 執行下列命令來建置包含 TPM 裝置模擬器範例程式碼的 Azure IoT C SDK。 cmake 目錄中會產生模擬裝置的 Visual Studio 解決方案。 此範例提供透過共用存取簽章 (SAS) 權杖驗證的 TPM 證明機制

    cmake -Duse_prov_client:BOOL=ON -Duse_tpm_simulator:BOOL=ON ..
    

    提示

    如果 cmake 找不到 C++ 編譯器,您在執行上述命令時,可能會收到建置錯誤。 如果發生這種情況,請嘗試在 Visual Studio 命令提示字元中執行命令。

  2. 建置成功時,最後幾行輸出會類似於下列輸出:

    $ cmake -Duse_prov_client:BOOL=ON ..
    -- Building for: Visual Studio 16 2019
    -- The C compiler identification is MSVC 19.23.28107.0
    -- The CXX compiler identification is MSVC 19.23.28107.0
    
    ...
    
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/code/azure-iot-sdk-c/cmake
    
  3. 移至您複製之 Git 存放庫的根資料夾。

  4. 使用如下所示的路徑執行 TPM 模擬器。

    cd ..
    .\provisioning_client\deps\utpm\tools\tpm_simulator\Simulator.exe
    

    模擬器不會顯示任何輸出。 讓它在模擬 TPM 裝置時繼續執行。

  1. 移至 GitHub 根資料夾。

  2. 執行 TPM 模擬器,使其成為模擬裝置的 HSM

    .\azure-utpm-c\tools\tpm_simulator\Simulator.exe
    
  3. 建立名為 registerdevice 的新空白資料夾。 在 registerdevice 資料夾中,在命令提示字元中使用下列命令建立 package.json 檔案 (請務必回答所有 npm 詢問的問題;或接受預設值,如適合您):

    npm init
    
  4. 安裝下列先驅套件:

    npm install node-gyp -g
    npm install ffi-napi -g
    

    注意

    安裝上述套件時有一些已知的問題。 若要解決這些問題,請在 [以系統管理員身分執行] 模式中,使用命令提示字元執行 npm install --global --production windows-build-tools,在路徑取代為您安裝的版本之後執行 SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140,然後重新執行上述安裝命令。

  5. registerdevice 資料夾中,於命令提示字元中安裝執行下列命令的所有必要套件:

    npm install --save azure-iot-device azure-iot-device-mqtt azure-iot-security-tpm azure-iot-provisioning-device-http azure-iot-provisioning-device
    

    命令會安裝下列套件:

    • 搭配 TPM 運作的安全性用戶端:azure-iot-security-tpm

    • 可供裝置連線至裝置佈建服務的傳輸:不是 azure-iot-provisioning-device-http 就是 azure-iot-provisioning-device-amqp

    • 要使用傳輸的用戶端和安全性用戶端:azure-iot-provisioning-device

    • 裝置用戶端:azure-iot-device

    • 傳輸:azure-iot-device-amqpazure-iot-device-mqttazure-iot-device-http 任何一項

    • 您已安裝的安全性用戶端:azure-iot-security-tpm

      注意

      本快速入門中的範例會使用 azure-iot-provisioning-device-httpazure-iot-device-mqtt 傳輸。

  6. 開啟您選擇的文字編輯器。

  7. registerdevice 資料夾中,建立新的 ExtractDevice.js 檔案。

  8. ExtractDevice.js 檔案開頭新增下列 require 陳述式:

    
    'use strict';
    
    var tpmSecurity = require('azure-iot-security-tpm');
    var tssJs = require("tss.js");
    
    var myTpm = new tpmSecurity.TpmSecurityClient(undefined, new tssJs.Tpm(true));
    
  9. 新增下列函式以實作方法︰

    
    myTpm.getEndorsementKey(function(err, endorsementKey) {
      if (err) {
        console.log('The error returned from get key is: ' + err);
      } else {
        console.log('the endorsement key is: ' + endorsementKey.toString('base64'));
        myTpm.getRegistrationId((getRegistrationIdError, registrationId) => {
          if (getRegistrationIdError) {
            console.log('The error returned from get registration id is: ' + getRegistrationIdError);
          } else {
            console.log('The Registration Id is: ' + registrationId);
            process.exit();
          }
        });
      }
    });
    
  10. 儲存並關閉 ExtractDevice.js 檔案。

    node ExtractDevice.js
    
  11. 執行範例。

  12. 輸出視窗會顯示裝置註冊所需的 [簽署金鑰] 和 [登錄識別碼]。 複製這些值。

  1. 執行 TPM 模擬器,使其成為模擬裝置的 HSM

  2. 選擇 [允許存取]。 此模擬器會透過連接埠 2321 和 2322 上的通訊端來接聽。 請勿關閉此命令視窗;您必須讓此模擬器保持執行,直到此快速入門指南結束。

    .\azure-iot-sdk-java\provisioning\provisioning-tools\tpm-simulator\Simulator.exe
    

    TPM 模擬器

  3. 開啟第二個命令提示字元。

  4. 在第二個命令提示字元中,瀏覽至根資料夾並建置範例相依性。

    cd azure-iot-sdk-java
    mvn install -DskipTests=true
    
  5. 巡覽至範例資料夾。

    cd provisioning/provisioning-samples/provisioning-tpm-sample
    

從 TPM 裝置讀取密碼編譯金鑰

在本節中,您將建置並執行從持續執行的 TPM 模擬器讀取簽署金鑰和註冊識別碼,且其仍在接聽連接埠 2321 和 2322 的範例。 這些值將用來對您的裝置佈建服務執行個體進行裝置註冊。

  1. 啟動 Visual Studio。

  2. 開啟在 cmake 資料夾中產生的方案 (名為 azure_iot_sdks.sln)。

  3. 在 Visual Studio 功能表中,選取 [建置]>[建置解決方案],以建置方案中的所有專案。

  4. 在 Visual Studio 的 [方案總管] 視窗中,瀏覽至 Provision_Tools 資料夾。 以滑鼠右鍵按一下 tpm_device_provision 專案,然後選取 [設為起始專案]

  5. 在 Visual Studio 功能表中,選取 [偵錯]>[啟動但不偵錯] 以執行解決方案。 應用程式會讀取並顯示 [註冊識別碼] 和 [簽署金鑰]。 請記下或複製這些值。 這些值會在下一節用於裝置註冊。

  1. 登入 Azure 入口網站,選取左側功能表上的 [所有資源] 按鈕,然後開啟您的裝置佈建服務。 記下您的識別碼範圍佈建服務全域端點

    裝置布建服務資訊

  2. 編輯 src/main/java/samples/com/microsoft/azure/sdk/iot/ProvisioningTpmSample.java,使其包含您前面記下的識別碼範圍佈建服務全域端點

    private static final String idScope = "[Your ID scope here]";
    private static final String globalEndpoint = "[Your Provisioning Service Global Endpoint here]";
    private static final ProvisioningDeviceClientTransportProtocol PROVISIONING_DEVICE_CLIENT_TRANSPORT_PROTOCOL = ProvisioningDeviceClientTransportProtocol.HTTPS;
    
  3. 儲存檔案。

  4. 使用下列命令來建立專案,巡覽至目標資料夾,然後執行所建立的 .jar 檔案 (以您的 Java 版本取代 {version}):

    mvn clean install
    cd target
    java -jar ./provisioning-tpm-sample-{version}-with-deps.jar
    
  5. 當程式開始執行時,其會顯示簽署金鑰註冊識別碼。 複製這些值以在下一節中使用。 請務必讓程式保持執行狀態。

在本節中,您將建置和執行範例,從 TPM 2.0 硬體安全性模組讀取簽署金鑰。 此值將用來對您的裝置佈建服務執行個體進行裝置註冊。

  1. 在命令提示字元中,將目錄變更到 TPM 裝置佈建範例的專案目錄。

    cd '.\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\TpmSample\'
    
  2. 輸入下列命令以建置並執行 TPM 裝置佈建範例。 複製從 TPM 2.0 硬體安全性模組傳回的簽署金鑰,以在稍後註冊裝置時使用。

    dotnet run -- -e
    

建立裝置註冊項目

  1. 登入 Azure 入口網站,並瀏覽至您的裝置佈建服務執行個體。

  2. 從導覽功能表的 [設定] 區段選取 [管理註冊]

  3. 選取 [個別註冊] 索引標籤,然後選取 [新增個別註冊]

    顯示 [新增個別註冊] 選項的螢幕快照。

  4. 在 [新增註冊] 頁面的 [註冊 + 佈建] 上,提供下列資訊以設定註冊詳細資料:

    欄位 描述
    證明 選取 [信賴平台模組 (TPM)] 作為 [證明機制]
    信賴平台模組 (TPM) 設定 提供將用於驗證此註冊裝置的簽署金鑰。 您可以從裝置的 TPM 擷取簽署金鑰。
    註冊識別碼 提供裝置的唯一註冊識別碼。 您可以從裝置的 TPM 擷取註冊識別碼。
    佈建狀態 如果您想要讓此註冊可用於佈建其裝置,請核取 [啟用此註冊] 方塊。 如果您想要停用註冊,請取消核取此方塊。 您之後無法變更此設定。
    重新佈建原則 選擇重新佈建原則,以反映您希望 DPS 如何處理要求重新佈建的裝置。 如需詳細資訊,請參閱重新佈建原則 (部分機器翻譯)。
  5. 選取 [下一步: IoT 中樞]

  6. 在 [新增註冊] 頁面的 [IoT 中樞] 索引標籤上,提供下列資訊以判斷註冊可將裝置佈建到哪些 IoT 中樞:

    欄位 描述
    目標 IoT 中樞 選取一或多個連結的 IoT 中樞,或是新增 IoT 中樞的連結。 若要深入了解如何將 IoT 中樞連結到 DPS 執行個體,請參閱如何連結和管理 IoT 中樞
    配置原則 如果您選取了多個連結的 IoT 中樞,請選取要如何將裝置指派給不同的中樞。 若要深入了解配置原則,請參閱如何使用配置原則

    如果您只選取一個連結的 IoT 中樞,建議您使用 [權重相等的分佈] 原則。
  7. 選取 [下一步: 裝置設定]

  8. 在 [新增註冊] 頁面的 [裝置設定] 索引標籤上,提供下列資訊以定義新佈建裝置的設定方式:

    欄位 描述
    裝置識別碼 提供將在 IoT 中樞中指派至已佈建裝置的裝置識別碼。 如果您未提供裝置識別碼,則會使用註冊識別碼。
    IoT Edge 如果已佈建的裝置會執行 Azure IoT Edge (部分機器翻譯),請核取 [在已佈建的裝置上啟用 IoT Edge]。 如果此註冊適用於未啟用 IoT Edge 的裝置,請取消核取此方塊。
    裝置標籤 使用此文字輸入框來提供您要為已佈建裝置的裝置對應項套用的任何標籤。
    所需屬性 使用此文字輸入框來提供您要為已佈建裝置的裝置對應項套用的任何所需屬性。

    如需詳細資訊,請參閱了解和使用 Azure IoT 中樞的裝置對應項

  9. 完成時,選取 [下一步:檢閱 + 建立]。

  10. 在 [檢閱 + 建立] 索引標籤上,確認所有值,然後選取 [建立]

本快速入門的 C# TPM 範例不提供註冊識別碼。 當系統提示您為個別註冊新增識別碼時,請提供您自己的值。

  1. 登入 Azure 入口網站,並瀏覽至您的裝置佈建服務執行個體。

  2. 從導覽功能表的 [設定] 區段選取 [管理註冊]

  3. 選取 [個別註冊] 索引標籤,然後選取 [新增個別註冊]

    顯示 [新增個別註冊] 選項的螢幕快照。

  4. 在 [新增註冊] 頁面的 [註冊 + 佈建] 上,提供下列資訊以設定註冊詳細資料:

    欄位 描述
    證明 選取 [信賴平台模組 (TPM)] 作為 [證明機制]
    信賴平台模組 (TPM) 設定 提供將用於驗證此註冊裝置的簽署金鑰。 您可以從裝置的 TPM 擷取簽署金鑰。
    註冊識別碼 提供裝置的唯一註冊識別碼。 您可以從裝置的 TPM 擷取註冊識別碼。
    佈建狀態 如果您想要讓此註冊可用於佈建其裝置,請核取 [啟用此註冊] 方塊。 如果您想要停用註冊,請取消核取此方塊。 您之後無法變更此設定。
    重新佈建原則 選擇重新佈建原則,以反映您希望 DPS 如何處理要求重新佈建的裝置。 如需詳細資訊,請參閱重新佈建原則 (部分機器翻譯)。
  5. 選取 [下一步: IoT 中樞]

  6. 在 [新增註冊] 頁面的 [IoT 中樞] 索引標籤上,提供下列資訊以判斷註冊可將裝置佈建到哪些 IoT 中樞:

    欄位 描述
    目標 IoT 中樞 選取一或多個連結的 IoT 中樞,或是新增 IoT 中樞的連結。 若要深入了解如何將 IoT 中樞連結到 DPS 執行個體,請參閱如何連結和管理 IoT 中樞
    配置原則 如果您選取了多個連結的 IoT 中樞,請選取要如何將裝置指派給不同的中樞。 若要深入了解配置原則,請參閱如何使用配置原則

    如果您只選取一個連結的 IoT 中樞,建議您使用 [權重相等的分佈] 原則。
  7. 選取 [下一步: 裝置設定]

  8. 在 [新增註冊] 頁面的 [裝置設定] 索引標籤上,提供下列資訊以定義新佈建裝置的設定方式:

    欄位 描述
    裝置識別碼 提供將在 IoT 中樞中指派至已佈建裝置的裝置識別碼。 如果您未提供裝置識別碼,則會使用註冊識別碼。
    IoT Edge 如果已佈建的裝置會執行 Azure IoT Edge (部分機器翻譯),請核取 [在已佈建的裝置上啟用 IoT Edge]。 如果此註冊適用於未啟用 IoT Edge 的裝置,請取消核取此方塊。
    裝置標籤 使用此文字輸入框來提供您要為已佈建裝置的裝置對應項套用的任何標籤。
    所需屬性 使用此文字輸入框來提供您要為已佈建裝置的裝置對應項套用的任何所需屬性。

    如需詳細資訊,請參閱了解和使用 Azure IoT 中樞的裝置對應項

  9. 完成時,選取 [下一步:檢閱 + 建立]。

  10. 在 [檢閱 + 建立] 索引標籤上,確認所有值,然後選取 [建立]

註冊裝置

在本節中,您將設定範例程式碼,以使用進階訊息佇列通訊協定 (AMQP) 將裝置的開機順序傳送至裝置佈建服務執行個體。 此開機順序會導致裝置註冊到連結至裝置佈建服務執行個體的 IoT 中樞。

  1. 在 Azure 入口網站中,選取您裝置佈建服務的 [概觀] 索引標籤。

  2. 複製 [識別碼範圍] 值。

    從入口網站擷取裝置布建服務端點資訊

  3. 在 Visual Studio 的 [方案總管] 視窗中,瀏覽至 Provision_Samples 資料夾。 展開名為 prov_dev_client_sample 的範例專案。 展開 [來源檔案],然後開啟 [prov_dev_client_sample.c]

  4. 在檔案頂端附近,從 #define 陳述式中找出每個裝置通訊協定,如下所示。 請確定只有 SAMPLE_AMQP 取消註解。

    目前並不支援將 MQTT 通訊協定用於個別的 TPM 註冊

    //
    // The protocol you wish to use should be uncommented
    //
    //#define SAMPLE_MQTT
    //#define SAMPLE_MQTT_OVER_WEBSOCKETS
    #define SAMPLE_AMQP
    //#define SAMPLE_AMQP_OVER_WEBSOCKETS
    //#define SAMPLE_HTTP
    
  5. 找出 id_scope 常數,並將其值取代為您先前複製的 [識別碼範圍] 值。

    static const char* id_scope = "0ne00002193";
    
  6. 在相同的檔案中找出 main() 函式的定義。 確定 hsm_type 變數已設定為 SECURE_DEVICE_TYPE_TPM,如下所示。

    SECURE_DEVICE_TYPE hsm_type;
    hsm_type = SECURE_DEVICE_TYPE_TPM;
    //hsm_type = SECURE_DEVICE_TYPE_X509;
    //hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
    
  7. 以滑鼠右鍵按一下 prov_dev_client_sample 專案,然後選取 [設為起始專案]

  8. 在 Visual Studio 功能表中,選取 [偵錯]>[啟動但不偵錯] 以執行解決方案。 出現重新建置專案的提示時,選取 [是],以在執行前重新建置專案。

    下列輸出範例說明佈建裝置用戶端範例已成功啟動,並連線至佈建服務執行個體,以取得 IoT 中樞資訊並進行註冊:

    Provisioning API Version: 1.2.7
    
    Registering... Press enter key to interrupt.
    
    Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED
    Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING
    Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING
    
    Registration Information received from service:
    test-docs-hub.azure-devices.net, deviceId: test-docs-cert-device
    
  1. 在 Azure 入口網站中,選取您裝置佈建服務的 [概觀] 索引標籤。

  2. 複製 [識別碼範圍] 值。

    從入口網站刀鋒視窗複製布建服務範圍標識碼

  3. 在命令提示字元中,將目錄變更到 TPM 裝置佈建範例的專案目錄。

     cd '.\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\TpmSample\'
    
  4. 執行下列命令來註冊您的裝置。 將 <IdScope> 取代為您複製的 DPS 值,並將 <RegistrationId> 取代為您建立裝置註冊時所使用的值。

    dotnet run -- -s <IdScope> -r <RegistrationId>
    

    如果裝置註冊成功,您會看到下列訊息:

    Initializing security using the local TPM...
    Initializing the device provisioning client...
    Initialized for registration Id <RegistrationId>.
    Registering with the device provisioning service...
    Registration status: Assigned.
    Device <RegistrationId> registered to <HubName>.azure-devices.net.
    Creating TPM authentication for IoT Hub...
    Testing the provisioned device with IoT Hub...
    Sending a telemetry message...
    Finished.
    
  1. 在 Azure 入口網站中,選取您裝置佈建服務的 [概觀] 索引標籤。

  2. 複製 [識別碼範圍] 值。

    從入口網站刀鋒視窗擷取裝置布建服務端點資訊

  3. 開啟您選擇的文字編輯器。

  4. registerdevice 資料夾中,建立新的 RegisterDevice.js 檔案。

  5. RegisterDevice.js 檔案開頭新增下列 require 陳述式:

    
    'use strict';
    
    var ProvisioningTransport = require('azure-iot-provisioning-device-http').Http;
    var iotHubTransport = require('azure-iot-device-mqtt').Mqtt;
    var Client = require('azure-iot-device').Client;
    var Message = require('azure-iot-device').Message;
    var tpmSecurity = require('azure-iot-security-tpm');
    var ProvisioningDeviceClient = require('azure-iot-provisioning-device').ProvisioningDeviceClient;
    

    注意

    Azure IoT SDK for Node.js 支援額外的通訊協定,像是 AMQPAMQP WSMQTT WS。 如需詳細資訊,請參閱適用於 Node.js 的裝置佈建服務 SDK 範例

  6. 新增 globalDeviceEndpointidScope 變數,並用來建立 ProvisioningDeviceClient 執行個體。 使用步驟 1 的 [全域裝置端點] 和 [識別碼範圍] 值,取代 {globalDeviceEndpoint}{idScope}

    
    var provisioningHost = '{globalDeviceEndpoint}';
    var idScope = '{idScope}';
    
    var tssJs = require("tss.js");
    var securityClient = new tpmSecurity.TpmSecurityClient('', new tssJs.Tpm(true));
    // if using non-simulated device, replace the above line with following:
    //var securityClient = new tpmSecurity.TpmSecurityClient();
    
    var provisioningClient = ProvisioningDeviceClient.create(provisioningHost, idScope, new ProvisioningTransport(), securityClient);
    
  7. 新增下列函式,在裝置上實作方法︰

    
    provisioningClient.register(function(err, result) {
      if (err) {
        console.log("error registering device: " + err);
      } else {
        console.log('registration succeeded');
        console.log('assigned hub=' + result.registrationState.assignedHub);
        console.log('deviceId=' + result.registrationState.deviceId);
        var tpmAuthenticationProvider = tpmSecurity.TpmAuthenticationProvider.fromTpmSecurityClient(result.registrationState.deviceId, result.registrationState.assignedHub, securityClient);
        var hubClient = Client.fromAuthenticationProvider(tpmAuthenticationProvider, iotHubTransport);
    
        var connectCallback = function (err) {
          if (err) {
            console.error('Could not connect: ' + err.message);
          } else {
            console.log('Client connected');
            var message = new Message('Hello world');
            hubClient.sendEvent(message, printResultFor('send'));
          }
        };
    
        hubClient.open(connectCallback);
    
        function printResultFor(op) {
          return function printResult(err, res) {
            if (err) console.log(op + ' error: ' + err.toString());
            if (res) console.log(op + ' status: ' + res.constructor.name);
            process.exit(1);
          };
        }
      }
    });
    
  8. 儲存並關閉 RegisterDevice.js 檔案。

  9. 執行以下命令:

    node RegisterDevice.js
    
  10. 請注意,模擬裝置開機並連線至裝置佈建服務的訊息,以取得您的 IoT 中樞資訊。

  1. 在機器上負責執行 Java 範例程式碼的命令視窗中,按 Enter 鍵以繼續執行應用程式。 請注意,模擬裝置開機並連線至裝置佈建服務的訊息,以取得您的 IoT 中樞資訊。

    Java TPM 裝置程序最終

確認您的裝置佈建註冊

  1. 登入 Azure 入口網站

  2. 在左側功能表或入口網站頁面上,選取 [所有資源]

  3. 選取為裝置所指派之 IoT 中樞。

  4. 在 [總管] 功能表中,選取 [IoT 裝置]

  1. 如果您的裝置已成功佈建,則其裝置識別碼應該會出現在清單中,且 [狀態] 設定為 [已啟用]。 如果您沒有看到裝置,請選取頁面頂端的 [重新整理]

    裝置已向適用於 C 的 IoT 中樞註冊

  1. 如果您的裝置已成功佈建,則其裝置識別碼應該會出現在清單中,且 [狀態] 設定為 [已啟用]。 如果您沒有看到裝置,請選取頁面頂端的 [重新整理]

    裝置已向適用於 C 的 IoT 中樞註冊#

  1. 如果您的裝置已成功佈建,則其裝置識別碼應該會出現在清單中,且 [狀態] 設定為 [已啟用]。 如果您沒有看到裝置,請選取頁面頂端的 [重新整理]

    裝置已向IoT中樞註冊以進行Node.js

  1. 如果您的裝置已成功佈建,則其裝置識別碼應該會出現在清單中,且 [狀態] 設定為 [已啟用]。 如果您沒有看到裝置,請選取頁面頂端的 [重新整理]

    裝置已向IoT中樞註冊

注意

如果您在裝置的註冊項目中變更了初始裝置對應項狀態 (變更自預設值),它即可從中樞提取所需的對應項狀態並採取適當的動作。 如需詳細資訊,請參閱了解和使用 Azure IoT 中樞的裝置對應項

清除資源

如果您打算繼續使用並探索裝置用戶端範例,請勿清除在本快速入門中建立的資源。 如果您不打算繼續,請使用下列步驟來刪除本快速入門建立的所有資源。

刪除您的裝置註冊

  1. 在您的電腦上關閉裝置用戶端範例輸出視窗。

  2. 從 Azure 入口網站中的左側功能表,選取 [所有資源]

  3. 選取您的裝置佈建服務。

  4. 在 [設定] 功能表中,選取 [管理註冊]

  5. 選取 [個別註冊] 索引標籤。

  6. 選取您在本快速入門中所註冊裝置的註冊識別碼旁的核取方塊。

  7. 在頁面頂端,選取 [刪除]

從 IoT 中樞刪除裝置註冊

  1. 從 Azure 入口網站中的左側功能表,選取 [所有資源]

  2. 選取您的 IoT 中樞。

  3. 在 [總管] 功能表中,選取 [IoT 裝置]

  4. 選取您在本快速入門中所註冊裝置的裝置識別碼旁的核取方塊。

  5. 在頁面頂端,選取 [刪除]

下一步

在本快速入門中,您已使用個別註冊,將單一裝置布建至IoT中樞。 接下來,瞭解如何跨多個中樞布建多個裝置。