เอกสาร Waypoint
หน้าเว็บไซต์ หลังบ้าน

🛰️ GPS + ติดตามรถ

จัดการอุปกรณ์ GPS บนรถ + ดู realtime map + คำนวณ ETA

อุปกรณ์ GPS

เมนู: อุปกรณ์ GPS — จัดการรายการอุปกรณ์ GPS ที่ติดตั้งบนรถ

เพิ่ม/แก้อุปกรณ์

ฟิลด์คำอธิบาย
รถผูกกับทะเบียนรถ (ไม่ผูกก็ได้ — ใช้เป็น standalone)
IMEI15 หลักจากตัวเครื่อง
SIMเบอร์ของซิม (สำหรับติดต่อช่าง)
ยี่ห้อ + รุ่นConcox GT06N, Coban TK303 ฯลฯ
วันที่ติดตั้ง(Thai datepicker)
สถานะactive / inactive / offline / maintenance
Device Tokenสร้างอัตโนมัติ 32 ตัวอักษร — เก็บไว้ลับ ใช้ยิงข้อมูลเข้า API

Regenerate Token

คลิกไอคอน 🔄 ข้างๆ token — สร้างใหม่ทันที (เก่าใช้ไม่ได้แล้ว)

เตือน: ถ้า regenerate token ต้องแก้ที่อุปกรณ์ GPS ด้วย ไม่งั้นมันจะส่งข้อมูลด้วย token เก่าแล้ว reject

Online/Offline

Badge สีเขียว "Online" = อุปกรณ์ส่งข้อมูลล่าสุดไม่เกิน 5 นาที / เทา "Offline" = นานเกิน 5 นาที

หน้า Live Tracking

เมนู: ติดตามรถ

สิ่งที่แสดงในหน้านี้

API รับข้อมูลจากอุปกรณ์

Endpoint: GET /api/gps_ingest.php

Query parameters

ParameterTypeRequiredDescription
tokenstring✓Device token จาก gps_devices table
latfloat✓Latitude (-90 to 90)
lngfloat✓Longitude (-180 to 180)
speedfloatoptionalความเร็ว km/h
headingintoptionalทิศทาง 0-360 องศา
accuracyintoptionalความแม่นยำ (เมตร)
tsdatetimeoptionalเวลาที่บันทึก (default = NOW)

ตัวอย่าง

GET /api/gps_ingest.php?token=gps_demo_token_aaaa1111&lat=14.5343&lng=100.9099&speed=85&heading=45

Response

{
  "success": true,
  "device_id": 1,
  "trip_id": 5,           // ถ้ารถมี trip วันนี้ — ใส่ trip_id ให้
  "recorded_at": "2026-05-17 15:47:34"
}

สิ่งที่ระบบทำเมื่อรับ

  1. ตรวจ token → หา device
  2. หา trip ปัจจุบันของรถ (departure_date = today, status active)
  3. INSERT ลง gps_positions (time-series)
  4. UPDATE gps_devices: last_seen_at, last_latitude, last_longitude

การคำนวณ ETA

เมื่อลูกค้าเข้า track_vehicle.php?trip=TXX:

  1. หา device ของรถที่ใช้ในเที่ยวนี้
  2. ดึง last_latitude/last_longitude ล่าสุด
  3. คำนวณระยะคงเหลือถึงปลายทางด้วย Haversine formula:
$remainKm = haversine_km($lat1, $lng1, $destLat, $destLng);
$avgSpeed = (float)get_setting('parcel_avg_speed_kmh', 60);  // 60 km/h default
$minutes  = ($remainKm / $avgSpeed) * 60;
$eta      = date('H:i', time() + (int)($minutes * 60));

แสดง:

วิธีเชื่อมต่ออุปกรณ์ GPS

วิธี 1: ใช้อุปกรณ์ GPS ทั่วไป (เช่น Concox, Coban)

อุปกรณ์เหล่านี้ส่งข้อมูลผ่าน TCP protocol ของตัวเอง — ต้องตั้ง middleware รับข้อมูลแล้วยิงเข้า API ของเรา:

# Pseudo-code middleware (Python/Node.js):
async function onGpsData(deviceImei, lat, lng, speed) {
  const token = await getTokenByImei(deviceImei);
  await fetch(`https://yoursite.com/api/gps_ingest.php?token=${token}&lat=${lat}&lng=${lng}&speed=${speed}`);
}

วิธี 2: ใช้แอพมือถือ Driver (ง่ายกว่า)

ติดตั้งแอพบนมือถือคนขับ → ส่งพิกัดทุก 10-30 วินาทีตอนรถวิ่ง:

// JavaScript ใน PWA (Progressive Web App):
navigator.geolocation.watchPosition(pos => {
  fetch(`/api/gps_ingest.php?token=${TOKEN}` +
        `&lat=${pos.coords.latitude}` +
        `&lng=${pos.coords.longitude}` +
        `&speed=${(pos.coords.speed || 0) * 3.6}`);
}, null, { enableHighAccuracy: true });

วิธี 3: ทดสอบ manual

เปิด terminal:

curl "https://โดเมนของคุณ/api/gps_ingest.php?token=gps_demo_token_aaaa1111&lat=14.5343&lng=100.9099&speed=85"

แล้วเข้าหน้า admin/tracking.php จะเห็นรถปรากฏบนแผนที่ทันที ✓