|
@@ -3500,6 +3500,10 @@ public class iMapServer extends Service {
|
|
|
else if (cmd.equalsIgnoreCase("remote_access_light")) {
|
|
|
if (ModelType == MODEL_TYPE.IHN_1020GL || ModelType == MODEL_TYPE.IHN_1010GL || ModelType == MODEL_TYPE.IHN_1010GL_I
|
|
|
|| Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL_I_2443 || Version.getModelType() == Version.MODEL_TYPE.IHN_1010GL_I_6410) {
|
|
|
+ WallpadDeviceSet devSet = new WallpadDeviceSet(getApplicationContext());
|
|
|
+ nEnergyProductionUse = devSet.Get_Energy_Devices_Info(); //에너지 제품군
|
|
|
+ devSet.closeDB();
|
|
|
+ devSet = null;
|
|
|
//에너지 제품군을 사용하는 경우(에너지미터(신규EMS))
|
|
|
if(nEnergyProductionUse == WallpadDeviceSet.DO_USE)
|
|
|
{
|
|
@@ -7399,32 +7403,76 @@ public class iMapServer extends Service {
|
|
|
}
|
|
|
}
|
|
|
else if (trimquotation(energymetercmd.actionTXT).equalsIgnoreCase("control")) {
|
|
|
- int num = Integer.parseInt(energymetercmd.unitnum.replaceAll("switch", ""));
|
|
|
- num--;
|
|
|
+
|
|
|
|
|
|
int deviceNum = Byte.parseByte(energymetercmd.devnum) - 1;
|
|
|
|
|
|
if (!energymetercmd.ctraction.equalsIgnoreCase("null"))
|
|
|
-
|
|
|
if(energymeter == null) return null;
|
|
|
- if (energymeter!=null && energymeter.SetLightOnOff( (byte) deviceNum, (byte) num, energymetercmd.ctraction.equalsIgnoreCase("on") ? true : false) == 0) {
|
|
|
- if ((energymeter.Refresh((byte)0xFF, false) == 0) && (energymeter.data.Em.eachRoom[deviceNum].LightCnt > 0)) {
|
|
|
- retStr += "result=\"ok\">\r\n" +
|
|
|
- " <action>\"control\"</action>\r\n" +
|
|
|
- " <status_map dev_num=\""+energymetercmd.devnum+"\" unit_cnt=\""+energymeter.data.Em.eachRoom[deviceNum].LightCnt+"\"/>\r\n";
|
|
|
+ if(energymetercmd.unitnum.equalsIgnoreCase("all"))
|
|
|
+ {
|
|
|
+ if (energymeter != null) {
|
|
|
+ int nResultRefresh = energymeter.Refresh((byte)0xFF, false);
|
|
|
+ if (nResultRefresh == 0) {
|
|
|
+ int nCtrlResult = energymeter.SetAllLightOnOff(energymetercmd.ctraction.equalsIgnoreCase("on") ? true : false);
|
|
|
+ if (nCtrlResult == 0) {
|
|
|
+ int nResult = energymeter.Refresh((byte) 0xFF, false);
|
|
|
+ if (nResult == 0) {
|
|
|
+ if (energymeter.data.Em.eachRoom[deviceNum].LightCnt > 0) {
|
|
|
+ retStr += "result=\"ok\">\r\n" +
|
|
|
+ " <action>\"status\"</action>\r\n" +
|
|
|
+ " <status_map dev_num=\"" + energymetercmd.devnum + "\" unit_cnt=\"" + energymeter.data.Em.eachRoom[deviceNum].LightCnt + "\"/>\r\n";
|
|
|
|
|
|
- for (int i = 0; i < energymeter.data.Em.eachRoom[deviceNum].LightCnt; i++) {
|
|
|
- retStr+= " <status_info unit_num=\"" + String.format("switch%d\" unit_status=\"%s\" />\r\n", i + 1, energymeter.data.Em.eachRoom[deviceNum].LightOnOff[i] ? "on" : "off");
|
|
|
+ for (int i = 0; i < energymeter.data.Em.eachRoom[deviceNum].LightCnt; i++) {
|
|
|
+ retStr+= " <status_info unit_num=\"" + String.format("switch%d\" unit_status=\"%s\" />\r\n", i + 1, energymeter.data.Em.eachRoom[deviceNum].LightOnOff[i] ? "on" : "off");
|
|
|
+ }
|
|
|
+ retStr += " </service>\r\n</imap>";
|
|
|
+ } else {
|
|
|
+ Log.w(TAG, "[iCMDProcSDPLightControl] energymeter.data.Em.eachRoom[" + deviceNum + "].LightCnt is unavailable!! -> " + energymeter.data.Em.eachRoom[deviceNum].LightCnt);
|
|
|
+ retStr += "result=\"fail\">\r\n </service>\r\n</imap> ";
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Log.w(TAG, "[iCMDProcSDPLightControl] energymeter refresh fail!!");
|
|
|
+ retStr += "result=\"fail\">\r\n </service>\r\n</imap> ";
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Log.w(TAG, "[iCMDProcSDPLightControl] energymeter light ctrl fail!!");
|
|
|
+ retStr += "result=\"fail\">\r\n </service>\r\n</imap> ";
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Log.w(TAG, "[iCMDProcSDPLightControl] energymeter refresh fail!!");
|
|
|
+ retStr += "result=\"fail\">\r\n </service>\r\n</imap> ";
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Log.w(TAG, "[iCMDProcSDPLightControl] energymeter is null!!");
|
|
|
+ retStr += "result=\"fail\">\r\n </service>\r\n</imap> ";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ int num = Integer.parseInt(energymetercmd.unitnum.replaceAll("switch", ""));
|
|
|
+ num--;
|
|
|
+
|
|
|
+ if (energymeter!=null && energymeter.SetLightOnOff( (byte) deviceNum, (byte) num, energymetercmd.ctraction.equalsIgnoreCase("on") ? true : false) == 0) {
|
|
|
+ if ((energymeter.Refresh((byte)0xFF, false) == 0) && (energymeter.data.Em.eachRoom[deviceNum].LightCnt > 0)) {
|
|
|
+ retStr += "result=\"ok\">\r\n" +
|
|
|
+ " <action>\"control\"</action>\r\n" +
|
|
|
+ " <status_map dev_num=\""+energymetercmd.devnum+"\" unit_cnt=\""+energymeter.data.Em.eachRoom[deviceNum].LightCnt+"\"/>\r\n";
|
|
|
+
|
|
|
+ for (int i = 0; i < energymeter.data.Em.eachRoom[deviceNum].LightCnt; i++) {
|
|
|
+ retStr+= " <status_info unit_num=\"" + String.format("switch%d\" unit_status=\"%s\" />\r\n", i + 1, energymeter.data.Em.eachRoom[deviceNum].LightOnOff[i] ? "on" : "off");
|
|
|
+ }
|
|
|
+ retStr+="\r\n</service>\r\n</imap>";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ retStr += "result=\"fail\">\r\n</service>\r\n</imap> ";
|
|
|
}
|
|
|
- retStr+="\r\n</service>\r\n</imap>";
|
|
|
}
|
|
|
else {
|
|
|
retStr += "result=\"fail\">\r\n</service>\r\n</imap> ";
|
|
|
}
|
|
|
}
|
|
|
- else {
|
|
|
- retStr += "result=\"fail\">\r\n</service>\r\n</imap> ";
|
|
|
- }
|
|
|
+
|
|
|
}
|
|
|
else {
|
|
|
retStr += "result = \"fail\">\r\n</service>\r\n</imap>";
|