개발 가이드

IoT Portal 서비스 개발에 필요한 개발 가이드 입니다.

MQTT Client로 개발하기

LoRa 디바이스의 최신 데이터 조회하기

LoRa 디바이스-App/Web 서버까지의 데이터 흐름

App/Web 서버가 LoRa 디바이스에 대한 데이터를 가져올 때에는 ThingPlug를 반드시 거쳐야 하며, 두 가지 방법이 있습니다. 첫 번째는 Web/App 서버가 특정 주기마다 ThingPlug로 최신 데이터를 요청하여 가져올 수 있습니다. 이와 같은 경우 LoRa 디바이스가 5번의 Uplink를 한 시점에서 App/Web서버가 데이터를 요청하여 가져올 때는 가장 최신 데이터만 요청하여 가져올 수 있으므로, 최신 데이터 이전의 데이터는 가져올 수 없습니다. 두 번째는 App/Web 서버가 해당 LoRa 디바이스에 대하여 최초 1회 Subscription 등록을 하면, LoRa 디바이스가 ThingPlug에서 데이터를 Uplink할 때마다, ThingPlug는 App/Web 서버로 데이터를 Push 해주는 방식 입니다. 이와 같은 경우 최초 1회 Subscription만 하면, ThingPlug로 데이터를 요청하지 않아도 되므로 대부분의 App/Web서버를 개발할 때에 사용됩니다.
이와 같이, ThingPlug의 주요 기능 중 하나는 LoRa 디바이스가 전송한 센서 정보 또는 액추에이터의 동작 상태 등의 데이터를 저장하고 해당 데이터를 사용자의 App/Web 서버가 조회할 수 있도록 하는 것입니다. 이러한 데이터는 ThingPlug에 ‘container’와 ‘contentInstance’라는 Resource 타입으로 관리되고 있습니다. ‘container’의 역할은 데이터를 저장하는 역할을 하고, 하위에 ‘contentInstance’ Resource 타입으로 실제 데이터를 저장하고 있습니다. 자세한 내용은 아래에서 다루도록 하겠습니다.

최신 데이터 조회하기

MQTT 기반 최신 데이터 요청 예시
개발가이드 설명
Description LoRa 디바이스의 Uplink 데이터 중 가장 최신에 저장된 값을 호출합니다.
Requirements ukey: 사용자 인증키
Topic 발행 : ThingPlug Resource API 요청을 하기 위한 Topic: /oneM2M/req/ClintID/LTID
구독 : 요청에 대한 응답을 받기 위한 Topic: /oneM2M/resp/ClintID/+
개발가이드 설명
Request

                                                
Response

                                                

수신한 Response 중 <con> 필드에 포함된 데이터가 실제 LoRa 디바이스의 Uplink 데이터입니다. 위 예제에서는 “0101” 이라는 데이터를 보낸 것을 확인할 수 있습니다.
LoRa 디바이스가 데이터를 보낸 시간을 <ct> 필드로 확인할 수 있으며, <et> 필드의 시간이 되면 해당 데이터는 ThingPlug에서 삭제됩니다.

Subscription 방식으로 데이터 push 받기

MQTT 기반 Subscription 방식 예시

LoRa 디바이스마다 각각 한번씩 미리 구독 신청을 해두면 LoRa 디바이스가 Uplink를 수행할 때마다 ThingPlug가 사용자의 App/Web 서버로 데이터를 Push 하도록 설정할 수 있습니다. LoRa 디바이스에 대한 Subscription 등록을 최대 3개까지 가능하며, <nm> 속성으로 App/Web 서버를 구분합니다. 이와 같은 기능은 여러 서버에서 데이터를 관리하거나 백업 서버를 구축할 때에 활용 가능합니다.

개발가이드 설명
Description LoRa 디바이스의 Uplink 데이터가 생성되면 사용자의 App/Web 서버로 Push 해주도록 설정합니다.
Requirements ukey: 사용자 인증키
<nm>: 구독 요청을 구분하기 위한 구분자, 예제에서는 임의의 값 “test_sub1” 사용
<rss>: 1(데이터 생성시 Push)
<nu>: 제어 결과를 수신할 App/Web 서버의 ClientID
Topic 발행 : ThingPlug Resource API 요청을 하기 위한 Topic: /oneM2M/req/ClintID /LTID
구독 : 요청에 대한 응답을 받기 위한 Topic: /oneM2M/resp/ClintID/+
Subscription에 대한 Push 데이터를 받기 위한 Topic: /oneM2M/req_msg/+/clientID
개발가이드 설명
Request

                                                
Response

                                                

구독 요청 후 LoRa 디바이스가 Uplink 하면 ThingPlug는 사용자의 App/Web 서버로 아래와 같은 포맷으로 데이터를 Push 해줍니다.

개발가이드 설명
xml 소스코드 뷰어

                                            

위의 Push 데이터를 보면 <con> 필드에 포함된 데이터가 실제 LoRa 디바이스의 Uplink 데이터입니다. 위 예제에서는 “010203” 이라는 데이터를 보낸 것을 확인할 수 있습니다.
LoRa 디바이스가 데이터를 보낸 시간을 <ct> 필드로 확인할 수 있으며, <et> 필드의 시간이 되면 해당 데이터는 ThingPlug에서 삭제됩니다.

top