Callback은 IOTOWN으로 전송되는 단말 장치의 데이터를 서드파티 시스템으로 전달하는 기능을 말합니다. IOTOWN은 MQTT와 HTTP 프로토콜을 이용하여 callback을 수행합니다.
IOTOWN으로 전송되는 단말 장치의 데이터를 서드파티 MQTT 클라이언트에서 수신하고 싶은 경우 서드파티 클라이언트에서 메시지 종류별 topics를 구독하면 됩니다. 해당 topics로 전송되는 데이터는 JSON 포맷입니다.
메시지 종류 | Topic name |
---|---|
Device Boot | iotown/rx/{Group ID}/device/{Device ID}/boot |
Device Data | iotown/rx/{Group ID}/device/{Device ID}/data |
Device Ack | iotown/rx/{Group ID}/device/{Device ID}/ack |
Gateway Boot | iotown/rx/{Group ID}/gateway/{Gateway ID}/boot |
Gateway Keepalive | iotown/rx/{Group ID}/gateway/{Gateway ID}/keepalive |
Group ID
확인은 사용자 정보에서 가능합니다.Device ID
와 Gateway ID
부분은 single level wildcard +
를 사용하여야 합니다. multi-level wildcards로 구독하는 경우 메시지를 전달받지 못합니다.
G0011223344556677
이고, Device Data 메시지를 구독하고자 하는 경우, topic name: iotown/rx/G0011223344556677/device/+/data
단말 장치가 IOTOWN과 통신을 시작한 경우 발행되는 메시지입니다.
{ "device": { "id": "Device ID", "type": "Device Type", "desc": "Device Description" or { "key": "value", ... }, // 장치 desc이 "key": "value" pairs로 구성된 경우 "created_at": "2023-06-02T00:00:00.000000Z", "bootup_time": "2023-06-02T00:00:00.000000Z" }, "timestamp":"2023-06-02T01:37:28.03059Z" }
IOTOWN이 단말 장치로부터 데이터를 받고 성공적으로 DB에 저장을 완료한 경우 발행되는 메시지입니다.
{ "device": { "id": "Device ID", "type": "Device Type", "desc": "Device Description" or { "key": "value", ... }, // 장치 desc이 "key": "value" pairs로 구성된 경우 "created_at": "2023-06-02T00:00:00.000000Z", "bootup_time": "2023-06-02T00:00:00.000000Z" }, "gateway": { "id": "Gateway ID", "type": "Gateway Type", "desc": "Gateway Description" or { "key": "value", ... }, // 게이트웨이 desc이 "key": "value" pairs로 구성된 경우 "eui": "Gateway EUI", "created_at": "2023-06-02T00:00:00.000000Z", "bootup_time": "2023-06-02T00:00:00.000000Z", "recent_act": "2023-06-02T00:00:00.000000Z", "keepalive": "2023-06-02T00:00:00.000000Z", "latitude": 36.49899, "longitude": 127.32881, "altitude": 87 }, "data": { "temperature": 25, "humid": 56, "dust": 67 }, "timestamp":"2023-06-02T01:37:28.03059Z" }
단말 장치가 IOTOWN이 보낸 명령을 정상적으로 수신한 경우 발행되는 메시지 입니다.
{ "device": { "id": "Device ID", "type": "Device Type", "desc": "Device Description" or { "key": "value", ... }, // 장치 desc이 "key": "value" pairs로 구성된 경우 "created_at": "2023-06-02T00:00:00.000000Z", "bootup_time": "2023-06-02T00:00:00.000000Z" }, "fCnt": 10, //optional for LoRaWAN nodes "timestamp":"2023-06-02T01:37:28.03059Z" }
게이트웨이가 IOTOWN과 통신을 시작한 경우 발행되는 메시지 입니다.
게이트웨이에 따라 지원하지 않을 수 있습니다.
{ "gateway": { "id": "Gateway ID", "type": "Gateway Type", "desc": "Gateway Description" or { "key": "value", ... }, // 게이트웨이 desc이 "key": "value" pairs로 구성된 경우 "eui": "Gateway EUI", "created_at": "2023-06-02T00:00:00.000000Z", "bootup_time": "2023-06-02T00:00:00.000000Z", "recent_act": "2023-06-02T00:00:00.000000Z", "keepalive": "2023-06-02T00:00:00.000000Z", "latitude": 36.49899, "longitude": 127.32881, "altitude": 87 }, "timestamp":"2023-06-02T01:37:28.03059Z" }
IOTOWN이 게이트웨이가 보낸 생존신호를 수신한 경우 발행되는 메시지 입니다.
{ "gateway": { "id": "Gateway ID", "type": "Gateway Type", "desc": "Gateway Description" or { "key": "value", ... }, "eui": "Gateway EUI", "created_at": "2023-06-02T00:00:00.000000Z", "bootup_time": "2023-06-02T00:00:00.000000Z", "recent_act": "2023-06-02T00:00:00.000000Z", "keepalive": "2023-06-02T00:00:00.000000Z", "latitude": 36.49899, "longitude": 127.32881, "altitude": 87 }, "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":"2023-06-02T01:37:28.03059Z" }
IOTOWN으로 전송되는 단말 장치의 데이터를 서드파티 HTTP 서버에서 실시간으로 수신하고 싶은 경우 서드파티 서버의 URL을 콜백으로 등록하면 됩니다. 서드파티 서버에서는 해당 URL로 HTTP(s) POST request를 수신할 수 있는 HTTP(s) 서버가 구동되고 있어야 합니다. POST request를 통해 전송되는 데이터는 JSON 포맷 (application/json
) 입니다.
Description | |
---|---|
Gateway boot up (게이트웨이에 따라 지원되지 않을 수 있습니다) | |
Node boot up | |
Data from node | |
Gateway Keepalive | |
Ack from node |
Data는 단말 장치에서 보낸 데이터를 의미합니다. 단말 장치에서 보낸 데이터가 IOTOWN에 수신될 때마다 콜백됩니다.
{ "type": "2", "nid":"node's ID", // 2023-06-02 이후로 deprecated "device": { // 2023-06-02 이후부터 추가됨 "id": "Device ID", "type": "Device Type", "desc": "Device Description" or { "key": "value", ... }, // 장치 desc이 "key": "value" pairs로 구성된 경우 "created_at": "2023-06-02T00:00:00.000000Z", "bootup_time": "2023-06-02T00:00:00.000000Z" }, "gid":"node's gateway ID", // 2023-06-02 이후로 deprecated "gateway": { // 2023-06-02 이후부터 추가됨 "id": "Gateway ID", "type": "Gateway Type", "desc": "Gateway Description" or { "key": "value", ... }, // 게이트웨이 desc이 "key": "value" pairs로 구성된 경우 "eui": "Gateway EUI", "created_at": "2023-06-02T00:00:00.000000Z", "bootup_time": "2023-06-02T00:00:00.000000Z", "recent_act": "2023-06-02T00:00:00.000000Z", "keepalive": "2023-06-02T00:00:00.000000Z", "latitude": 36.49899, "longitude": 127.32881, "altitude": 87 }, "data": { "temperature": 25, "humid": 56, "dust": 67 }, "timestamp":"2019-04-10T01:37:28.03059Z" //2019-04-10 이후부터 추가됨 }
Gateway keepalive는 게이트웨이에서 IOTOWN에 보내는 생존 신호입니다.
{ "type": "3", "gid": "gateway's ID", // 2023-06-02 이후로 deprecated "gateway": { // 2023-06-02 이후부터 추가됨 "id": "Gateway ID", "type": "Gateway Type", "desc": "Gateway Description" or { "key": "value", ... }, "eui": "Gateway EUI", "created_at": "2023-06-02T00:00:00.000000Z", "bootup_time": "2023-06-02T00:00:00.000000Z", "recent_act": "2023-06-02T00:00:00.000000Z", "keepalive": "2023-06-02T00:00:00.000000Z", "latitude": 36.49899, "longitude": 127.32881, "altitude": 87 }, "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는 IOTOWN에서 단말 장치로 보낸 명령에 대해 단말 장치에서 이를 잘 수신했다는 신호를 의미합니다. 이 신호가 IOTOWN에 수신될 때마다 콜백됩니다.
{ "type": "4", "nid":"node's ID", // 2023/06/02 이후로 deprecated "device": { // 2023/06/02 이후부터 추가됨 "id": "Device ID", "type": "Device Type", "desc": "Device Description" or { "key": "value", ... }, // 장치 desc이 "key": "value" pairs로 구성된 경우 "created_at": "2023-06-02T00:00:00.000000Z", "bootup_time": "2023-06-02T00:00:00.000000Z" }, "fCnt": 10, //optional for LoRaWAN nodes "timestamp":"2019-04-10T01:37:22.03049Z" }