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

【 Cloud 】透過 Node.js 的 Express 與 Proxy Server 操作 Azure Digital Twin
Photo by Olga Tsai / Unsplash

內容

  • 學習目標
  • 前置準備作業
  • 建立 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 的搜尋結果

---2022-01-10---8.23.04


Step 2. 點選上方 + Create

---2022-01-10---8.24.40


Step 3. 輸入相關資訊

---2021-12-23---9.48.45

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

---2022-01-10---8.28.05


Step 4. 建立服務

  • 確認資訊正確則點選 Create

---2022-01-10---8.28.47


Step 5. 點選 Go to resource

---2022-01-10---8.30.37


Step 6. 取得 Host name

---2022-01-10---8.31.23

安裝 AZ Tool 並登入

Step 1. 安裝 AZ Tool


Step 2. 透過 AZ 登入

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

---2022-01-10---10.00.55

  • 選擇所要登入的帳號

---2022-01-10---10.01.49

  • 登入成功

---2022-01-10---10.02.22

---2022-01-10---10.03.02

撰寫 Proxy Server

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

  • 在終端機輸入 npm init -y

---2022-01-10---8.34.54-1


Step 2. 安裝套件

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

---2022-01-10---8.36.42-1


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

---2022-01-10---8.49.47-2

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

Step 1. 上傳 Device DTDL

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

---2022-01-10---8.52.48


Step 2. 上傳 Room DTDL

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

---2022-01-10---8.56.04


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

---2022-01-10---8.59.00

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

Step 1. 建立 Device Twin

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

---2022-01-10---9.01.45


Step 2. 建立 Room Twin

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

---2022-01-10---9.03.57


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

---2022-01-10---9.04.22

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

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

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

---2022-01-10---9.08.46


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

---2022-01-10---9.09.21

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

Step 1. 取得所有 DTDL

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

---2022-01-10---9.15.34


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

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

---2022-01-10---9.18.59

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

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

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

---2022-01-10---9.24.35

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

Step 1. 取得所有 Relationship

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

---2022-01-10---9.27.43


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

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

---2022-01-10---9.30.45

透過 Node.js 更新 Twin 資訊

Step 1. 更新 Twin 資訊

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

---2022-01-10---9.34.21

  • 透過 Azure Digital Twins Explorer 看結果

---2022-01-10---9.33.16

---2022-01-10---9.34.47

透過 Node.js 刪除 Relationship

Step 1. 刪除 Relationship

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

---2022-01-10---9.39.35

  • 透過 Azure Digital Twins Explorer 看結果

---2022-01-10---9.38.46

---2022-01-10---9.39.50

透過 Node.js 刪除 Twin

Step 1. 刪除 Device Twin

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

---2022-01-10---9.42.28

  • 透過 Azure Digital Twins Explorer 看結果

---2022-01-10---9.39.50

---2022-01-10---9.42.43

透過 Node.js 刪除 DTDL

Step 1. 刪除 Device DTDL

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

---2022-01-10---9.45.08

  • 透過 Azure Digital Twins Explorer 看結果

---2022-01-10---9.42.43

---2022-01-10---9.45.42

GitHub

List of blogs