Journal

Dashboard รวมศูนย์ IoT: MQTT Broker + Node-RED + InfluxDB + Grafana สำหรับ Smart Home

Unified IoT Dashboard: MQTT Broker + Node-RED + InfluxDB + Grafana for Smart Home

12 พฤษภาคม 2569 · 1 นาที
smart→ INTELLIGENCE

ทำไมต้องมี Unified Dashboard

บ้านอัจฉริยะสมัยใหม่มีอุปกรณ์หลาย Ecosystem: Zigbee Sensor, Wi-Fi Device, Z-Wave Panel, IP Camera แต่ละ Ecosystem มี App แยกกัน การสลับ App 5–6 ตัวเพื่อดูสถานะบ้านไม่ใช่ Smart Home ที่แท้จริง Unified Dashboard รวมทุกอย่างในที่เดียว

MQTT Broker: Mosquitto

Mosquitto เป็น MQTT Broker Open-source ที่เป็นมาตรฐาน รัน Docker บน Raspberry Pi หรือ Home Server: MQTT Topics สำหรับ Smart Home: - (Motion Sensor) - (ค่า PM2.5) - (Radar Presence) - (กำลังไฟรวม kW) - (Flood Sensor) Retain Flag: ข้อมูลที่ต้องแสดงค่าล่าสุดเสมอ (เช่น Sensor State) ใช้ MQTT Retain ให้ Subscriber ใหม่ได้ค่าล่าสุดทันทีเมื่อ Subscribe QoS Level: ใช้ QoS 1 (At Least Once) สำหรับ Alarm Alert, QoS 0 (At Most Once) สำหรับ Sensor Telemetry ที่อัปเดตบ่อย

Node-RED: Data Flow Orchestrator

Node-RED เป็น Visual Programming ที่เหมาะกับ IoT Data Flow: flows ตัวอย่าง:

  1. PM2.5 MQTT → Transform (μg/m³ → AQI) → MQTT Publish (AQI) + InfluxDB Write 2. Alarm Trigger → Email + SMS + LINE + HA Call Service → Log to InfluxDB 3. Elderly Presence Timeout (>6 ชั่วโมงในห้อง) → Check Vitals → If Anomaly → Alert 4. Energy > Threshold → Turn Off Non-essential Devices → Log Event Node-RED Dashboard: รัน Built-in Dashboard UI (node-red-dashboard หรือ node-red-contrib-ui-iro) สำหรับ Simple Monitoring ราคาประหยัด ไม่ต้องตั้ง Grafana

InfluxDB: Time Series Database

InfluxDB เหมาะกับ IoT Telemetry ที่เป็น Time Series: - Measurement: ชื่อ Sensor (pm25, temperature, power) - Tags: ชื่อห้อง, Device ID (ใช้ Index สำหรับ Query เร็ว) - Fields: ค่า Sensor จริง (Float) - Timestamp: อัตโนมัติ Retention Policy: ข้อมูล Raw 1 วินาที/นาที เก็บ 7 วัน → Aggregate 1 ชั่วโมง เก็บ 1 ปี → Aggregate 1 วัน เก็บ 5 ปี ลดขนาด Database ไม่ให้ใหญ่เกินไปบน SD Card ของ Pi

Grafana: Unified Dashboard Visualization

Grafana เชื่อม InfluxDB และแสดง Dashboard แบบ Professional: Panel ที่ควรมีใน Smart Home Dashboard: - Current PM2.5/AQI (Gauge + History 24h) - Alarm Zone Status (Table: Zone, Status, Last Triggered) - Energy Usage Live (kW) + Daily kWh + Cost Estimate - Elderly Presence Map (Floor Plan Overlay ถ้ามี Plugin) - Temperature/Humidity per Room (Time Series) - Water Leak Status (Binary Panel: Safe/Alert) Alert ใน Grafana: ตั้ง Alert Rule บน Grafana แจ้งเตือน LINE/Email เมื่อ Value เกิน Threshold ทำงานแยกจาก HA Automation ป้องกัน Single Point of Failure

Home Assistant Integration

HA เชื่อม Grafana ผ่าน Grafana Panel Integration แสดง Grafana Panel ใน HA Lovelace Card ผู้ใช้ดูทุกอย่างใน HA App เดียว ไม่ต้องเปิด Grafana แยก

Stack ทั้งหมดบน Raspberry Pi 5

Docker Compose ติดตั้ง Services ทั้งหมดพร้อมกัน: - Mosquitto (Port 1883) - Node-RED (Port 1880) - InfluxDB (Port 8086) - Grafana (Port 3000) - Home Assistant (Port 8123) ต้องการ RAM: ~2–3GB สำหรับทุก Service RAM Pi 5 8GB รองรับได้สบาย SSD แนะนำแทน SD Card สำหรับ InfluxDB Write ที่บ่อย

คำถามที่พบบ่อย

MQTT กับ HTTP ต่างกันอย่างไรสำหรับ IoT Sensor?
MQTT ใช้ Publish/Subscribe Pattern เหมาะกับ IoT เพราะ Overhead ต่ำ (Header เพียงไม่กี่ Byte) รองรับ Device หลายพันตัวพร้อมกัน และมี QoS สำหรับ Reliability HTTP ใช้ Request/Response Overhead สูงกว่า เหมาะกับ REST API ไม่ใช่ Real-time Telemetry
Node-RED จำเป็นต้องมีถ้าใช้ Home Assistant อยู่แล้วหรือไม่?
ไม่จำเป็นเสมอไป HA ทำ Automation ได้ดีอยู่แล้ว แต่ Node-RED เหมาะกับ Complex Data Transformation (เช่น แปลง μg/m³ เป็น AQI ตาม Formula), Multi-system Integration (เชื่อม System ที่ไม่มี HA Integration) และ Visual Debug Flow ที่ง่ายกว่า YAML
ทำไมต้อง InfluxDB ไม่ใช้ SQLite หรือ MySQL?
InfluxDB ออกแบบมาเพื่อ Time Series โดยเฉพาะ Query ข้อมูลตาม Time Range เร็วกว่า MySQL มาก มี Downsampling และ Retention Policy Built-in SQLite ไม่ Scale ดีเมื่อ Write บ่อย (IoT Sensor ทุกวินาที) MySQL ต้องเขียน Schema และ Index เองทั้งหมด
Grafana Dashboard ดูได้บนมือถือหรือต้องใช้ PC?
Grafana มี Mobile-responsive UI และ App (Grafana Mobile) สำหรับ iOS/Android ดูได้ผ่าน Browser บนมือถือที่ IP ของ Pi หรือผ่าน Cloudflare Tunnel สำหรับ Remote Access ปลอดภัย