node LoRaWAN ไม่ได้พูด MQTT ข้อมูลเดินทางแบบนี้
node --LoRaWAN--> gateway --> ChirpStack / TTN --codec--> POST https://trix.technology/api/ingest/lorawan --> TRIX
ใน TRIX node แต่ละตัวเป็นอุปกรณ์ปกติหนึ่งตัว เหมือนอุปกรณ์ที่ส่งผ่าน MQTT ก่อนเริ่ม ขอ ชื่อย่อ site และ token ของ webhook จากทีม TRIX
1. endpoint
POST https://trix.technology/api/ingest/lorawan?site=<site>[&event=up]
Authorization: Bearer <token> (หรือ X-Trix-Token: <token>)
Content-Type: application/json
body: event ของ ChirpStack v4 HTTP integration หรือ TTN v3 webhook uplink (ระบบแยกจากรูปร่าง JSON เอง)
| ผล | ความหมาย |
|---|---|
200 {"ok":true,"site","device","stored":n,"rejected":[...]} |
เก็บแล้ว |
| 204 | event ที่ไม่ใช่ uplink (join, ack, status, txack) รับทราบแต่ไม่เก็บ |
| 400 | ไม่ใช่ JSON หรือไม่ใช่รูปแบบของ ChirpStack v4 / TTN v3 |
| 401 | token ผิดหรือไม่มี |
| 404 | ไม่มี site นี้ |
| 422 | ไม่มีผลถอดรหัส (ยังไม่ได้ตั้ง codec) หรือหา site / device id ไม่ได้ |
| 429 | ส่งเกิน 600 ครั้งต่อนาทีต่อ IP หรือชนเพดานสร้างอุปกรณ์ใหม่ 200 ตัวต่อชั่วโมง |
2. การจับคู่ข้อมูล
| ใน TRIX | มาจาก (ตามลำดับ) |
|---|---|
| site | query ?site= แล้วจึง device tag trix_site |
| device id | device tag trix_device แล้วจึงชื่ออุปกรณ์ (ChirpStack deviceName, TTN device_id) อักขระที่ใช้ไม่ได้แปลงเป็น - แล้วจึง devEui |
| ชนิดอุปกรณ์ | device tag trix_type แล้วจึงชื่อ device profile (ChirpStack) |
| ค่าที่วัด | ผลถอดรหัสของ codec (object / decoded_payload) เฉพาะตัวเลขและ boolean object ซ้อนต่อชื่อด้วย _ เช่น {"battery":{"v":3.6}} เป็น battery_v |
| เพิ่มจากวิทยุ | rssi_dbm, snr_db ของ gateway ที่สัญญาณแรงสุด และ f_cnt |
| เวลา | time (ChirpStack) / received_at (TTN) ถ้าคลาดจากเวลา server เกินขอบเขต ใช้เวลา server |
codec ต้องออกชื่อ key ตามมาตรฐานเลย (temperature_c, humidity_pct, battery_v) เพราะ TRIX ไม่แปลงชื่อให้
ดูกติกาชื่อใน trix-node/1 key ที่ผิดรูปแบบจะอยู่ใน rejected และไม่ถูกเก็บ
node LoRaWAN ไม่มี LWT สถานะออนไลน์จึงดูจากเวลาที่ส่งข้อมูลล่าสุด
3. ตั้งค่า ChirpStack v4
- Applications > เลือก application > Integrations > HTTP
- Payload encoding: JSON
- Event endpoint URL:
https://trix.technology/api/ingest/lorawan?site=<site>(ChirpStack ต่อ&event=upให้เอง) - Headers:
Authorization=Bearer <token> - Device profile > Codec: JavaScript ที่มี
decodeUplinkคืนค่า{ data: { temperature_c: ..., ... } } - (ถ้าต้องการ) ใส่ tag
trix_deviceที่ตัว device เพื่อกำหนด device id และtrix_typeเพื่อกำหนดชนิด
4. ตั้งค่า The Things Stack (TTN v3)
- Applications > Integrations > Webhooks > Add webhook > Custom webhook
- Webhook format: JSON
- Base URL:
https://trix.technology/api/ingest/lorawan?site=<site> - Additional headers:
Authorization=Bearer <token> - เปิดเฉพาะ Uplink message (path ว่าง)
- Payload formatter ของ application หรือ device:
decodeUplinkที่ออกชื่อ key มาตรฐาน - device id ใน TRIX คือ
device_idของ TTN เพราะ webhook ไม่ส่ง attributes มาด้วย
ติดปัญหาหรือต้องการข้อมูลเพิ่ม ติดต่อทีม TRIX
