Selaa lähdekoodia

동탄아이파크 현장 적용본

pangs 5 vuotta sitten
vanhempi
commit
eede416d59

+ 9 - 5
src/main/java/com/icontrols/kakao/common/THINGS_INFO.java

@@ -57,29 +57,33 @@ public final class THINGS_INFO {
 		LIGHT02						("light02",						"Light",			"방1조명"),
 		LIGHT03						("light03",						"Light",			"방2조명"),
 		LIGHT04						("light04",						"Light",			"방3조명"),
+		LIGHT05						("light05",						"Light",			"방4조명"),
 		DIMMER_LIVINGLIGHT			("dimmer_livinglight", 			"LightDimmer", 		"거실조명"),
 		DIMMER_LIGHT01				("dimmer_light01",				"LightDimmer",		"주방조명"),
 		DIMMER_LIGHT02				("dimmer_light02",				"LightDimmer",		"방1조명"),
 		DIMMER_LIGHT03				("dimmer_light03",				"LightDimmer",		"방2조명"),
 		DIMMER_LIGHT04				("dimmer_light04",				"LightDimmer",		"방3조명"),
+		DIMMER_LIGHT05				("dimmer_light05",				"LightDimmer",		"방4조명"),
 		COLOR_DIMMER_LIVINGLIGHT	("colorDimmer_livinglight", 	"ColorLightDimmer",	"거실조명"),
 		COLOR_DIMMER_LIGHT01		("colorDimmer_light01",			"ColorLightDimmer",	"주방조명"),
 		COLOR_DIMMER_LIGHT02		("colorDimmer_light02",			"ColorLightDimmer",	"방1조명"),
 		COLOR_DIMMER_LIGHT03		("colorDimmer_light03",			"ColorLightDimmer",	"방2조명"),
 		COLOR_DIMMER_LIGHT04		("colorDimmer_light04",			"ColorLightDimmer",	"방3조명"),
+		COLOR_DIMMER_LIGHT05		("colorDimmer_light05",			"ColorLightDimmer",	"방4조명"),
 		VENTIL						("ventil",						"AirVentilator",	"환기"),
 		GAS							("gas",							"GasValve",			"가스밸브"),
 		ELEVATOR					("elevator",					"ElevatorCaller",	"엘리베이터"),
 		TEMPER1						("temper_1",					"FloorHeater",		"거실난방"),
-		TEMPER2						("temper_2",					"FloorHeater",		"방난방"),
-		TEMPER3						("temper_3",					"FloorHeater",		"방1난방"),
-		TEMPER4						("temper_4",					"FloorHeater",		"방2난방"),
-		TEMPER5						("temper_5",					"FloorHeater",		"방3난방"),
+		TEMPER2						("temper_2",					"FloorHeater",		"방1난방"),
+		TEMPER3						("temper_3",					"FloorHeater",		"방2난방"),
+		TEMPER4						("temper_4",					"FloorHeater",		"방3난방"),
+		TEMPER5						("temper_5",					"FloorHeater",		"방4난방"),
 		ELECTRIC01					("electric01",					"PowerOutlet",		"거실콘센트"),
 		ELECTRIC02					("electric02",					"PowerOutlet",		"주방콘센트"),
 		ELECTRIC03					("electric03",					"PowerOutlet",		"방1콘센트"),
 		ELECTRIC04					("electric04",					"PowerOutlet",		"방2콘센트"),
-		ELECTRIC05					("electric05",					"PowerOutlet",		"방3콘센트")
+		ELECTRIC05					("electric05",					"PowerOutlet",		"방3콘센트"),
+		ELECTRIC06					("electric06",					"PowerOutlet",		"방4콘센트")
 		;
 		
 		

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

@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
 
+import com.icontrols.kakao.common.utils.CommonUtil;
 import com.icontrols.kakao.service.AccessTokenService;
 
 @RestController
@@ -57,6 +58,7 @@ public class AccessTokenController {
 		
 		retMap.put("id", reqId);
 		retMap.put("type", type);
+		logger.info("[accessToken] RESULT - " + retMap.toString());
 		return retMap;
 	}
 }

+ 1 - 1
src/main/java/com/icontrols/kakao/controller/KakaoDanziController.java

@@ -103,7 +103,7 @@ public class KakaoDanziController {
 				retMap = params;
 			}
 		}catch(Exception e) {
-			logger.error("[Unknown ERROR]");
+			logger.error("[Unknown ERROR]" + e.getMessage());
 			e.printStackTrace();
 			retMap = KAKAO_RESULT.getErrorInfo(KAKAO_RESULT.FAIL_INTERNAL);
 		}finally {

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

@@ -23,10 +23,10 @@ public class AccessTokenServiceImpl implements AccessTokenService {
 	private final Logger logger = LoggerFactory.getLogger(AccessTokenServiceImpl.class);
 	
 	
-	private final String ERROR_CODE_INTERNAL = "InternalServerError";
-	private final String ERROR_UNLINK_SERVICE = "UnlinkService";
-	private final String ERROR_TOKEN_NONE_EXIST = "TokenNoneExistent";
-	private final String ERROR_ALREADY_CREATED_TOKEN = "AlreadyCreatedToken";
+//	private final String ERROR_CODE_INTERNAL = "InternalServerError";
+//	private final String ERROR_UNLINK_SERVICE = "UnlinkService";
+//	private final String ERROR_TOKEN_NONE_EXIST = "TokenNoneExistent";
+//	private final String ERROR_ALREADY_CREATED_TOKEN = "AlreadyCreatedToken";
 	
 	@Autowired
 	DonghoInfoRepository donghoRepo;
@@ -82,7 +82,9 @@ public class AccessTokenServiceImpl implements AccessTokenService {
 			
 			if(uList.size() > 0) {
 				Map<String, Object> errMap = new HashMap<String, Object>();
-				errMap.put("message", ERROR_ALREADY_CREATED_TOKEN);
+				errMap.put("code", KAKAO_RESULT.CODE.FAIL_INVALID_TOKEN.getResultCode());
+				errMap.put("message", KAKAO_RESULT.CODE.FAIL_INVALID_TOKEN.getMessage());
+//				errMap.put("message", ERROR_ALREADY_CREATED_TOKEN);
 				
 				retMap.put("error", errMap);
 				logger.error("[AccessTokenService]-[CREATE] - [ERROR] - ALREADY CREATED TOKEN");
@@ -101,7 +103,8 @@ public class AccessTokenServiceImpl implements AccessTokenService {
 		
 		}catch(Exception e) {
 			Map<String, Object> errMap = new HashMap<String, Object>();
-			errMap.put("message", ERROR_CODE_INTERNAL);
+			errMap.put("code", KAKAO_RESULT.CODE.FAIL_INTERNAL.getResultCode());
+			errMap.put("message", KAKAO_RESULT.CODE.FAIL_INTERNAL.getMessage());
 			
 			retMap.put("error", errMap);
 			logger.error("[AccessTokenService]-[CREATE] - [ERROR] - " + e.getMessage());
@@ -132,8 +135,9 @@ public class AccessTokenServiceImpl implements AccessTokenService {
 			// 1.1 DonghoInfo가 없으면 ERROR Return
 			if(userInfoList.size() == 0) {
 				Map<String, Object> errMap = new HashMap<String, Object>();
-				
-				errMap.put("message", ERROR_TOKEN_NONE_EXIST);
+				errMap.put("code", KAKAO_RESULT.CODE.FAIL_INVALID_TOKEN.getResultCode());
+				errMap.put("message", KAKAO_RESULT.CODE.FAIL_INVALID_TOKEN.getMessage());
+//				errMap.put("message", ERROR_TOKEN_NONE_EXIST);
 				
 				retMap.put("error", errMap);
 				logger.error("[AccessTokenService]-[REFRESH] - [ERROR] - TOKEN NONE EXIST1");
@@ -145,8 +149,9 @@ public class AccessTokenServiceImpl implements AccessTokenService {
 			logger.debug("prev dongho = " + userInfo.getDonghoInfo().getDonghoId() + "_ NEW dongho = " + dong_ho);
 			if(!userInfo.getDonghoInfo().getDonghoId().equals(dong_ho)) {
 				Map<String, Object> errMap = new HashMap<String, Object>();
-				
-				errMap.put("message", ERROR_TOKEN_NONE_EXIST);
+				errMap.put("code", KAKAO_RESULT.CODE.FAIL_INVALID_TOKEN.getResultCode());
+				errMap.put("message", KAKAO_RESULT.CODE.FAIL_INVALID_TOKEN.getMessage());
+//				errMap.put("message", ERROR_TOKEN_NONE_EXIST);
 				
 				retMap.put("error", errMap);
 				logger.error("[AccessTokenService]-[REFRESH] - [ERROR] - TOKEN NONE EXIST2");
@@ -155,8 +160,9 @@ public class AccessTokenServiceImpl implements AccessTokenService {
 			
 			if(userInfo.getDeleteFlag().equals("Y")) {
 				Map<String, Object> errMap = new HashMap<String, Object>();
-				
-				errMap.put("message", ERROR_UNLINK_SERVICE);
+				errMap.put("code", KAKAO_RESULT.CODE.FAIL_UNLINKEXTENSION_SERVICE.getResultCode());
+				errMap.put("message", KAKAO_RESULT.CODE.FAIL_UNLINKEXTENSION_SERVICE.getMessage());
+//				errMap.put("message", ERROR_UNLINK_SERVICE);
 				
 				retMap.put("error", errMap);
 				logger.error("[AccessTokenService]-[REFRESH] - [ERROR] - UNLINK TOKEN - " + userInfo.getDeleteType());
@@ -170,8 +176,9 @@ public class AccessTokenServiceImpl implements AccessTokenService {
 			userInfoRepo.save(userInfo);
 		}catch(Exception e) {
 			Map<String, Object> errMap = new HashMap<String, Object>();
-			
-			errMap.put("message", ERROR_CODE_INTERNAL);
+			errMap.put("code", KAKAO_RESULT.CODE.FAIL_INTERNAL.getResultCode());
+			errMap.put("message", KAKAO_RESULT.CODE.FAIL_INTERNAL.getMessage());
+//			errMap.put("message", ERROR_CODE_INTERNAL);
 			logger.error("[AccessTokenService] - [REFRESH] - [ERROR] - " + e.getMessage());
 			retMap.put("error", errMap);
 			e.printStackTrace();
@@ -199,8 +206,9 @@ public class AccessTokenServiceImpl implements AccessTokenService {
 			// 1.1 DonghoInfo가 없으면 ERROR Return
 			if(userList.size() == 0) {
 				Map<String, Object> errMap = new HashMap<String, Object>();
-				
-				errMap.put("message", ERROR_TOKEN_NONE_EXIST);
+				errMap.put("code", KAKAO_RESULT.CODE.FAIL_INVALID_TOKEN.getResultCode());
+				errMap.put("message", KAKAO_RESULT.CODE.FAIL_INVALID_TOKEN.getMessage());
+//				errMap.put("message", ERROR_TOKEN_NONE_EXIST);
 				
 				retMap.put("error", errMap);
 				logger.error("[AccessTokenService]-[REFRESH] - [ERROR] - TOKEN NONE EXIST");
@@ -212,8 +220,9 @@ public class AccessTokenServiceImpl implements AccessTokenService {
 			// 호옥시이나아 같은 동호가 아닐 수도 있으니깐
 			if(!userInfo.getDonghoInfo().getDonghoId().equals(dong_ho)) {
 				Map<String, Object> errMap = new HashMap<String, Object>();
-				
-				errMap.put("message", ERROR_TOKEN_NONE_EXIST);
+				errMap.put("code", KAKAO_RESULT.CODE.FAIL_INVALID_TOKEN.getResultCode());
+				errMap.put("message", KAKAO_RESULT.CODE.FAIL_INVALID_TOKEN.getMessage());
+//				errMap.put("message", ERROR_TOKEN_NONE_EXIST);
 				
 				retMap.put("error", errMap);
 				logger.error("[AccessTokenService]-[REFRESH] - [ERROR] - TOKEN NONE EXIST");
@@ -222,8 +231,9 @@ public class AccessTokenServiceImpl implements AccessTokenService {
 			
 			if(userInfo.getDeleteFlag().equals("Y")) {
 				Map<String, Object> errMap = new HashMap<String, Object>();
-				
-				errMap.put("message", ERROR_UNLINK_SERVICE);
+				errMap.put("code", KAKAO_RESULT.CODE.FAIL_UNLINKEXTENSION_SERVICE.getResultCode());
+				errMap.put("message", KAKAO_RESULT.CODE.FAIL_UNLINKEXTENSION_SERVICE.getMessage());
+//				errMap.put("message", ERROR_UNLINK_SERVICE);
 				
 				retMap.put("error", errMap);
 				logger.error("[AccessTokenService]-[REFRESH] - [ERROR] - UNLINK TOKEN - " + userInfo.getDeleteType());
@@ -238,8 +248,9 @@ public class AccessTokenServiceImpl implements AccessTokenService {
 			}
 		}catch(Exception e) {
 			Map<String, Object> errMap = new HashMap<String, Object>();
-			
-			errMap.put("message", ERROR_TOKEN_NONE_EXIST);
+			errMap.put("code", KAKAO_RESULT.CODE.FAIL_INVALID_TOKEN.getResultCode());
+			errMap.put("message", KAKAO_RESULT.CODE.FAIL_INVALID_TOKEN.getMessage());
+//			errMap.put("message", ERROR_TOKEN_NONE_EXIST);
 			
 			retMap.put("error", errMap);
 		}finally {

+ 10 - 8
src/main/java/com/icontrols/kakao/socket/wallpad/KakaoMsgHandler.java

@@ -184,11 +184,11 @@ public class KakaoMsgHandler {
 									String childName = j < 10 ? tmpModelId+"0"+j : tmpModelId+j;
 									Node childNode = (Node)xpath.evaluate("//imap/service/devinfo/*[@name='"+ childName +"']", doc, XPathConstants.NODE);
 									logger.debug("childName = " + childName);
-									childCount = Integer.parseInt(XmlUtil.getAttributeWithItem(childNode, "value"));
+									int tmpChildCount = Integer.parseInt(XmlUtil.getAttributeWithItem(childNode, "value"));
 									
 									NodeList childList = (NodeList)xpath.evaluate("//imap/service/devinfo/subdevinfo/*[@name='"+ childName +"']", doc, XPathConstants.NODESET);
 									
-									thingList.addAll(getChildThingsInfoList(dong, ho, childCount, childList));
+									thingList.addAll(getChildThingsInfoList(dong, ho, tmpChildCount, childList));
 								}
 							}else {
 								NodeList childList = (NodeList)xpath.evaluate("//imap/service/devinfo/*[@name='"+ tmpModelId +"']", doc, XPathConstants.NODESET);
@@ -255,7 +255,7 @@ public class KakaoMsgHandler {
 						int childCount = Integer.parseInt(XmlUtil.getAttributeWithItem(pNode, "value"));
 						
 						List<Map<String, Object>> childNodeInfoList = null;
-						logger.debug("tmpModelID --> " + tmpModelId);
+						logger.debug("tmpModelID --> " + tmpModelId + "childCount = " + childCount);
 						try {
 							// subdevinfo 를 가지고 있는 THINGS일 경우는 subdevinfo 들을 다시 구해야 한다.
 							// 예를들어 light는 light01 ~ 05 등의 subdevinfo를 가진다.
@@ -274,19 +274,19 @@ public class KakaoMsgHandler {
 								for(int j=1; j <= childCount; j++) {
 									String childName = j < 10 ? tmpModelId+"0"+j : tmpModelId+j;
 									Node childNode = (Node)xpath.evaluate("//imap/service/devinfo/*[@name='"+ childName +"']", doc, XPathConstants.NODE);
-									logger.debug("childName = " + childName);
+									logger.debug("childName = " + childName + " // j = " + j);
 									
-									if(childNode == null) break;
+									if(childNode == null) continue;
 									
 									String tmpValue = XmlUtil.getAttributeWithItem(childNode, "value");
 									
-									if(tmpValue == null) break;
+									if(tmpValue == null) continue;
 									
-									childCount = Integer.parseInt(tmpValue);
+									int tmpchildCount = Integer.parseInt(tmpValue);
 									
 									NodeList childList = (NodeList)xpath.evaluate("//imap/service/devinfo/subdevinfo/*[@name='"+ childName +"']", doc, XPathConstants.NODESET);
 									
-									childNodeInfoList = getChildDeviceInfo(childCount, childList);
+									childNodeInfoList = getChildDeviceInfo(tmpchildCount, childList);
 									logger.debug("child-->>" + childNodeInfoList.toString());
 									if(childNodeInfoList != null)
 										childNodeInfoList.forEach(tMap -> { body.putAll(tMap); });
@@ -754,6 +754,8 @@ public class KakaoMsgHandler {
 				if(capability.equals("Power") && desired.containsKey("power")) {
 					String tmpState = (String)desired.get("power");
 					if(tmpState.equals("on") || tmpState.equals("off")) sb.append(tmpState);
+					
+					sb.append("/null/null");
 				}
 				
 				break;

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

@@ -158,7 +158,8 @@ public class WallpadMsgSender {
 			StringBuffer sb = new StringBuffer();
 			
 			sb.append(XMLGenerator.MakeXMLHeaderForNotice(REMOTE_KIND.remote_register_new_device_auth_number.getContents()))
-			.append("      <home_info dong=\"").append(dong).append("\" ho=\"").append(ho).append("\" ip=\"").append(targetIP).append("\" type=\"main\"/>\r\n")
+			.append("      <home_info dong=\"").append(dong).append("\" ho=\"")
+			.append(ho).append("\" ip=\"").append(targetIP).append("\" type=\"main\"/>\r\n")
 			.append("      <device_info alias=\"" + alias + "\" twinid=\"" + twinid).append("\" />\r\n")
 			.append(XMLGenerator.MakeXMLTail());
 		

+ 2 - 2
src/main/resources/application.properties

@@ -7,11 +7,11 @@ logging.config=classpath:logback-spring.xml
 
 ## 배포용-테스트 단지서버
 #spring.datasource.url=jdbc:mariadb://192.168.100.155:8005/platform_danzi?useUnicode=true&charaterEncoding=utf-8
-spring.datasource.url=jdbc:mariadb://192.168.100.155:8005/platform_kakao?useUnicode=true&charaterEncoding=utf-8
+#spring.datasource.url=jdbc:mariadb://192.168.100.155:8005/platform_kakao?useUnicode=true&charaterEncoding=utf-8
 
 ## 배포용-카카오데모서버
 ##spring.datasource.url=jdbc:mariadb://localhost:8005/platform_danzi?useUnicode=true&charaterEncoding=utf-8 
-#spring.datasource.url=jdbc:mariadb://localhost:8005/platform_kakao?useUnicode=true&charaterEncoding=utf-8
+spring.datasource.url=jdbc:mariadb://localhost:8005/platform_kakao?useUnicode=true&charaterEncoding=utf-8
 spring.datasource.username=valley
 spring.datasource.password=valley123
 

+ 3 - 3
src/main/resources/logback-spring.xml

@@ -9,18 +9,18 @@
 
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
             <fileNamePattern>log/LogFile_%d{yyyy-MM-dd}.log</fileNamePattern>
-            <maxHistory>30</maxHistory>
+            <maxHistory>60</maxHistory>
         </rollingPolicy>
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>DEBUG</level>
         </filter>
 
         <encoder>
-            <pattern>[DANZI] %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>
     </appender>
                                                                                                                            
-    <logger name="com.icontrols.kakao" level="DEBUG"></logger>
+    <logger name="com.icontrols.kakao" level="INFO"></logger>
 
     <root level="INFO">
         <appender-ref ref="dailyRollingFileAppender" />