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

本教學課程說明如何使用閘道裝置範本在 IoT Central 應用程式中定義閘道裝置。 接著,您可設定數個下游裝置,以透過閘道裝置連線到您的 IoT Central 應用程式。

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

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

除了讓下游裝置能夠與 IoT Central 應用程式通訊以外,閘道裝置也可以:

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

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

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

先決條件

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

建立下游裝置範本

本教學課程會使用 [S1 感應器] 裝置和 [RS40 在場感應器] 裝置的裝置範本來產生模擬下游裝置。

若要為 [S1 感應器] 裝置建立裝置範本:

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

  2. 向下捲動直到您可以看到 Minew S1 裝置的圖格。 選取圖格,然後選取 [ 下一步:檢閱]。

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

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

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

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

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

您現在有適用於這兩種下游裝置的裝置範本:

顯示下游裝置範本的螢幕擷取畫面。

建立閘道裝置範本

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

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

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

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

  3. 在 [ 自訂裝置 ] 頁面上,選取 [這是閘道裝置 ] 核取方塊。

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

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

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

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

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

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

新增關聯性

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

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

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

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

  4. 選取 [儲存] 。

顯示閘道關聯性的螢幕擷取畫面。

新增雲端屬性

閘道裝置範本可包含雲端屬性。 雲端屬性僅存在於 IoT Central 應用程式中,且一律不會傳送至或接收自裝置。

若要將雲端屬性新增至 [智能建築閘道裝置] 範本:

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

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

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

建立檢視

身為建置者,您可以自訂應用程式,以對操作員顯示環境感應器裝置的相關資訊。 您的自訂將使操作員能夠管理已連線至應用程式的環境感應器裝置。 您可以建立兩種類型的檢視,讓操作員用來與裝置互動:

  • 用於檢視及編輯裝置和雲端屬性的表單。
  • 將裝置視覺化的檢視。

若要產生 [智能建築閘道裝置] 範本的預設檢視:

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

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

  3. 選取 [產生預設儀表板檢視] 。

發佈裝置範本

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

若要發佈閘道裝置範本:

  1. 從 [裝置範本] 頁面中選取 [智能建築閘道裝置] 範本。

  2. 選取 [發佈] 。

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

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

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

建立模擬裝置

本教學課程會使用模擬下游裝置和模擬閘道裝置。

若要建立模擬閘道裝置:

  1. 在 [裝置] 頁面上,選取裝置範本清單中的 [智能建築閘道裝置] 。

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

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

若要建立模擬的下游裝置:

  1. 在 [裝置] 頁面上,選取裝置範本清單中的 [RS40 在場感應器] 。

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

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

  4. 在 [裝置] 頁面上,選取裝置範本清單中的 [R1 感應器] 。

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

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

顯示模擬裝置的螢幕擷取畫面。

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

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

  1. 在 [裝置] 頁面上,選取裝置範本清單中的 [S1 感應器] ,然後選取您的模擬 [S1 感應器] 裝置。

  2. 選取 [附加至閘道]。

  3. 在 [ 附加至閘道 ] 對話方塊中,選取 [智慧建築閘道裝置] 範本 ,然後選取您先前建立的模擬實例。

  4. 選取 [附加]。

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

  6. 選取 [連線到閘道] 。

  7. 在 [連線到閘道] 對話方塊中,選取 [智能建築閘道裝置] 範本,然後選取您先前建立的模擬執行個體。

  8. 選取 [附加]。

您的模擬下游裝置現在已連線到您的模擬閘道裝置。 如果您瀏覽至閘道裝置的 [下游裝置] 檢視,您可以看到相關的下游裝置:

顯示連結至閘道之裝置的螢幕擷取畫面。

連線實際的下游裝置

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

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

{
  "modelId": "dtmi:rigado:S1Sensor;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. 選取 [刪除 ],然後確認您的動作。

後續步驟

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

  • 將新的 IoT 閘道建立為裝置範本。
  • 建立雲端屬性。
  • 建立自訂。
  • 定義裝置遙測的視覺效果。
  • 新增關聯性。
  • 發佈您的裝置範本。

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