【 Cloud 】將 Azure IoT Plug and Play 裝置的量測數據透過 Azure IoT Hub 與 Azure Function ( Node.js ) 傳送到 Azure Digital Twins
內容
- 學習目標
- 前置準備作業
- 流程
- 上傳 DTDL 到 Azure Digital Twins 並建立 Twins
- 建立 Azure IoT Hub
- 建立 Azure Functions
- 設定身分識別
- 撰寫傳送 Node.js 程式
- 執行與驗證
學習目標
- 如何將
Azure IoT Plug and Play
裝置的量測數據透過Azure IoT Hub
與Azure Function ( Node.js )
傳送到Azure Digital Twins
前置準備作業
- 已建立 Azure 帳號並能正常登入與使用
- 已於完成建立與設定
Azure Digital Twins
、Azure Active Directory ( Azure AD )
- 已於電腦端安裝 IDE,本範例使用 Visual Studio Code
- 已於電腦端安裝 Node.js
流程
- 建立並上傳 Device 的 JSON Model 的定義語言檔案 (
Digital Twin Definition Language - DTDL
) - 透過
Azure IoT Plug and Play ( PnP )
的Device
端程式隨機產生溫度數據後上傳到Azure IoT Hub
Azure Function
接收Azure IoT Hub
內建Event Hub
裡的Consumer Groups
的溫度數據後,將其數據傳送到Azure Digital Twins
上傳 DTDL 到 Azure Digital Twins 並建立 Twins
Step 1. 在本地端電腦建立 device.json
檔案並填入下方 JSON 資料
Step 2. 開啟 Azure Digital Twins Explorer
- 到所建立
Azure Digital Twins
服務的Overview
頁面並點選上方的Azure Digital Twins Explorer
Step 3. 上傳 DTDL
- 點選
Upload a Model
按鈕
- 選擇
Step 1
所建立的device.json
檔案並點選打開
- 上傳完成
Step 4. 建立 Twins
- 點選
...
> 再點選Create a Twin
- 在
New Twin name
欄位輸入device001
> 再點選Save
- 建立完成
Step 5. 初始化
- 點選
device001
- 新增初始化數字
168
- 點選儲存按鈕
- 初始化成功
建立 Azure IoT Hub
Step 1. 在上方搜尋框輸入 iot hub
關鍵字並點選 IoT Hub
的搜尋結果
Step 2. 點選 + Create
Step 3. 輸入相關資訊
Subscription
欄位選擇所要使用的訂閱。Resource group
欄位輸入此 IoT Hub 所要歸屬於的群組。IoT Hub Name
欄位輸入一個可識別的名稱。Region
欄位擇此 IoT Hub 要建置於哪個資料中心。- 當輸入完成後點選
Review + create
Step 4. 建立服務
- 確認資訊正確則點選
Create
Step 5. 點選 Go to resource
Step 6. 取得 IoT Hub Connection String
- 點選左側
Shared access policies
>iothubowner
- 點選右側
Primary connection string
旁的複製按鈕
Step 7. 取得 IoT Hub 中的 Device Connection String
- 點選
Devices
>+ Add Device
- 輸入相關資訊
Device ID
欄位請輸入device001
- 當輸入完成後點選
Save
- 點選
device001
- 取得
Device Connection String
- 點選
Primary Connection String
右側的複製按鈕
- 點選
建立 Azure Functions
Step 1. 在上方搜尋框輸入 function
關鍵字並點選 Function App
的搜尋結果
Step 2. 點選 + Create
Step 3. 輸入相關資訊
Subscription
欄位選擇所要使用的訂閱。Resource group
欄位輸入此 Function 所要歸屬於的群組。Function App name
欄位輸入一個可識別的名稱。Publish
欄位請選擇Code
。Runtime stack
欄位請選擇Node.js
。Version
欄位請選擇14 LTS
。Region
欄位請選擇服務所要位於的資料中心。- 當輸入完成後點選
Review + create
Step 4. 建立服務
- 確認資訊正確則點選
Create
Step 5. 點選 Go to resource
Step 6. 建立 IoTHub_EventHub_To_Adt
- 點選左側的
Functions
> 再點選上方的+ Create
- 選擇
IoT Hub (Event Hub)
Template details
輸入相關資訊New Function
欄位請輸入IoTHub_EventHub_To_Adt
事件中樞連線
欄位請點選New
> 點選IoT Hub
>事件中樞連線
請選擇建立 Azure IoT Hub
段落所建立的 IoT Hub,當輸入完成後點選OK
- 當輸入完成後點選
Create
- 設定
IoTHub_EventHub_To_Adt
- ① 點選
IoTHub_EventHub_To_Adt
- ② 點選左側的
Code + Test
- ① 點選
- 點選上方的選單選擇
index.js
再輸入下方程式後再點選上方的Save
按鈕- ㊟ 請修改
index.js
程式中的第 27 行
中的ADT-Host-Name
改成所立Azure Digital Twins
的Host name
- ㊟ 請修改
Step 7. 安裝套件
- 點選左側的
Advanced Tools
> 再點選Go →
- 點選上方的
Debug console
>CMD
- 切換路徑到
IoTHub_EventHub_To_Adt
資料夾- 請輸入
cd site\wwwroot\IoTHub_EventHub_To_Adt
- 請輸入
- 初始化專案
- 請輸入
npm init -y
- 請輸入
- 安裝
@azure/identity
與axios
套件 ( 需花一段時間進行安裝 )- 請輸入
npm i @azure/identity axios
- 請輸入
設定身分識別
Step 1. 點選所建立的 Azure Function
左側的 identity
Step 2. 將 Status
設成 On
> 再點選 Save
Step 3. 再點選 Yes
Step 4. 點選 Azure role assignments
Step 5. 點選 + Add role assignment (Preview)
Step 6. 填寫相關資訊
Scope
欄位請點選Subscription
Subscription
欄位請點選所要使用的訂閱Role
欄位請選擇Azure Digital Twins Data Owner
- 資料選取完成後再點選
Save
Step 7. 設定完成
撰寫傳送 Node.js 程式
Step 1. 初始化專案
- 在終端機輸入下方指令
npm init -y
Step 2. 安裝套件
- 在終端機輸入下方指令
npm i dotenv azure-iot-device-mqtt azure-iot-device
Step 3. 撰寫程式
- 建立一個名為
send.js
的程式,其程式如下 :
Step 4. 於設定檔新增資訊
- 在剛才所建的
.env
設定檔中新增下方資訊 :- 請將
=
右側填入建立 Azure IoT Hub
段落中Step 7
所取得的Device Connection String
IOT_HUB_DEVICE_CONNECTION_STRING=
- 請將
執行與驗證
Step 1. 執行 send.js
- ① 開啟終端機再切換工作路徑到剛才所建立
send.js
程式的地方 - ② 執行下方指令
node send.js
Step 2. 透過 Azure Digital Twins Explorer
進行驗證
- 點選
Azure Digital Twins Explorer
右上方的Run Query
- 查詢結果
Temperature
的數值已從168
變為Step 1
所上傳的數值13