Quellcode durchsuchen

[WallPadMain]
1. 타사 서버 연동
- 이전 온도조절기(V1) 경우 처리 추가

jglee vor 3 Jahren
Ursprung
Commit
b4d48b4187

+ 99 - 4
WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/util/MobileProcService.java

@@ -15,6 +15,8 @@ import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+
+import com.artncore.wallpadapi.HeatingV1API;
 import com.util.LogUtil;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
@@ -190,6 +192,7 @@ public class MobileProcService extends Service {
 
 
 	private HeatingV2API mHeatingV2API = null;
+	private HeatingV1API mHeatingV1API = null;
 	private Heating mHeating = new Heating();
 
 
@@ -1426,7 +1429,9 @@ public class MobileProcService extends Service {
 			XmlBoddy += "</devinfo>\r\n";
 		}
 
-		if (mHeatingV2API != null) {
+		int HeatingKind = mWallPadAPI.GetHeatingKind();
+
+		if (HeatingKind == 2 && mHeatingV2API != null) {
 			mHeatingV2API.Refresh(REFRESH_IDX.ALL, false);
 			int roomCount = mHeatingV2API.data.Device.info.RoomCount;
 
@@ -1449,6 +1454,29 @@ public class MobileProcService extends Service {
 				XmlBoddy += "</devinfo>\r\n";
 			}
 		}
+		else if (HeatingKind == 1 && mHeatingV1API != null) {
+			mHeatingV1API.Refresh(REFRESH_IDX.ALL, false);
+			int roomCount = mHeatingV1API.data.Device.RoomCount;
+
+			if (roomCount > 0) {
+				XmlBoddy += "<devinfo name = \"temper\" value = \"" + mHeatingV1API.data.Device.RoomCount  + "\">\r\n";
+				for( int i = 0 ; i < roomCount ; i++) {
+					// 데이터 전송
+					String  status = "";
+					double new_temer = Math.round(mHeatingV1API.data.Device.Room[i].NowTemp*10)/10.0;
+
+					if (mHeatingV1API.data.Device.Room[i].bOnOff) {
+						status += "on/"+ mHeatingV1API.data.Device.Room[i].SetTemp +"/" +  new_temer;
+					}
+					else {
+						status += "off/" + mHeatingV1API.data.Device.Room[i].SetTemp + "/" + new_temer;
+					}
+
+					XmlBoddy += "<status name=\"" + "temper"+ "\" dev_num=\"" +( i+1 )+ "\">" + status +"</status>\r\n";
+				}
+				XmlBoddy += "</devinfo>\r\n";
+			}
+		}
 
 		if (mEnergyMeterAPI != null) {
 			mEnergyMeterAPI.Refresh((byte)0xFF, false);
@@ -2339,6 +2367,7 @@ public class MobileProcService extends Service {
 					}
 
 					mHeatingV2API = mWallPadAPI.Get_HeatingV2Controller();
+					mHeatingV1API = mWallPadAPI.Get_HeatingV1Controller();
 
 					if (mHeatingV2API != null) {
 						Log.d(TAG, "[init_SubscriptionProc] mHeatingV2API.data.Device.info.RoomCount  : " + mHeatingV2API.data.Device.info.RoomCount);
@@ -4141,7 +4170,9 @@ public class MobileProcService extends Service {
 					}
 				}
 				else if (model_id.equalsIgnoreCase(XML_DEVICENAME.TEMPER.getContents())) {
-					if (mHeatingV2API != null) {
+					int HeatingKind = mWallPadAPI.GetHeatingKind();
+
+					if (HeatingKind == 2 && mHeatingV2API != null) {
 						byte roomIdx = (byte) (Integer.parseInt(dev_num) - 1);
 						if (mHeatingV2API.data.Device.Room[roomIdx].Mode == MODE.Pause || mHeatingV2API.data.Device.Room[roomIdx].Mode == MODE.Outing) {
 							// 난방 일시정지(현산) 또는 외출모드(대외)의 경우에는 난방을 제어하지 않는다. (JEFF, 2019.11.20)
@@ -4202,8 +4233,72 @@ public class MobileProcService extends Service {
 								xmlRetBody = resultXmlBody(model_id, dev_num, command_id, "fail");
 							}
 						}
-					} else
-						Log.d(TAG, "[ProcMsgDeviceSetControl] mHeatingV2API  == null");
+					}
+					else if (HeatingKind == 1 && mHeatingV1API != null)
+					 {
+							byte roomIdx = (byte) (Integer.parseInt(dev_num) - 1);
+							if (mHeatingV1API.data.Device.Pause) {
+								// 난방 일시정지(현산) 또는 외출모드(대외)의 경우에는 난방을 제어하지 않는다. (JEFF, 2019.11.20)
+								// 난방 일시정시 또는 외출모드에서 원격으로 제어하는 경우에는 제어를 하지 않는다. (개발2팀 협의/이희조, 황의현)
+								xmlRetBody = resultXmlBody(model_id, dev_num, command_id, "fail");
+							}
+							else {
+								int bRet = -1;
+								String[] token = action_status.split("/");
+								Log.d(TAG, "[ProcMsgDeviceSetControl] token.length : " + token.length);
+								if (action_status.indexOf("on") >= 0 && token.length == 2) {
+
+									// 첫번째는 온 오프
+									Log.d(TAG, "[ProcMsgDeviceSetControl] token[0] : " + token[0] + " , token[1] : " + token[1]);
+									if (token[0].equalsIgnoreCase("on")) {
+										bRet = mHeatingV1API.SetEachRoomMode(roomIdx, true);
+									}
+									else if (token[0].equalsIgnoreCase("off")) {
+										bRet = mHeatingV1API.SetEachRoomMode(roomIdx, false);
+									}
+
+									// 두번째는 설정 온도
+									// SKT 에서 설정 온도가 정수로 들어오는지 소수로 들어오는지 확인
+									double setTemper = Double.parseDouble(token[1]);
+									Log.d(TAG, "[ProcMsgDeviceSetControl] setTemper : " + setTemper + " , bRet : " + bRet);
+									if (bRet >= 0) {
+										// 온도 제어 진행
+										bRet = mHeatingV1API.SetEachRoomTemp(roomIdx, setTemper);
+									}
+								}
+								else if (action_status.indexOf("off") >= 0) {
+									bRet = mHeatingV1API.SetEachRoomMode(roomIdx, false);
+								}
+								else if (action_status.indexOf("on") >= 0) {
+									bRet = mHeatingV1API.SetEachRoomMode(roomIdx, true);
+								}
+
+								if (bRet >= 0) {
+									resultControl = true;
+									double now_temer = 0.0;
+									double set_temper = 0.0;
+									if (mHeatingV1API != null) {
+										mHeatingV1API.Refresh(REFRESH_IDX.ALL, false);
+										if (mHeatingV1API.data.Device.Room[roomIdx].bOnOff) action_status = "on";
+										else action_status = "off";
+
+										set_temper = Math.round(mHeatingV1API.data.Device.Room[roomIdx].SetTemp * 10) / 10.0;
+										action_status += "/" + set_temper;
+
+										now_temer = Math.round(mHeatingV1API.data.Device.Room[roomIdx].NowTemp * 10) / 10.0;
+										action_status += "/" + now_temer;
+									}
+
+									Log.d(TAG, "[ProcMsgDeviceSetControl] model_id : " + model_id + " , dev_num : " + dev_num + " , command_id :" + command_id + " , action_status :" + action_status);
+									xmlRetBody = resultXmlBody(model_id, dev_num, command_id, action_status);
+								}
+								else {
+									xmlRetBody = resultXmlBody(model_id, dev_num, command_id, "fail");
+								}
+							}
+						}
+						else
+						Log.d(TAG, "[ProcMsgDeviceSetControl] mHeatingV1API  == null");
 				}
 				else {
 					// 두가지는 검색