TRX-DOCสำหรับนักพัฒนาอุปกรณ์

อุปกรณ์ LoRaWAN ผ่าน ChirpStack หรือ TTN

ตั้ง HTTP integration หรือ webhook ให้ส่ง uplink เข้า TRIX

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

  1. Applications > เลือก application > Integrations > HTTP
  2. Payload encoding: JSON
  3. Event endpoint URL: https://trix.technology/api/ingest/lorawan?site=<site> (ChirpStack ต่อ &event=up ให้เอง)
  4. Headers: Authorization = Bearer <token>
  5. Device profile > Codec: JavaScript ที่มี decodeUplink คืนค่า { data: { temperature_c: ..., ... } }
  6. (ถ้าต้องการ) ใส่ tag trix_device ที่ตัว device เพื่อกำหนด device id และ trix_type เพื่อกำหนดชนิด

4. ตั้งค่า The Things Stack (TTN v3)

  1. Applications > Integrations > Webhooks > Add webhook > Custom webhook
  2. Webhook format: JSON
  3. Base URL: https://trix.technology/api/ingest/lorawan?site=<site>
  4. Additional headers: Authorization = Bearer <token>
  5. เปิดเฉพาะ Uplink message (path ว่าง)
  6. Payload formatter ของ application หรือ device: decodeUplink ที่ออกชื่อ key มาตรฐาน
  7. device id ใน TRIX คือ device_id ของ TTN เพราะ webhook ไม่ส่ง attributes มาด้วย
ติดปัญหาหรือต้องการข้อมูลเพิ่ม ติดต่อทีม TRIX
แชท LINEโทรหาเรา