How to Use Callback

Introduction

IoT.own 으로 전송되는 단말 장치의 데이터를 서드파티 서버에서 실시간으로 수신하고 싶을 경우 서드파티 서버의 URL로 콜백을 등록하면 됩니다. 서드파티 서버에서는 해당 URL로 HTTP(s) POST request를 수신할 수 있는 HTTP(s) 서버가 구동되고 있어야 합니다. POST request를 통해 전송되는 데이터는 JSON 포맷입니다. 이를 활용하여 타 시스템과 연동하시면 됩니다.

Usage

  1. 서드파티 서버에 HTTP POST URL을 생성합니다.
    • URL 예시:http://your.server.url
    • Node.js를 이용한 POST서버 예제 : 예제보기
  2. Open API를 이용하여 IoT.own 서버에 POST URL을 등록할 수 있습니다. (Open API [PUT] callback 참고)
  3. 데이터가 들어오거나, 게이트웨이 및 단말 장치가 시작되었을 경우 서드파티 서버에서 POST로 다음과 같이 수신된 데이터를 확인할 수 있습니다.
type 값의 의미
type Description
"0" Gateway boot up (게이트웨이에 따라 지원되지 않을 수 있습니다)
"1" Node boot up
"2" Data from node
"3" Gateway Keepalive
"4" Ack from node

Data

Data는 단말 장치에서 보낸 데이터를 의미합니다. 단말 장치에서 보낸 데이터가 IoT.own에 수신될 때마다 콜백됩니다.

{
  "type": "2",
  "gid":"node's gateway ID",
  "nid":"node's ID",
  "data": {
    "temperature": 25,
    "humid": 56,
    "dust": 67
  },
  "timestamp":"2019-04-10T01:37:28.03059Z" //2019/4/10 이후부터 추가됨
}

Gateway Keepalive

Gateway keepalive는 게이트웨이에서 IoT.own에 보내는 생존 신호입니다.

{
  "type": "3",
  "gid": "gateway's ID",
  "data": {
    "lati": 36.49899,                       // decimal degree (optional)
    "long": 127.32881,                      // decimal degree (optional)
    "alti": 87,                             // unit of meter (optional)
    "systime": "2021-08-12T02:06:12.000Z",  // gateway's system time (optional)
    "ip": "192.168.254.180",                // local IP (optional)
    "power": "External",                    // power status (optional),
    "temperature": 54.81,                   // unit of celsius degree (optional)
  },
  "timestamp": "2021-08-12T02:06:12.379Z"
}

ACK

ACK는 IoT.own에서 단말 장치로 보낸 명령에 대해 단말 장치에서 이를 잘 수신했다는 신호를 의미합니다. 이 신호가 IoT.own에 수신될 때마다 콜백됩니다.

{
  "type": "4",
  "nid":"node's ID",
  "fCnt": 10, //optional for LoRaWAN nodes
  "timestamp":"2019-04-10T01:37:22.03049Z"
}

Note

  1. HTTPS를 사용하지 않는 경우 POST request가 평문으로 노출될 수 있습니다. 가급적 HTTPS 사용을 추천합니다.
  2. IoT.own은 서드파티 서버와 HTTPS로 통신시 별도의 인증서 검증을 수행하지 않습니다.