Node-RED 安裝步驟暨執行node-red程式
Node-RED 可以在多種環境下運行,包括本地電腦 (Windows, macOS, Linux)、Raspberry Pi、雲端服務等。最常見的安裝方式是使用 npm (Node.js 的套件管理器)。步驟 1: 安裝 Node.js 和 npm
Node-RED 是基於 Node.js 運行的,所以你必須先安裝 Node.js。npm (Node Package Manager) 會隨 Node.js 一起安裝。
下載 Node.js: 前往 Node.js 官方網站:
。https://nodejs.org/ 選擇版本:
通常建議下載 LTS (長期支援版),它更穩定。
下載對應你作業系統的版本 (Windows 安裝程式、macOS 安裝程式、Linux 二進位檔等)。
執行安裝程式 (Windows/macOS):
下載後,運行安裝程式並按照提示一步步完成安裝。基本上,一路「Next」或「Continue」即可。
在安裝過程中,請確保勾選了「Add to PATH」選項,這樣你才能在終端機中直接使用
node和npm命令。
驗證安裝: 安裝完成後,打開你的終端機 (macOS/Linux) 或 命令提示字元/PowerShell (Windows),輸入以下命令並按下 Enter:
node -vnpm -v如果它們顯示了版本號(例如
v20.x.x和v10.x.x),則表示 Node.js 和 npm 已成功安裝。
步驟 2: 安裝 Node-RED
有了 Node.js 和 npm 之後,安裝 Node-RED 就非常簡單了。
在你的終端機或命令提示字元中,輸入以下命令並按下 Enter:
npm install -g --unsafe-perm node-red
npm install -g: 表示全域安裝,這樣 Node-RED 就可以在任何目錄下運行。--unsafe-perm: 在某些 Linux 或 macOS 系統上,這可以避免權限問題,尤其是在全域安裝時。
這個命令會下載並安裝 Node-RED 及其所有核心依賴。這可能需要一些時間,請耐心等待。
步驟 3: 啟動 Node-RED
安裝完成後,你就可以啟動 Node-RED 了。
在終端機或命令提示字元中,輸入:
你將看到一些啟動日誌。當你看到類似這樣的訊息時,表示 Node-RED 已經成功運行:
20 Jul 08:30:00 - [info] Server now running at http://127.0.0.1:1880/
20 Jul 08:30:00 - [info] Flows saved to /Users/yourusername/.node-red/flows.json
步驟 4: 訪問 Node-RED 編輯器
打開你的網頁瀏覽器 (Chrome, Firefox 等),然後輸入上面日誌中顯示的網址,通常是:
http://localhost:1880 或 http://127.0.0.1:1880
你將會看到 Node-RED 的網頁編輯器介面。
安裝和管理 Node-RED 節點
Node-RED 的強大之處在於其豐富的節點生態系統。這個專案中,我們需要安裝 node-red-dashboard 和 node-red-node-sqlite。
步驟 1: 打開「管理調色盤」
在 Node-RED 編輯器介面中:
點擊右上角的選單圖示 (通常是三條橫線)。
選擇 「Palette Manager」 (或「管理調色盤」)。
步驟 2: 安裝 Dashboard 節點
在「Palette Manager」視窗中,點擊上方的 「Install」 (或「安裝」) 選項卡。
在搜尋框中輸入
node-red-dashboard。當搜尋結果出現時,找到
node-red-dashboard節點,然後點擊右側的 「Install」 按鈕。確認安裝,Node-RED 會自動下載並安裝 Dashboard 相關的節點。安裝完成後,你會在左側的節點列表中看到新的 Dashboard 相關節點 (例如
ui_button,ui_text,ui_gauge等)。
步驟 3: 安裝 SQLite 節點
在同一個「Palette Manager」視窗的 「Install」 選項卡中。
在搜尋框中輸入
node-red-node-sqlite。找到
node-red-node-sqlite節點,然後點擊右側的 「Install」 按鈕。確認安裝。安裝完成後,你會在左側的節點列表中看到
sqlite和sqlite-db節點。
Node-RED Dashboard 的使用
安裝 node-red-dashboard 節點後,你就可以開始建立視覺化的儀表板了。
訪問 Dashboard 介面: 在 Node-RED 編輯器中,點擊右上角的選單圖示,然後選擇 「Dashboard」。或者在瀏覽器中直接訪問
http://localhost:1880/ui或 http://127.0.0.1:1880/ui儀表板佈局: Dashboard 節點 (
ui_group,ui_tab等) 允許你組織你的儀表板。ui_tab代表一個主要的頁面或標籤頁。ui_group在每個頁面中創建一個區塊,你可以將相關的 UI 控制元件放在同一個群組中。
UI 節點的使用:
從左側的節點列表中,找到
dashboard類別下的節點,例如Button(按鈕),Text(文本顯示),Chart(圖表),Table(表格) 等。將這些節點拖曳到你的流程編輯區。
雙擊這些 UI 節點,你可以在其配置介面中選擇它們要顯示在哪個
Tab和Group下。
本專案中使用的 Dashboard 節點:
ui_tab: 用於創建儀表板的頁面。ui_group: 用於在儀表板頁面上組織 UI 元素,例如「LED Control」、「DHT22 Sensor Data」、「Event Log」和「Database Browser」。ui_button: 用於創建 LED ON/OFF/FLASH/TIMER 的控制按鈕。ui_text: 用於顯示即時的溫度、濕度值,以及事件日誌的文本框。ui_table: 用於顯示 SQLite 資料庫中的歷史事件數據。這是實現「資料庫瀏覽」功能的關鍵節點。
Node-RED SQLite 節點的使用
node-red-node-sqlite 節點讓你可以在 Node-RED 中輕鬆地與 SQLite 資料庫互動。
sqlite-db配置節點:這個節點本身不會出現在流程中,它是一個配置節點。
當你第一次拖曳一個
sqlite節點到流程中,或雙擊它時,你可以在Database選項旁邊點擊鉛筆圖示來新增或編輯sqlite-db配置。在配置中,你需要設定 SQLite 資料庫檔案的路徑。通常設為
esp32.db(如果你沒有指定完整路徑,它會在 Node-RED 的運行目錄下創建)。確保
Mode設為file。
sqlite節點 (操作資料庫):你可以使用這個節點來執行 SQL 查詢(INSERT, SELECT, UPDATE, DELETE 等)。
SQL 語句: SQL 查詢通常放在
msg.topic中,而對應的參數則放在msg.payload中(當使用預處理語句時)。輸出: 查詢結果會從節點的輸出端口送出,可以連接到 Debug 節點查看,或者連接到
ui_table等 UI 節點顯示。
本專案中使用的 SQLite 節點:
sqlite-db: 一個共享的配置節點,定義了esp32.db資料庫的路徑。sqlite: 兩個主要用途:寫入資料: 接收來自按鈕和 MQTT 訂閱的事件數據(透過
function節點處理成 SQL INSERT 語句),將其寫入events表格。讀取資料: 接收來自「Refresh DB」按鈕的觸發,執行 SQL SELECT 語句查詢
events表格的所有數據,然後將結果傳遞給ui_table節點顯示。
匯入Json檔案的步驟:
在 Node-RED 介面,點擊右上角的選單 -> Import (匯入) -> From Clipboard (從剪貼簿)。
將上面複製的 JSON 程式碼貼到文字框中,然後點擊 Import (匯入)。
確認 MQTT Broker 節點 (名稱為 "HiveMQ Public Broker" "broker.mqttgo.io" ) 中的 Client ID,將 NodeRED_IoT_Client_YourName_001 修改為你的獨特 ID,以避免與其他人的連接衝突。
點擊右上角的 Deploy (部署) 按鈕,使流程生效。
Node-RED 流程詳解
這個 Node-RED 流程主要包含以下部分:
MQTT Broker Configuration (
e6f4325a75510619): 設定連接到 HiveMQ 或 broker.mqttgo.io 公共 Broker。請務必修改clientid為你獨特的 ID。Dashboard UI Groups and Tabs:
ESP32 IoT Dashboard(273a502422f98f98):主儀表板頁面。LED Control(2708b73a218d6a6a):LED 控制按鈕的群組。DHT22 Sensor Data(c1f20dd979d554a9):顯示溫濕度數據的群組。Event Log(c711a31b7e5108ce):顯示即時事件日誌的群組。Database Browser(d0554c9c222ff4ed):顯示 SQLite 數據的群組。
LED Control Buttons (
ui_buttonnodes):LED ON,LED OFF,LED FLASH,LED TIMER:這些按鈕配置為發布對應的命令字符串 (on,off,flash,timer) 到esp32/led/controlMQTT topic。它們連接著一個
mqtt out節點 (6b653a6976693822) 將命令發送到 MQTT Broker。同時,每個按鈕也連接到一個
function節點 (Log LED ON,Log LED OFF等),用於準備資料庫寫入的 SQL 語句和數據。
DHT22 Data In (
mqtt innodes):Temperature In(f55075677ed35293) 訂閱esp32/dht/temperature。Humidity In(e44d567086ce7b54) 訂閱esp32/dht/humidity。它們接收到數據後,會:
發送到
ui_text節點 (Temperature,Humidity) 在儀表板上顯示。發送到
function節點 (Log Temperature,Log Humidity) 準備資料庫寫入。
SQLite Database Integration (
sqliteandsqlite-dbnodes):sqlite-db(a024c0d9a6c75249):這是一個配置節點,指向你的 SQLite 資料庫檔案esp32.db。它會自動在 Node-RED 的運行目錄下創建這個檔案。sqlite(c060205f27bb1c2c):這是寫入資料庫的節點。所有Log函式節點都會將 SQL INSERT 語句 (msg.topic) 和對應的數據 (msg.payload) 發送給它。Create Table Once(060d4b1a8d05ddac):一個inject節點,配置為在 Node-RED 啟動時執行一次 SQL 語句,用於創建events表格,如果它不存在的話。
Event Log Display (
ui_textnode):Event Log Display(a19001309855523f):接收所有Log函式節點的輸出,將事件訊息顯示在儀表板的文本框中。
Database Browser (
ui_tableandsqlitenodes):Refresh DB(1f8e6c7020a6e2e5):一個inject按鈕,點擊後會觸發查詢資料庫。Query DB(4b600969d2753a47):一個sqlite節點,配置為執行 SQL SELECT 語句 (SELECT id, date, time, event FROM events ORDER BY id DESC)。Database View(63f4581ed6b567b4):一個ui_table節點,它會接收Query DB節點的查詢結果,並以表格形式顯示在 Dashboard 上。它已經配置了列名和寬度。
操作步驟
啟動 Wokwi ESP32 模擬器:
確保你的 Wokwi 專案正在運行之前提供的 ESP32 Arduino 程式碼。
檢查 Wokwi 的 Serial Monitor,確認 ESP32 成功連接 Wi-Fi 和 MQTT Broker。
啟動 Node-RED:
在你的電腦上啟動 Node-RED (例如在終端機中輸入
node-red)。打開網頁瀏覽器,導航到 Node-RED 介面(通常是
http://localhost:1880)。匯入上述的 Node-RED 流程並點擊 Deploy。
打開 Node-RED Dashboard:
在 Node-RED 介面中,點擊右上角的選單 -> Dashboard。
或者直接在瀏覽器中訪問
http://localhost:1880/ui。你將看到一個包含「LED Control」、「DHT22 Sensor Data」、「Event Log」和「Database Browser」的儀表板。
控制與查看數據:
LED 控制: 在 Dashboard 上點擊 LED 控制按鈕(ON/OFF/FLASH/TIMER),觀察 Wokwi 模擬器中的 LED 狀態變化。
DHT22 數據: 觀察 Dashboard 上「DHT22 Sensor Data」區域的溫度和濕度數據更新。
事件日誌: 「Event Log」區域會即時顯示所有發送的命令和接收到的感測器數據。
資料庫瀏覽: 在「Database Browser」區域,點擊 Refresh DB 按鈕。你會看到
events表格中的所有記錄會顯示在下方的表格中。每當有新事件發生並被記錄到資料庫後,你都可以點擊 Refresh DB 來更新顯示。
.png)
沒有留言:
張貼留言