Push Notification สมาร์ทโฮมที่ดีควรเป็นอย่างไร
ปัญหาที่พบบ่อยที่สุดของผู้ใช้สมาร์ทโฮมคือ Notification Fatigue หรืออาการเบื่อการแจ้งเตือน เพราะระบบส่งการแจ้งเตือนมากเกินไปจนคนเริ่มเพิกเฉยหรือปิดทั้งหมด ผลคือแจ้งเตือนด่วนจริงๆ ก็ถูกมองข้ามไปด้วย
หลัก Good Notification Design มี 3 ข้อ:
- Actionable: กดแล้วทำอะไรได้เลย ไม่ต้องเปิด App
- Timely: ส่งตอนที่ข้อมูลยังมีประโยชน์
- Contextual: รู้ว่าคุณอยู่ที่ไหน ทำอะไร และส่งเฉพาะสิ่งที่เกี่ยวข้อง
Home Assistant Companion App Notification Features
HA Companion App รองรับ Notification ขั้นสูงที่คนส่วนใหญ่ไม่ได้ใช้:
Action Buttons — ปุ่มกดตอบสนองโดยตรงจากการแจ้งเตือน
yaml
service: notify.mobile_app_tony_iphone
data:
title: "ประตูหน้าเปิดอยู่"
message: "บ้านว่าง 30 นาทีแล้ว ต้องการล็อคไหม?"
data:
actions:
- action: "LOCK_DOOR"
title: "ล็อคเดี๋ยวนี้"
- action: "IGNORE_DOOR"
title: "ไม่ต้องการ"
Priority Levels — iOS Critical Alert ข้ามโหมด Do Not Disturb:
yaml
data:
push:
sound:
name: default
critical: 1
volume: 1.0
ใช้เฉพาะกรณีฉุกเฉินจริง: ควันไฟ, น้ำรั่ว, แก๊สรั่ว
Tag และ Replace — แทนที่การแจ้งเตือนเก่าแทนที่จะซ้อนใหม่:
yaml
data:
tag: "front_door_alert"
message: "ประตูหน้าล็อคแล้ว"
ออกแบบ Notification Matrix
แบ่งประเภทการแจ้งเตือนเป็น 4 Tier:
Tier 1 — Critical (Critical Alert, ทุกเวลา)
- ควันไฟ / CO สูง
- น้ำรั่วรุนแรง
- แก๊สรั่ว
- บุกรุก Alarm
Tier 2 — Urgent (Normal + Sound, ทุกเวลา)
- ประตูหน้าเปิดนานกว่า 5 นาทีขณะไม่มีคน
- กล้องตรวจจับคนแปลกหน้าตอนกลางคืน
- แบตเตอรี่ UPS ต่ำ < 20%
Tier 3 — Informational (Normal, ปิด DND)
- พัสดุถูกวางหน้าบ้าน (Doorbell Detection)
- เด็กกลับถึงบ้านแล้ว (Phone Arrives Home)
- ซักผ้าเสร็จแล้ว (Power Monitoring)
Tier 4 — Daily Digest (กำหนดเวลา เช่น 20:00)
- สรุปการใช้ไฟฟ้าวันนี้
- อุปกรณ์ที่แบตเตอรี่ต่ำ
- Automation ที่ทำงานผิดปกติ
Context-Aware Delivery: ส่งแจ้งเตือนฉลาดขึ้น
Location-Based:
yaml
condition:
- condition: state
entity_id: person.tony
state: "not_home"
ส่ง Tier 1-2 เสมอ แต่ Tier 3 เฉพาะเมื่ออยู่นอกบ้าน
Time-Based:
yaml
condition:
- condition: time
after: "07:00:00"
before: "22:00:00"
การแจ้งเตือนที่ไม่ฉุกเฉิน ส่งเฉพาะช่วงเวลากลางวัน
Repeat Suppression:
yaml
mode: single
max_exceeded: silent
ป้องกันการแจ้งเตือนซ้ำภายใน 15 นาทีสำหรับ Event เดิม
ตัวอย่าง Automation จริง: กล้องตรวจจับคนกดออก
yaml
alias: "Doorbell Action Handler"
trigger:
- platform: event
event_type: mobile_app_notification_action
event_data:
action: "UNLOCK_DOOR"
action:
- service: lock.unlock
target:
entity_id: lock.front_door
- service: notify.mobile_app_tony_iphone
data:
message: "ปลดล็อคแล้ว จะล็อคอีกครั้งใน 2 นาที"
tag: "door_unlock_confirm"
- delay:
minutes: 2
- service: lock.lock
target:
entity_id: lock.front_door
KPI วัดผล Notification System
- Dismiss Rate < 20%: ถ้าสูงกว่านี้แสดงว่าแจ้งเตือนไม่เกี่ยวข้อง
- Action Rate > 40%: ผู้ใช้กด Action Button แทนที่จะแค่อ่าน
- Critical Miss Rate = 0%: ไม่มีการพลาดการแจ้งเตือนฉุกเฉินแม้แต่ครั้งเดียว
- Daily Volume < 15 Notifications: มากกว่านี้คือสัญญาณ Notification Fatigue
ทบทวน Notification System ทุก 3 เดือน และปิดการแจ้งเตือนที่ Dismiss Rate สูงกว่า 50% ทันที