【 Cloud 】透過 Azure Event Hub 與 Azure Function 將 Azure Digital Twins 更新資訊顯示於 Time Series Insights - 使用 Azure Portal
內容
- 學習目標
 - 前置準備作業
 - 流程
 - 建立與設定 Twin Event Hub
 - 設定 Azure Digital Twin 的 Endpoint 與 Event route
 - 建立與設定 TSI Event Hub
 - 建立讀取 Twin Hub 資訊與傳送資訊到 TSI Hub 的 Azure Functions
 - 設定身分識別
 - 建立與設定 Time Series Insights
 - 執行與驗證
 
學習目標
- 如何使用 
Azure Portal並透過Azure Event Hub與Azure Function將Azure Digital Twins更新資訊顯示資訊於Time Series Insights 
前置準備作業
- 已建立 Azure 帳號並能正常登入
 - 已於電腦端安裝 Node.js
 - 已於電腦端安裝 IDE,本範例使用 Visual Studio Code
 - 已完成將 
Azure IoT Plug and Play裝置的量測數據透過Azure IoT Hub與Azure Function ( Node.js )傳送到Azure Digital Twins 
流程
- ① 建立並上傳 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。 - ④ 當 
Azure Digital Twins中的 Twin 有變化時傳送資訊到Twin Hub。 - ⑤ 因 
Azure Functions有監聽Twin Hub,故此時也收到Twin Hub傳來的訊息並經過解析後,再將新的資訊傳送到TSI Hub。 - ⑥ 同時 
Time Series Insights也監聽TSI Hub,當TSI Hub接收到新數據時,會將數據顯示於Time Series Insights中 Dashboard。 - ㊟ 本範例主要實作右邊虛線框中的內容。
 
建立與設定 Twin Event Hub
Step 1. 登入到 Microsoft Azure
- 透過瀏覽器開啟 https://portal.azure.com/ 並登入
 
Step 2. 開啟 Azure Event Hub
- 在上方搜尋框輸入 
event hub並點選下方Event Hubs的搜尋結果 
Step 3. 建立 Azure Event Hub Namespace
- 點選左上角的 
Create 
- 輸入相關資訊
- 在 
Subscription欄位請選擇所要使用哪個訂閱帳號 - 在 
Resource Group欄位請選擇使用舊有的或新建立一個新的 - 在 
Namespace name欄位請輸入一個唯一且可識別的名稱- 本範例使用 
event-hub-tests 
 - 本範例使用 
 - 在 
Location欄位請選擇此服務所要建立在哪個資料中心 - 在 
Pricing tier欄位選擇Standard的等級 - 以上資訊輸入完成後請點選左下角的 
Review + create 
 - 在 
 
- 再次確認相關資訊後請按左下角的 
Create 
- 建立完成畫面並點選 
Go to resource 
Step 4. 建立 Twin 的 Event Hub
- 點選左側的 
Event Hubs 
- 點選上方的 
+ Event Hub 
- 輸入相關資訊
- 在 
Name欄位請輸入twin-hub - 以上資訊輸入完成後請點選左下角的 
Create 
 - 在 
 
- 建立完成
 
Step 5. 建立 twin Hub 的授權規則
- 點選所建立的 
twin-hub 
- 點選左側的 
Shared access policies> 再點選上方的+ Add 
- 輸入相關資訊
- 在 
Policy name欄位請輸入可識別的名稱- 本範例使用 
twin-hub-policy 
 - 本範例使用 
 - 點選 
Manage、Send、Listen - 以上資訊輸入完成後請點選 
Create 
 - 在 
 
Step 6. 取得 Twin Event Hub 的 Primary Connection String
- 點選所建立的 Policy
 
- 取得 Connection String
 
設定 Azure Digital Twin 的 Endpoint 與 Event route
Step 1. 建立 Endpoint
- 點選所建立的 Azure Digital Twin > 再點選左側的 
Endpoints 
- 點選 
+ Create an endpoint 
- 輸入相關資訊
Name欄位請輸入twin-hub-endpointEndpoint type欄位請選擇Event HubSubscription欄位請選擇所要使用的訂閱Event hub namespace欄位請選擇建立與設定 Twin Event Hub段落所建立的Azure Event Hub Namespace- 本範例使用 
event-hub-tests 
- 本範例使用 
 Event Hub欄位請選擇twin-hubAuthorization rule欄位請選擇建立與設定 Twin Event Hub段落的Step 5所建立的 twin Hub 的授權規則- 以上欄位都輸入完成後點選 
Save 
 
- 建立完成
 
Step 2. 建立 Event route
- 點選左側的 
Event routes 
- 點選 
+ Create an event route 
- 輸入相關資訊
Name欄位請輸入twin-hub-event-routeEndpoint欄位請選擇twin-hub-endpointEvent types欄位請選擇Twin Update- 以上欄位都輸入完成後點選 
Save 
 
- 建立完成
 
建立與設定 TSI Event Hub
Step 1. 建立 TSI 的 Event Hub
- 回到 
建立與設定 Twin Event Hub段落所建立的Azure Event Hub Namespace 
- 點選左側的 
Event Hubs 
- 點選上方的 
+ Event Hub 
- 輸入相關資訊
- 在 
Name欄位請輸入tsi-hub - 以上資訊輸入完成後請點選左下角的 
Create 
 - 在 
 
- 建立完成
 
Step 2. 建立 TSI Hub 的授權規則
- 點選所建立的 
tsi-hub 
- 點選左側的 
Shared access policies> 再點選上方的+ Add 
- 輸入相關資訊
- 在 
Policy name欄位請輸入可識別的名稱- 本範例使用 
tsi-hub-policy 
 - 本範例使用 
 - 點選 
Send、Listen - 以上資訊輸入完成後請點選 
Create 
 - 在 
 
Step 3. 取得 TSI Event Hub 的 Primary Connection String
- 點選所建立的 Policy
 
- 取得 Connection String
 
建立讀取 Twin Hub 資訊與傳送資訊到 TSI Hub 的 Azure Functions
Step 1. 在上方搜尋框輸入 function 關鍵字並點選 Function App 的搜尋結果
Step 2. 點選 + Create
Step 3. 輸入相關資訊
Subscription欄位選擇所要使用的訂閱。Resource group欄位輸入此 Function 所要歸屬於的群組。Function App name欄位輸入一個可識別的名稱- 本範例使用 
twin-hub-to-tsi-hub 
- 本範例使用 
 Publish欄位請選擇Code。Runtime stack欄位請選擇Node.js。Version欄位請選擇14 LTS。Region欄位請選擇服務所要位於的資料中心。- 當輸入完成後點選 
Review + create 
Step 4. 建立服務
- 確認資訊正確則點選 
Create 
Step 5. 點選 Go to resource
Step 6. 建立 Twin_EventHub_To_Tsi_EventHub
- 點選左側的 
Functions> 再點選上方的+ Create 
- 選擇 
Azure Event Hub trigger 
Template details輸入相關資訊New Function欄位請輸入Twin_EventHub_To_Tsi_EventHub事件中樞連線欄位請點選New- 點選 
Event Hub 事件中樞連線請選擇建立與設定 Twin Event Hub段落所建立的 Azure Event Hub Namespace事件中樞連線請選擇twin-hub事件中樞連線請選擇twin-hub-policy- 當輸入完成後點選 
OK 
- 點選 
 事件中樞名稱請輸入twin-hub事件中樞取用者群組請輸入$Default- 當輸入完成後點選 
Create 
- 設定 
Twin_EventHub_To_Tsi_EventHub- ① 點選 
Twin_EventHub_To_Tsi_EventHub - ② 點選左側的 
Code + Test 
 - ① 點選 
 
- 點選上方的選單選擇 
index.js再輸入下方程式後再點選上方的Save按鈕 
Step 7. 設定 Config
- 點選左側的 
Configuration 
- 點選 
+ New application setting 
- 設定 TSI Event Hub 的名稱
Name欄位請輸入TSI_EVENTHUB_NAMEValue欄位請輸入建立tsi-hub- 當輸入完成後點選 
OK 
 
- 再點選 
+ New application setting 
- 設定 TSI Event Hub 的連接字串
Name欄位請輸入TSI_EVENTHUB_CONNECTION_STRINGValue欄位請輸入在建立與設定 TSI Event Hub段落Step 3時所取得取得 TSI Event Hub 的 Primary Connection String- 當輸入完成後點選 
OK 
 
- 點選 
Save 
- 點選 
Continue 
Step 8. 安裝套件
- 點選左側的 
Advanced Tools> 再點選Go → 
- 點選上方的 
Debug console>CMD 
- 切換路徑到 
Twin_EventHub_To_Tsi_EventHub資料夾- 請輸入 
cd site\wwwroot\Twin_EventHub_To_Tsi_EventHub 
 - 請輸入 
 
- 初始化專案
- 請輸入 
npm init -y 
 - 請輸入 
 
- 安裝 
@azure/event-hubs與dotenv套件 ( 需花一段時間進行安裝 )- 請輸入 
npm i @azure/event-hubs dotenv 
 - 請輸入 
 
設定身分識別
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欄位請點選SubscriptionSubscription欄位請點選所要使用的訂閱Role欄位請選擇Azure Digital Twins Data Owner- 資料選取完成後再點選 
Save 
Step 7. 設定完成
建立與設定 Time Series Insights
Step 1. 建立 Time Series Insights
- 在上方搜尋框輸入 
Time Series Insights關鍵字並點選Time Series Insights environments的搜尋結果 
- 點選 
+ Create 
- 輸入 
Basic相關資訊Subscription欄位選擇所要使用的訂閱Resource group欄位請輸入此服務所要歸屬於的群組Environment name欄位請輸入唯一且可識別的名稱- 本範例使用 
adtTsi 
- 本範例使用 
 Location欄位請選擇此服務所要位於的資料中心Property name欄位請輸入$dtIdStorage account name欄位請輸入唯一且可識別的名稱- 本範例使用
adttsiblob 
- 本範例使用
 - 以上資訊輸入完成後點選 
Next: Event Source > 
 
- 輸入 
Event Source相關資訊Source type欄位請選擇Event HubName欄位請輸入唯一且可識別的名稱- 本範例使用 
adt-tsi-event-hub 
- 本範例使用 
 Subscription欄位選擇所要使用的訂閱Event Hub namespace欄位請選擇建立與設定 Twin Event Hub段落所建立的Azure Event Hub NamespaceEvent Hub name欄位請選擇tsi-hubEvent Hub access policy name欄位請選擇tsi-hub-policyEvent Hub consumer group欄位請選擇$Default- 以上資訊輸入完成後點選 
Review + Create 
 
- 確認資訊正確則點選 
Review + Create 
- 點選 
Go to resource 
Step 2.開啟 TSI Explorer
- 點選上方 
TSI Explorer 
- 開啟完成
 
執行與驗證
Step 1. 執行 send.js
- ① 開啟終端機再切換工作路徑到剛才所建立 
send.js程式的地方 - ② 執行下方指令
 
node send.js
Step 2. 查看 TSI
- 點選所設定的 IoT Hub Device 名稱 > 再點選 
temperature> 再點選新增 
- 出現 
Step 1所上傳的數據