java sdk 매뉴얼 tcpiotmakers.kt.com/openp/assets/files/java_sdk_manual_tcp... · 2018-02-22 ·...

24
Java SDK 매뉴얼_TCP Document info Document name: “Java SDK 매뉴얼_TCP” Document date: 2016-01-21 Manual release version: 2.0.1

Upload: others

Post on 25-Feb-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Java SDK 매뉴얼_TCP

Document info

Document name: “Java SDK 매뉴얼_TCP”

Document date: 2016-01-21

Manual release version: 2.0.1

Java SDK 매뉴얼_TCP

1

목차

1. 개요 ..................................................................................................................................... 3

2. Java SDK 소개 ................................................................................................................. 4

2.1 SDK 다운로드 ...................................................................................................................................................................... 4

2.2 SDK 압축파일 구성 ......................................................................................................................................................... 4

2.3 Property 파일 ...................................................................................................................................................................... 4

2.4 Project 구성하기 (예: Eclipse) ................................................................................................................................... 5

3. API 목록 ............................................................................................................................ 7

3.1 IMTcpConnector ................................................................................................................................................................. 7

3.2 IMCallback .............................................................................................................................................................................. 7

3.3 IMUtil ......................................................................................................................................................................................... 7

4. 디바이스 연동 .................................................................................................................. 8

4.1 수집 ............................................................................................................................................................................................ 8

4.2 제어 ............................................................................................................................................................................................ 9

4.3 수집(Wrapping API) ..................................................................................................................................................... 10

4.4 제어(Wrapping API) ..................................................................................................................................................... 11

5. Java SDK API 설명 ....................................................................................................... 12

5.1 IMTcpConnector .............................................................................................................................................................. 12

5.1.1 init() ............................................................................................................................................................................ 12

5.1.2 connect() ................................................................................................................................................................ 12

5.1.3 authenticate() ...................................................................................................................................................... 12

5.1.4 disconnect() .......................................................................................................................................................... 12

5.1.5 destroy() .................................................................................................................................................................. 13

5.1.6 activate() ................................................................................................................................................................. 13

5.1.7 deactivate() ........................................................................................................................................................... 13

5.1.8 requestNumColecData() .............................................................................................................................. 13

5.1.9 requestStrColecData() .................................................................................................................................... 13

5.1.10 requestNumColecDatas() ......................................................................................................................... 14

5.1.11 requestStrColecDatas() ............................................................................................................................... 14

5.1.12 requestColecDatas() ..................................................................................................................................... 14

5.2 IMCallback ........................................................................................................................................................................... 15

5.2.1 handleColecRes() .............................................................................................................................................. 15

5.2.2 handleControlReq() ......................................................................................................................................... 15

Java SDK 매뉴얼_TCP

2

5.3 IMUtil ...................................................................................................................................................................................... 16

5.3.1 getBaseInfo() ........................................................................................................................................................ 16

5.3.2 getRandomTransID() ...................................................................................................................................... 16

5.4 BaseInfo................................................................................................................................................................................. 16

6. Sample 소스 .................................................................................................................. 17

6.1 IMCallback – 예제 LogIf............................................................................................................................................ 17

6.2 Sample code (Wrapping API) ................................................................................................................................. 18

6.3 Sample code ...................................................................................................................................................................... 20

7. 부록 ................................................................................................................................... 22

7.1. 응답코드 ............................................................................................................................................................................. 22

7.2. SDK Exception Code ................................................................................................................................................... 23

Java SDK 매뉴얼_TCP

3

1. 개요

IoTMakers SDK(Software Development Kit)는 IoT디바이스(이하 디바이스)가 IoTMakers플랫폼에

연동할 때에 필요한 API(Application Programming Interface)를 제공한다. 디바이스는 제공되는

API를 통하여 접속 및 장비인증, 수집데이터 전송 그리고 플랫폼으로부터 제어데이터를 수신할

수 있다.

[그림 1] IoTMakers SDK 연동 구조

디바이스가 IoTMakers플랫폼에 연동하기 위해서는 플랫폼에 디바이스 등록과정을 거쳐야 한다.

자세한 내용은 http://iotmakers.kt.com에서 확인한다.

이 문서는 IoTMakers SDK를 사용하는 프로그래머를 위하여 프로그래밍 가이드와 레퍼런스를

제공한다

Java SDK 매뉴얼_TCP

4

2. Java SDK 소개

Java SDK는 Apache Mina 기반의 Java 환경에서 사용되는 IoTMakers 연동용 Java API를 제공한

다. 이 SDK는 Jar형태로 제공되며, 필요한 라이브러리는 같이 첨부되어 제공된다. Java SDK는

JDK 1.7을 사용한다.

Java SDK는 Connection, Packet Making, Keep alive를 내부적으로 하여 사용자에게 편의를 주고

자 제작되었으며, 사용자는 exception과 콜백, 그리고 제공된 API를 통하여 IoTMakers와 편리하

게 연동할 수 있다.

2.1 SDK 다운로드

IoTMakers 홈페이지에 로그인 한 후에, 디바이스 상세정보 페이지에서 해당 SDK 압축파일(Zip)

을 내려 받는다. 내려 받은 파일을 압축 해제한다.

2.2 SDK 압축파일 구성

SDK 압축파일은 위의 그림과 같이 구성되어 있다.

- dist 폴더: IoTMakers SDK Jar 파일이 위치한 폴더.

- lib 폴더: IoTMakers SDK Jar파일을 위한 외부 라이브러리를 첨부한 폴더

- IoTSDK.properties: IoTMakers SDK에서 사용하는 property 파일 (2.3절 참조)

- Sample.java: 샘플 파일

- SampleLight.java: 샘플 파일 (Wrapping API 사용)

2.3 Property 파일

Property 파일은 기본적으로 서버에서 default 값을 내려주며, 향후 device ID가 바뀔 경우 새로

다운을 받거나, property파일에서 직접 갱신한다. IMUtil클래스에 선언된 getBaseInfo()함수를 통

하여 Property 파일에서 필요한 정보들을 읽어온다.

Java SDK 매뉴얼_TCP

5

Property File Description (IoTSDK.properties)

############### SDK Properties #############

# Server IP

sdk.serverIp=220.90.216.90

# Server Port

sdk.serverPort=10020

# Service ID

sdk.externalSysId=

# Device ID

sdk.deviceId=

# Password

sdk.password=

- sdk.serverIp: SERVER_IP=’서버주소’ 형식으로 입력한다. 맨 앞의 문자에 ‘#’을 입력하면 해당

주소는 인식하지 않는다. (e.g. sdk.serverIp=220.90.216.90)

- sdk.serverPort: SERVER_PORT=’포트번호’ 형식으로 입력한다. 맨 앞의 문자에 ‘#’을 입력하면

해당 포트는 인식하지 않는다. (e.g. sdk.serverPort =10020).

- sdk.externalSysId: 장치의 게이트웨이연결아이디를 나타낸다.

- sdk.deviceId: 장치의 아이디를 나타낸다.

- sdk.password: 장치의 패스워드를 나타낸다.

2.4 Project 구성하기 (예: Eclipse)

아래 그림과 같이 Eclipse에서 새로운 Java 프로젝트를 생성한 후, dist 폴더와 lib 폴더 안의 jar

파일을 추가하고, 샘플 소스를 실행한다.

Java SDK 매뉴얼_TCP

6

Java SDK 매뉴얼_TCP

7

3. API 목록

3.1 IMTcpConnector

API명 내용

void init(IMCallback callback, BaseInfo baseInfo) IoTMakers연동을 위한 내부자원 준비

void connect(Long timeout) IoTMakers에 연결

void authenticate(Long timeout) IoTMakers에 인증요청

void disconnect() IoTMakers와 연결 해제

void destroy() IoTMakers연동을 위한 내부자원 해제

void activate(IMCallback callback, BaseInfo baseInfo, Long

timeout)

Wrapping API로

init, connect, authenticate를 수행

void deactivate() Wrapping API로

disconnect, destroy를 수행

void requestNumColecData(String tagStream, Double value,

Date timestamp, Long transID)

숫자형 단건 데이터를 IoTMakers로 전송

void requestStrColecData(String tagStream, String value, Date

timestamp, Long transID)

문자형 단건 데이터를 IoTMakers로 전송

void requestNumColecDatas(Map<String, Double>

numberRows, Date timestamp, Long transID)

숫자형 다건 데이터를 IoTMakers로 전송

void requestStrColecDatas(Map<String, String> stringRows,

Date timestamp, Long transID)

문자형 다건 데이터를 IoTMakers로 전송

void requestColecDatas(Map<String, Double> numberRows,

Map<String, String> stringRows, Date timestamp, Long transID)

복합형 다건 데이터를 IoTMakers로 전송

3.2 IMCallback

API명 내용

void handleColecRes(Long transID, String respCd) 수집 응답에 대한 처리용 콜백

void handleControlReq(Long transID, Map<String, Double>

numberRows, Map<String, String> stringRows)

제어 요청에 대한 처리용 콜백

3.3 IMUtil

API명 내용

BaseInfo getBaseInfo(String filePath) property파일에서 BaseInfo를 로드

Long getRandomTransID() 랜덤한 transaction ID를 발급

Java SDK 매뉴얼_TCP

8

4. 디바이스 연동

4.1 수집

아래의 그림은 수집의 시퀀스를 나타낸 그림이다. 먼저 사용자는 init을 통해 SDK Class인

IMTcpConnector를 초기화, 필요 변수를 설정한다. 이후 connect 함수를 이용하여 서버와 연결

하고, authenticate 함수를 통하여 인증(로그인)을 실행한다. 인증이 성공할 경우, SDK에서는

keepalive 모듈을 시작하여 주기적으로 keepalive 패킷을 전송한다. 이후 사용자는 수집 함수들

을 통하여 IoTMakers에 값들을 전송할 수 있으며, 결과는 콜백을 통해서 받을 수 있다. 이후

disconnect 함수를 통하여 서버와 연결을 해제 및 keepalive 모듈을 정지시키며, destroy 함수를

통해 모든 메모리와 변수를 해제한다. 수행 도중 생기는 에러는 모두 SdkException을 통하여

확인할 수 있으며, 에러코드는 7.2절을 참고한다.

Java SDK 매뉴얼_TCP

9

4.2 제어

아래의 그림은 제어의 시퀀스를 나타낸 그림이다. 먼저 사용자는 init을 통해 SDK Class인

IMTcpConnector를 초기화, 필요 변수를 설정한다. 이후 connect 함수를 이용하여 서버와 연결

하고, authenticate 함수를 통하여 인증(로그인)을 실행한다. 인증이 성공할 경우, SDK에서는

keepalive 모듈을 시작하여 주기적으로 keepalive 패킷을 전송한다. 이후, IoTMakers에서 제어

요청 packet을 받으면, SDK는 자체적으로 Ack를 서버에 보내주고 제어요청을 콜백함수를 통하

여 사용자에게 전달한다. 이후 disconnect 함수를 통하여 서버와 연결을 해제 및 keepalive 모

듈을 정지시키며, destroy 함수를 통해 모든 메모리와 변수를 해제한다. 수행 도중 생기는 에러

는 모두 SdkException을 통하여 확인할 수 있으며, 에러코드는 7.2절을 참고한다.

Java SDK 매뉴얼_TCP

10

4.3 수집(Wrapping API)

아래의 그림은 수집 Wrapping API의 시퀀스를 나타낸 그림이다. 기존 수집과 달리, activate라는

함수를 통하여 init, connect, authenticate를 한번에 수행하며, deactivate를 통하여 disconnect

및 destroy를 한번에 수행한다. 수행 도중 생기는 에러는 모두 SdkException을 통하여 확인할

수 있으며, 에러코드는 7.2절을 참고한다.

Java SDK 매뉴얼_TCP

11

4.4 제어(Wrapping API)

아래의 그림은 제어 Wrapping API의 시퀀스를 나타낸 그림이다. 기존 수집과 달리, activate라는

함수를 통하여 init, connect, authenticate를 한번에 수행하며, deactivate를 통하여 disconnect

및 destroy를 한번에 수행한다. 수행 도중 생기는 에러는 모두 SdkException을 통하여 확인할

수 있으며, 에러코드는 7.2절을 참고한다.

Java SDK 매뉴얼_TCP

12

5. Java SDK API 설명

5.1 IMTcpConnector

5.1.1 init()

SDK 자원을 초기화 및 설정한다. BaseInfo의 경우, 유저가 직접 셋팅하거나 IMUtil의 API를 통

하여 Property에서 읽어올 수 있다. 필수 정보가 누락되었을 경우, SdkException을 던지며, 오류

코드는 7.2절에서 찾을 수 있다.

void init(IMCallback callback, BaseInfo baseInfo)

@param callback SDK에 사용될 콜백 객체

baseInfo SDK에 필요한 정보를 가진 객체

@return - -

5.1.2 connect()

IoTMakers 서버에 연결한다. Init함수가 호출이 되지 않았거나, timeout(ms)내에 연결을 실패할

경우, SdkException을 던지며, 오류코드는 7.2절에서 찾을 수 있다.

void connect(Long timeout)

@param timeout 연결 시 사용될 t imeout .

@return - -

5.1.3 authenticate()

IoTMakers 서버에 인증요청 패킷을 보낸다. 성공 시 keep alive패킷을 주기적으로 자동으로 전

송한다.connect함수가 호출이 되지 않았거나, timeout(ms)내에 연결을 실패할 경우,

SdkException을 던지며, 오류코드는 7.2절에서 찾을 수 있다.

void authenticate(Long timeout)

@param timeout 인증 요청 시 사용될 t imeout .

@return - -

5.1.4 disconnect()

IoTMakers 서버에 보내는 keep alive를 중단하고 연결을 해제한다.

void disconnect()

@param - -

@return - -

Java SDK 매뉴얼_TCP

13

5.1.5 destroy()

SDK 자원을 해제 및 초기화 시킨다.

void destroy()

@param - -

@return - -

5.1.6 activate()

Init, connect, authenticate를 각각 호출하지 않고, 한번의 API 호출을 통해 해결할 수 있는 API

다. 수행 중, 문제가 생길 경우 SdkException을 던지며, 오류코드는 7.2절에서 찾을 수 있다.

void activate(IMCallback callback, BaseInfo baseInfo, Long timeout)

@param

callback SDK에 사용될 콜백 객체

baseInfo SDK에 필요한 정보를 가진 객체

timeout 인증 요청 및 연결 시 사용될 t imeout .

@return - -

5.1.7 deactivate()

disconnect, destroy를 각각 호출하지 않고, 한번의 API 호출을 통해 해결할 수 있는 API다. 수

행 중, 문제가 생길 경우 SdkException을 던지며, 오류코드는 7.2절에서 찾을 수 있다.

void deactivate()

@param - -

@return - -

5.1.8 requestNumColecData()

IoTMakers로 단건의 숫자형 데이터를 전송한다. 결과값은 Callback을 통해 받을 수 있다.

void requestNumColecData(String tagStream, Double value, Date timestamp, Long transID)

@param

tagStream 수집할 데이터의 태그스트림 값

value 수집할 데이터의 측정 값

t imestamp 수집할 데이터의 수집시간

t ransID 수집요청에 대한 t ransact ion ID

@return - -

5.1.9 requestStrColecData()

IoTMakers로 단건의 문자형 데이터를 전송한다. 결과값은 Callback을 통해 받을 수 있다.

void requestStrColecData(String tagStream, String value, Date timestamp, Long transID)

Java SDK 매뉴얼_TCP

14

@param

tagStream 수집할 데이터의 태그스트림 값

value 수집할 데이터의 측정 값

t imestamp 수집할 데이터의 수집시간

t ransID 수집요청에 대한 t ransact ion ID

@return - -

5.1.10 requestNumColecDatas()

IoTMakers로 다건의 숫자형 데이터를 전송한다. 결과값은 Callback을 통해 받을 수 있다.

void requestNumColecDatas(Map<String,Double> numberRows, Date timestamp, Long transID)

@param

numberRows 수집할 데이터의 태그스트림과 측정값 쌍의 모임

timestamp 수집할 데이터의 수집시간

transID 수집요청에 대한 transaction ID

@return - -

5.1.11 requestStrColecDatas()

IoTMakers로 다건의 문자형 데이터를 전송한다. 결과값은 Callback을 통해 받을 수 있다.

void requestStrColecDatas(Map<String,String> stringRows, Date timestamp, Long transID)

@param

stringRows 수집할 데이터의 태그스트림과 측정값 쌍의 모임

t imestamp 수집할 데이터의 수집시간

t ransID 수집요청에 대한 t ransact ion ID

@return - -

5.1.12 requestColecDatas()

IoTMakers로 다건의 문자형 및 숫자형 데이터를 복합적으로 한번에 전송한다. 결과값은 Callback을 통해

받을 수 있다.

void requestColecDatas(Map<String,Double> numberRows, Map<String,String> stringRows, Date

timestamp, Long transID)

@param

numberRows 수집할 데이터의 태그스트림과 측정값 쌍의 모임

stringRows 수집할 데이터의 태그스트림과 측정값 쌍의 모임

t imestamp 수집할 데이터의 수집시간

t ransID 수집요청에 대한 t ransact ion ID

@return - -

Java SDK 매뉴얼_TCP

15

5.2 IMCallback

5.2.1 handleColecRes()

수집요청에 대한 응답을 SDK을 받을 경우, 결과 값을 넘겨주는 콜백이다. 콜백을 통하여 어떤

트랜잭션에 대하여 어떤 결과가 왔는지 알 수 있다.

void handleColecRes(Long transID, String respCd)

@param transID 수집요청의 t ransact ion ID

respCd 수집요청에 대한 결과 코드 (7 .1절 참고 )

@return - -

5.2.2 handleControlReq()

제어요청이 IoTMakers에서 내려올 경우 호출되는 콜백으로, 숫자형 제어일 경우 numberRows

에서, 문자형 제어일 경우 stringRows에서 꺼내어 장치에 제어명령을 내려주면 된다

void handleControlReq(Long transID, Map<String, Double> numberRows, Map<String, String>

stringRows)

@param

transID 제어요청에 대한 transaction ID

numberRows 숫자형 제어 명령 모음

stringRows 문자형 제어 명령 모음

@return - -

Java SDK 매뉴얼_TCP

16

5.3 IMUtil

5.3.1 getBaseInfo()

SDK가 구동하기 위한 BaseInfo를 Property 파일에서 읽어오는 Util성 API다.

BaseInfo getBaseInfo(String filePath)

@param filePath Property 파일 경로

@return BaseInfo Property 파일의 값들을 설정한 객체

5.3.2 getRandomTransID()

랜덤한 Transaction ID 발번을 위한 Util성 API다.

Long getRandomTransID()

@param - -

@return Long 랜덤한 Transact ion ID

5.4 BaseInfo

SDK가 구동하기 위한 BaseInfo 객체이다. IP, port, 장치아이디, Password 등 구동에 필요한 정보

를 담고있다. Property 파일에서 읽어오거나, 직접 셋팅한다.

Class BaseInfo

private String ip;

private Integer port;

private String extrSysId;

private String deviceId;

private String password;

private Long healthCheckPeriod;

@fie ld ip 서버 IP

@f ie ld port 서버 Port

@f ie ld extrSysId Gateway 연결 ID

@f ie ld deviceId 장치 아이디

@f ie ld password 장치 패스워드

@f ie ld healthCheckPeriod keep al ive 주기 (defaul t : 50초 )

Java SDK 매뉴얼_TCP

17

6. Sample 소스

6.1 IMCallback – 예제 LogIf

IoTMakers SDK library에서 기본으로 제공하는 callback의 예제 구현체이다. 테스트 용도를 위해

첨부되어 있으며, callback을 정의하지 않을 경우, LogIf가 임의로 셋팅 된다.

import java.util.Map;

public class LogIf extends IMCallback{

@Override

public void handleColecRes(Long transID, String respCd) {

System.out.println("Handle Collect Response Called. Transaction ID : " + transID + "

Response Code :" + respCd);

}

@Override

public void handleControlReq(Long transID, Map<String, Double> numberRows,

Map<String, String> stringRows) {

System.out.println("Handle Control Request Called. Transaction ID : " + transID);

System.out.println(numberRows.size()+" Number Type controls. " +

stringRows.size() + "String Type controls." );

}

}

Java SDK 매뉴얼_TCP

18

6.2 Sample code (Wrapping API)

IoTMakers SDK library를 이용하기 위한 sample code이다. main 구문은 그대로 사용가능하며,

선언된 callback function들을 client에서 직접 구현하여 프로그램을 작성하여야 한다. Wrapping

된 인터페이스를 사용하여, 좀더 편하게 이용할 수 있다.

import java.util.Date;

import java.util.HashMap;

import java.util.Map;

import com.kt.smcp.gw.ca.comm.exception.SdkException;

import com.kt.smcp.gw.ca.gwfrwk.adap.stdsys.sdk.tcp.BaseInfo;

import com.kt.smcp.gw.ca.gwfrwk.adap.stdsys.sdk.tcp.LogIf;

import com.kt.smcp.gw.ca.gwfrwk.adap.stdsys.sdk.tcp.IMTcpConnector;

import com.kt.smcp.gw.ca.util.IMUtil;

public class SampleLight {

public static void main(String[] args) {

LogIf callback = new LogIf();

IMTcpConnector imTcpConnector = new IMTcpConnector();

BaseInfo baseInfo = null;

Long transID;

Long timeOut = (long) 3000;

try {

// 초기화

baseInfo = IMUtil.getBaseInfo("IoTSDK.properties");

imTcpConnector.activate(callback, baseInfo, timeOut);

// 숫자형 단건 전송

transID = IMUtil.getTransactionLongRoundKey4();

imTcpConnector.requestNumColecData("temperature", 22.0, new Date(),

transID);

// 문자형 단건 전송

transID = IMUtil.getTransactionLongRoundKey4();

imTcpConnector.requestStrColecData("LED", "ON", new Date(), transID);

// 숫자형 다건 전송

transID = IMUtil.getTransactionLongRoundKey4();

Map<String, Double> numberRows = new HashMap<String, Double>();

numberRows.put("latitude", 20.2);

numberRows.put("longitude", 23.8);

imTcpConnector.requestNumColecDatas(numberRows, new Date(),

transID);

// 문자형 다건 전송

transID = IMUtil.getTransactionLongRoundKey4();

Map<String, String> stringRows = new HashMap<String, String>();

Java SDK 매뉴얼_TCP

19

stringRows.put("power", "on");

stringRows.put("speed", "high");

imTcpConnector.requestStrColecDatas(stringRows, new Date(), transID);

// 복합형(문자+숫자) 다건 전송

transID = IMUtil.getTransactionLongRoundKey4();

imTcpConnector.requestColecDatas(numberRows, stringRows, new Date(),

transID);

// 해제 및 종료

imTcpConnector.deactivate();

} catch (SdkException e) {

System.out.println("Code :" + e.getCode() + " Message :" +

e.getMessage());

}

}

}

Activate 와 deactivate 함수를 통해 초기화 및 해제를 할 수 있으며, 콜백함수들을 통하여 결과

를 받을 수 있다. 또한 자체적으로 Health Check 패킷을 주기에 맞추어 전송한다.

Java SDK 매뉴얼_TCP

20

6.3 Sample code

IoTMakers SDK library를 이용하기 위한 sample code이다. main 구문은 그대로 사용가능하며,

선언된 callback function들을 client에서 직접 구현하여 프로그램을 작성하여야 한다. Light 버전

과 다르게 좀더 섬세하게 SDK의 동작을 컨트롤 할 수 있다

import java.util.Date;

import java.util.HashMap;

import java.util.Map;

import com.kt.smcp.gw.ca.comm.exception.SdkException;

import com.kt.smcp.gw.ca.gwfrwk.adap.stdsys.sdk.tcp.BaseInfo;

import com.kt.smcp.gw.ca.gwfrwk.adap.stdsys.sdk.tcp.LogIf;

import com.kt.smcp.gw.ca.gwfrwk.adap.stdsys.sdk.tcp.IMTcpConnector;

import com.kt.smcp.gw.ca.util.IMUtil;

public class Sample {

public static void main(String[] args) {

LogIf callback = new LogIf();

IMTcpConnector imTcpConnector = new IMTcpConnector();

BaseInfo baseInfo = null;

Long transID;

Long timeOut = (long) 3000;

try {

// 초기화

baseInfo = IMUtil.getBaseInfo("IoTSDK.properties");

imTcpConnector.init(callback, baseInfo);

// 연결

imTcpConnector.connect(timeOut);

// 인증

imTcpConnector.authenticate(timeOut);

// 숫자형 단건 전송

transID = IMUtil.getTransactionLongRoundKey4();

imTcpConnector.requestNumColecData("temperature", 22.1, new Date(),

transID);

// 문자형 단건 전송

transID = IMUtil.getTransactionLongRoundKey4();

imTcpConnector.requestStrColecData("LED", "ON", new Date(), transID);

// 숫자형 다건 전송

transID = IMUtil.getTransactionLongRoundKey4();

Map<String, Double> numberRows = new HashMap<String, Double>();

numberRows.put("latitude", 20.2);

numberRows.put("longitude", 23.8);

imTcpConnector.requestNumColecDatas(numberRows, new Date(),

Java SDK 매뉴얼_TCP

21

transID);

// 문자형 다건 전송

transID = IMUtil.getTransactionLongRoundKey4();

Map<String, String> stringRows = new HashMap<String, String>();

stringRows.put("power", "on");

stringRows.put("speed", "high");

imTcpConnector.requestStrColecDatas(stringRows, new Date(), transID);

// 복합형(문자+숫자) 다건 전송

transID = IMUtil.getTransactionLongRoundKey4();

imTcpConnector.requestColecDatas(numberRows, stringRows, new Date(),

transID);

// 연결 해제

imTcpConnector.disconnect();

// 자원 해제

imTcpConnector.destroy();

} catch (SdkException e) {

System.out.println("Code :" + e.getCode() + " Message :" +

e.getMessage());

}

}

}

사용자가 원하는 시점에 init, connect, authenticate, disconnect, destroy를 할 수 있도록 분리해

놓은 sample 코드이며, 콜백함수들을 통하여 결과를 받을 수 있다. 또한 자체적으로 Health

Check 패킷을 주기에 맞추어 전송한다.

Java SDK 매뉴얼_TCP

22

7. 부록

7.1. 응답코드

Code Type Description

100 Success 처리성공

200 General Error 일반 오류

201 Implementation Error 구현 오류

202 Packet Push Error 패킷푸쉬 오류

203 Decryption Error 복호화 오류

204 Parsing Error 패킷파싱 오류

205 Authentication Error 인증 오류

206 Ack Error 응답 오류

207 Comm Ch Athn Error 통신채널 인증오류

208 Request Info Error 요청정보 오류

Java SDK 매뉴얼_TCP

23

7.2. SDK Exception Code

Code Type Description

4101 Thread Sleep Fail Thread Sleep Fail (Interrupted)

4111 BaseInfo Convert Error Opening property file error

4112 BaseInfo Null Error BaseInfo class is empty

4113 BaseInfo Mandatory Field Error BaseInfo mandatory field is empty

4114 MqttClient Initialize Fail Mqtt Client Initialize Fail

4121 Connect Fail Cannot connect to IoTMakers Server

4122 Mqtt Subscribe Fail Fail to subscribe to topic

4123 Mqtt Publish Fail Fail to publish to topic

4124 Write Fail Fail to write packet

4125 Packet Create Fail Fail to create packet

4126 Mqtt Unsubscribe Fail Fail to unsubscribe from topic

4131 Login Fail Login failure. Check ID and password

4141 Not Authenticated Authentication is required.

4142 Not Connected Connection is required

4151 Fail to Disconnect Fail to disconnect from server