瀏覽代碼

Merge branch 'dimming_version' of HomeNetServer/kakao into master

alalssg 5 年之前
父節點
當前提交
250ef117b4

+ 5 - 2
src/main/java/com/icontrols/kakao/common/SERVERINFO.java

@@ -41,8 +41,11 @@ public class SERVERINFO {
 	public static final String KAKAO_HEADER_CLIENT_ID = "MPAHXKWELS";
 	public static final String KAKAO_HEADER_CLIENT_ID = "MPAHXKWELS";
 	public static final String KAKAO_HEADER_CLIENT_SECRET = "SHDPEOWJSKDZALQXLDNS";
 	public static final String KAKAO_HEADER_CLIENT_SECRET = "SHDPEOWJSKDZALQXLDNS";
 	
 	
-	public static final String KAKAO_EVENT_CLIENT_ID = "pkevk1F4cKHzs7rN4MHe25wYnUm3kRvh";
-	public static final String KAKAO_EVENT_CLIENT_SECRET = "pF2UrvbhkAqbptG4SyrsUU5pTB1DWtqm";
+//	public static final String KAKAO_EVENT_CLIENT_ID = "pkevk1F4cKHzs7rN4MHe25wYnUm3kRvh";			// beta 앱에서 테스트시
+//	public static final String KAKAO_EVENT_CLIENT_SECRET = "pF2UrvbhkAqbptG4SyrsUU5pTB1DWtqm";		// beta 앱에서 테스트시
+	
+	public static final String KAKAO_EVENT_CLIENT_ID = "zaXpi9VRVobQPFXuSDQzZ3EEdDrgPSUW";			// 릴리즈 앱에서 테스트시
+	public static final String KAKAO_EVENT_CLIENT_SECRET = "Hy5qg31KTSpHnTt8rfZsvFHmAoYTdByp";		// 릴리즈 앱에서 테스트시
 	
 	
 	public final static String HEADER_AUTH = "Authorization";
 	public final static String HEADER_AUTH = "Authorization";
 	
 	

+ 26 - 2
src/main/java/com/icontrols/kakao/common/THINGS_INFO.java

@@ -24,7 +24,7 @@ public final class THINGS_INFO {
 		LIGHT_DIMMER("dimming","{\"capabilities\" : [ { \"name\" : \"Power\" }, { \"name\" : \"Brightness\" } ]}"),
 		LIGHT_DIMMER("dimming","{\"capabilities\" : [ { \"name\" : \"Power\" }, { \"name\" : \"Brightness\" } ]}"),
 		COLOR_LIGHT("colorLight", "{\"capabilities\" : [ { \"name\" : \"Power\" }, { \"name\" : \"ColorMode\"}, { \"name\" : \"ColorTemperature\"} ]}"),
 		COLOR_LIGHT("colorLight", "{\"capabilities\" : [ { \"name\" : \"Power\" }, { \"name\" : \"ColorMode\"}, { \"name\" : \"ColorTemperature\"} ]}"),
 		COLOR_LIGHT_DIMMER("colorDimming", "{\"capabilities\" : [ { \"name\" : \"Power\" }, { \"name\" : \"Brightness\" }, { \"name\" : \"ColorMode\"}, { \"name\" : \"ColorTemperature\", \"attributes\" : { \"colorTemperature\": { \"min\":3000, \"max\":5700 } } } ]}"),
 		COLOR_LIGHT_DIMMER("colorDimming", "{\"capabilities\" : [ { \"name\" : \"Power\" }, { \"name\" : \"Brightness\" }, { \"name\" : \"ColorMode\"}, { \"name\" : \"ColorTemperature\", \"attributes\" : { \"colorTemperature\": { \"min\":3000, \"max\":5700 } } } ]}"),
-		TEMPER("temper", "{\"capabilities\" : [ { \"name\" : \"Power\" }, { \"name\" : \"Temperature\" }, { \"name\" : \"TemperatureSetpoint\" } ]}"),
+		TEMPER("temper", "{\"capabilities\" : [ { \"name\" : \"Power\" }, { \"name\" : \"Temperature\" }, { \"name\" : \"TemperatureSetpoint\" , \"attributes\" : { \"targetSetpoint\": { \"min\":20, \"max\":30 } } } ]}"),
 		VENTIL("ventil","{\"capabilities\" : [ { \"name\" : \"Power\" }, { \"name\" : \"AirFlow\" } ]}"),
 		VENTIL("ventil","{\"capabilities\" : [ { \"name\" : \"Power\" }, { \"name\" : \"AirFlow\" } ]}"),
 		GAS("gas","{\"capabilities\" : [ { \"name\" : \"Lock\" } ] }"),
 		GAS("gas","{\"capabilities\" : [ { \"name\" : \"Lock\" } ] }"),
 		ELEVATOR("elevator", "{\"capabilities\" : [ { \"name\" : \"ElevatorCall\" } ] }"),
 		ELEVATOR("elevator", "{\"capabilities\" : [ { \"name\" : \"ElevatorCall\" } ] }"),
@@ -58,18 +58,33 @@ public final class THINGS_INFO {
 		LIGHT03						("light03",						"Light",			"방2조명"),
 		LIGHT03						("light03",						"Light",			"방2조명"),
 		LIGHT04						("light04",						"Light",			"방3조명"),
 		LIGHT04						("light04",						"Light",			"방3조명"),
 		LIGHT05						("light05",						"Light",			"방4조명"),
 		LIGHT05						("light05",						"Light",			"방4조명"),
+		LIGHT06						("light06",						"Light",			"방5조명"),
+		LIGHT07						("light07",						"Light",			"방6조명"),
+		LIGHT08						("light08",						"Light",			"방7조명"),
+		LIGHT09						("light09",						"Light",			"방8조명"),
+		LIGHT10						("light10",						"Light",			"방9조명"),
 		DIMMER_LIVINGLIGHT			("dimmer_livinglight", 			"LightDimmer", 		"거실조명"),
 		DIMMER_LIVINGLIGHT			("dimmer_livinglight", 			"LightDimmer", 		"거실조명"),
 		DIMMER_LIGHT01				("dimmer_light01",				"LightDimmer",		"주방조명"),
 		DIMMER_LIGHT01				("dimmer_light01",				"LightDimmer",		"주방조명"),
 		DIMMER_LIGHT02				("dimmer_light02",				"LightDimmer",		"방1조명"),
 		DIMMER_LIGHT02				("dimmer_light02",				"LightDimmer",		"방1조명"),
 		DIMMER_LIGHT03				("dimmer_light03",				"LightDimmer",		"방2조명"),
 		DIMMER_LIGHT03				("dimmer_light03",				"LightDimmer",		"방2조명"),
 		DIMMER_LIGHT04				("dimmer_light04",				"LightDimmer",		"방3조명"),
 		DIMMER_LIGHT04				("dimmer_light04",				"LightDimmer",		"방3조명"),
 		DIMMER_LIGHT05				("dimmer_light05",				"LightDimmer",		"방4조명"),
 		DIMMER_LIGHT05				("dimmer_light05",				"LightDimmer",		"방4조명"),
+		DIMMER_LIGHT06				("dimmer_light06",				"LightDimmer",		"방5조명"),
+		DIMMER_LIGHT07				("dimmer_light07",				"LightDimmer",		"방6조명"),
+		DIMMER_LIGHT08				("dimmer_light08",				"LightDimmer",		"방7조명"),
+		DIMMER_LIGHT09				("dimmer_light09",				"LightDimmer",		"방8조명"),
+		DIMMER_LIGHT10				("dimmer_light10",				"LightDimmer",		"방9조명"),
 		COLOR_DIMMER_LIVINGLIGHT	("colorDimmer_livinglight", 	"ColorLightDimmer",	"거실조명"),
 		COLOR_DIMMER_LIVINGLIGHT	("colorDimmer_livinglight", 	"ColorLightDimmer",	"거실조명"),
 		COLOR_DIMMER_LIGHT01		("colorDimmer_light01",			"ColorLightDimmer",	"주방조명"),
 		COLOR_DIMMER_LIGHT01		("colorDimmer_light01",			"ColorLightDimmer",	"주방조명"),
 		COLOR_DIMMER_LIGHT02		("colorDimmer_light02",			"ColorLightDimmer",	"방1조명"),
 		COLOR_DIMMER_LIGHT02		("colorDimmer_light02",			"ColorLightDimmer",	"방1조명"),
 		COLOR_DIMMER_LIGHT03		("colorDimmer_light03",			"ColorLightDimmer",	"방2조명"),
 		COLOR_DIMMER_LIGHT03		("colorDimmer_light03",			"ColorLightDimmer",	"방2조명"),
 		COLOR_DIMMER_LIGHT04		("colorDimmer_light04",			"ColorLightDimmer",	"방3조명"),
 		COLOR_DIMMER_LIGHT04		("colorDimmer_light04",			"ColorLightDimmer",	"방3조명"),
 		COLOR_DIMMER_LIGHT05		("colorDimmer_light05",			"ColorLightDimmer",	"방4조명"),
 		COLOR_DIMMER_LIGHT05		("colorDimmer_light05",			"ColorLightDimmer",	"방4조명"),
+		COLOR_DIMMER_LIGHT06		("colorDimmer_light06",			"ColorLightDimmer",	"방5조명"),
+		COLOR_DIMMER_LIGHT07		("colorDimmer_light07",			"ColorLightDimmer",	"방6조명"),
+		COLOR_DIMMER_LIGHT08		("colorDimmer_light08",			"ColorLightDimmer",	"방7조명"),
+		COLOR_DIMMER_LIGHT09		("colorDimmer_light09",			"ColorLightDimmer",	"방8조명"),
+		COLOR_DIMMER_LIGHT10		("colorDimmer_light10",			"ColorLightDimmer",	"방9조명"),
 		VENTIL						("ventil",						"AirVentilator",	"환기"),
 		VENTIL						("ventil",						"AirVentilator",	"환기"),
 		GAS							("gas",							"GasValve",			"가스밸브"),
 		GAS							("gas",							"GasValve",			"가스밸브"),
 		ELEVATOR					("elevator",					"ElevatorCaller",	"엘리베이터"),
 		ELEVATOR					("elevator",					"ElevatorCaller",	"엘리베이터"),
@@ -78,12 +93,21 @@ public final class THINGS_INFO {
 		TEMPER3						("temper_3",					"FloorHeater",		"방2난방"),
 		TEMPER3						("temper_3",					"FloorHeater",		"방2난방"),
 		TEMPER4						("temper_4",					"FloorHeater",		"방3난방"),
 		TEMPER4						("temper_4",					"FloorHeater",		"방3난방"),
 		TEMPER5						("temper_5",					"FloorHeater",		"방4난방"),
 		TEMPER5						("temper_5",					"FloorHeater",		"방4난방"),
+		TEMPER6						("temper_6",					"FloorHeater",		"방5난방"),
+		TEMPER7						("temper_7",					"FloorHeater",		"방6난방"),
+		TEMPER8						("temper_8",					"FloorHeater",		"방7난방"),
+		TEMPER9						("temper_9",					"FloorHeater",		"방8난방"),
+		TEMPER10					("temper_10",					"FloorHeater",		"방9난방"),
 		ELECTRIC01					("electric01",					"PowerOutlet",		"거실콘센트"),
 		ELECTRIC01					("electric01",					"PowerOutlet",		"거실콘센트"),
 		ELECTRIC02					("electric02",					"PowerOutlet",		"주방콘센트"),
 		ELECTRIC02					("electric02",					"PowerOutlet",		"주방콘센트"),
 		ELECTRIC03					("electric03",					"PowerOutlet",		"방1콘센트"),
 		ELECTRIC03					("electric03",					"PowerOutlet",		"방1콘센트"),
 		ELECTRIC04					("electric04",					"PowerOutlet",		"방2콘센트"),
 		ELECTRIC04					("electric04",					"PowerOutlet",		"방2콘센트"),
 		ELECTRIC05					("electric05",					"PowerOutlet",		"방3콘센트"),
 		ELECTRIC05					("electric05",					"PowerOutlet",		"방3콘센트"),
-		ELECTRIC06					("electric06",					"PowerOutlet",		"방4콘센트")
+		ELECTRIC06					("electric06",					"PowerOutlet",		"방4콘센트"),
+		ELECTRIC07					("electric07",					"PowerOutlet",		"방5콘센트"),
+		ELECTRIC08					("electric08",					"PowerOutlet",		"방6콘센트"),
+		ELECTRIC09					("electric09",					"PowerOutlet",		"방7콘센트"),
+		ELECTRIC10					("electric10",					"PowerOutlet",		"방8콘센트")
 		;
 		;
 		
 		
 		
 		

+ 1 - 1
src/main/java/com/icontrols/kakao/common/utils/JWTUtils2.java

@@ -41,7 +41,7 @@ public class JWTUtils2 {
 		try {
 		try {
 			secretKey = ACCESS_TOEKN_SECRET_KEY;
 			secretKey = ACCESS_TOEKN_SECRET_KEY;
 			
 			
-			logger.info(token);
+//			logger.info(token);
 			Decoder decoder = Base64.getDecoder();
 			Decoder decoder = Base64.getDecoder();
 			// 시그니처가 맞는지 확인
 			// 시그니처가 맞는지 확인
 			String enPayload = token.split("\\.")[1];
 			String enPayload = token.split("\\.")[1];

+ 2 - 2
src/main/java/com/icontrols/kakao/controller/AccessTokenController.java

@@ -39,7 +39,7 @@ public class AccessTokenController {
 		String type = (String) params.get("type");
 		String type = (String) params.get("type");
 		Map<String, Object> body = (HashMap<String, Object>) params.get("body");
 		Map<String, Object> body = (HashMap<String, Object>) params.get("body");
 		
 		
-		logger.info("[accessToken] - id [" + params.get("id") + "] - type [" + type + "] - body [" + body.toString() + "]");
+		logger.info("[accessToken]-[" + reqId + "]- id [" + params.get("id") + "] - type [" + type + "] - body [" + body.toString() + "]");
 		
 		
 		switch(type) {
 		switch(type) {
 		case "CREATE":
 		case "CREATE":
@@ -58,7 +58,7 @@ public class AccessTokenController {
 		
 		
 		retMap.put("id", reqId);
 		retMap.put("id", reqId);
 		retMap.put("type", type);
 		retMap.put("type", type);
-		logger.info("[accessToken] RESULT - " + retMap.toString());
+		logger.info("[accessToken]-[" + reqId + "]-  RESULT - " + retMap.toString());
 		return retMap;
 		return retMap;
 	}
 	}
 }
 }

+ 1 - 1
src/main/java/com/icontrols/kakao/service/impl/AccessTokenServiceImpl.java

@@ -51,7 +51,7 @@ public class AccessTokenServiceImpl implements AccessTokenService {
 		
 		
 		// 1.2 삭제된 토큰이면 UNLINK 토큰
 		// 1.2 삭제된 토큰이면 UNLINK 토큰
 		UserInfo userInfo = uList.get(0);
 		UserInfo userInfo = uList.get(0);
-		logger.info("[validate] - userInfo - " + userInfo.toString());
+		logger.info("[validate] - " + userInfo.toString());
 		if(userInfo.getDeleteFlag().equals("Y")) {
 		if(userInfo.getDeleteFlag().equals("Y")) {
 			logger.error("[ERROR] - 연동 해지 토큰 - " + accessToken);
 			logger.error("[ERROR] - 연동 해지 토큰 - " + accessToken);
 			return KAKAO_RESULT.FAIL_UNLINKEXTENSION_SERVICE;
 			return KAKAO_RESULT.FAIL_UNLINKEXTENSION_SERVICE;

+ 1 - 1
src/main/java/com/icontrols/kakao/service/impl/KakaoExtensionServiceImpl.java

@@ -168,7 +168,7 @@ public class KakaoExtensionServiceImpl implements KakaoExtensionService {
 		
 		
 		Map<String, Object> retMap = new HashMap<String, Object>();
 		Map<String, Object> retMap = new HashMap<String, Object>();
 		
 		
-		logger.info("[QUERYSTATE] - " + endpointIds);
+		logger.debug("[QUERYSTATE] - " + endpointIds);
 		
 		
 		try {
 		try {
 			if(endpointIds == null) {
 			if(endpointIds == null) {

+ 4 - 4
src/main/java/com/icontrols/kakao/socket/utils/SSLClient.java

@@ -54,14 +54,14 @@ public class SSLClient {
 	public SSLClient(String host, int port) {
 	public SSLClient(String host, int port) {
 		// 1. Param Check
 		// 1. Param Check
 		if (host == null) {
 		if (host == null) {
-			logger.info("[SSLClient] Param 'host' is null !!!");
+			logger.error("[SSLClient] Param 'host' is null !!!");
 			return;
 			return;
 		}
 		}
 
 
 		// 2. IP Convert & Check
 		// 2. IP Convert & Check
 		byte[] retIP = IPConverting(host);
 		byte[] retIP = IPConverting(host);
 		if (retIP == null) {
 		if (retIP == null) {
-			logger.info("[SSLClient] IPConverting Error !!!");
+			logger.error("[SSLClient] IPConverting Error !!!");
 			return;
 			return;
 		}
 		}
 		ServerIP = retIP;
 		ServerIP = retIP;
@@ -207,7 +207,7 @@ public class SSLClient {
 		} catch (ConnectException ce) {
 		} catch (ConnectException ce) {
 			// TODO Auto-generated catch block
 			// TODO Auto-generated catch block
 			recvMsg = "ConnectionException";
 			recvMsg = "ConnectionException";
-			logger.info("[sendToWallpad] - Exception !!! ~~~");
+			logger.error("[sendToWallpad] - Exception !!! ~~~");
 
 
 			try {
 			try {
 				Thread.sleep(2000);
 				Thread.sleep(2000);
@@ -221,7 +221,7 @@ public class SSLClient {
 			// TODO Auto-generated catch block
 			// TODO Auto-generated catch block
 
 
 			recvMsg = "SocketTimeoutException";
 			recvMsg = "SocketTimeoutException";
-			logger.info("connection TIME OUT!!!");
+			logger.error("connection TIME OUT!!!");
 
 
 			try {
 			try {
 				Thread.sleep(100);
 				Thread.sleep(100);

+ 68 - 0
src/main/java/com/icontrols/kakao/socket/wallpad/ImapMultiSocketSSLServer.java

@@ -0,0 +1,68 @@
+package com.icontrols.kakao.socket.wallpad;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+import javax.net.ServerSocketFactory;
+import javax.net.ssl.SSLServerSocket;
+import javax.net.ssl.SSLServerSocketFactory;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.icontrols.kakao.common.SERVERINFO;
+import com.icontrols.kakao.common.utils.CommonUtil;
+
+public class ImapMultiSocketSSLServer extends Thread{
+	private static final Logger logger = LoggerFactory.getLogger(ImapMultiSocketSSLServer.class);
+	ServerSocket svr;
+	
+	private SSLServerSocket sslSvr;
+	boolean receiveSocketRun = true;
+	
+	private int serverPort;
+	
+	public ImapMultiSocketSSLServer(){
+		try {
+			serverPort = SERVERINFO.WalladReceivePort;
+			ServerSocketFactory ssf = SSLServerSocketFactory.getDefault();
+			ServerSocket sck = ssf.createServerSocket(serverPort);
+			logger.info("**********************************************************");
+			logger.info("SSL Event Server Socket Start!");
+			logger.info("...");
+			logger.info("이벤트 수신 IP" + sck.getLocalSocketAddress());
+			logger.info("...");
+			logger.info("이벤트 수신 포트 : " + sck.getLocalPort());
+			logger.info("...");
+			logger.info("Timeout : " + sck.getSoTimeout());
+			logger.info("**********************************************************");
+			
+			while(true) {
+				logger.info("Waiting New Event Message ... " );
+				
+				Socket connectedCLientSocket = sck.accept();
+				
+				logger.info("Connect Client IP : " + connectedCLientSocket.getInetAddress() + " || Client Port : " + connectedCLientSocket.getLocalPort());
+				
+				new ThreadServerHandler(connectedCLientSocket, CommonUtil.getUpdateNoticeNewDanjiServer()).start();
+			}
+		}catch(Exception e) {
+			logger.error("SSL server Socket 생성 실패" );
+			logger.error(e.getMessage());
+			e.printStackTrace();
+		}
+	}
+	
+	public void run() {
+		while(receiveSocketRun) {
+			try {
+				Socket socket = sslSvr.accept();
+			}catch(Exception e) {
+				logger.error("SSL Server Socket Start Error");
+				logger.error(e.getMessage());
+				e.printStackTrace();
+			}
+		}
+	}
+}

+ 3 - 5
src/main/java/com/icontrols/kakao/socket/wallpad/KakaoEventHandler.java

@@ -81,7 +81,7 @@ public class KakaoEventHandler {
 				params.put(KEY_INFO.HTTP_KEY_AUTHORIZATION, userInfo.getKakaoAccessToken());
 				params.put(KEY_INFO.HTTP_KEY_AUTHORIZATION, userInfo.getKakaoAccessToken());
 			}
 			}
 			
 			
-			logger.info("["+userInfo.getKakaoAccessToken()+"] - 유효한 토큰");
+			logger.debug("["+userInfo.getKakaoAccessToken()+"] - 유효한 토큰");
 			
 			
 			// 이벤트 전송.
 			// 이벤트 전송.
 			Map<String, Object> sendResult = sendStatusResult(userInfo, params);
 			Map<String, Object> sendResult = sendStatusResult(userInfo, params);
@@ -214,7 +214,7 @@ public class KakaoEventHandler {
 				int errorCode = Integer.parseInt((String)errMap.get(KEY_INFO.ERROR_KEY_CODE));
 				int errorCode = Integer.parseInt((String)errMap.get(KEY_INFO.ERROR_KEY_CODE));
 				String message = (String)errMap.get(KEY_INFO.ERROR_KEY_MESSAGE);
 				String message = (String)errMap.get(KEY_INFO.ERROR_KEY_MESSAGE);
 				
 				
-				logger.info("[KAKAO - ERROR] - [ CODE ] - " + errorCode + " || [message] - " + message );
+				logger.error("[KAKAO - ERROR] - [ CODE ] - " + errorCode + " || [message] - " + message );
 				
 				
 				retMap.put("result", errorCode);
 				retMap.put("result", errorCode);
 				retMap.put("message", message);
 				retMap.put("message", message);
@@ -292,9 +292,7 @@ public class KakaoEventHandler {
 				
 				
 				repo.save(userInfo);
 				repo.save(userInfo);
 				
 				
-				logger.info("****************************************************");
-				logger.info("토큰 리프레시 성공");
-				logger.info("****************************************************");
+				logger.info("토큰 리프레시 성공 - " + userInfo.getDonghoInfo());
 				return userInfo;
 				return userInfo;
 			}
 			}
 		}catch(Exception e) {
 		}catch(Exception e) {

+ 5 - 3
src/main/java/com/icontrols/kakao/socket/wallpad/KakaoMsgHandler.java

@@ -74,10 +74,12 @@ public class KakaoMsgHandler {
 			
 			
 			logger.info(sb.toString());
 			logger.info(sb.toString());
 			
 			
-			SSLClient.sendToWallpad(targetIP, sb.toString());
+			String rcvMsg = SSLClient.sendToWallpad(targetIP, sb.toString());
 			
 			
-			retMap.put("result", ERROR_INFO.CODE.SUCCESS.getContents());
-			retMap.put("resultCode", ERROR_INFO.CODE.SUCCESS.getmIdx());
+			if(rcvMsg.trim().length() == 0) {
+				retMap.put("result", ERROR_INFO.CODE.SUCCESS.getContents());
+				retMap.put("resultCode", ERROR_INFO.CODE.SUCCESS.getmIdx());
+			}
 		}catch(Exception e) {
 		}catch(Exception e) {
 			retMap.put("result", ERROR_INFO.CODE.FAIL_999.getContents());
 			retMap.put("result", ERROR_INFO.CODE.FAIL_999.getContents());
 			retMap.put("resultCode", ERROR_INFO.CODE.FAIL_999.getmIdx());
 			retMap.put("resultCode", ERROR_INFO.CODE.FAIL_999.getmIdx());

+ 2 - 2
src/main/java/com/icontrols/kakao/socket/wallpad/RecieveiMapMultiSocket.java

@@ -40,7 +40,7 @@ public class RecieveiMapMultiSocket {
 
 
 			while (true) {
 			while (true) {
 				logger.debug("클라이언트가 접속해 오기를 기다리고 있습니다....");
 				logger.debug("클라이언트가 접속해 오기를 기다리고 있습니다....");
-				logger.info("[Waiting....");
+				logger.debug("[Waiting....");
 
 
 				Socket connectedClientSocket = server.accept();
 				Socket connectedClientSocket = server.accept();
 
 
@@ -49,7 +49,7 @@ public class RecieveiMapMultiSocket {
 				String ip 		= ia.getHostAddress(); 						// 접속된 원격 Client IP
 				String ip 		= ia.getHostAddress(); 						// 접속된 원격 Client IP
 
 
 				connectCount += 1; 											// 접속자수 카운트 증가
 				connectCount += 1; 											// 접속자수 카운트 증가
-				logger.info(" Connect Count : "+ connectCount + " , 접속-Local Port: " + port + " , Client IP: " + ip);
+				logger.debug(" Connect Count : "+ connectCount + " , 접속-Local Port: " + port + " , Client IP: " + ip);
 
 
 				if (connectCount > 2000000000) connectCount = 0;			// [질문]- 아직 초기화 하는 이유를 모르겠슴돠.. int의 MAX_VALUE에 근접해서 인가요? ? ? ? ? .황.
 				if (connectCount > 2000000000) connectCount = 0;			// [질문]- 아직 초기화 하는 이유를 모르겠슴돠.. int의 MAX_VALUE에 근접해서 인가요? ? ? ? ? .황.
 																			// [답변]- 
 																			// [답변]- 

+ 6 - 1
src/main/java/com/icontrols/kakao/socket/wallpad/ThreadServerHandler.java

@@ -117,6 +117,7 @@ public class ThreadServerHandler extends Thread {
 					logger.error("[Exception] iMAPSvrProc.run() ===== 2 =====");
 					logger.error("[Exception] iMAPSvrProc.run() ===== 2 =====");
 					connectedClientSocket.close();
 					connectedClientSocket.close();
 					logger.error("message : " + e);
 					logger.error("message : " + e);
+					e.printStackTrace();
 					return;
 					return;
 				}finally {
 				}finally {
 					strRcvMSG = sbRcvMSG.toString();
 					strRcvMSG = sbRcvMSG.toString();
@@ -247,6 +248,10 @@ public class ThreadServerHandler extends Thread {
 						
 						
 						return;
 						return;
 					}
 					}
+					
+					//batchlight는 현재 카카오에서는 지원하지 않음
+					if(endpointId.contains("batchlight")) return;
+					
 					KakaoEventHandler kakaoEventHandler = (KakaoEventHandler)BeanUtils.getBean("kakaoEventHandler");
 					KakaoEventHandler kakaoEventHandler = (KakaoEventHandler)BeanUtils.getBean("kakaoEventHandler");
 					
 					
 					List<CompletableFuture<Map<String, Object>>> fList = new ArrayList<>();
 					List<CompletableFuture<Map<String, Object>>> fList = new ArrayList<>();
@@ -308,7 +313,7 @@ public class ThreadServerHandler extends Thread {
 							String message = (String)eventResult.get("message");
 							String message = (String)eventResult.get("message");
 							
 							
 							if(code == KAKAO_RESULT.SUCCESS) {
 							if(code == KAKAO_RESULT.SUCCESS) {
-								logger.info("[EVENT SUCCESS] - " + message);
+								logger.debug("[EVENT SUCCESS] - " + message);
 							} else {
 							} else {
 								logger.error("[EVENT ERROR] - [CODE-" + code + "]" + message);
 								logger.error("[EVENT ERROR] - [CODE-" + code + "]" + message);
 								
 								

+ 23 - 2
src/main/resources/logback-spring.xml

@@ -19,10 +19,31 @@
             <pattern>[KAKAO] %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{35} - %msg%n</pattern>
             <pattern>[KAKAO] %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{35} - %msg%n</pattern>
         </encoder>
         </encoder>
     </appender>
     </appender>
-                                                                                                                           
-    <logger name="com.icontrols.kakao" level="INFO"></logger>
+    
+    <logger name="com.icontrols.kakao" level="info"></logger>
 
 
     <root level="INFO">
     <root level="INFO">
         <appender-ref ref="dailyRollingFileAppender" />
         <appender-ref ref="dailyRollingFileAppender" />
     </root>
     </root>
+    
+    <appender name="dailyRollingFileAppenderERROR"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <append>true</append>
+        <prudent>true</prudent>
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>log/ERROR_LogFile_%d{yyyy-MM-dd}.log</fileNamePattern>
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>ERROR</level>
+        </filter>
+
+        <encoder>
+            <pattern>[KAKAO] %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{35} - %msg%n</pattern>
+        </encoder>
+    </appender>            
+    <root level="ERROR">
+        <appender-ref ref="dailyRollingFileAppenderERROR" />
+    </root>
 </configuration>
 </configuration>