การส่งข้อมูลผ่าน MQTT¶
Waterlevel Platform รองรับการเชื่อมต่อผ่าน MQTT Protocol เหมาะสำหรับอุปกรณ์ที่ต้องการส่งข้อมูลแบบ Real-time เช่น อุปกรณ์ที่เชื่อมต่อผ่านเครือข่าย Cellular, WiFi หรือ LoRa Gateway
Host/Port ของ Broker¶
รายการ |
ค่า |
|---|---|
Host |
|
Port |
|
Username |
Device ID |
Password |
Device Token |
Client ID |
Device ID หรือ Serial Number ของอุปกรณ์ |
โครงสร้าง Topic¶
ประเภท |
Topic Format |
ความหมาย |
|---|---|---|
Publish |
|
อุปกรณ์ส่งค่าขึ้น Server |
Subscribe |
|
Server ส่งคำสั่ง/ข้อมูลลงไปยังอุปกรณ์ (Username) |
คำอธิบาย:
@msgใช้สำหรับ Sensor Data@update/<Username>Username = Username ของอุปกรณ์ ใช้สำหรับสั่งงาน เช่น Restart, Update Config, ตั้งค่า Parameter ต่าง ๆ
ตัวอย่าง MQTT Payload¶
{
"timestamp": 1724352970,
"data": {
"T": 1724352970,
"I": 1,
"J": 0,
"Q": 30,
"B": 806,
"IL": 6,
"IA": 0,
"ILL": 10000,
"ILH": 10001,
"ILZ0506": [
11,
10,
9,
8,
7,
6
],
"IT0": 328,
"IT1": 311
}
}
ตัวอย่างคำสั่งส่งด้วย mosquitto_pub¶
mosquitto_pub \
-h mqtt.waterlevel.sgroup.io \
-p 1883 \
-u DEVICE_ID \
-P DEVICE_TOKEN \
-t "@msg" \
-m '{
"timestamp": 1724352970,
"data": {
"T": 1724352970,
"I": 1,
"J": 0,
"Q": 30,
"B": 806,
"IL": 6,
"IA": 0,
"ILL": 10000,
"ILH": 10001,
"ILZ0506": [11,10,9,8,7,6],
"IT0": 328,
"IT1": 311
}
}'
คำแนะนำเพิ่มเติม¶
timestampสามารถส่งเป็น UNIX Timestamp (วินาที) หากไม่ส่ง ระบบจะใช้เวลาปัจจุบันอัตโนมัติอุปกรณ์ควรส่งค่าตาม Template ที่ถูกกำหนดไว้ เช่น T/Q/B/IL/ILZ0506 ฯลฯ
ถ้าส่งไม่ครบ: - ระบบจะบันทึกเฉพาะค่าที่ถูกต้อง - ค่าที่ไม่ส่งอาจถูกเติมค่า default ตาม Template
แนะนำให้ทำ Retry/backoff หาก MQTT หลุดหรือส่งไม่สำเร็จ