Sentiara AI

Deep Dive · ระบบรู้ตำแหน่งในบ้าน

ระบบที่บอกว่า
ใครอยู่ตรงไหน
และซื่อสัตย์เมื่อมันไม่รู้

Hologram คือชั้นที่รวมกล้อง Wi-Fi และ BLE เข้าด้วยกัน แล้วตอบคำถามเดียวให้ได้อย่างน่าเชื่อถือ — ตอนนี้ใครอยู่ห้องไหน กำลังทำท่าอะไร และเรามั่นใจแค่ไหน ทุกอย่างประมวลผลในบ้าน และทุกข้อมูลติดแหล่งที่มากับระดับความมั่นใจไว้เสมอ

ความคลาดเคลื่อน
±0.49 เมตร
แหล่งข้อมูล
กล้อง · Wi-Fi · BLE
API
37 endpoints
ชุดทดสอบ
180 เทส
Interactive Preview · จำลองจากหน้า /hologram
Camera Pose · โครงกระดูก 17 จุด Wi-Fi RSSI · ทรงกลมความไม่แน่นอน BLE Tag · สัตว์เลี้ยง / ผู้สูงอายุ Fusion Track

* ภาพด้านบนเป็นการจำลองเพื่อการนำเสนอบนเว็บไซต์ ระบบจริงเรนเดอร์ด้วย WebGL บน Edge Node ในบ้าน

CHAPTER 01

มองเห็น — รู้ว่าใครหรืออะไรอยู่ตรงไหน

หลักการ

ข้อมูลทุกชิ้นติด แหล่งที่มา และ ระดับความมั่นใจ ไว้เสมอ หมอกความน่าจะเป็นจึงไม่ถูกวาดเป็นร่างคนจริง — ระบบไม่หลอกตัวเอง และไม่หลอกคนดู

แหล่งข้อมูลที่ระบบ Hologram ใช้ระบุตำแหน่ง
แหล่งให้อะไรระบุตำแหน่งได้ละเอียดแค่ไหน
กล้อง (Frigate + YOLOv8-pose)คนพร้อมโครงกระดูก 17 จุด · หมา แมว นก · แยกในบ้าน–นอกบ้านระดับจุดบนผังบ้าน
Wi-Fi (HA device_tracker)อุปกรณ์อยู่ในบ้านหรือไม่ และระยะหยาบจากค่า RSSIระยะโดยประมาณ
Wi-Fi BSSIDห้องจริงจาก Access Point ที่มือถือเกาะอยู่ระดับห้อง
BLE (แท็ก / บีคอน)ห้องที่อยู่ หรืออย่างน้อยคือ อยู่บ้าน / ไม่อยู่บ้านระดับห้อง
CHAPTER 02

วางตำแหน่งให้แม่น — Homography

แปลงจุดที่ “เท้าแตะพื้นในภาพ” ให้เป็น “พิกัดบนผังบ้าน” ด้วยเมทริกซ์ 3×3 เขียนเองด้วย NumPy ล้วน ไม่พึ่ง OpenCV (DLT + Hartley normalization)

ใช้ข้อเท้าก่อนเสมอ

ถ้าไม่เห็นข้อเท้าจึงใช้ขอบล่างของกรอบวัตถุแทน และไม่ใช้สะโพกหรือกลางลำตัวเด็ดขาด เพราะจุดเหล่านั้นลอยเหนือพื้นและให้ตำแหน่งผิด

ผลที่วัดได้จริง

จากเดิมคนอยู่ห้องนั่งเล่นแล้วระบบวางไปโผล่ห้องซักรีด ห่างกันราว 7 เมตร ลดเหลือความคลาดเคลื่อน ±0.49 เมตร

หน้าคาลิเบรตที่ใช้งานหน้างานได้จริง

  • คลิกจับคู่จุดบนภาพกับจุดบนผัง พร้อม preview ทันที
  • รายงานความคลาดเคลื่อนเป็นหน่วยเมตร ไม่ใช่ค่าคะแนนลอย ๆ

ระบบจะไม่รายงานตัวเลขความแม่นยำตอนมีแค่ 4 จุด เพราะ 4 จุดฟิตพอดีเสมอ ตัวเลขที่ได้จึงไม่มีความหมาย

— กติกาที่ตั้งไว้กันหลอกตัวเองตอนคาลิเบรต
CHAPTER 03

ติดตามต่อเนื่อง — Tracker

  1. ID

    ยึด ID เดิมข้ามเฟรม

    จับคู่ตามลำดับความสำคัญ ชื่อ → ระยะทาง → ป้ายกำกับ เพื่อให้ trk1 วันนี้กับ trk1 อีกสิบวินาทีถัดมาเป็นคนเดียวกัน

  2. SPD

    จำกัดความเร็ว 1.8 เมตร/วินาที

    คนกระโดดข้ามห้องภายในเฟรมเดียวไม่ได้ การจับคู่ที่เร็วเกินจริงจะถูกปฏิเสธ

  3. GAP

    หายชั่วคราวเก็บไว้ 12 วินาที

    เดินลับเสาแล้วโผล่กลับมายังเป็นคนเดิม พร้อม smoothing กันภาพกระตุก

  4. END

    ไม่มีร่างผี

    หายเกินเวลาแล้วลบทิ้ง ไม่วาดค้างไว้ให้เข้าใจผิดว่ายังมีคนอยู่

CHAPTER 04

ท่าทาง — ยืน นั่ง หรือนอน

คำตอบสั้น

อ่านจากข้อต่อจริง ไม่ใช่เดาจากขนาดกรอบภาพ สัญญาณหลักคือ อัตราส่วนขาห้อย (ระยะสะโพกถึงข้อเท้า หารด้วยความยาวลำตัว)

มุมเข่าเชื่อไม่ได้

เคสจริงจากหน้างาน คนนั่งขัดสมาธิวัดมุมเข่าได้ 171° ซึ่งแทบเท่ากับขาเหยียดตรง ถ้าใช้มุมเข่าตัดสินจะอ่านว่ายืนทันที

ต้องนิ่ง 3 เฟรมติดจึงเปลี่ยนป้าย

กันป้ายท่าทางกะพริบไปมาระหว่างยืนกับนั่งในทุกเฟรม

ไม่รู้ ก็บอกว่าไม่รู้

ถ้ามองไม่เห็นขา ระบบจะรายงานว่าไม่ทราบท่าทาง ห้ามเดาว่ายืน

เกณฑ์นอนและล้ม

ต้องเอียงตั้งแต่ 55° ขึ้นไป และ ทั้งตัวอยู่ในแนวราบ คนโน้มตัวหยิบของจึงไม่ถูกนับเป็นการล้ม

CHAPTER 05

ภาพ 3 มิติที่ดูรู้เรื่อง

  • โครงกระดูกวาดเป็นทรงกระบอก เพราะ WebGL วาดเส้นหนาตามที่ต้องการไม่ได้
  • Interpolate ที่ 60fps ระหว่างเฟรมข้อมูล ทำให้แขนขาขยับลื่น ไม่ยืนแข็งเป็นหุ่น
  • ซ้อนภาพจริงแบบ 2.5D บนผังบ้าน · หมุนกล้องอัตโนมัติ · โฟกัสเฉพาะตัวบ้าน
  • จัดท่านั่งให้ snap ลงโซฟาหรือเก้าอี้ · โซฟารองรับทั้งท่านั่งและท่านอน
  • คลิกดูรายละเอียดรายบุคคล และมีโหมดเดโมสำหรับใช้นำเสนอ
CHAPTER 06

ย้อนเวลาดูได้

Timeline scrubber

เลื่อนดูว่าตอนนั้นใครอยู่ตรงไหน กดเล่นย้อนหลังได้

Heatmap

บ้านหลังนี้ใช้พื้นที่ตรงไหนจริง ถ่วงน้ำหนักด้วยเวลาที่อยู่

Dwell

ใครอยู่ห้องไหนนานเท่าไร ดูได้ทั้งช่วง 1 ชม. · 6 ชม. · 24 ชม. · 7 วัน

เก็บเฉพาะตอนสถานะเปลี่ยนจริง — ถ้าเก็บทุกเฟรมจะได้ 216,000 แถวต่อวันต่อคน ที่ซ้ำกันเองถึง 99%

— เหตุผลที่ย้อนเวลาได้ 7 วันโดยไม่ต้องใช้ดิสก์มหาศาล
CHAPTER 07

ค่าไฟที่กำลังเสียเปล่า

เมื่อห้องว่างนานพอแต่อุปกรณ์ยังเปิดอยู่ ระบบจะคำนวณเป็น บาทต่อชั่วโมงที่กำลังไหลออกตอนนี้ พร้อมยอดสะสมย้อนหลัง

ไม่เดาค่าวัตต์

ระบบรู้ค่าจริงเฉพาะที่ยืนยันได้ เช่น แอร์ 900W และเครื่องทำน้ำอุ่น 1500W นอกนั้นต้องมีมิเตอร์วัดจริงถึงจะรายงาน

บั๊กที่เคยเจอและกันไว้แล้ว

สวิตช์ตั้งค่ากล้อง เช่น motion_detection และไฟ LED ถูกนับเป็นเครื่องกินไฟ 23 จาก 29 ตัว ถ้าไม่กันไว้ หน้าจอจะชวนให้กด “ปิดเลย” แล้ว CCTV จะหยุดตรวจจับทั้งระบบ

CHAPTER 08

แจ้งเตือนเท่าที่ควรเตือน

กฎการแจ้งเตือนของระบบ Hologram และสถานะการเปิดใช้งาน
กฎสถานะเหตุผล
สัตว์เลี้ยงออกนอกบ้านเปิดเหตุชัดเจน ตรวจได้แม่น
อุปกรณ์เปิดค้างในห้องที่ไม่มีคนเปิดยืนยันได้จากทั้งการมีคนและสถานะอุปกรณ์
คนไม่ขยับเกิน 45 นาทีปิดไว้ก่อนยังไม่รู้ตำแหน่งโซฟา จะเตือนทุกครั้งที่ดูหนังนาน
  • เหตุต้องเกิดต่อเนื่อง 20 วินาที ถึงจะยิงแจ้งเตือน และมี cooldown 30–60 นาที
  • ส่งผ่าน Telegram และ LINE
  • ไม่ทำงานซ้ำกับ fusion_anomaly (คนล้ม · คนแปลกหน้า · ไฟเปิดทิ้ง) เพราะการเตือนซ้ำแปลว่าผู้ใช้ได้ข้อความสองชุด แล้วจะเลิกอ่านทั้งหมด
CHAPTER 09

สั่งปิดอุปกรณ์ — เสนอก่อน ไม่ตัดสินใจแทน

ค่าเริ่มต้น

เสนอให้ปิดเท่านั้น ไม่ปิดเอง เพราะกล้องไม่เห็นคนไม่ได้แปลว่าไม่มีคน เช่น มุมอับของกล้อง หรือคนนั่งนิ่งอยู่หลังเสา

  • ถ้าต้องการให้ปิดอัตโนมัติ ต้องเปิดสวิตช์สองชั้น คือระดับทั้งระบบ และระดับอุปกรณ์ทีละเครื่อง
  • ห้องนอนและห้องน้ำไม่ถูกปิดอัตโนมัติเด็ดขาด ไม่ว่าจะตั้งค่าอย่างไร
  • ระบบนับยอดที่ประหยัดได้จริงจากการปิด เพื่อให้ตรวจสอบย้อนหลังได้ว่าคุ้มหรือไม่
CHAPTER 10

ความเป็นส่วนตัว ตั้งแยกได้รายห้อง

ระดับความเป็นส่วนตัวรายห้องของระบบ Hologram
ระดับปล่อยข้อมูลอะไรออกมา
fullตำแหน่ง + โครงกระดูก + ภาพจากกล้อง
no_poseตำแหน่งอย่างเดียว ไม่มีโครงกระดูก
presence_onlyบอกแค่ว่าห้องนี้มีคน ไม่บอกจำนวน ไม่บอกตำแหน่ง

บังคับที่ backend สามชั้น ไม่ใช่ซ่อนที่หน้าเว็บ — ถ้าแค่ไม่วาดบนจอ เปิด DevTools ก็เห็นโครงกระดูกในห้องนอนครบ และเรียกไฟล์ภาพกล้องตรง ๆ ได้อยู่ดี

— เหตุผลที่การจำกัดต้องอยู่ฝั่งเซิร์ฟเวอร์

กล้องหนึ่งตัวมักครอบมากกว่าหนึ่งห้อง ถ้ามีห้องใดถูกจำกัด ภาพจากกล้องตัวนั้นจะถูกปิดทั้งตัว (ตอบ 403) เพราะการครอปภาพให้เหลือเฉพาะห้องที่อนุญาตยังเสี่ยงหลุดขอบ

CHAPTER 11

สถาปัตยกรรมที่ไม่ล้มตามของอื่น

  1. BG

    Background builder thread

    คำขอจากหน้าเว็บตอบจากหน่วยความจำทันที ไม่ต้องรอ Frigate หรือ Home Assistant ตอบกลับ

  2. SSE

    Push แทน poll

    ใช้ Server-Sent Events ที่ /stream เร็วขึ้นราว 2.5 เท่า และไม่มีคำขอกองทับกันตอนปลายทางล่ม

  3. CB

    Circuit breaker + timeout

    เมื่อบริการปลายทางล่ม ระบบตัดวงจรแทนที่จะลากทั้งระบบลงไปด้วย

  4. IDLE

    หยุดเองเมื่อไม่มีคนดู

    ไม่มีผู้ชมเกิน 90 วินาที ระบบหยุดคำนวณเพื่อคืนทรัพยากรให้งานอื่น

0endpoints

API ที่เปิดให้เรียกใช้

0เทส

ชุดทดสอบอัตโนมัติที่ครอบคลุมตรรกะเหล่านี้

CHAPTER 12

หน้าตั้งค่าที่ติดตั้งเองได้

มีเช็กลิสต์ 8 ข้อพร้อมเปอร์เซ็นต์ความพร้อม ให้ทีมติดตั้งรู้ว่าเหลืออะไรต้องทำ

  • ผูกชื่อเจ้าของกับใบหน้าหรืออุปกรณ์ที่ระบบเห็น
  • ผูก Access Point แต่ละตัวกับห้อง เพื่อให้ BSSID บอกห้องได้
  • ผูกอุปกรณ์ไฟฟ้าเข้ากับห้อง เพื่อคำนวณค่าไฟที่เสียเปล่า
  • ตั้งระดับความเป็นส่วนตัวรายห้อง
CHAPTER 13

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

ระบบรู้ตำแหน่งคนได้แม่นแค่ไหน?

หลังคาลิเบรตด้วย Homography ความคลาดเคลื่อนอยู่ที่ประมาณ 0.49 เมตร จากเดิมที่วางตำแหน่งผิดห้องห่างกันราว 7 เมตร โดยใช้ตำแหน่งข้อเท้าที่แตะพื้นเป็นหลัก ถ้าไม่เห็นข้อเท้าจึงใช้ขอบล่างของกรอบวัตถุแทน

ถ้ากล้องมองไม่เห็น ระบบจะเดาตำแหน่งไหม?

ไม่เดา ข้อมูลทุกชิ้นติดแหล่งที่มาและระดับความมั่นใจไว้เสมอ ถ้ารู้แค่ว่าอยู่ในบ้านจากสัญญาณ Wi-Fi ระบบจะแสดงเป็นหมอกความน่าจะเป็น ไม่ใช่ร่างคนที่ตำแหน่งชัดเจน และถ้าไม่รู้ท่าทางก็บอกว่าไม่รู้ แทนที่จะเดาว่ายืน

ระบบปิดอุปกรณ์ไฟฟ้าอัตโนมัติเมื่อไม่มีคนหรือไม่?

ค่าเริ่มต้นคือเสนอให้ปิดเท่านั้น เพราะกล้องไม่เห็นคนไม่ได้แปลว่าไม่มีคน ถ้าต้องการให้ปิดอัตโนมัติต้องเปิดสวิตช์สองชั้น และห้องนอนกับห้องน้ำจะไม่ถูกปิดอัตโนมัติเด็ดขาด

จำกัดไม่ให้ระบบเห็นบางห้องได้ไหม?

ได้ ตั้งได้ 3 ระดับรายห้อง คือ full, no_pose และ presence_only โดยบังคับที่ backend สามชั้น ไม่ใช่แค่ซ่อนบนหน้าเว็บ และถ้ากล้องตัวหนึ่งครอบห้องที่ถูกจำกัด ภาพจากกล้องตัวนั้นจะถูกปิดทั้งตัว

อยากเห็นระบบนี้ทำงานกับผังบ้านจริงของคุณ?

ส่งผังบ้านและตำแหน่งกล้องมาให้เราประเมินจุดคาลิเบรต และบอกได้ว่าห้องไหนควรใช้กล้อง ห้องไหนควรใช้ BLE แทน