ทำไมต้องมี 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 ตัวอย่าง:
- 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 ที่บ่อย