개발 가이드

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

MQTT Client로 개발하기

LoRa 디바이스 제어하기

제어 명령(Downlink) 예시

App/Web 서버는 ThingPlug를 통해서 LoRa 디바이스를 제어할 수 있습니다. App/Web 서버가 ThingPlug로 제어 명령을 전달하면, ThingPlug는 제어 명령을 LoRa Network 서버를 통해 LoRa 디바이스로 전달합니다.

개발가이드 설명
Resource API Type 제어 설명
mgmtCmd-[LTID]_DevReset LoRa 디바이스 리셋
mgmtCmd-[LTID]_extDevMgmt 서비스에 따라 App/Web서버와 LoRa 디바이스 간에 정의된 Application 명령 

명령의 종류

1) mgmtCmd-[LTID]_DevReset

LoRa 디바이스를 리셋하기 위한 명령어입니다. 이 명령은 오직 디바이스 리셋을 위해 사용하기 때문에 별도의 payload를 포함하여 보낼 수 없습니다.

개발가이드 설명
Description LoRa 디바이스 리셋
Requirements ukey: 사용자 인증키
<exe>: true로 설정
Topic 발행 : ThingPlug Resource API 요청을 하기 위한 Topic: /oneM2M/req/ClintID/LTID
구독 : 요청에 대한 응답을 받기 위한 Topic: /oneM2M/resp/ClintID/+
개발가이드 설명
Request

                                                    
Response

                                                    

2) mgmtCmd-[LTID]_extDevMgmt

서비스에 따라 App/Web서버와 디바이스간의 제어 명령을 정의해서 사용할 수 있습니다. 이 명령은 1회에 최대 62bytes의 payload를 <exra>속성에 포함하여 디바이스로 전송할 수 있습니다.

개발가이드 설명
Description Application 제어 명령
Requirements ukey: 사용자 인증키
<exe>: true로 설정
<exra>: Application 제어 명령
Topic 발행 : ThingPlug Resource API 요청을 하기 위한 Topic: /oneM2M/req/ClintID/LTID
구독 : 요청에 대한 응답을 받기 위한 Topic: /oneM2M/resp/ClintID/+
개발가이드 설명
Request

                                                    
Response

                                                    

서비스에 따라 extDevMgmt는 App/Web 서버에 구현하지 않아도 되지만, DevReset은 필수적으로 구현되어야 합니다.

제어 결과 확인

제어 명령의 성공 여부는 두 가지 방법으로 확인할 수 있습니다. 첫 번째로 별도의 요청을 보내는 방법입니다.

제어 명령(Downlink)에 대한 결과 확인 요청 예시

App/Web 서버가 제어 요청을 하면, LoRa Network 서버는 LoRa 디바이스로 제어 명령을 전달하고 성공 여부를 ThingPlug에 저장하게 됩니다. 그 후에 사용자는 해당 제어 명령에 대한 결과를 별도의 요청을 통해 확인할 수 있습니다.
제어 명령의 결과를 조회하기 위해서는 제어 명령의 Resource ID를 우선 확인해야 합니다. 제어 명령의 Resource ID는 제어 요청 시 응답에서 확인할 수 있습니다. <m2m:exin> 하위에 있는 <ri> 의 값이 제어 명령에 대한 Resource ID입니다.

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

                                            

이 ID 값을 가지고 제어 명령 결과 확인 API를 사용하면, 해당 제어 명령의 수행 결과를 응답으로 받을 수 있습니다

개발가이드 설명
Description Application 제어 명령의 결과 확인
Requirements ukey: 사용자 인증키
execInstance: 제어 명령의 Resource ID
Topic 발행 : ThingPlug Resource API 요청을 하기 위한 Topic: /oneM2M/req/ClintID/LTID
구독 : 요청에 대한 응답을 받기 위한 Topic: /oneM2M/resp/ClintID/+
개발가이드 설명
Request

                                                
Response

                                                

제어 결과에서 <exs>와 <exr>로 결과를 확인할 수 있습니다. <exs>는 Execute Status의 약자로 제어의 현재 상태를 의미 합니다. 3은 ‘Finished’를 의미하며 제어 명령의 처리가 끝났음을 의미합니다. <exr>은 Execute Result의 약자로 제어 명령의 처리가 끝났을 때의 결과를 의미합니다. 0은 ‘SUCCEED’를 의미합니다. <exs>와 <exr>의 세부 결과는 아래 표를 참고하세요

두 번째 방법은 미리 제어 결과에 대한 구독 신청을 해두는 것입니다.

제어 명령(Downlink)에 대한 결과 Subscription 등록 예시

LoRa 디바이스마다 각각 한번씩 미리 구독 신청을 해두면 제어 명령을 단말로 전달했는지 성공 여부를 App/Web 서버로 Push 받을 수 있습니다.

개발가이드 설명
Description Application 제어 명령의 결과 구독
Requirements ukey: 사용자 인증키
<nm>: 구독 요청을 구분하기 위한 구분자, 예제에서는 임의의 값 “test_sub1” 사용
<rss>: 5(제어 명령 결과)
<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

                                                

ThingPlug 구독에 의한 Push는 동시에 여러 서버에서 수신할 수 있습니다. 이를 활용해 어플리케이션 서버뿐만 아니라, 백업서버에서도 동일한 데이터를 수신하는 것이 가능합니다.

제어 결과 테이블

exs(execute status) 의미

개발가이드 설명
1 INITIATED
2 PENDING
3 FINISHED
4 CANCELLING
5 CANCELLED
6 STATUS_NON_CANCELLABLE

exr(execute result) 의미

개발가이드 설명
0 STATUS_REQUEST_SUCCEED
1 STATUS_REQUEST_UNSUPPORTED
2 STATUS_REQUEST_DENIED
3 STATUS_CANCELLATION_DENIED
4 STATUS_INTERNAL_ERROR
5 STATUS_INVALID_ARGUMENTS
6 STATUS_RESOURCES_EXCEEDED
7 STATUS_FILE_TRANSFER_FAILED
8 STATUS_FILE_TRANSFER_SERVER_AUTHENTICATION_FAILURE
9 STATUS_UNSUPPORTED_PROTOCOL
10 STATUS_UPLOAD_FAILED
11 STATUS_FILE_TRANSFER_FAILED_MULTICAST_GROUP_UNABLE_JOIN
12 STATUS_FILE_TRANSFER_FAILED_SERVER_CONTACT_FAILED
13 STATUS_FILE_TRANSFER_FAILED_FILE_ACCESS_FAILED
14 STATUS_FILE_TRANSFER_FAILED_DOWNLOAD_INCOMPLETE
15 STATUS_FILE_TRANSFER_FAILED_FILE_CORRUPTED
16 STATUS_FILE_TRANSFER_FILE_AUTHENTICATION_FAILURE
17 STATUS_FILE_TRANSFER_FAILED
18 STATUS_FILE_TRANSFER_SERVER_AUTHENTICATION_FAILURE
19 STATUS_FILE_TRANSFER_WINDOW_EXCEEDED
20 STATUS_INVALID_UUID_FORMAT
21 STATUS_UNKNOWN_EXECUTION_ENVIRONMENT
22 STATUS_DISABLED_EXECUTION_ENVIRONMENT
23 STATUS_EXECUTION_ENVIRONMENT_MISMATCH
24 STATUS_DUPLICATE_DEPLOYMENT_UNIT
25 STATUS_SYSTEM_RESOURCES_EXCEEDED
26 STATUS_UNKNOWN_DEPLOYMENT_UNIT
27 STATUS_INVALID_DEPLOYMENT_UNIT_STATE
28 STATUS_INVALID_DEPLOYMENT_UNIT_UPDATE_DOWNGRADE_DISALLOWED
29 STATUS_INVALID_DEPLOYMENT_UNIT_UPDATE_UPGRADE_DISALLOWED
30 STATUS_INVALID_DEPLOYMENT_UNIT_UPDATE_VERSION_EXISTS
31 STATUS_DEVICE_MANAGEMENT_TIME_OUT
32 STATUS_NW_SVR_TRANSFER_FAILED

top