ดึงข้อมูลล่าสุด
คืนค่าเฉพาะอุปกรณ์ที่ ข้อมูลมีการเปลี่ยนแปลง นับตั้งแต่เวลาที่ระบุ เหมาะสำหรับการดึงข้อมูลแบบต่อเนื่อง (polling) เพื่อติดตามตำแหน่งแบบเรียลไทม์โดยลดปริมาณข้อมูลที่รับส่ง
ทุกการตอบกลับจะมีฟิลด์ time ซึ่งเป็นเวลา (UNIX timestamp) สำหรับใช้เป็นพารามิเตอร์ time ในคำขอรอบถัดไป การยืนยันตัวตนทำผ่าน Query Parameter user_api_hash (ดู การยืนยันตัวตน)
พารามิเตอร์ (Query Parameters)
| ชื่อ | ชนิด | จำเป็น | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|---|
user_api_hash | string | ✅ | — | รหัส API ของผู้ใช้ (API Key) |
lang | string | ✅ | en | ภาษาของข้อความในผลลัพธ์ เช่น en, th |
time | string | 5 วินาทีที่แล้ว | คืนเฉพาะอุปกรณ์ที่อัปเดตหลังเวลานี้ (UNIX timestamp) โดยทั่วไปให้ใส่ค่า time ที่ได้จากคำขอครั้งก่อน | |
filters[id] | integer | กรองด้วยรหัสอุปกรณ์แบบตรงตัว | ||
filters[imei] | string | กรองด้วยหมายเลข IMEI แบบตรงตัว | ||
filters[group_id] | integer | กรองด้วยรหัสกลุ่มแบบตรงตัว | ||
filters[device_model] | string | กรองด้วยรุ่นอุปกรณ์แบบตรงตัว | ||
filters[plate_number] | string | กรองด้วยเลขทะเบียนแบบตรงตัว | ||
filters[registration_number] | string | กรองด้วยเลขจดทะเบียนแบบตรงตัว | ||
filters[vin] | string | กรองด้วยเลขตัวถัง (VIN) แบบตรงตัว | ||
filters[sim_number] | string | กรองด้วยหมายเลขซิมแบบตรงตัว | ||
filters[msisdn] | string | กรองด้วยเบอร์โทรของซิมแบบตรงตัว | ||
filters[object_owner] | string | กรองด้วยเจ้าของอุปกรณ์แบบตรงตัว | ||
filters[status] | array[string] | กรองด้วยสถานะ (คั่นด้วยจุลภาค เช่น moving,stopped) | ||
filters[online] | string | อุปกรณ์ที่ออนไลน์ภายใน N นาทีล่าสุด | ||
filters[offline] | string | อุปกรณ์ที่ออฟไลน์มาแล้วอย่างน้อย N นาที |
ตัวอย่างการเรียกใช้งาน
- cURL
- JavaScript
- PHP
curl "https://lite.wetrustgps.com/api/get_devices_latest?lang=th&user_api_hash=YOUR_API_HASH&time=1785744645"
const params = new URLSearchParams({
lang: 'th',
user_api_hash: 'YOUR_API_HASH',
time: 1785744645,
});
const res = await fetch(
`https://lite.wetrustgps.com/api/get_devices_latest?${params}`,
);
const data = await res.json();
console.log(data);
<?php
$query = http_build_query([
'lang' => 'th',
'user_api_hash' => 'YOUR_API_HASH',
'time' => 1785744645,
]);
$response = file_get_contents(
"https://lite.wetrustgps.com/api/get_devices_latest?{$query}"
);
$data = json_decode($response, true);
ทดลองยิง API
เว้นช่อง time ว่างไว้เพื่อดึงข้อมูลย้อนหลัง 5 วินาที หรือใส่ค่า time จากผลลัพธ์รอบก่อนเพื่อจำลองการ polling
/get_devices_latestทดลองยิง APIhttps://lite.wetrustgps.com/api/get_devices_latest?lang=thการใช้งานแบบ Polling
Endpoint นี้ออกแบบมาให้เรียกซ้ำเป็นรอบ ๆ โดยใช้ค่า time จากการตอบกลับครั้งก่อนเป็นจุดอ้างอิงของครั้งถัดไป
- เรียกครั้งแรกโดยไม่ต้องส่ง
time(ระบบจะใช้ค่าเริ่มต้น 5 วินาทีที่แล้ว) - เก็บค่า
timeจากผลลัพธ์ที่ได้ - เว้นระยะสั้น ๆ (เช่น ทุก 5–10 วินาที) แล้วเรียกอีกครั้งโดยส่งค่า
timeที่เก็บไว้ - ประมวลผลเฉพาะอุปกรณ์ใน
itemsและเหตุการณ์ในeventsที่ได้รับ แล้ววนกลับไปข้อ 2
วิธีนี้ทำให้แต่ละรอบได้รับเฉพาะข้อมูลที่เปลี่ยนแปลง ช่วยลดปริมาณการรับส่งข้อมูลอย่างมาก
const BASE = 'https://lite.wetrustgps.com/api/get_devices_latest';
const API_HASH = 'YOUR_API_HASH';
let lastTime = Math.floor(Date.now() / 1000);
async function poll() {
const params = new URLSearchParams({
lang: 'th',
user_api_hash: API_HASH,
time: lastTime,
});
const res = await fetch(`${BASE}?${params}`);
const data = await res.json();
data.items.forEach(updateDeviceOnMap); // อัปเดตตำแหน่งบนแผนที่
data.events.forEach(handleEvent); // จัดการการแจ้งเตือน
lastTime = data.time; // ใช้เป็นจุดอ้างอิงของรอบถัดไป
}
setInterval(poll, 5000); // เรียกทุก 5 วินาที
การตอบกลับ (Response)
เมื่อสำเร็จจะได้รับสถานะ 200 OK พร้อมข้อมูลเป็น ออบเจ็กต์ (ต่างจาก get_devices ที่เป็นอาร์เรย์ของกลุ่ม) ประกอบด้วย
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
items | array[object] | อุปกรณ์ที่ข้อมูลเปลี่ยนแปลงตั้งแต่เวลาที่ระบุ (โครงสร้างเหมือน items[] ของ get_devices) |
events | array[object] | เหตุการณ์/การแจ้งเตือนที่เกิดขึ้นในช่วงเวลานั้น |
time | integer | เวลา (UNIX timestamp) สำหรับใช้เป็นพารามิเตอร์ time ในคำขอรอบถัดไป |
version | string | เวอร์ชันของระบบ |
:::note ข้อควรทราบเรื่องรูปแบบข้อมูล
ใน Endpoint นี้ ฟิลด์ sensors, services และ tail ของแต่ละอุปกรณ์จะถูกส่งมาเป็น สตริง JSON (JSON-encoded string) ไม่ใช่อาร์เรย์โดยตรง จึงต้องแปลง (parse) อีกครั้งก่อนนำไปใช้งาน
:::
ฟิลด์หลักของเหตุการณ์ (events[])
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
id | integer | รหัสเหตุการณ์ |
device_id | integer | รหัสอุปกรณ์ที่เกิดเหตุการณ์ |
geofence_id | integer | รหัสพื้นที่ (geofence) ที่เกี่ยวข้อง |
alert_id | integer | รหัสประเภทการแจ้งเตือน |
message | string | ข้อความบรรยายเหตุการณ์ |
latitude | number | ละติจูดขณะเกิดเหตุการณ์ |
longitude | number | ลองจิจูดขณะเกิดเหตุการณ์ |
speed | number | ความเร็วขณะเกิดเหตุการณ์ |
time | string | เวลาที่เกิดเหตุการณ์ |
created_at | string | เวลาที่บันทึกเหตุการณ์ |
geofence | object | ข้อมูลพื้นที่ที่เกี่ยวข้อง (ถ้ามี) |
device | object | ข้อมูลอุปกรณ์ที่เกี่ยวข้อง |
ตัวอย่างการตอบกลับ (ไม่มีการเปลี่ยนแปลง)
เมื่อไม่มีอุปกรณ์ใดเปลี่ยนแปลงในช่วงเวลาที่ระบุ items และ events จะเป็นอาร์เรย์ว่าง แต่ยังคงได้รับ time สำหรับรอบถัดไปเสมอ
{
"items": [],
"events": [],
"time": 1785744645,
"version": "4.3.0"
}
ตัวอย่างการตอบกลับ (มีการเปลี่ยนแปลง)
ตัวอย่างต่อไปนี้ถูกย่อให้เหลืออุปกรณ์เดียว และตัดฟิลด์ device_data บางส่วนออกเพื่อความกระชับ
{
"items": [
{
"id": 6677,
"alarm": 0,
"name": "30-4911 นม",
"online": "online",
"time": "03-08-2026 15:10:57",
"timestamp": 1785744691,
"acktimestamp": 1785743207,
"lat": 13.52006,
"lng": 100.061,
"course": 338,
"speed": 29,
"altitude": 0,
"protocol": "gt06",
"icon_colors": {
"moving": "green",
"stopped": "yellow",
"offline": "red",
"engine": "yellow",
"blocked": "black"
},
"sensors": "[{\"id\":4852,\"type\":\"engine\",\"name\":\"สถานะเครื่องยนต์\",\"value\":\"เปิด\",\"val\":true,\"tag_name\":\"ignition\"}]",
"services": "[]",
"tail": "[{\"lat\":\"13.51628\",\"lng\":\"100.06536\"},{\"lat\":\"13.52006\",\"lng\":\"100.061\"}]",
"engine_status": true,
"total_distance": 264722.53,
"unit_of_distance": "Km",
"distance_unit_hour": "kph",
"stop_duration": "35วินาที",
"stop_duration_sec": 35,
"device_data": {
"id": 6677,
"user_id": 10911,
"name": "30-4911 นม",
"imei": "XXXXXXXXXXXXXXX",
"group_id": 939
}
}
],
"events": [],
"time": 1785744692,
"version": "4.3.0"
}
รหัสสถานะ
| สถานะ | ความหมาย |
|---|---|
200 OK | สำเร็จ คืนข้อมูลที่เปลี่ยนแปลงพร้อมค่า time รอบถัดไป |
401 Unauthorized | ไม่ได้แนบ user_api_hash หรือคีย์ไม่ถูกต้อง |
429 Too Many Requests | เรียกใช้เกินอัตราที่กำหนด (rate limit) |
500 Internal Server Error | เกิดข้อผิดพลาดที่ฝั่งเซิร์ฟเวอร์ |