Field Log

การออกแบบ Threshold Alert สำหรับ IoT Sensor

กรณีแจ้งเตือนฝุ่น PM2.5 อย่างไรให้ใช้งานได้จริง

5 MIN READ
05/04/2026
การออกแบบ Threshold Alert สำหรับ IoT Sensor

การออกแบบ Threshold Alert สำหรับ IoT Sensor สำหรับระบบแจ้งเตือนฝุ่น PM2.5 ผ่าน Telegram

ในยุคที่ค่าฝุ่น PM2.5 กลายเป็นปัญหาสุขภาพระยะยาว การมีระบบตรวจวัดที่แม่นยำเพียงอย่างเดียวอาจไม่พอ แต่ "การแจ้งเตือนที่มีประสิทธิภาพ" คือหัวใจสำคัญที่จะช่วยให้เราป้องกันตัวเองได้ทันท่วงที บทความนี้จะพาคุณไปเจาะลึกการสร้างระบบแจ้งเตือนผ่าน Telegram การตั้งค่า Threshold (จุดตัดการเตือน) และเทคนิคการลด Notification Spam เพื่อให้ระบบใช้งานได้จริงในชีวิตประจำวัน

บทความที่เกี่บวข้อง


1. ทำไมต้อง Telegram?

สำหรับการทำ IoT Notification ตัว Telegram มีข้อดีที่เหนือกว่าแพลตฟอร์มอื่นในหลายด้าน:

  • API ฟรีและง่าย: Telegram Bot API ไม่มีค่าใช้จ่ายและตั้งค่าได้รวดเร็ว
  • Customization: สามารถส่งข้อความพร้อมฟอร์แมต HTML หรือ Markdown รวมถึงการส่งรูปกราฟประกอบ
  • Reliability: ระบบมีความเสถียรสูงและรองรับการใช้งานผ่าน Webhook หรือ Polling

2. การออกแบบ Threshold Alert: ไม่ใช่แค่ "เกินแล้วเตือน"

การตั้งค่า Threshold (เกณฑ์การวัด) ที่ดีต้องอ้างอิงตามมาตรฐานสากล หรือดัชนีคุณภาพอากาศ (AQI) โดยแบ่งระดับความสำคัญเพื่อให้การแจ้งเตือนมีน้ำหนักต่างกัน

ตัวอย่างการแบ่งระดับ Threshold (อิงตามค่า $\mu g/m^3$)

ระดับความรุนแรงค่า PM2.5 ($\mu g/m^3$)การจัดการของระบบ
Normal0 - 15.0ไม่มีการแจ้งเตือน (หรือสรุปยอดรายวัน)
Moderate15.1 - 37.5แจ้งเตือนสถานะ "เริ่มเฝ้าระวัง"
Unhealthy37.6 - 75.0แจ้งเตือนทันที + แนะนำให้ปิดหน้าต่าง
Hazardous> 75.0แจ้งเตือนซ้ำทุก 30 นาที จนกว่าค่าจะลดลง

3. วิธีลด Spam Notification: ให้ระบบ "เตือนเมื่อจำเป็น"

ปัญหาที่ใหญ่ที่สุดของระบบ IoT Alert คือการที่ Sensor ส่งข้อมูลแกว่งไปมา (Jitter) จนทำให้มือถือสั่นตลอดเวลา เราสามารถแก้ได้ด้วย 3 เทคนิคนี้:

A. Hysteresis (ส่วนต่างความต่างศักย์)

ป้องกันการแจ้งเตือนรัวๆ เมื่อค่าฝุ่นแกว่งอยู่ที่จุดตัด เช่น ถ้าตั้ง Threshold ไว้ที่ 37.5 และค่าฝุ่นสลับไปมาที่ 37.4 -> 37.6 -> 37.4 ระบบจะส่งข้อความไม่หยุด

  • วิธีแก้: ตั้งค่า "จุดหยุดเตือน" ให้ต่ำกว่า "จุดเริ่มเตือน" เช่น เตือนเมื่อ > 37.5 แต่จะหยุดเตือนและรีเซ็ตสถานะเมื่อค่าลดลงต่ำกว่า 30.0 เท่านั้น

B. Time Debouncing

กำหนดให้ค่าฝุ่นต้องสูงเกินเกณฑ์ติดต่อกันเป็นระยะเวลาหนึ่ง (เช่น 5-10 นาที) ก่อนจะส่งคำสั่งแจ้งเตือน เพื่อป้องกัน Error จาก Sensor หรือควันชั่วคราว (เช่น ควันบุหรี่หรือควันทำอาหาร)

C. Rate Limiting

จำกัดจำนวนครั้งในการส่งข้อความ เช่น "ห้ามส่งข้อความซ้ำภายใน 1 ชั่วโมง" เว้นแต่จะมีการขยับขึ้นไปสู่อีกระดับความรุนแรง (Severity Level) ที่สูงกว่า


4. Implementation Concept (Python Example)

หากคุณใช้ Python ในการควบคุม Bot นี่คือโครงสร้างตรรกะเบื้องต้น:

# ตัวอย่างตรรกะการลด Spam ด้วยสถานะ current_pm25 = get_sensor_data() threshold = 37.5 alert_sent = False if current_pm25 > threshold and not alert_sent: send_telegram_msg(f"⚠️ ค่าฝุ่นสูงเกินมาตรฐาน: {current_pm25} µg/m³") alert_sent = True # ล็อคไว้ไม่ให้ส่งซ้ำ elif current_pm25 < (threshold - 5.0) and alert_sent: send_telegram_msg(f"✅ ค่าฝุ่นกลับเข้าสู่ภาวะปกติ: {current_pm25} µg/m³") alert_sent = False # ปลดล็อคเพื่อเตรียมแจ้งเตือนครั้งต่อไป

5. การทำให้ใช้งานจริง (Practical Tips)

  1. สรุปรายวัน (Daily Summary): แทนที่จะเตือนทุกครั้งที่ฝุ่นเปลี่ยน ให้ระบบส่งรายงานสรุปสถานะตอน 07:00 น. ของทุกวัน เพื่อให้เราเตรียมตัวก่อนออกจากบ้าน
  2. Rich Content: ใส่ Emoji เพื่อให้กวาดสายตาอ่านง่าย เช่น 🟢 (ปกติ), 🟠 (เริ่มสูง), 🔴 (อันตราย)
  3. Silent Messages: สำหรับระดับ "Moderate" (สีเหลือง) ให้ส่งแบบ disable_notification=True เพื่อให้ข้อความเข้าแต่ไม่ส่งเสียงรบกวน

สรุป

ระบบแจ้งเตือนที่ดีไม่ใช่ระบบที่ส่งเสียงดังที่สุด แต่เป็นระบบที่ส่งข้อมูลได้ "ถูกที่ ถูกเวลา และถูกระดับความสำคัญ" การนำเกณฑ์ Threshold ที่ชัดเจนมาผสานกับเทคนิค Hysteresis จะช่วยเปลี่ยนจาก Notification ที่น่ารำคาญ ให้กลายเป็นเครื่องมือดูแลสุขภาพที่พึ่งพาได้จริง

Share this log to social network