【 Cloud 】透過 Node.js 使用 Azure Function 將遙測資料從 Azure IoT Hub 儲存到 PostgreSQL 資料庫
內容
- 學習目標
- 前置準備作業
- 於 PostgreSQL 中新增資料庫 (DB) 與資料表 (Table)
- 建立 Azure IoT Hub
- 建立 Azure Functions
- 撰寫傳送 Node.js 程式
- 執行與驗證
學習目標
- 如何透過 Node.js 使用 Azure Function 將遙測資料從 Azure IoT Hub 儲存到 PostgreSQL 資料庫
前置準備作業
- 已建立 Azure 帳號並能正常登入
- 已於電腦端安裝 Node.js
- 已於電腦端安裝 IDE,本範例使用 Visual Studio Code
於 PostgreSQL 中新增資料庫 (DB) 與資料表 (Table)
Step 1. 透過 pgAdmin 瀏覽 PostgreSQL
Step 2. 建立 DB
- 對
Dababases點選右鍵 >Create>Database...
- 在
Database欄位輸入telemetryTest
- 點選
Save
Step 3. 開啟搜尋工具
- 點選左側的
telemetryTest>Query Tool...
Step 4. 建立 Table
- 在
Query Editor輸入方指令
- 再點選上方閃電的執行按鈕
- 執行成功
Step 5. 新增紀錄到 Table
- 在
Query Editor輸入方指令
- 再點選上方閃電的執行按鈕
- 執行成功
Step 6. 查詢 Table
- 在
Query Editor輸入方指令
- 再點選上方閃電的執行按鈕
- 執行成功
Step 7. 刪除紀錄
- 在
Query Editor輸入方指令
- 再點選上方閃電的執行按鈕
- 執行成功
建立 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欄位請選擇 SignalR 服務所要位於的資料中心。- 當輸入完成後點選
Review + create
Step 4. 建立服務
- 確認資訊正確則點選
Create
Step 5. 點選 Go to resource
Step 6. 建立 IoTHub_EventHub_To_Pg
- 點選左側的
Functions> 再點選上方的+ Create
- 選擇
IoT Hub (Event Hub)
Template details輸入相關資訊New Function欄位請輸入IoTHub_EventHub_To_Pg事件中樞連線欄位請點選New> 點選IoT Hub>事件中樞連線請選擇建立 Azure IoT Hub段落所建立的 IoT Hub,當輸入完成後點選OK- 當輸入完成後點選
Create
- 設定
IoTHub_EventHub_To_Pg- ① 點選
IoTHub_EventHub_To_Pg - ② 點選左側的
Code + Test
- ① 點選
- 點選上方的選單選擇
index.js再輸入下方程式後再點選上方的Save按鈕- ㊟ 請修改
index.js程式中的第 7、8、9 行中的PostgreSQL 所在位置、PostgreSQL 的登入帳號、PostgreSQL 的登入密碼
- ㊟ 請修改
Step 7. 安裝套件
- 點選左側的
Advanced Tools> 再點選Go →
- 點選上方的
Debug console>CMD
- 切換路徑到
IoTHub_EventHub_To_Pg資料夾- 請輸入
cd site\wwwroot\IoTHub_EventHub_To_Pg
- 請輸入
- 初始化專案
- 請輸入
npm init -y
- 請輸入
- 安裝
pg套件 ( 需花一段時間進行安裝 )- 請輸入
npm i pg
- 請輸入
撰寫傳送 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. 驗證
- 透過 pgAdmin 查看
Telemetry資料表是否有收到Step 1所上傳的資料 ( 過幾秒後再進行查詢 )