|
@@ -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 {
|
|
|
// 두가지는 검색
|