【 Cloud 】透過 Node.js 的 Express 與 Proxy Server 操作 Azure Digital Twin

內容

  • 學習目標
  • 前置準備作業
  • 建立 Azure Digital Twin
  • 安裝 AZ Tool 並登入
  • 撰寫 Proxy Server
  • 透過 Node.js 上傳 DTDL 到 Azure Digital Twin
  • 透過 Node.js 在 Azure Digital Twin 中建立 Twin
  • 透過 Node.js 在 Azure Digital Twin 中建立 Twin 間的 Relationship
  • 透過 Node.js 取得 Azure Digital Twin 中的 DTDL
  • 透過 Node.js 取得 Azure Digital Twin 中的 Twin 資訊
  • 透過 Node.js 取得 Azure Digital Twin 中的 Relationship 資訊
  • 透過 Node.js 更新 Twin 資訊
  • 透過 Node.js 刪除 Relationship
  • 透過 Node.js 刪除 Twin
  • 透過 Node.js 刪除 DTDL

學習目標

  • 如何透過 Node.jsExpressProxy Server 操作 Azure Digital Twin

前置準備作業

  • 已建立 Azure 帳號並能正常登入
  • 已於電腦端安裝 Node.js
  • 已於電腦端安裝 IDE,本範例使用 Visual Studio Code

建立 Azure Digital Twin

Step 1. 開啟 Azure Digital Twin

  • 在上方搜尋框輸入 digital twin 並點選下方 Azure Digital Twins 的搜尋結果


Step 2. 點選上方 + Create


Step 3. 輸入相關資訊

  • Subscription 欄位選擇所要使用的訂閱。
  • Resource group 欄位輸入此 Digital Twins 所要歸屬於的群組。
  • Resource Name 欄位輸入一個可識別的名稱。
  • Region 欄位請選擇 Digital Twins 服務所要位於的資料中心。
  • 勾選 Assign Azure Digital Twins Data Owner Role 欄位。
  • 當輸入完成後點選 Review + create


Step 4. 建立服務

  • 確認資訊正確則點選 Create


Step 5. 點選 Go to resource


Step 6. 取得 Host name

安裝 AZ Tool 並登入

Step 1. 安裝 AZ Tool


Step 2. 透過 AZ 登入

  • 在終端機輸入下方指令
az login

  • 選擇所要登入的帳號

  • 登入成功

撰寫 Proxy Server

Step 1. 切換路徑到專案目錄並初始化專案

  • 在終端機輸入 npm init -y


Step 2. 安裝套件

  • 在終端機輸入下方指令
npm i @azure/identity axios cors dotenv express http-proxy-middleware


Step 3. 撰寫 Proxy 程式

  • 建立 index.js 檔案並輸入下方資訊

Step 4. 建立 env

  • 建立 .env 檔案並輸入下方資訊
    • 請將 ADT-Host-Name 改成 建立 Azure Digital Twin 段落中 Step 6 所取得的 Host name
AZURE_DIGITAL_TWINS_HOST_NAME=https://ADT-Host-Name

Step 5.執行

  • 在終端機輸入下方指令
node index.js

透過 Node.js 上傳 DTDL 到 Azure Digital Twin

Step 1. 上傳 Device DTDL

  • 在本地端建立 ADT_DTDL_Device.json 檔案並輸入下方資訊
  • 在本地端建立 uploadModel-Device.js 檔案並輸入下方程式
  • 執行程式
    • 在終端機切換目錄到 uploadModel-Device.js 所在位置並輸入 node uploadModel-Device.js


Step 2. 上傳 Room DTDL

  • 在本地端建立 ADT_DTDL_Room.json 檔案並輸入下方資訊
  • 在本地端建立 uploadModel-Room.js 檔案並輸入下方程式
  • 執行程式
    • 在終端機切換目錄到 uploadModel-Room.js 所在位置並輸入 node uploadModel-Room.js


Step 3. 透過 Azure Digital Twins Explorer 看結果

透過 Node.js 在 Azure Digital Twin 中建立 Twin

Step 1. 建立 Device Twin

  • 在本地端建立 addTwin-Device.js 檔案並輸入下方程式
  • 執行程式
    • 在終端機切換目錄到 addTwin-Device.js 所在位置並輸入 node addTwin-Device.js


Step 2. 建立 Room Twin

  • 在本地端建立 addTwin-Room.js 檔案並輸入下方程式
  • 執行程式
    • 在終端機切換目錄到 addTwin-Room.js 所在位置並輸入 node addTwin-Room.js


Step 3. 透過 Azure Digital Twins Explorer 看結果

透過 Node.js 在 Azure Digital Twin 中建立 Twin 間的 Relationship

Step 1. 建立 Room Twin 與 Device Twin 間的關聯

  • 在本地端建立 addRelationship.js 檔案並輸入下方程式
  • 執行程式
    • 在終端機切換目錄到 addRelationship.js 所在位置並輸入 node addRelationship.js


Step 2. 透過 Azure Digital Twins Explorer 看結果

透過 Node.js 取得 Azure Digital Twin 中的 DTDL

Step 1. 取得所有 DTDL

  • 在本地端建立 listModel.js 檔案並輸入下方程式
  • 執行程式
    • 在終端機切換目錄到 listModel.js 所在位置並輸入 node listModel.js


Step 2. 透過 DTDL ID 取得所對應的 DTDL

  • 在本地端建立 getModelById.js 檔案並輸入下方程式
  • 執行程式
    • 在終端機切換目錄到 getModelById.js 所在位置並輸入 node getModelById.js

透過 Node.js 取得 Azure Digital Twin 中的 Twin 資訊

Step 1. 透過 Twin ID 取得 Twin 資訊

  • 在本地端建立 getTwinById.js 檔案並輸入下方程式
  • 執行程式
    • 在終端機切換目錄到 getTwinById.js 所在位置並輸入 node getTwinById.js

透過 Node.js 取得 Azure Digital Twin 中的 Relationship 資訊

Step 1. 取得所有 Relationship

  • 在本地端建立 listRelationships.js 檔案並輸入下方程式
  • 執行程式
    • 在終端機切換目錄到 listRelationships.js 所在位置並輸入 node listRelationships.js


Step 2. 透過 Relationship ID 取得所對應的 Relationship

  • 在本地端建立 listRelationshipById.js 檔案並輸入下方程式
  • 執行程式
    • 在終端機切換目錄到 listRelationshipById.js 所在位置並輸入 node listRelationshipById.js

透過 Node.js 更新 Twin 資訊

Step 1. 更新 Twin 資訊

  • 在本地端建立 updateTwin.js 檔案並輸入下方程式
  • 執行程式
    • 在終端機切換目錄到 updateTwin.js 所在位置並輸入 node updateTwin.js

  • 透過 Azure Digital Twins Explorer 看結果

透過 Node.js 刪除 Relationship

Step 1. 刪除 Relationship

  • 在本地端建立 deleteRelationship.js 檔案並輸入下方程式
  • 執行程式
    • 在終端機切換目錄到 deleteRelationship.js 所在位置並輸入 node deleteRelationship.js

  • 透過 Azure Digital Twins Explorer 看結果

透過 Node.js 刪除 Twin

Step 1. 刪除 Device Twin

  • 在本地端建立 deleteTwin.js 檔案並輸入下方程式
  • 執行程式
    • 在終端機切換目錄到 deleteTwin.js 所在位置並輸入 node deleteTwin.js

  • 透過 Azure Digital Twins Explorer 看結果

透過 Node.js 刪除 DTDL

Step 1. 刪除 Device DTDL

  • 在本地端建立 deleteModel.js 檔案並輸入下方程式
  • 執行程式
    • 在終端機切換目錄到 deleteModel.js 所在位置並輸入 node deleteModel.js

  • 透過 Azure Digital Twins Explorer 看結果

GitHub

List of blogs