教學課程:在 Azure IoT Central 應用程式中定義新的 IoT 閘道裝置類型

在本教學課程中,您會建立 智慧建築 網關裝置範本。 智慧建築閘道裝置與其他下游裝置有關聯性。

顯示閘道裝置與其下游裝置之間關聯性的圖表。

閘道裝置也可以:

  • 傳送自己的遙測數據,例如溫度。
  • 回應操作員所做的可寫入屬性更新。 例如,操作員可以變更遙測傳送間隔。
  • 回應命令,例如重新啟動裝置。

在本教學課程中,您會了解如何:

  • 建立下游裝置範本
  • 建立閘道裝置範本
  • 發佈裝置範本
  • 建立模擬裝置

必要條件

若要完成本教學課程中的步驟,您需要:

建立下游裝置範本

本教學課程會針對開始的 Hobo MX-100 Temp Sensor 裝置和 RS40 佔用感測器裝置使用裝置範本來產生仿真的下游裝置。

若要為 開始的 Hobo MX-100 Temp Sensor 裝置建立裝置範本:

  1. 在左窗格中,選取 [ 裝置範本]。 然後選取 [+ 新增 ] 以開始新增範本。

  2. 向下卷動,直到您可以看到 [開始] Hobo MX-100 Temp Sensor 裝置的圖格。 選取圖格,然後選取 [ 下一步:檢閱]。

  3. 在 [ 檢閱] 頁面上,選取 [建立 ] 將裝置範本新增至您的應用程式。

若要建立 RS40 佔用感測器裝置的裝置範本:

  1. 在左窗格中,選取 [ 裝置範本]。 然後選取 [+ 新增 ] 以開始新增範本。

  2. 向下卷動,直到您可以看到 Rigado RS40 佔用感測器裝置的圖格。 選取圖格,然後選取 [ 下一步:檢閱]。

  3. 在 [ 檢閱] 頁面上,選取 [建立 ] 將裝置範本新增至您的應用程式。

您現在有兩種下游裝置類型的裝置範本:

顯示下游裝置範本的螢幕快照。

建立閘道裝置範本

在本教學課程中,您會從頭開始建立閘道裝置的裝置範本。 您稍後會使用此範本在應用程式中建立模擬閘道裝置。

若要將新的閘道裝置範本新增至您的應用程式:

  1. 在左窗格中,選取 [ 裝置範本]。 然後選取 [+ 新增 ] 以開始新增範本。

  2. 在 [ 選取範本類型 ] 頁面上,選取 [IoT 裝置 ] 圖格,然後選取 [ 下一步:自定義]。

  3. 在 [ 自定義裝置 ] 頁面上,選取 [這是網關裝置 ] 複選框。

  4. 輸入 Smart Building閘道裝置 作為範本名稱,然後選取 [ 下一步:檢閱]。

  5. [檢閱] 頁面上,選取 [建立]

  6. 在 [ 建立模型 ] 頁面上,選取 [ 自定義模型] 圖格。

  7. 選取 [+ 新增功能 ] 以新增功能。

  8. 輸入 [ 傳送數據 ] 作為顯示名稱,然後選取 [屬性 ] 作為功能類型。

  9. 選取 [布爾值 ] 作為架構類型、設定 [可寫入 ] ,然後選取 [ 儲存]。

新增關聯性

接下來,您會將關聯性新增至下游裝置範本的範本:

  1. 在智慧建築閘道裝置範本中,選取 [關聯性]。

  2. 選取 [+ 新增關聯性]。 輸入 環境感測器 作為顯示名稱,然後選取 [Hobo MX-100 ] 作為目標。

  3. 再次選取 [+ 新增關聯性 ]。 輸入 [佔用感測器 ] 作為顯示名稱,然後選取 [RS40 佔用感測器 ] 作為目標。

  4. 選取 [儲存]。

顯示閘道關聯性的螢幕快照。

新增雲端屬性

閘道裝置範本可以包含雲端屬性。 雲端屬性只存在於IoT Central應用程式中,且永遠不會傳送至或從裝置接收。

將雲端屬性新增至 Smart Building 閘道裝置 範本。

  1. 在智慧建築閘道裝置範本中,選取 [智慧建築閘道裝置型號]。

  2. 使用下表中的資訊,將兩個雲端屬性新增至閘道裝置範本。

    Display name 功能類型 語意類型 結構描述
    上次維修日期 Cloud 屬性 Date
    客戶名稱 Cloud 屬性 String
  3. 選取 [儲存]。

建立檢視

身為建置者,您可以自定義應用程式,向操作員顯示環境感測器裝置的相關信息。 您的自定義專案可讓操作員管理連線至應用程式的環境感測器裝置。 您可以建立兩種類型的檢視,讓操作員用來與裝置互動:

  • 用來檢視和編輯裝置和雲端屬性的表單。
  • 可視化裝置的檢視。

若要產生 智慧建築網關裝置 範本的預設檢視:

  1. 在智慧建築閘道裝置範本中,選取 [檢視]。

  2. 選取 [ 產生默認檢視 ] 圖格,並確定已選取所有選項。

  3. 選取 [產生默認儀錶板檢視]。

發佈裝置範本

您必須先發佈裝置範本,才能建立模擬閘道裝置或連線實際閘道裝置。

若要發佈閘道裝置範本:

  1. [裝置範本] 頁面選取 [智慧建築網關裝置範本]。

  2. 選取發行

  3. 在 [ 發佈裝置範本 ] 對話框中,選擇 [ 發佈]。

發佈裝置範本之後,會顯示在 [裝置 ] 頁面上和操作員。 操作員可以使用範本來建立裝置實例,或建立規則和監視。 編輯已發佈的範本可能會影響整個應用程式的行為。

若要深入瞭解在發佈裝置範本之後修改裝置範本,請參閱 編輯現有的裝置範本

建立模擬裝置

本教學課程使用仿真的下游裝置和模擬網關裝置。

若要建立模擬閘道裝置:

  1. 在 [ 裝置] 頁面上,選取 裝置範本清單中的 [智慧建築網關裝置 ]。

  2. 選取 [+ 新增 ] 以開始新增裝置。

  3. 保留產生的 裝置識別碼裝置名稱。 請確定 [模擬] 參數為 [ ]。 選取 建立

若要建立仿真的下游裝置:

  1. 在 [ 裝置] 頁面上,選取 裝置範本清單中的 [RS40 佔用量感測器 ]。

  2. 選取 [+ 新增 ] 以開始新增裝置。

  3. 保留產生的 裝置識別碼裝置名稱。 請確定 [模擬] 參數為 [ ]。 選取 建立

  4. 在 [ 裝置] 頁面上,選取 裝置範本清單中的 [Hobo MX-100 ]。

  5. 選取 [+ 新增 ] 以開始新增裝置。

  6. 保留產生的 裝置識別碼裝置名稱。 請確定 [模擬] 參數為 [ ]。 選取 建立

顯示模擬裝置的螢幕快照。

將下游裝置關聯性新增至閘道裝置

既然您的應用程式中有模擬裝置,您可以建立下游裝置與閘道裝置之間的關聯性:

  1. 在 [ 裝置] 頁面上,選取 裝置範本清單中的 [Hobo MX-100 ],然後選取模擬 的 Hobo MX-100 裝置。

  2. 選取 [附加至網關]。

  3. 在 [附加至網關] 對話框中,選取 [智慧建築網關裝置] 範本,然後選取您先前建立的仿真實例。

  4. 選取連結

  5. 在 [ 裝置] 頁面上,選取 裝置範本清單中的 [RS40 佔用感測器 ],然後選取模擬 的 RS40 佔用感測器 裝置。

  6. 選取 [附加至網關]。

  7. 在 [附加至網關] 對話框中,選取 [智慧建築網關裝置] 範本,然後選取您先前建立的仿真實例。

  8. 選取連結

仿真的下游裝置現在都已連線到模擬網關裝置。 如果您流覽至閘道裝置的 下游裝置 檢視,您可以看到相關的下游裝置:

顯示連結至閘道之裝置的螢幕快照。

連線 實際下游裝置

在建立 用戶端應用程式並將其連線至 Azure IoT Central 應用程式 教學課程中,範例程式代碼示範如何在裝置傳送的布建承載中包含來自裝置範本的模型標識碼。

當您連接下游裝置時,您可以修改布建承載以包含閘道裝置的識別碼。 模型標識碼可讓IoT Central將裝置指派給正確的下游裝置範本。 閘道標識碼可讓IoT Central建立下游裝置與其閘道之間的關聯性。 在此情況下,裝置傳送的布建承載看起來會像下列 JSON:

{
  "modelId": "dtmi:rigado:HoboMX100;2",
  "iotcGateway":{
    "iotcGatewayId": "gateway-device-001"
  }
}

網關可以註冊及布建下游裝置,並將下游裝置與網關產生關聯,如下所示:

var crypto = require('crypto');


var ProvisioningTransport = require('azure-iot-provisioning-device-mqtt').Mqtt;
var SymmetricKeySecurityClient = require('azure-iot-security-symmetric-key').SymmetricKeySecurityClient;
var ProvisioningDeviceClient = require('azure-iot-provisioning-device').ProvisioningDeviceClient;

var provisioningHost = "global.azure-devices-provisioning.net";
var idScope = "<The ID scope from your SAS group enrollment in IoT Central>";
var groupSymmetricKey = "<The primary key from the SAS group enrollment>";
var registrationId = "<The device ID for the downstream device you're creating>";
var modelId = "<The model you're downstream device should use>";
var gatewayId = "<The device ID of your gateway device>";

// Calculate the device key from the group enrollment key
function computeDerivedSymmetricKey(deviceId, masterKey) {
    return crypto.createHmac('SHA256', Buffer.from(masterKey, 'base64'))
        .update(deviceId, 'utf8')
        .digest('base64');
}

var symmetricKey = computeDerivedSymmetricKey(registrationId, groupSymmetricKey);

var provisioningSecurityClient = new SymmetricKeySecurityClient(registrationId, symmetricKey);

var provisioningClient = ProvisioningDeviceClient.create(provisioningHost, idScope, new ProvisioningTransport(), provisioningSecurityClient);

// Use the DPS payload to:
// - specify the device capability model to use.
// - associate the device with a gateway.
var provisioningPayload = {modelId: modelId, iotcGateway: { iotcGatewayId: gatewayId}}

provisioningClient.setProvisioningPayload(provisioningPayload);

provisioningClient.register(function(err, result) {
  if (err) {
    console.log("Error registering device: " + err);
  } else {
    console.log('The registration status is: ' + result.status)
   }
});

清除資源

如果您不打算完成任何進一步的 IoT Central 快速入門或教學課程,您可以刪除 IoT Central 應用程式:

  1. 在您的 IoT Central 應用程式中,流覽至 [應用程式 > 管理]。
  2. 選取 [ 刪除] ,然後確認您的動作。

後續步驟

接下來,您可以瞭解如何: