Node-RED เบื้องต้น
Node-RED คืออะไร?
Node-RED คือเครื่องมือแบบ Visual Programming (ลากเส้นต่อกล่อง) สำหรับการทำงานกับ IoT, Automation, API และอื่นๆ โดยเขียนด้วย Node.js ใช้งานผ่านเว็บเบราว์เซอร์
เริ่มต้นใช้งาน Node-RED
1. ติดตั้ง Node.js
Node-RED ต้องการ Node.js ในระบบก่อน:
- ไปที่ https://nodejs.org และดาวน์โหลดเวอร์ชัน LTS
- ติดตั้งตามปกติ
2. ติดตั้ง Node-RED
เปิด Terminal หรือ Command Prompt แล้วพิมพ์:
npm install -g --unsafe-perm node-red
3. เปิด Node-RED
ใน Terminal พิมพ์:
node-red
จะเห็นข้อความประมาณว่า:
Server now running at http://127.0.0.1:1880/
เปิดเว็บเบราว์เซอร์ไปที่ http://localhost:1880
หน้าตา Node-RED
ส่วนประกอบหลัก:
- Nodes (กล่อง): ฟังก์ชันต่างๆ เช่น input, output, logic
- Flow (ผังงาน): หน้ากระดานที่เราลากกล่องมาต่อกัน
- Deploy: ปุ่มสำหรับบันทึกและเริ่มใช้งาน flow
ตัวอย่างแรก: เปิด-ปิดไฟด้วย Switch
ลาก Node ตามนี้:
-
[inject]
[debug]
-
ดับเบิ้ลคลิก inject แล้วตั้งค่าดังนี้:
-
Payload:
string
-
ค่า:
"เปิดไฟ"
-
-
ดับเบิ้ลคลิก debug แล้วเลือกแสดง msg.payload
กดปุ่ม Inject ดูค่าที่แสดงใน debug ด้านขวา
Tip: ลาก Node switch
, function
, mqtt
, http
มาใช้ต่อได้ เช่น เชื่อมกับไฟ LED หรือ API
ตัวอย่าง Nodes ยอดนิยม
Node | ใช้งานสำหรับ |
---|---|
inject |
ส่งค่าเริ่มต้นเข้า flow |
debug |
แสดงค่าที่ปลายทาง |
function |
เขียน JavaScript เพิ่มเติม |
mqtt |
เชื่อมต่อกับ IoT |
http |
ส่งหรือรับ API |
rpi gpio |
ควบคุม Raspberry Pi GPIO |
ตัวอย่าง
- Node-RED เชื่อมกับเซนเซอร์
- Node-RED อ่านค่าจาก MQTT
- Node-RED สั่ง Relay
- Node-RED เชื่อมกับ PLC หรือ SCADA
Node-RED เชื่อมกับเซนเซอร์
แนวทางการเชื่อม Node-RED กับเซนเซอร์
1. เซนเซอร์ต่อกับ Arduino / ESP32 / NodeMCU
เช่น:
- Arduino อ่านค่าจากเซนเซอร์
- ส่งค่าผ่าน Serial / MQTT / HTTP ไปยัง Node-RED
ตัวอย่าง 1: Arduino + DHT11 ส่งค่าอุณหภูมิผ่าน Serial มา Node-RED
อุปกรณ์:
- Arduino UNO
- เซนเซอร์ DHT11
- สาย USB ต่อกับคอม
Sketch ใน Arduino:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <DHT.h> DHT dht(2, DHT11); // ต่อที่ขา D2 void setup() { Serial.begin(9600); dht.begin(); } void loop() { float t = dht.readTemperature(); float h = dht.readHumidity(); if (!isnan(t) && !isnan(h)) { Serial.print("T:"); Serial.print(t); Serial.print(",H:"); Serial.println(h); } delay(2000); } |
Node-RED ตั้งค่า:
1.เพิ่ม Node serial in
- พอร์ต: COMx (ตามที่ Arduino ต่อ)
- Baudrate: 9600
2.ต่อกับ Node function
(แปลงข้อมูล):
1 2 3 4 5 6 |
let data = msg.payload.trim(); // ตัวอย่าง: "T:25.4,H:60.2" let parts = data.split(','); let t = parseFloat(parts[0].split(':')[1]); let h = parseFloat(parts[1].split(':')[1]); msg.payload = { temperature: t, humidity: h }; return msg; |
3. ต่อกับ Node debug
หรือ ui_gauge
หากทำ Dashboard
2. เซนเซอร์ต่อกับ Raspberry Pi
- ใช้ Node
rpi-gpio in/out
ใน Node-RED ควบคุมหรืออ่านค่า GPIO ได้เลย - ใช้ Python script หรือ Bash แล้วส่งค่าผ่าน MQTT หรือ exec
3. ใช้โปรโตคอล MQTT (นิยมมาก)
- ใช้ Node
mqtt in
เพื่อรับค่าจากเซนเซอร์ที่ publish มาผ่าน MQTT broker เช่น Mosquitto - Node-RED ฟังค่าผ่าน topic เช่น
sensor/temp