【 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
所上傳的資料 ( 過幾秒後再進行查詢 )