소스 검색

전기차 충전, 원격검침, 일괄소등, 제어 관련 수정

jslee(madeinlab) 3 년 전
부모
커밋
4ada3f3501
34개의 변경된 파일634개의 추가작업 그리고 571개의 파일을 삭제
  1. BIN
      WallPadAPI/jar/WallPadAPI.jar
  2. 1 1
      WallPadAPI/src/main/java/com/artncore/commons/API_Menu.java
  3. BIN
      WallPadAddService/libs/WallPadAPI.jar
  4. 12 6
      WallPadAddService/src/main/java/kr/co/icontrols/wallpadaddservice/imap/iMAPElecCarChargerInfo.java
  5. 1 0
      WallPadAddService/src/main/java/kr/co/icontrols/wallpadaddservice/imap/iMAPElecCarChargingInfo.java
  6. 0 3
      WallPadAddService/src/main/java/kr/co/icontrols/wallpadaddservice/screen/VIPElecCarMainScreen.java
  7. 4 18
      WallPadDevService/src/main/java/com/artncore/wallpaddevservice/driver/DriverInterOpAPI.java
  8. 1 1
      WallPadDevService/src/main/java/com/artncore/wallpaddevservice/driver/KNX_Controller.java
  9. 5 0
      WallPadDevService/src/main/java/com/artncore/wallpaddevservice/driver/SmartSwitchPol_Controller.java
  10. BIN
      WallPadEnergyCtrl/libs/WallPadAPI.jar
  11. 1 1
      WallPadEnergyCtrl/src/main/java/kr/co/icontrols/wallpadenergyctrl/MainActivity.java
  12. 5 5
      WallPadEnergyCtrl/src/main/java/kr/co/icontrols/wallpadenergyctrl/declare/LayoutDevice_hems.java
  13. 124 203
      WallPadEnergyCtrl/src/main/java/kr/co/icontrols/wallpadenergyctrl/screen/VIPIcEnergyMgrScreen.java
  14. 249 231
      WallPadEnergyCtrl/src/main/java/kr/co/icontrols/wallpadenergyctrl/screen/VIPRemoteMeterMainScreen.java
  15. BIN
      WallPadEnergyCtrl/src/main/res/drawable-ldpi/box_1_2.png
  16. BIN
      WallPadEnergyCtrl/src/main/res/drawable-ldpi/box_2_2.png
  17. BIN
      WallPadEnergyCtrl/src/main/res/drawable-ldpi/vip_box_3_2.png
  18. BIN
      WallPadHomeCtrl/libs/WallPadSupport.jar
  19. 7 3
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_aircon/KnxSystemAirconMainScreen.java
  20. 50 8
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_aircon/KnxSystemAirconPopupScreen.java
  21. 10 9
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_heating/HeatingV2PopupScreen.java
  22. 10 12
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/HeatingV2PopupTestScreen.java
  23. 7 3
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/HeatingV2TestScreen.java
  24. 31 7
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/KnxSystemAirconPopupTestScreen.java
  25. 2 1
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/LightKnxMainTestScreen.java
  26. 3 9
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/VentiPopupReservationTestScreen.java
  27. 74 31
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/VentilationMainTestScreen.java
  28. 1 1
      WallPadMain/src/main/AndroidManifest.xml
  29. 10 0
      WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/MainActivity.java
  30. 1 1
      WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/declare/ID.java
  31. 3 3
      WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/popup/ChargingElectricVehicle.java
  32. 7 5
      WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/screen/MAIN.java
  33. 1 1
      WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/util/iMapServer.java
  34. 14 8
      WallPadMultiControlService/src/main/java/kr/co/icontrols/wallpadmulticontrolservice/DataSenderService.java

BIN
WallPadAPI/jar/WallPadAPI.jar


+ 1 - 1
WallPadAPI/src/main/java/com/artncore/commons/API_Menu.java

@@ -90,7 +90,7 @@ public final class API_Menu
 
         //public final static String Name_RealMeter         = "실시간 검침기";
         public final static String Name_EnergyMgr = "에너지 사용량";
-        public final static String Name_RemoteMeter       = "원격검침";
+        public final static String Name_RemoteMeter       = "전기 에너지 현황"; //원격검침 ->
         public final static String Name_EachRoomEnergy = "각방 에너지"; // I에너지 -> 각방 에너지
         public final static String Name_CostTable         = "요금 테이블";
         public final static String Name_SmartDistribution = "스마트 분전반";

BIN
WallPadAddService/libs/WallPadAPI.jar


+ 12 - 6
WallPadAddService/src/main/java/kr/co/icontrols/wallpadaddservice/imap/iMAPElecCarChargerInfo.java

@@ -28,13 +28,19 @@ public class iMAPElecCarChargerInfo extends WallPadiMAPClient {
     int SvrPort = 10000;
 
     public iMAPElecCarChargerInfo(Context ctx) {
-        DBMGR = new WallpadStatusData(ctx);
-        AddressSet addc = DBMGR.getAddressMGR(); //DB에서 동호 정보 받아옴
-        DBMGR.closeDB();
+        super.setContext(ctx);
         //동, 호, ip 정보 저장
-        myIP = addc.IPAddress;
-        myDong = addc.Dong;
-        myHo = addc.Ho;
+        myIP = "10.1.1.1";
+        myDong = "101";
+        myHo = "101";
+
+        //DBMGR = new WallpadStatusData(ctx);
+        //AddressSet addc = DBMGR.getAddressMGR(); //DB에서 동호 정보 받아옴
+        //DBMGR.closeDB();
+        //동, 호, ip 정보 저장
+        //myIP = addc.IPAddress;
+        //myDong = addc.Dong;
+        //myHo = addc.Ho;
 
         //DB에서 전기차 서버 주소 읽어오기
         Get_DBInfo_ElecCarServerIp(ctx);

+ 1 - 0
WallPadAddService/src/main/java/kr/co/icontrols/wallpadaddservice/imap/iMAPElecCarChargingInfo.java

@@ -28,6 +28,7 @@ public class iMAPElecCarChargingInfo extends WallPadiMAPClient {
     int SvrPort = 10000;
 
     public iMAPElecCarChargingInfo(Context ctx) {
+        super.setContext(ctx);
         //동, 호, ip 정보 저장
         myIP = "10.1.1.1";
         myDong = "101";

+ 0 - 3
WallPadAddService/src/main/java/kr/co/icontrols/wallpadaddservice/screen/VIPElecCarMainScreen.java

@@ -407,9 +407,6 @@ public class VIPElecCarMainScreen extends WpadScreen {
         if (Common.GetAddFuncSampleMode(context)) m_SampleMode = Common.MODE_BUSINESS_SAMPLE;
         else m_SampleMode = Common.MODE_NORMAL;
 
-        //for test
-        //m_SampleMode = Common.MODE_BUSINESS_SAMPLE;
-
         bEasyModeUse = Common.GetEasyModeUXUse(this.getContext());
         if (bEasyModeUse) idx = 1;
         Log.d(TAG, "[ElecCarMainScreen] bEasyModeUse [" + bEasyModeUse + "], idx [" + idx + "]");

+ 4 - 18
WallPadDevService/src/main/java/com/artncore/wallpaddevservice/driver/DriverInterOpAPI.java

@@ -25,10 +25,14 @@ public class DriverInterOpAPI {
     Handler MainHandler;
 
     private int mModelType = Version.MODEL_TYPE.OTHER;
+    int nDistributionPanelType = Version.DISTRIBUTION_MODEL.KNX_DIST;
 
     public DriverInterOpAPI(Handler setHandler) {
         MainHandler = setHandler;
         mModelType = Version.getModelType();
+        WallpadDeviceSet wds = new WallpadDeviceSet(ServiceMain.svcContext);
+        nDistributionPanelType = wds.Get_DistributionPannelType_Info();
+        wds.closeDB();
     }
 
     public void DeviceLog(String tag, String msg) {
@@ -770,10 +774,6 @@ public class DriverInterOpAPI {
                 int onoff = 0;
                 if(OnOff) onoff = 1;
 
-                WallpadDeviceSet wds = new WallpadDeviceSet(ServiceMain.svcContext);
-                int nDistributionPanelType = wds.Get_DistributionPannelType_Info();
-                wds.closeDB();
-
                 String DistributeName = "";
                 if (nDistributionPanelType == Version.DISTRIBUTION_MODEL.SMART_DIST) {
                     // 스마트 분전반
@@ -866,10 +866,6 @@ public class DriverInterOpAPI {
                     || mModelType == Version.MODEL_TYPE.IHN_D101_I_OCF) {
                 //Log.i(TAG, "[getAllLight] - IHN_D101");
 
-                WallpadDeviceSet wds = new WallpadDeviceSet(ServiceMain.svcContext);
-                int nDistributionPanelType = wds.Get_DistributionPannelType_Info();
-                wds.closeDB();
-
                 boolean bRet = false;
 
                 if (nDistributionPanelType == Version.DISTRIBUTION_MODEL.SMART_DIST) {
@@ -970,9 +966,6 @@ public class DriverInterOpAPI {
                     || mModelType == Version.MODEL_TYPE.IHN_D101K || mModelType == Version.MODEL_TYPE.IHN_D101K_I
                     || mModelType == Version.MODEL_TYPE.IHN_D101_I_OCF) {
                 //DriverTitleStr = define.DRIVER_TITLE_SDB_LIVINGROOM_LIGHT;
-                WallpadDeviceSet wds = new WallpadDeviceSet(ServiceMain.svcContext);
-                int nDistributionPanelType = wds.Get_DistributionPannelType_Info();
-                wds.closeDB();
 
                 if (nDistributionPanelType == Version.DISTRIBUTION_MODEL.SMART_DIST) {
                     // 스마트 분전반
@@ -1065,10 +1058,6 @@ public class DriverInterOpAPI {
                 // 스마트분전반 - 거실에너지미터 조명 제어
                 DeviceLog(null, "setLight(Sdb_LivingEM) - Start");
 
-                WallpadDeviceSet wds = new WallpadDeviceSet(ServiceMain.svcContext);
-                int nDistributionPanelType = wds.Get_DistributionPannelType_Info();
-                wds.closeDB();
-
                 if (nDistributionPanelType == Version.DISTRIBUTION_MODEL.SMART_DIST) {
                     // 스마트 분전반
                     if (ServiceMain.sdb_LivingRoomLight_Controller == null) return -1;
@@ -1255,9 +1244,6 @@ public class DriverInterOpAPI {
             if (mModelType == Version.MODEL_TYPE.IHN_D101 || mModelType == Version.MODEL_TYPE.IHN_D101_I || mModelType == Version.MODEL_TYPE.IHN_D101_I_LX2
                     || mModelType == Version.MODEL_TYPE.IHN_D101K || mModelType == Version.MODEL_TYPE.IHN_D101K_I
                     || mModelType == Version.MODEL_TYPE.IHN_D101_I_OCF) {
-                WallpadDeviceSet wds = new WallpadDeviceSet(ServiceMain.svcContext);
-                int nDistributionPanelType = wds.Get_DistributionPannelType_Info();
-                wds.closeDB();
 
                 if (nDistributionPanelType == Version.DISTRIBUTION_MODEL.SMART_DIST) {
                     // 스마트 분전반

+ 1 - 1
WallPadDevService/src/main/java/com/artncore/wallpaddevservice/driver/KNX_Controller.java

@@ -594,7 +594,7 @@ public class KNX_Controller extends DeviceManager {
             public byte GetConcentCount(byte EmIndex) {
                 // 1. Param Check
                 if (!CheckEmIndex(EmIndex)) {
-                    Log.w(TAG, "[GetConcentCount] Param : EmIndex - Out Of Range !!! (EmIndex:" + EmIndex + ")");
+                    DeviceLog("[GetConcentCount] Param : EmIndex - Out Of Range !!! (EmIndex:" + EmIndex + ")");
                     return 0;
                 }
 

+ 5 - 0
WallPadDevService/src/main/java/com/artncore/wallpaddevservice/driver/SmartSwitchPol_Controller.java

@@ -2774,12 +2774,14 @@ public class SmartSwitchPol_Controller extends DeviceManager {
             if (mDriver.Device[deviceIdx].info.Support.BatchOffDirCtrl) {
                 // 서브일괄소등이면서, 최초가 아닌경우에 일괄소등상태가 변경되면 메인 일괄소등제어기 제어
                 if (mDriver.bSubBatchOffDirCtrl) {
+                    int kind = 0;
                     if (mDriver.bFirstBatchOffBRSend) {
                         if (status.BatchOff.Now == 0x02) {
                             // 일괄소등 해제
                             if (driverInterOpAPI.getAllLight() != true) {
                                 driverInterOpAPI.setAllLight(true);
                                 mDriver.Polling.SetAllLightSinkDelay();
+                                kind = 9777;
                                 Log.i(TAG, "Change BatchOff.Now Status : bSubBatchOffDirCtrl - setAllLight(true)");
                             }
                         } else if (status.BatchOff.Now == 0x01) {
@@ -2787,9 +2789,12 @@ public class SmartSwitchPol_Controller extends DeviceManager {
                             if (driverInterOpAPI.getAllLight() != false) {
                                 driverInterOpAPI.setAllLight(false);
                                 mDriver.Polling.SetAllLightSinkDelay();
+                                kind = 9888;
                                 Log.i(TAG, "Change BatchOff.Now Status : bSubBatchOffDirCtrl - setAllLight(false)");
                             }
                         }
+                        //스마트스위치로 일괄소등 제어시 다른층도 일괄소등이 제어되어야 하므로 처리함. kind 값은 define에 정의 되어야 하나, support를 수정해야 해서 임의의 값으로 선택.
+                        SendNotifyKindBR(kind);
                     }
                 } else {
                     int kind = 0;

BIN
WallPadEnergyCtrl/libs/WallPadAPI.jar


+ 1 - 1
WallPadEnergyCtrl/src/main/java/kr/co/icontrols/wallpadenergyctrl/MainActivity.java

@@ -323,7 +323,7 @@ public class MainActivity extends WpadActivity {
         TopBackground = new WpadImageView(this, TOUCH_KIND.NONE, 1280, 110, R.drawable.bg_topbar, R.drawable.bg_topbar, ID.main.image.TOP_BACKGROUND);
         ViewRegistration(TopLayout, TopBackground, 0, 0);
 
-        TopTitle = new WpadTextView(this, false, 247+50, 80, Gravity.LEFT, Color.WHITE, Common.fontsize._44, true, ID.main.text.TITLE);
+        TopTitle = new WpadTextView(this, false, 247+100, 80, Gravity.LEFT, Color.WHITE, Common.fontsize._44, true, ID.main.text.TITLE);
         ViewRegistration(TopLayout, TopTitle, 133, 15);
 
         TopHomeBtn = new WpadImageView(this, TOUCH_KIND.BUTTON, 110, 110, R.drawable.topbar_icon_home_normal, R.drawable.topbar_icon_home_pressed, ID.main.button.HOME);

+ 5 - 5
WallPadEnergyCtrl/src/main/java/kr/co/icontrols/wallpadenergyctrl/declare/LayoutDevice_hems.java

@@ -117,7 +117,7 @@ public final class LayoutDevice_hems
             break;
             case R.drawable.bg_graph_holder_2:
             {
-                if (Common.SCREEN_TYPE <= Common.SCREEN_TYPE_1024x600)      {retPos.setPos(346, 297, 52, 52);}
+                if (Common.SCREEN_TYPE <= Common.SCREEN_TYPE_1024x600)      {retPos.setPos(346+0, 297-1, 52, 52);}
                 else if (Common.SCREEN_TYPE == Common.SCREEN_TYPE_1280x800) {retPos.setPos(470-37, 359, 74, 37);}
             }
             break;
@@ -473,6 +473,8 @@ public final class LayoutDevice_hems
             case R.drawable.man_energy_btn_power_3set_pressed:
             case R.drawable.btn_3_kepco_pressed:
             case R.drawable.btn_3_kepco_normal:
+            case R.drawable.btn_3_solar_e_pressed:
+            case R.drawable.btn_3_solar_e_normal:
             {
                 if (Common.SCREEN_TYPE <= Common.SCREEN_TYPE_1024x600)      {retPos.setPos(62, 190, 160, 74);}
                 else if (Common.SCREEN_TYPE == Common.SCREEN_TYPE_1280x800) {retPos.setPos(62, 190, 160, 74);}
@@ -481,8 +483,8 @@ public final class LayoutDevice_hems
 
             case R.drawable.man_energy_btn_water_3set_normal:
             case R.drawable.man_energy_btn_water_3set_pressed:
-            case R.drawable.btn_3_solar_e_pressed:
-            case R.drawable.btn_3_solar_e_normal:
+            case R.drawable.btn_3_fuel_cell_pressed:
+            case R.drawable.btn_3_fuel_cell_normal:
             {
                 if (Common.SCREEN_TYPE <= Common.SCREEN_TYPE_1024x600)      {retPos.setPos(62, 266, 160, 74);}
                 else if (Common.SCREEN_TYPE == Common.SCREEN_TYPE_1280x800) {retPos.setPos(62, 266, 160, 74);}
@@ -491,8 +493,6 @@ public final class LayoutDevice_hems
 
             case R.drawable.man_energy_btn_gas_3set_normal:
             case R.drawable.man_energy_btn_gas_3set_pressed:
-            case R.drawable.btn_3_fuel_cell_pressed:
-            case R.drawable.btn_3_fuel_cell_normal:
             {
                 if (Common.SCREEN_TYPE <= Common.SCREEN_TYPE_1024x600)     {retPos.setPos(62, 342, 160, 74);}
                 else if (Common.SCREEN_TYPE == Common.SCREEN_TYPE_1280x800) {retPos.setPos(62, 342, 160, 74);}

+ 124 - 203
WallPadEnergyCtrl/src/main/java/kr/co/icontrols/wallpadenergyctrl/screen/VIPIcEnergyMgrScreen.java

@@ -94,7 +94,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
 
     WpadImageView m_LOGO = null;
 
-    WpadTextView Info_text;
+    //WpadTextView Info_text;
 
     private String m_MainSkin = SKIN_01;
 
@@ -148,7 +148,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
     WpadImageView RealTimeData_bg2;
     WpadTextView RealTimeData; //실시간 사용량 데이터
     double RealTimeData_Double = 0;
-    double EnergyMax_Double = 3000;
+    double EnergyMax_Double = 18;
     WpadTextView CalorieUnit1, CalorieUnit2; //난방 단위
     // WpadTextView RealtimeMeter_Marking1, RealtimeMeter_Marking2, RealtimeMeter_Marking3,
     //        RealtimeMeter_Marking4, RealtimeMeter_Marking5, RealtimeMeter_Marking6, RealtimeMeter_Marking7;
@@ -229,7 +229,6 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
         }
     }
 
-
     //6:전기 누적 사용량, 7:수도 누적 사용량, 8:가스 누적 사용량, 9:온수 누적 사용량, 10:열량 누적 사용량
     private final static int DB_ELECTRIC = 6;
     private final static int DB_WATER = 7;
@@ -262,8 +261,8 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
     DrawRect[] drawRect = new DrawRect[13];
 
     WpadTextView Kepco_HomeUse;
-    WpadTextView Solar_HomeUse;
     WpadTextView Fuel_HomeUse;
+    WpadTextView Photovoltaics_HomeUse;
 
     // [메뉴 리스트 처리 및 서브 스크린 호출]
     //private CallSubMenuScreen m_CallSubMenuScreen = null;
@@ -287,10 +286,10 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
         DebugLogOutput("[Create] - Step1 : Data Create");
 
         data = new DataClasses.RealTimeMeter();
-        TempbSupportKind = true; //true면 5종
+        TempbSupportKind = false; //true면 5종
         // initInfo();
         RegisterMainEventBr();
-        NowShowEnergyKind = ID.IcEnergyMgrID.DataKind.KEPCO;
+        NowShowEnergyKind = ID.IcEnergyMgrID.DataKind.SOLAR;
         nowCal = Calendar.getInstance();
 
 
@@ -305,6 +304,8 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
 
 
         // 2.1 실시간 검침기 사용유무 판단
+        // 고급주택은 실시간 검침 데이터도 단지서버로 부터 받아온다.
+        /*
         WallpadDeviceSet devset = new WallpadDeviceSet(getContext());
         setdata = devset.Get_RealTimeMetor_Info();
 
@@ -324,6 +325,9 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
             DebugLogOutput("RealtimeMeterUse = true, RealtimeMeterCountFromDB + " + RealtimeMeterCountFromDB);
         }
 
+         */
+        RealtimeMeterUse = false;
+
         // 2.2 영업샘플 모드 판단
         if (Common.GetDeviceSampleMode(context) == true) {
             //영업샘플 모드임!
@@ -340,11 +344,9 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
             }
         }
 
-
         //테스트 위함
-        //수정필요
-        //OPERATION_MODE = Common.MODE_BUSINESS_SAMPLE;
         TempbSupportKind = false;
+        //OPERATION_MODE = Common.MODE_BUSINESS_SAMPLE;
         //테스트 끝
 
         // 3. Image & Text Create
@@ -362,14 +364,9 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
 
 
         //실시간 사용량 배경 + 사용량추이 그래프 배경
-        Background_02 = new WpadImageView(context, TOUCH_KIND.NONE, 670, 576, R.drawable.box_1, 0, ID.IcEnergyMgrID.image.BACKGROUND);
+        Background_02 = new WpadImageView(context, TOUCH_KIND.NONE, 670, 576, R.drawable.box_1_2, 0, ID.IcEnergyMgrID.image.BACKGROUND);
         ViewRegistration(layout, Background_02, Common.ImgPosion.GetX(49), Common.ImgPosion.GetY(135));
 
-        //조회된 자료는 참고용이며, 과금용으로는 사용되지 않습니다.
-        Info_text = new WpadTextView(context, false, 670, 30, Gravity.LEFT, Color.WHITE, TitleFontSize, false, ID.IcEnergyMgrID.text.Info_text);
-        ViewRegistration(layout, Info_text, Common.ImgPosion.GetX(49), Common.ImgPosion.GetY(720));
-        Info_text.setText("조회된 정보는 참고용이며, 과금용으로는 사용되지 않습니다.");
-
         drawScrew[0] = new DrawScrew(getContext(), mScrewDegree);
         if (getLayout() != null) getLayout().addView(drawScrew[0]);
 
@@ -383,7 +380,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
         RealTimeData = new WpadTextView(context, false, getPos.Get(ID.IcEnergyMgrID.text.REALTIMEMETER_DATA).width, getPos.Get(ID.IcEnergyMgrID.text.REALTIMEMETER_DATA).height, Gravity.CENTER, Color.WHITE, TitleFontSize, false, ID.IcEnergyMgrID.text.REALTIMEMETER_DATA);
         ViewRegistration(layout, RealTimeData, getPos.Get(ID.IcEnergyMgrID.text.REALTIMEMETER_DATA).x, getPos.Get(ID.IcEnergyMgrID.text.REALTIMEMETER_DATA).y);
 
-        ReDraw();
+
 
         // 4. Draw_Update
         DebugLogOutput("[Create] - Step4 : Draw_Update");
@@ -403,35 +400,41 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
 
             Btn_Kepco = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 160, 74, R.drawable.btn_3_kepco_selected, 0, ID.IcEnergyMgrID.button.KEPCO);
             ViewRegistration(getLayout(), Btn_Kepco, getPos.Get(R.drawable.btn_3_kepco_pressed).x, getPos.Get(R.drawable.btn_3_kepco_pressed).y);
+            Btn_Kepco.setVisibility(View.GONE);
 
-            Btn_Solar = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 160, 74, R.drawable.btn_3_solar_e_normal, R.drawable.btn_3_solar_e_pressed, ID.IcEnergyMgrID.button.SOLAR);
+            Btn_Solar = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 160, 74, R.drawable.btn_3_solar_e_selected, 0, ID.IcEnergyMgrID.button.SOLAR);
             ViewRegistration(getLayout(), Btn_Solar, getPos.Get(R.drawable.btn_3_solar_e_normal).x, getPos.Get(R.drawable.btn_3_solar_e_normal).y);
 
             Btn_Fuel = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 160, 74, R.drawable.btn_3_fuel_cell_normal, R.drawable.btn_3_fuel_cell_pressed, ID.IcEnergyMgrID.button.FUEL);
             ViewRegistration(getLayout(), Btn_Fuel, getPos.Get(R.drawable.btn_3_fuel_cell_normal).x, getPos.Get(R.drawable.btn_3_fuel_cell_normal).y);
 
-            Background_04 = new WpadImageView(context, TOUCH_KIND.NONE, 499, 576, R.drawable.vip_box_3_3, 0, ID.IcEnergyMgrID.image.BACKGROUND);
+            Background_04 = new WpadImageView(context, TOUCH_KIND.NONE, 499, 576, R.drawable.vip_box_3_2, 0, ID.IcEnergyMgrID.image.BACKGROUND);
             ViewRegistration(layout, Background_04, Common.ImgPosion.GetX(731), Common.ImgPosion.GetY(135));
 
 
             Kepco_HomeUse = new WpadTextView(context, false, 50, 20, Gravity.LEFT, Color.parseColor("#ffffff"), ContentsFontSize, false, ID.IcEnergyMgrID.text_energy_num_3.ELECTRIC_HOMEUSE);
             ViewRegistration(layout, Kepco_HomeUse, Common.ImgPosion.GetX(1166), Common.ImgPosion.GetY(343));
+            Kepco_HomeUse.setVisibility(View.GONE);
+
+            Photovoltaics_HomeUse = new WpadTextView(context, false, 50, 20, Gravity.LEFT, Color.parseColor("#ffffff"), ContentsFontSize, false, ID.IcEnergyMgrID.text_energy_num_3.WATER_HOMEUSE);
+            ViewRegistration(layout, Photovoltaics_HomeUse, Common.ImgPosion.GetX(1166), Common.ImgPosion.GetY(343));
+
+            Fuel_HomeUse = new WpadTextView(context, false, 50, 20, Gravity.LEFT, Color.parseColor("#ffffff"), ContentsFontSize, false, ID.IcEnergyMgrID.text_energy_num_3.GAS_HOMEUSE);
+            ViewRegistration(layout, Fuel_HomeUse, Common.ImgPosion.GetX(1166), Common.ImgPosion.GetY(515));
 
-            Solar_HomeUse = new WpadTextView(context, false, 50, 20, Gravity.LEFT, Color.parseColor("#ffffff"), ContentsFontSize, false, ID.IcEnergyMgrID.text_energy_num_3.GAS_HOMEUSE);
-            ViewRegistration(layout, Solar_HomeUse, Common.ImgPosion.GetX(1166), Common.ImgPosion.GetY(515));
 
-            Fuel_HomeUse = new WpadTextView(context, false, 50, 20, Gravity.LEFT, Color.parseColor("#ffffff"), ContentsFontSize, false, ID.IcEnergyMgrID.text_energy_num_3.WATER_HOMEUSE);
-            ViewRegistration(layout, Fuel_HomeUse, Common.ImgPosion.GetX(1166), Common.ImgPosion.GetY(429));
         }
 
         if (RealtimeMeterUse == false) {
             // 실시간 검침 사용하지 않음
-            Background_DayEnergy = new WpadImageView(getContext(), TOUCH_KIND.NONE, 670, 282, R.drawable.box_2, 0, ID.IcEnergyMgrID.image.BACKGROUND); //그래프 변경
+            Background_DayEnergy = new WpadImageView(getContext(), TOUCH_KIND.NONE, 670, 282, R.drawable.box_2_2, 0, ID.IcEnergyMgrID.image.BACKGROUND); //그래프 변경
             ViewRegistration(getLayout(), Background_DayEnergy, Common.ImgPosion.GetX(49), Common.ImgPosion.GetY(429));
 
             for (int i = 0; i < 9; i++) {
                 // 아랫쪽
-                DayMarking[i] = new WpadTextView(context, false, getPos.Get(ID.IcEnergyMgrID.text_day_marking.DAY_MARKING_1, i).width, getPos.Get(ID.IcEnergyMgrID.text_day_marking.DAY_MARKING_1, i).height, Gravity.CENTER, Color.parseColor("#969696"), ContentsFontSize, false, ID.IcEnergyMgrID.text.REALTIMEMETER_DATA);
+                DayMarking[i] = new WpadTextView(context, false, getPos.Get(ID.IcEnergyMgrID.text_day_marking.DAY_MARKING_1, i).width,
+                        30,
+                        Gravity.CENTER, Color.parseColor("#969696"), ContentsFontSize, false, ID.IcEnergyMgrID.text.REALTIMEMETER_DATA);
 
                 if (i < 2) {
                     ViewRegistration(layout, DayMarking[i], getPos.Get(ID.IcEnergyMgrID.text_day_marking.DAY_MARKING_1, i).x, getPos.Get(ID.IcEnergyMgrID.text_day_marking.DAY_MARKING_1, i).y);
@@ -458,12 +461,14 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
             UsedData_Unit = new WpadTextView(getContext(), false, getPos.Get(ID.IcEnergyMgrID.UsedData_MaxData_textView.UsedData_Unit).width, getPos.Get(ID.IcEnergyMgrID.UsedData_MaxData_textView.UsedData_Unit).height, Gravity.RIGHT, Color.parseColor("#969696"), ContentsFontSize, false, ID.IcEnergyMgrID.text.REALTIMEMETER_DATA);
             ViewRegistration(getLayout(), UsedData_Unit, getPos.Get(ID.IcEnergyMgrID.UsedData_MaxData_textView.UsedData_Unit).x, getPos.Get(ID.IcEnergyMgrID.UsedData_MaxData_textView.UsedData_Unit).y);
 
-        } else {
+        }
+        else {
             if (RealtimeMeterCountFromDB == 3) {
                 // 실시간 검침 DB값 3종일 경우
 
                 Btn_Kepco = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 160, 74, R.drawable.btn_3_kepco_selected, 0, ID.IcEnergyMgrID.button.ELECTRIC);
                 ViewRegistration(getLayout(), Btn_Kepco, getPos.Get(R.drawable.btn_3_kepco_pressed).x, getPos.Get(R.drawable.btn_3_kepco_pressed).y);
+                Btn_Kepco.setVisibility(View.GONE);
 
                 Btn_Solar = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 160, 74, R.drawable.btn_3_solar_e_normal, R.drawable.btn_3_solar_e_pressed, ID.IcEnergyMgrID.button.SOLAR);
                 ViewRegistration(getLayout(), Btn_Solar, getPos.Get(R.drawable.btn_3_solar_e_normal).x, getPos.Get(R.drawable.btn_3_solar_e_normal).y);
@@ -491,21 +496,25 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
 
         if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) {
             SampleDatainsert_MonthTableData();
-        } else {
+        }
+        else {
             ShowMonthGraph();
             if (RealtimeMeterUse == true) {
                 RemoveUsedData();
                 ShowUsedDataGraph();
             } else {
-                //ShowUsedDataGraph_DayVersion();
+                new Handler().postDelayed(new Runnable() {
+                    @Override
+                    public void run() {
+                        ShowUsedDataGraph_DayVersion();
+                    }
+                }, 300);
+
                 ShowDayGraph();
             }
-
         }
 
-
-        WallpadSalesSampleData sampleData = new WallpadSalesSampleData(this.getContext());
-        sampleData.closeDB();
+        
 
         Log.d(TAG, "[End - Screen] -------------------------------------------- ");
     }
@@ -520,14 +529,14 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
         if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) {
             if (arrayListDayEnergyData.size() == 0) {
                 arrayListDayEnergyData.add(new DayEnergyDataClass(2015, 3, 2, 3, 22, 34));
-                arrayListDayEnergyData.add(new DayEnergyDataClass(2015, 3, 1, 4, 23, 35));
-                arrayListDayEnergyData.add(new DayEnergyDataClass(2015, 2, 28, 5, 24, 36));
-                arrayListDayEnergyData.add(new DayEnergyDataClass(2015, 2, 27, 6, 25, 37));
-                arrayListDayEnergyData.add(new DayEnergyDataClass(2015, 2, 26, 7, 26, 38));
-                arrayListDayEnergyData.add(new DayEnergyDataClass(2015, 2, 25, 8, 27, 39));
-                arrayListDayEnergyData.add(new DayEnergyDataClass(2015, 2, 24, 9, 28, 40));
-                arrayListDayEnergyData.add(new DayEnergyDataClass(2015, 2, 23, 9, 29, 41));
-                arrayListDayEnergyData.add(new DayEnergyDataClass(2015, 2, 22, 6, 30, 42));
+                //arrayListDayEnergyData.add(new DayEnergyDataClass(2015, 3, 1, 4, 23, 35));
+                //arrayListDayEnergyData.add(new DayEnergyDataClass(2015, 2, 28, 5, 24, 36));
+                //arrayListDayEnergyData.add(new DayEnergyDataClass(2015, 2, 27, 6, 25, 37));
+                //arrayListDayEnergyData.add(new DayEnergyDataClass(2015, 2, 26, 7, 26, 38));
+                //arrayListDayEnergyData.add(new DayEnergyDataClass(2015, 2, 25, 8, 27, 39));
+                //arrayListDayEnergyData.add(new DayEnergyDataClass(2015, 2, 24, 9, 28, 40));
+                //arrayListDayEnergyData.add(new DayEnergyDataClass(2015, 2, 23, 9, 29, 41));
+                //arrayListDayEnergyData.add(new DayEnergyDataClass(2015, 2, 22, 6, 30, 42));
             }
             ShowDayGraph();
         } else {
@@ -536,7 +545,6 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
             TotalServerInquiryCount = 0;
             arrayListDayEnergyData.clear();
             LoadRemotemeterDataFromServer(1, CalendarYear, CalendarMonth, ShowNowEnergyIndex);
-
         }
     }
 
@@ -614,7 +622,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
         DebugLogOutput("ShowDayGraph");
         //실시간 사용량 배경 + 사용량추이 그래프 배경
 
-        if (arrayListDayEnergyData.size() != 9) {
+        if (arrayListDayEnergyData.size() < 1) {
             DebugLogOutput("arrayListDayEnergyData.size() != 9. Return!!!");
             DebugLogOutput("arrayListDayEnergyData.size(): " + arrayListDayEnergyData.size());
             return;
@@ -635,26 +643,33 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
             }
         }
 
+        int size = arrayListDayEnergyData.size()>9?9:arrayListDayEnergyData.size();
+
         //그리기
-        float[] tempFloatArray = new float[arrayListDayEnergyData.size()];
-        int[] tempintArray = new int[arrayListDayEnergyData.size()];
+        float[] tempFloatArray = new float[size];
+        int[] tempintArray = new int[size];
+
+        int j = 1;
 
         switch (NowShowEnergyKind) {
             case ID.IcEnergyMgrID.DataKind.KEPCO:
-                for (int i = 8; i >= 0; i--) {
-                    tempFloatArray[i] = arrayListDayEnergyData.get(i).getKepco_used();
+                for (int i = (size-1) ; i >= 0; i--) {
+                    tempFloatArray[i] = arrayListDayEnergyData.get(arrayListDayEnergyData.size()- j).getKepco_used();
+                    j++;
                 }
                 break;
 
             case ID.IcEnergyMgrID.DataKind.SOLAR:
-                for (int i = 8; i >= 0; i--) {
-                    tempFloatArray[i] = arrayListDayEnergyData.get(i).getSolar_used();
+                for (int i = (size-1) ; i >= 0; i--) {
+                    tempFloatArray[i] = arrayListDayEnergyData.get(arrayListDayEnergyData.size()- j).getSolar_used();
+                    j++;
                 }
                 break;
 
             case ID.IcEnergyMgrID.DataKind.FUEL:
-                for (int i = 8; i >= 0; i--) {
-                    tempFloatArray[i] = arrayListDayEnergyData.get(i).getFuel_used();
+                for (int i = (size-1) ; i >= 0; i--) {
+                    tempFloatArray[i] = arrayListDayEnergyData.get(arrayListDayEnergyData.size()- j).getFuel_used();
+                    j++;
                 }
                 break;
 
@@ -691,44 +706,30 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                 UsedData_Unit.setText("kWh"); // ㎥, ㎥/MWh, kWh;
                 break;
 
-            case ID.IcEnergyMgrID.DataKind.HEATING:
-                UsedData_Unit.setText("㎥/MWh"); // ㎥, ㎥/MWh, kWh;
-                break;
-
-            case ID.IcEnergyMgrID.DataKind.GAS:
-                UsedData_Unit.setText("㎥"); // ㎥, ㎥/MWh, kWh;
-                break;
-
-            case ID.IcEnergyMgrID.DataKind.HOTWATER:
-                UsedData_Unit.setText("㎥"); // ㎥, ㎥/MWh, kWh;
-                break;
-
-            case ID.IcEnergyMgrID.DataKind.WATER:
-                UsedData_Unit.setText("㎥"); // ㎥, ㎥/MWh, kWh;
-                break;
-
             default:
                 break;
         }
 
+
         //하단 날짜 출력, 에너지 데이터 삽입
-        for (int i = 0; i < 9; i++) {
-            tempintArray[i] = arrayListDayEnergyData.get(i).getDay();
+        for (int i = 0; i < size; i++) {
+            //if(i>=arrayListDayEnergyData.size()-1) break;
+            tempintArray[i] = arrayListDayEnergyData.get(arrayListDayEnergyData.size()-size+i).getDay();
         }
 
         //int배열을 역순으로
-        tempintArray = reverseArrayint(tempintArray);
+        //tempintArray = reverseArrayint(tempintArray);
 
-        for (int i = 8; i >= 0; i--) {
+        for (int i = size-1; i >= 0; i--) {
             DayMarking[i].setText(String.valueOf(tempintArray[i]) + "일");
         }
 
         //float배열 역순으로
-        tempFloatArray = reverseArrayfloat(tempFloatArray);
+        //tempFloatArray = reverseArrayfloat(tempFloatArray);
         UsedData_Yesterday_AfterCalc = tempFloatArray;
 
         //Yesterday 그래프그리기
-        for (int i = 0; i < 9; i++) {
+        for (int i = 0; i <size ; i++) {
             if (i < 2) {
                 ArrayDot_Yesterday[0][i] = getPos.Get(ID.IcEnergyMgrID.Graph.x_1, i).x; // x좌표
             } else if (i == 2) {
@@ -737,10 +738,12 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                 ArrayDot_Yesterday[0][i] = getPos.Get(ID.IcEnergyMgrID.Graph.x_3, i).x; // x좌표
             }
 
-            if (Float.isNaN((getPos.Get(ID.IcEnergyMgrID.Graph.y_MAX, i).y - (getPos.Get(ID.IcEnergyMgrID.Graph.y_1, i).y * (UsedData_Yesterday_AfterCalc[i]) / UsedData_MaxData[3])))) {
+            int index = UsedData_Yesterday_AfterCalc.length - size + i ;
+
+            if (Float.isNaN((getPos.Get(ID.IcEnergyMgrID.Graph.y_MAX, i).y - (getPos.Get(ID.IcEnergyMgrID.Graph.y_1, i).y * (UsedData_Yesterday_AfterCalc[index]) / UsedData_MaxData[3])))) {
                 ArrayDot_Yesterday[1][i] = getPos.Get(ID.IcEnergyMgrID.Graph.y_MAX, i).y;
             } else {
-                ArrayDot_Yesterday[1][i] = (int) (getPos.Get(ID.IcEnergyMgrID.Graph.y_MAX, i).y - (getPos.Get(ID.IcEnergyMgrID.Graph.y_1, i).y * (UsedData_Yesterday_AfterCalc[i]) / UsedData_MaxData[3]) + 6); // y좌표
+                ArrayDot_Yesterday[1][i] = (int) (getPos.Get(ID.IcEnergyMgrID.Graph.y_MAX, i).y - (getPos.Get(ID.IcEnergyMgrID.Graph.y_1, i).y * (UsedData_Yesterday_AfterCalc[index]) / UsedData_MaxData[3]) + 6); // y좌표
                 if (ArrayDot_Yesterday[1][i] > getPos.Get(ID.IcEnergyMgrID.Graph.y_MAX, i).y) {
                     ArrayDot_Yesterday[1][i] = getPos.Get(ID.IcEnergyMgrID.Graph.y_MAX, i).y;
                 }
@@ -749,10 +752,10 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
             // DebugLogOutput("ArrayDot_Yesterday["+i+"] = "+ArrayDot_Yesterday[0][i]+", "+ArrayDot_Yesterday[1][i]);
         }
 
-        drawLines[0] = new DrawLine(getContext(), ArrayDot_Yesterday, 9, 0);
+        drawLines[0] = new DrawLine(getContext(), ArrayDot_Yesterday, size-1, 0);
         if (getLayout() != null) getLayout().addView(drawLines[0]);
 
-        for (int i = 0; i < 9; i++) {
+        for (int i = 0; i < size; i++) {
             Dot_img_Yesterday[i] = new WpadImageView(getContext(), TOUCH_KIND.NONE, getPos.Get(ID.IcEnergyMgrID.Graph.x_1, i).width, getPos.Get(ID.IcEnergyMgrID.Graph.x_1, i).height, R.drawable.man_energy_moment_graph_dot_yesterday, 0, ID.IcEnergyMgrID.image.BACKGROUND);
             ViewRegistration(getLayout(), Dot_img_Yesterday[i], ArrayDot_Yesterday[0][i], ArrayDot_Yesterday[1][i]);
 
@@ -764,7 +767,9 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                 ViewRegistration(getLayout(), DayEnergyMarking[i], ArrayDot_Yesterday[0][i] - (38 / 2) + 4, ArrayDot_Yesterday[1][i] - 19);
             }
 
-            DayEnergyMarking[i].setText(Convter2_DoubleTOStr_CutPoint2((double) UsedData_Yesterday_AfterCalc[i]));
+            int index = UsedData_Yesterday_AfterCalc.length - size + i ;
+
+            DayEnergyMarking[i].setText(Convter2_DoubleTOStr_CutPoint2((double) UsedData_Yesterday_AfterCalc[index]));
         }
         //arrayListDayEnergyData.clear();
         Draw_Update();
@@ -804,7 +809,6 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
         SimpleDateFormat CurHourFormat = new SimpleDateFormat("HH");
         SimpleDateFormat CurMinuteFormat = new SimpleDateFormat("mm");
 
-
         // 지정된 포맷으로 String 타입 리턴
         //String strCurDate = CurDateFormat.format(date);
         //String strCurTime = CurTimeFormat.format(date);
@@ -982,7 +986,6 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
         //DB
         WallpadDBMGR.closeDB();
 
-
         Arrays.fill(UsedData_Yesterday_AfterCalc, 0);
         Arrays.fill(UsedData_Today_AfterCalc, 0);
 
@@ -1104,7 +1107,6 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                 break;
         }
 
-
         //Yesterday 그래프그리기
         for (int i = 0; i < 9; i++) {
             if (i < 2) {
@@ -1140,7 +1142,6 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
             ViewRegistration(getLayout(), Dot_img_Yesterday[i], ArrayDot_Yesterday[0][i], ArrayDot_Yesterday[1][i]);
         }
 
-
         //Today 그래프그리기
 
         for (int i = 0; i <= NowHourint; i++) {
@@ -1160,7 +1161,6 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                     ArrayDot_Today[1][i] = getPos.Get(ID.IcEnergyMgrID.Graph.y_MAX, i).y;
                 }
             }
-
             //DebugLogOutput("ArrayDot_Today["+i+"+] = "+ArrayDot_Today[0][i]+", "+ArrayDot_Today[1][i]);
         }
         drawLines[1] = new DrawLine(getContext(), ArrayDot_Today, NowHourint, 1);
@@ -1191,7 +1191,6 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
 
     @Override
     protected void onClose() {
-        // TODO Auto-generated method stub
         super.onClose();
         UnRegisterMainEventBr();
         if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) Sample_End();
@@ -1203,21 +1202,17 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
 
     @Override
     public void Close() {
-        // TODO Auto-generated method stub
         Log.i(TAG, "[END   - Screen] ********************************************");
         super.Close();
     }
 
     @Override
     protected void onTouchEvent(View v, MotionEvent event) {
-        // TODO Auto-generated method stub
         super.onTouchEvent(v, event);
-
         int TargetId = v.getId();
         int MoveEvent = event.getAction();
 
         if (MoveEvent == MotionEvent.ACTION_DOWN) {
-
         } else if (MoveEvent == MotionEvent.ACTION_UP) {
             if (TargetId == ID.IcEnergyMgrID.button.BOTTOM_MOVE_LEFT) {
 
@@ -1238,6 +1233,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                         if (getLayout() != null) getLayout().removeView(Btn_Kepco);
                         Btn_Kepco = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 160, 74, R.drawable.btn_3_kepco_normal, R.drawable.btn_3_kepco_pressed, ID.IcEnergyMgrID.button.KEPCO);
                         ViewRegistration(getLayout(), Btn_Kepco, getPos.Get(R.drawable.btn_3_kepco_normal).x, getPos.Get(R.drawable.btn_3_kepco_normal).y);
+                        Btn_Kepco.setVisibility(View.GONE);
                         break;
 
                     case ID.IcEnergyMgrID.DataKind.SOLAR:
@@ -1247,6 +1243,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                         break;
 
                     case ID.IcEnergyMgrID.DataKind.FUEL:
+                        if (getLayout() != null) getLayout().removeView(Btn_Fuel);
                         Btn_Fuel = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 160, 74, R.drawable.btn_3_fuel_cell_normal, R.drawable.btn_3_fuel_cell_pressed, ID.IcEnergyMgrID.button.FUEL);
                         ViewRegistration(getLayout(), Btn_Fuel, getPos.Get(R.drawable.btn_3_fuel_cell_normal).x, getPos.Get(R.drawable.btn_3_fuel_cell_normal).y);
                         break;
@@ -1270,6 +1267,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
 
                         Btn_Kepco = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 160, 74, R.drawable.btn_3_kepco_selected, 0, ID.IcEnergyMgrID.button.KEPCO);
                         ViewRegistration(getLayout(), Btn_Kepco, getPos.Get(R.drawable.btn_3_kepco_pressed).x, getPos.Get(R.drawable.btn_3_kepco_pressed).y);
+                        Btn_Kepco.setVisibility(View.GONE);
                         break;
 
                     case ID.IcEnergyMgrID.button.SOLAR:
@@ -1314,20 +1312,19 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                         break;
                 }
 
-                Draw_Update();
+                //Draw_Update();
 
                 if (RealtimeMeterUse == true) {
                     RemoveUsedData();
                     ShowUsedDataGraph();
                 } else {
-                    //ShowUsedDataGraph_DayVersion();
+                    ShowUsedDataGraph_DayVersion();
                     ShowDayGraph();
                 }
             }
         }
     }
 
-
     @Override
     public void ViewRegistration(RelativeLayout ParentsLayout, WpadImageView nImageView, int MarginLeft, int MarginTop) {
         // TODO Auto-generated method stub
@@ -1386,7 +1383,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
         if ((data.GetAllSupport() != TempbSupportKind) && (RealtimeMeterUse == true) && (APIInit == true)) {
             DebugLogOutput("if((data.GetAllSupport() != TempbSupportKind) && (RealtimeMeterUse == true))");
             TempbSupportKind = data.GetAllSupport();
-            NowShowEnergyKind = ID.IcEnergyMgrID.DataKind.KEPCO;
+            //NowShowEnergyKind = ID.IcEnergyMgrID.DataKind.KEPCO;
 
             if (data.GetAllSupport() == false && getLayout() != null) {
                 // 종 버튼 등록.
@@ -1399,6 +1396,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                     case ID.IcEnergyMgrID.DataKind.KEPCO:
                         Btn_Kepco = new WpadImageView(getContext(), TOUCH_KIND.NONE, 160, 74, R.drawable.btn_3_kepco_selected, 0, ID.IcEnergyMgrID.button.KEPCO);
                         ViewRegistration(getLayout(), Btn_Kepco, getPos.Get(R.drawable.btn_3_kepco_pressed).x, getPos.Get(R.drawable.btn_3_kepco_pressed).y);
+                        Btn_Kepco.setVisibility(View.GONE);
 
                         Btn_Solar = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 160, 74, R.drawable.btn_3_solar_e_normal, R.drawable.btn_3_solar_e_pressed, ID.IcEnergyMgrID.button.SOLAR);
                         ViewRegistration(getLayout(), Btn_Solar, getPos.Get(R.drawable.btn_3_solar_e_normal).x, getPos.Get(R.drawable.btn_3_solar_e_normal).y);
@@ -1410,6 +1408,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                     case ID.IcEnergyMgrID.DataKind.SOLAR:
                         Btn_Kepco = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 160, 74, R.drawable.btn_3_kepco_normal, R.drawable.btn_3_kepco_pressed, ID.IcEnergyMgrID.button.KEPCO);
                         ViewRegistration(getLayout(), Btn_Kepco, getPos.Get(R.drawable.btn_3_kepco_normal).x, getPos.Get(R.drawable.btn_3_kepco_normal).y);
+                        Btn_Kepco.setVisibility(View.GONE);
 
                         Btn_Solar = new WpadImageView(getContext(), TOUCH_KIND.NONE, 160, 74, R.drawable.btn_3_solar_e_selected, 0, ID.IcEnergyMgrID.button.SOLAR);
                         ViewRegistration(getLayout(), Btn_Solar, getPos.Get(R.drawable.btn_3_solar_e_normal).x, getPos.Get(R.drawable.btn_3_solar_e_normal).y);
@@ -1421,6 +1420,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                     case ID.IcEnergyMgrID.DataKind.FUEL:
                         Btn_Kepco = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 160, 74, R.drawable.btn_3_kepco_normal, R.drawable.btn_3_kepco_pressed, ID.IcEnergyMgrID.button.KEPCO);
                         ViewRegistration(getLayout(), Btn_Kepco, getPos.Get(R.drawable.btn_3_kepco_normal).x, getPos.Get(R.drawable.btn_3_kepco_normal).y);
+                        Btn_Kepco.setVisibility(View.GONE);
 
                         Btn_Solar = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 160, 74, R.drawable.btn_3_solar_e_normal, R.drawable.btn_3_solar_e_pressed, ID.IcEnergyMgrID.button.SOLAR);
                         ViewRegistration(getLayout(), Btn_Solar, getPos.Get(R.drawable.btn_3_solar_e_normal).x, getPos.Get(R.drawable.btn_3_solar_e_normal).y);
@@ -1428,7 +1428,6 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                         Btn_Fuel = new WpadImageView(getContext(), TOUCH_KIND.NONE, 160, 74, R.drawable.btn_3_fuel_cell_selected, 0, ID.IcEnergyMgrID.button.FUEL);
                         ViewRegistration(getLayout(), Btn_Fuel, getPos.Get(R.drawable.btn_3_fuel_cell_normal).x, getPos.Get(R.drawable.btn_3_fuel_cell_normal).y);
                         break;
-
                 }
             } else {
                 if (getLayout() != null) getLayout().removeView(Btn_Kepco);
@@ -1439,6 +1438,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                     case ID.IcEnergyMgrID.DataKind.KEPCO:
                         Btn_Kepco = new WpadImageView(getContext(), TOUCH_KIND.NONE, 160, 74, R.drawable.btn_3_kepco_selected, 0, ID.IcEnergyMgrID.button.KEPCO);
                         ViewRegistration(getLayout(), Btn_Kepco, getPos.Get(R.drawable.btn_3_kepco_normal).x, getPos.Get(R.drawable.btn_3_kepco_normal).y);
+                        Btn_Kepco.setVisibility(View.GONE);
 
                         Btn_Solar = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 160, 74, R.drawable.man_energy_btn_water_3set_normal, R.drawable.man_energy_btn_water_3set_pressed, ID.IcEnergyMgrID.button.SOLAR);
                         ViewRegistration(getLayout(), Btn_Solar, getPos.Get(R.drawable.man_energy_btn_water_3set_normal).x, getPos.Get(R.drawable.man_energy_btn_water_3set_normal).y);
@@ -1450,6 +1450,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                     case ID.IcEnergyMgrID.DataKind.SOLAR:
                         Btn_Kepco = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 160, 74, R.drawable.btn_3_kepco_normal, R.drawable.btn_3_kepco_normal, ID.IcEnergyMgrID.button.KEPCO);
                         ViewRegistration(getLayout(), Btn_Kepco, getPos.Get(R.drawable.btn_3_kepco_normal).x, getPos.Get(R.drawable.btn_3_kepco_normal).y);
+                        Btn_Kepco.setVisibility(View.GONE);
 
                         Btn_Solar = new WpadImageView(getContext(), TOUCH_KIND.NONE, 160, 74, R.drawable.man_energy_btn_water_3set_pressed, 0, ID.IcEnergyMgrID.button.SOLAR);
                         ViewRegistration(getLayout(), Btn_Solar, getPos.Get(R.drawable.man_energy_btn_water_3set_normal).x, getPos.Get(R.drawable.man_energy_btn_water_3set_normal).y);
@@ -1461,6 +1462,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                     case ID.IcEnergyMgrID.DataKind.FUEL:
                         Btn_Kepco = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 160, 74, R.drawable.btn_3_kepco_normal, R.drawable.btn_3_kepco_normal, ID.IcEnergyMgrID.button.KEPCO);
                         ViewRegistration(getLayout(), Btn_Kepco, getPos.Get(R.drawable.btn_3_kepco_normal).x, getPos.Get(R.drawable.btn_3_kepco_normal).y);
+                        Btn_Kepco.setVisibility(View.GONE);
 
                         Btn_Solar = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 160, 74, R.drawable.man_energy_btn_water_3set_normal, R.drawable.man_energy_btn_water_3set_pressed, ID.IcEnergyMgrID.button.SOLAR);
                         ViewRegistration(getLayout(), Btn_Solar, getPos.Get(R.drawable.man_energy_btn_water_3set_normal).x, getPos.Get(R.drawable.man_energy_btn_water_3set_normal).y);
@@ -1477,15 +1479,15 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
             if ((arrayListDayEnergyData.size() != 0) && (arrayListDayEnergyData.isEmpty() != true)) {
                 switch (NowShowEnergyKind) {
                     case ID.IcEnergyMgrID.DataKind.KEPCO:
-                        Draw_TextValueWrite(ID.IcEnergyMgrID.DataKind.KEPCO, arrayListDayEnergyData.get(0).getKepco_used());
+                        Draw_TextValueWrite(ID.IcEnergyMgrID.DataKind.KEPCO, arrayListDayEnergyData.get(arrayListDayEnergyData.size()-1).getKepco_used());
                         break;
 
                     case ID.IcEnergyMgrID.DataKind.SOLAR:
-                        Draw_TextValueWrite(ID.IcEnergyMgrID.DataKind.SOLAR, arrayListDayEnergyData.get(0).getSolar_used());
+                        Draw_TextValueWrite(ID.IcEnergyMgrID.DataKind.SOLAR, arrayListDayEnergyData.get(arrayListDayEnergyData.size()-1).getSolar_used());
                         break;
 
                     case ID.IcEnergyMgrID.DataKind.FUEL:
-                        Draw_TextValueWrite(ID.IcEnergyMgrID.DataKind.FUEL, arrayListDayEnergyData.get(0).getSolar_used());
+                        Draw_TextValueWrite(ID.IcEnergyMgrID.DataKind.FUEL, arrayListDayEnergyData.get(arrayListDayEnergyData.size()-1).getFuel_used());
                         break;
 
                     default:
@@ -1894,7 +1896,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                     }
                     break;
 
-                case 7://가스
+                case 7://태양광
                     mLinePaint.setColor(Color.parseColor("#6c44a3"));
                     if (EnergyCount == 6) {
                         Y_Coordinate = (71 * 3);
@@ -1929,13 +1931,13 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                     }
                     break;
 
-                case 9://수도
+                case 9://연료전지
                     mLinePaint.setColor(Color.parseColor("#a55f7f"));
 
                     if (EnergyCount == 5) {
                         Y_Coordinate = (86 * 4);
                     } else if (EnergyCount == 3) {
-                        Y_Coordinate = (172);
+                        Y_Coordinate = (107);
                     } else if (EnergyCount == 6) {
                         Y_Coordinate = (71 * 4);
                     }
@@ -2051,62 +2053,6 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                 //DebugLogOutput("[Draw_TextValueWrite] - ELEC  str = (" + str + ")  " + "value = " + value);
                 break;
 
-            case ID.IcEnergyMgrID.DataKind.WATER:
-                str = Convter2_DoubleTOStr(value);
-                if (RealtimeMeterUse == false) {
-                    // 실시간 검침 사용하지 않음
-                    str += " ㎥";
-                } else {
-                    str += " ㎥/h";
-                }
-
-                RealTimeData.setText(str);
-
-                //DebugLogOutput("[Draw_TextValueWrite] - Water  str = (" + str + ")  " + "value = " + value);
-                break;
-
-            case ID.IcEnergyMgrID.DataKind.GAS:
-                str = Convter2_DoubleTOStr(value);
-                if (RealtimeMeterUse == false) {
-                    // 실시간 검침 사용하지 않음
-                    str += " ㎥";
-                } else {
-                    str += " ㎥/h";
-                }
-                RealTimeData.setText(str);
-                //DebugLogOutput("[Draw_TextValueWrite] - Gas  str = (" + str + ")  " + "value = " + value);
-                break;
-
-            case ID.IcEnergyMgrID.DataKind.HOTWATER:
-                str = Convter2_DoubleTOStr(value);
-                if (RealtimeMeterUse == false) {
-                    // 실시간 검침 사용하지 않음
-                    str += " ㎥";
-                } else {
-                    str += " ㎥/h";
-                }
-                RealTimeData.setText(str);
-                //DebugLogOutput("[Draw_TextValueWrite] - HotWater  str = (" + str + ")  " + "value = " + value);
-                break;
-
-            case ID.IcEnergyMgrID.DataKind.HEATING:
-                str = Convter2_DoubleTOStr(value);
-                if (str == null) return;
-
-                str += " ";
-                RealTimeData.setText(str);
-
-                if (RealtimeMeterUse == false) {
-                    // 실시간 검침 사용하지 않음
-                    CalorieUnit1.setText("㎥");
-                } else {
-                    CalorieUnit1.setText("㎥/h");
-                }
-                CalorieUnit2.setText("MWh");
-
-                //DebugLogOutput("[Draw_TextValueWrite] - Calorie  str = (" + str + ")  " + "value = " + value);
-                break;
-
             default:
                 Log.e(TAG, "[Draw_TextValueWrite] - TextId  Out of range !!! (" + TextId + ")");
                 break;
@@ -2982,29 +2928,30 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
 
                     Kepco_HomeUse = new WpadTextView(getContext(), false, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.ELECTRIC_HOMEUSE).width, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.ELECTRIC_HOMEUSE).height, Gravity.LEFT, Color.parseColor("#549da6"), ContentsFontSize, false, ID.IcEnergyMgrID.text_energy_num_3.ELECTRIC_HOMEUSE);
                     ViewRegistration(getLayout(), Kepco_HomeUse, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.ELECTRIC_HOMEUSE).x, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.ELECTRIC_HOMEUSE).y);
+                    Kepco_HomeUse.setVisibility(View.GONE);
 
                     if (getLayout() != null) getLayout().addView(drawRect[1]);
                     if (getLayout() != null) getLayout().addView(drawRect[2]);
 
                     //태양광
-                    if (getLayout() != null) getLayout().removeView(Solar_HomeUse);
+                    if (getLayout() != null) getLayout().removeView(Fuel_HomeUse);
                     if (getLayout() != null) getLayout().removeView(drawRect[7]);
                     if (getLayout() != null) getLayout().removeView(drawRect[8]);
 
-                    Solar_HomeUse = new WpadTextView(getContext(), false, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.GAS_HOMEUSE).width, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.GAS_HOMEUSE).height, Gravity.LEFT, Color.parseColor("#7cac64"), ContentsFontSize, false, ID.IcEnergyMgrID.text_energy_num_3.GAS_HOMEUSE);
-                    ViewRegistration(getLayout(), Solar_HomeUse, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.GAS_HOMEUSE).x, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.GAS_HOMEUSE).y);
+                    Fuel_HomeUse = new WpadTextView(getContext(), false, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.GAS_HOMEUSE).width, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.GAS_HOMEUSE).height, Gravity.LEFT, Color.parseColor("#7cac64"), ContentsFontSize, false, ID.IcEnergyMgrID.text_energy_num_3.GAS_HOMEUSE);
+                    ViewRegistration(getLayout(), Fuel_HomeUse, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.GAS_HOMEUSE).x, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.GAS_HOMEUSE).y);
 
                     if (getLayout() != null) getLayout().addView(drawRect[7]);
                     if (getLayout() != null) getLayout().addView(drawRect[8]);
 
 
                     //연료전지
-                    if (getLayout() != null) getLayout().removeView(Fuel_HomeUse);
+                    if (getLayout() != null) getLayout().removeView(Photovoltaics_HomeUse);
                     if (getLayout() != null) getLayout().removeView(drawRect[9]);
                     if (getLayout() != null) getLayout().removeView(drawRect[10]);
 
-                    Fuel_HomeUse = new WpadTextView(getContext(), false, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.WATER_HOMEUSE).width, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.WATER_HOMEUSE).height, Gravity.LEFT, Color.parseColor("#c885a4"), ContentsFontSize, false, ID.IcEnergyMgrID.text_energy_num_3.WATER_HOMEUSE);
-                    ViewRegistration(getLayout(), Fuel_HomeUse, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.WATER_HOMEUSE).x, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.WATER_HOMEUSE).y);
+                    Photovoltaics_HomeUse = new WpadTextView(getContext(), false, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.WATER_HOMEUSE).width, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.WATER_HOMEUSE).height, Gravity.LEFT, Color.parseColor("#c885a4"), ContentsFontSize, false, ID.IcEnergyMgrID.text_energy_num_3.WATER_HOMEUSE);
+                    ViewRegistration(getLayout(), Photovoltaics_HomeUse, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.WATER_HOMEUSE).x, getPos.Get(ID.IcEnergyMgrID.text_energy_num_3.WATER_HOMEUSE).y);
 
                     if (getLayout() != null) getLayout().addView(drawRect[9]);
                     if (getLayout() != null) getLayout().addView(drawRect[10]);
@@ -3043,24 +2990,23 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
             }
 
             DebugLogOutput("Draw Month Graph");
-            Kepco_HomeUse.setText(monthTableClass[0].Use);
+            //Kepco_HomeUse.setText(monthTableClass[0].Use);
             //목표량이 없으므로, Goal 값은 USE 값을 이용해서 구한다.
-            double goal = (double) (Double.valueOf(monthTableClass[0].Use) * 1.2);
-            drawRect[1].ReDraw(CalcGraphWidth(monthTableClass[0].Use, goal + ""), mNumberOfEnergy);
+            double goal = (double) (Double.valueOf(monthTableClass[1].Use))+(Double.valueOf(monthTableClass[2].Use)) ;
+            //drawRect[1].ReDraw(CalcGraphWidth(monthTableClass[0].Use, goal + ""), mNumberOfEnergy);
 
-            Solar_HomeUse.setText(monthTableClass[1].Use);
-            goal = (double) (Double.valueOf(monthTableClass[1].Use) * 1.2);
+            Photovoltaics_HomeUse.setText(monthTableClass[1].Use);
+            //goal = (double) (Double.valueOf(monthTableClass[1].Use) * 1.5);
             drawRect[7].ReDraw(CalcGraphWidth(monthTableClass[1].Use, goal + ""), mNumberOfEnergy);
 
-
             Fuel_HomeUse.setText(monthTableClass[2].Use);
-            goal = (double) (Double.valueOf(monthTableClass[2].Use) * 1.2);
+            //goal = (double) (Double.valueOf(monthTableClass[2].Use) * 1.2);
             drawRect[9].ReDraw(CalcGraphWidth(monthTableClass[2].Use, goal + ""), mNumberOfEnergy);
 
-            if (RealtimeMeterUse == false) {
+            //if (RealtimeMeterUse == false) {
                 // 실시간 검침 사용하지 않음
-                ShowUsedDataGraph_DayVersion();
-            }
+                //ShowUsedDataGraph_DayVersion();
+            //}
 
         } catch (RuntimeException re) {
             Log.e(TAG, "exception : " + re);
@@ -3095,7 +3041,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
 
                 case 1: //일별
                     //imapRemotemeter.DoWork(false, true, true, true, true, true, false, false, year, month);
-                    imapRemotemeter.DoWorkVIP(false, true, false, true, true, year, month);
+                    imapRemotemeter.DoWorkVIP(false, false, false, true, true, year, month);
                     break;
 
                 default:
@@ -3224,11 +3170,11 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
 
                                             try {
                                                 // 한전
-                                                TempString = imapRemotemeter.GetAttributeVal(i, "kepco_used");
+                                                //TempString = imapRemotemeter.GetAttributeVal(i, "kepco_used");
                                                 //DebugLogOutput("TempString elect " + TempString);
-                                                if (TempString.equals("1000000") == false) {
-                                                    TempKepco = Float.parseFloat(TempString);
-                                                }
+                                                //if (TempString!=null&&TempString.equals("1000000") == false) {
+                                                //    TempKepco = Float.parseFloat(TempString);
+                                                //}
                                                 //DebugLogOutput("TempElect " + TempElect);
 
                                                 // 태양광
@@ -3251,38 +3197,12 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                                                 //e.printStackTrace();
                                                 LogUtil.errorLogInfo("", TAG, e);
                                             }
-
-                                            Calendar temp;
-
-                                            if (isStartSaveData == false) {
-                                                temp = getMinusDate(0);
-                                            } else {
-                                                temp = getMinusDate(RecentDay--);
-                                            }
-
-                                            int nYear = temp.get(Calendar.YEAR);
-                                            int nMonth = temp.get(Calendar.MONTH) + 1;
-                                            int nDay = temp.get(Calendar.DAY_OF_MONTH);
-
-                                            //DebugLogOutput("nDate: " + nYear + " " + nMonth + " " + nDay);
-                                            //DebugLogOutput("Date: " + year + " " + month + " " + TempDay);
-
-                                            if ((nYear == year) && (nMonth == month) && (nDay == TempDay)) {
-                                                if (isStartSaveData == false) {
-                                                    isStartSaveData = true;
-                                                    RecentDay--;
-                                                }
-
-                                                if (arrayListDayEnergyData.size() < 9) {
-                                                    arrayListDayEnergyData.add(new DayEnergyDataClass(CalendarYear, CalendarMonth + 1, TempDay, TempKepco, TempSolar, TempFuel));
-                                                    //DebugLogOutput("arrayListDayEnergyData Size: " + arrayListDayEnergyData.size());
-                                                }
-                                            }
+                                            arrayListDayEnergyData.add(new DayEnergyDataClass(CalendarYear, CalendarMonth + 1, TempDay, TempKepco, TempSolar, TempFuel));
                                         }
                                     }
 
                                     TotalServerInquiryCount++;
-                                    if ((arrayListDayEnergyData.size() < 9) && (RecentDay > -9)) {
+                                    if ((arrayListDayEnergyData.size() < 9)) {
                                         // 데이터 요청 한번 더..
                                         Calendar LastMonth = getMinusMonth(-1); // 전달 년도 월
                                         // 가져오기.
@@ -3301,7 +3221,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                                         if (TotalServerInquiryCount < 2) {
                                             LoadRemotemeterDataFromServer(1, nYear, nMonth, ShowNowEnergyIndex);
                                         }
-                                    } else if (arrayListDayEnergyData.size() == 9) {
+                                    } else if (arrayListDayEnergyData.size() >= 9) {
                                         // 관련 변수 초기화
                                         RecentDay = 0;
                                         isStartSaveData = false;
@@ -3309,6 +3229,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
 
                                         // show data
                                         ShowDayGraph();
+                                        ReDraw();
                                     }
                                 }
 

+ 249 - 231
WallPadEnergyCtrl/src/main/java/kr/co/icontrols/wallpadenergyctrl/screen/VIPRemoteMeterMainScreen.java

@@ -84,7 +84,7 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
     WpadImageView Energy_SEL_04;
     WpadImageView Energy_SEL_05;
 
-    WpadImageView mListMonth;                //당월 사용량/생산량 선택버튼
+    //WpadImageView mListMonth;                //당월 사용량/생산량 선택버튼=> 버튼 삭제됨
     WpadImageView MONTH_SEL_01;            //사용량
     WpadImageView MONTH_SEL_02;        //생산량
     WpadImageView Show_MonthVipTableEnergy1;    //VIP 사용량 테이블 1
@@ -163,7 +163,7 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
     private WallPadAPI mAPI = null;
 
     // [Value]
-    int ShowMonthTypeIndex = 0;
+    //int ShowMonthTypeIndex = 0;
     String[] ShowMonthType_String = {
             "사용량",
             "생산량",
@@ -179,12 +179,10 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
 
     int ShowNowEnergyIndex = 0;
     String[] ShowListEnergyType_String = {
-            "전기 kWh",
-            "수도 ㎥",
-            "가스 ㎥",
-            "온수 ㎥",
-            "난방 ㎥/MWh",
-            "전기차 kWh"
+            "전기차1 kWh",
+            "전기차2 kWh",
+            "태양광 kWh",
+            "연료전지 kWh"
     };
     //메뉴화면 글자 조정을 위함. 한글: 36p, 단위:20p
     int ShowEnergyIndex = 0;
@@ -215,8 +213,8 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
 
 
     // [사용량 정보]
-    ArrayList<UsedValueArrayClass> arrayListElect = new ArrayList<UsedValueArrayClass>();
-    ArrayList<UsedValueArrayClass> arrayListWater = new ArrayList<UsedValueArrayClass>();
+    ArrayList<UsedValueArrayClass> arrayListPhotovoltaics = new ArrayList<UsedValueArrayClass>();
+    ArrayList<UsedValueArrayClass> arrayListFuelcell = new ArrayList<UsedValueArrayClass>();
     ArrayList<UsedValueArrayClass> arrayListGas = new ArrayList<UsedValueArrayClass>();
     ArrayList<UsedValueArrayClass> arrayListHotwater = new ArrayList<UsedValueArrayClass>();
     ArrayList<UsedValueArrayClass> arrayListEnergy = new ArrayList<UsedValueArrayClass>();
@@ -620,7 +618,6 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                     //리스트 열림
                     RemoveListEnergy();
                     //신규 조그 월패드는 리스트 Background 없음
-					/*
 					int TempImage;
 					int TempHeight;
 					switch(mNumberOfEnergy)
@@ -656,9 +653,9 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
 							break;
 					}
 
-					Show_EnergyListTypeBG = new WpadImageView(getContext(), TOUCH_KIND.NONE, 182, TempHeight,TempImage, 0, ID.RemoteMeterMainScreenID.image.BG_ENERGY_LISTTYPE_BG);
-					ViewRegistration(getLayout(), Show_EnergyListTypeBG, TopImgPosion.GetX(243), TopImgPosion.GetY(82));
-					*/
+					//Show_EnergyListTypeBG = new WpadImageView(getContext(), TOUCH_KIND.NONE, 182, TempHeight,TempImage, 0, ID.RemoteMeterMainScreenID.image.BG_ENERGY_LISTTYPE_BG);
+					//ViewRegistration(getLayout(), Show_EnergyListTypeBG, TopImgPosion.GetX(243), TopImgPosion.GetY(82));
+
                     ShowListEnergy(true);
 
                     //리스트가 열렸고 버튼 등록해야함.
@@ -671,24 +668,28 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                         ViewRegistration(getLayout(), Energy_SEL_02, Common.ImgPosion.GetX(93), Common.ImgPosion.GetY(241));
                     }
                     //VIP인 경우 에너지 개수가 달라서 별로도 처리
-                    if(bVIP){
+                    if (bVIP) {
                         Energy_SEL_03 = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 230, 55, R.drawable.meter_list_text_bg, R.drawable.meter_list_text_bg_p, ID.RemoteMeterMainScreenID.button.ENERGY_NEW_SEL_03);
                         ViewRegistration(getLayout(), Energy_SEL_03, Common.ImgPosion.GetX(93), Common.ImgPosion.GetY(296));
 
-                        Energy_SEL_04 = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 230, 55, R.drawable.meter_list_text_bg, R.drawable.meter_list_text_bg_p, ID.RemoteMeterMainScreenID.button.ENERGY_NEW_SEL_04);
-                        ViewRegistration(getLayout(), Energy_SEL_04, Common.ImgPosion.GetX(93), Common.ImgPosion.GetY(351));
+                        //Energy_SEL_04 = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 230, 55, R.drawable.meter_list_text_bg, R.drawable.meter_list_text_bg_p, ID.RemoteMeterMainScreenID.button.ENERGY_NEW_SEL_04);
+                        //ViewRegistration(getLayout(), Energy_SEL_04, Common.ImgPosion.GetX(93), Common.ImgPosion.GetY(351));
 
-                        Energy_SEL_05 = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 230, 55, R.drawable.meter_list_text_bg, R.drawable.meter_list_text_bg_p, ID.RemoteMeterMainScreenID.button.ENERGY_NEW_SEL_05);
-                        ViewRegistration(getLayout(), Energy_SEL_05, Common.ImgPosion.GetX(93), Common.ImgPosion.GetY(406));
-                        ListEnergyTextWrite(6);
-                    }
-                    else {
+                        //Energy_SEL_05 = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 230, 55, R.drawable.meter_list_text_bg, R.drawable.meter_list_text_bg_p, ID.RemoteMeterMainScreenID.button.ENERGY_NEW_SEL_05);
+                        //ViewRegistration(getLayout(), Energy_SEL_05, Common.ImgPosion.GetX(93), Common.ImgPosion.GetY(406));
+                        ListEnergyTextWrite(4);
+                    } else {
                         switch (mNumberOfEnergy) {
                             case 2:
-                                ListEnergyTextWrite(2);
+                                //ListEnergyTextWrite(2);
                                 break;
                             case 3:
-                                ListEnergyTextWrite(3);
+                                //ListEnergyTextWrite(3);
+                                break;
+                            case 4:
+                                Energy_SEL_03 = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 230, 55, R.drawable.meter_list_text_bg, R.drawable.meter_list_text_bg_p, ID.RemoteMeterMainScreenID.button.ENERGY_NEW_SEL_03);
+                                ViewRegistration(getLayout(), Energy_SEL_03, Common.ImgPosion.GetX(93), Common.ImgPosion.GetY(296));
+                                ListEnergyTextWrite(4);
                                 break;
                             case 5:
                                 Energy_SEL_03 = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 230, 55, R.drawable.meter_list_text_bg, R.drawable.meter_list_text_bg_p, ID.RemoteMeterMainScreenID.button.ENERGY_NEW_SEL_03);
@@ -739,11 +740,11 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                     ListClose();
 
                     //리스트 열림
-                    RemoveListMonth();
-                    ShowListMonth(true);
+                    //RemoveListMonth();
+                    //ShowListMonth(true);
 
                     //리스트가 열렸고 버튼 등록해야함.
-
+                    /*삭제됨
                     MONTH_SEL_01 = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 230, 55, R.drawable.meter_list_text_bg, R.drawable.meter_list_text_bg_p, ID.RemoteMeterMainScreenID.button.MONTH_SEL_01);
                     ViewRegistration(getLayout(), MONTH_SEL_01, Common.ImgPosion.GetX(93), Common.ImgPosion.GetY(186));
 
@@ -761,8 +762,10 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                             Common.ImgPosion.GetX(93),
                             Common.ImgPosion.GetY(241));
                     MONTH_SEL_02_Text.setText(ShowMonthType_String[(ShowMonthTypeIndex + 2) % 2]);
+
+                     */
                 } else {
-                    ListMonthClose();
+                    //ListMonthClose();
                 }
             } else if (TargetId == ID.RemoteMeterMainScreenID.button.MONTH_SEL_01) {
                 ListMonthClickEvent(MONTH_SEL_01_Text);
@@ -819,8 +822,6 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                 ((MainActivity) (getContext())).StartPopup(ID.screen.RemoteMeterPopupSetTargetScreen);
                 //Sound().Play(SND.effect.TOUCH_LATCHED);
             }
-
-
         }
 
     }
@@ -912,6 +913,7 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
     /**
      * @description 에너지 리스트 버튼의 리스트 닫기
      */
+
     private void ListEnergyClose() {
         mOpenListEnergy = false;
         getLayout().removeView(Show_EnergyListTypeBG);
@@ -924,16 +926,16 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
         getLayout().removeView(Energy_SEL_01_Text);
         getLayout().removeView(Energy_SEL_02_Text);
         switch (mNumberOfEnergy) {
+            case 4:
+                getLayout().removeView(Energy_SEL_03);
+                getLayout().removeView(Energy_SEL_03_Text);
+                break;
             case 5:
                 getLayout().removeView(Energy_SEL_03);
                 getLayout().removeView(Energy_SEL_04);
 
                 getLayout().removeView(Energy_SEL_03_Text);
                 getLayout().removeView(Energy_SEL_04_Text);
-                if(bVIP){
-                    getLayout().removeView(Energy_SEL_05);
-                    getLayout().removeView(Energy_SEL_05_Text);
-                }
                 break;
             case 6:
                 getLayout().removeView(Energy_SEL_03);
@@ -953,6 +955,7 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
     /**
      * @description 당월 사용량/생산량 리스트 버튼의 리스트 닫기
      */
+    /* 삭제됨
     private void ListMonthClose() {
         mOpenListMonth = false;
         RemoveListMonth();
@@ -965,10 +968,13 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
         getLayout().removeView(MONTH_SEL_02_Text);
     }
 
+     */
+
     /**
      * @param //3종, 5종, 6종 중 선택
      * @description 에너지 리스트 버튼의 텍스트 출력
      */
+
     private void ListEnergyTextWrite(int number) {
         if (number == 2) {
             //텍스트 출력
@@ -997,6 +1003,25 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                     Common.ImgPosion.GetX(93),
                     Common.ImgPosion.GetY(241));
             Energy_SEL_02_Text.setText(ShowListEnergyType_String[(ShowNowEnergyIndex + 2) % 3]);
+        } else if (number == 4) {
+            //텍스트 출력
+            Energy_SEL_01_Text = new WpadTextView(getContext(), false, 230, 55, Gravity.CENTER, Color.WHITE, Common.fontsize._26_DEFAULT, false, ID.RemoteMeterMainScreenID.text.TEXT_INFO);
+            ViewRegistration(getLayout(), Energy_SEL_01_Text,
+                    Common.ImgPosion.GetX(93),
+                    Common.ImgPosion.GetY(186));
+            Energy_SEL_01_Text.setText(ShowListEnergyType_String[(ShowNowEnergyIndex + 1) % 4]);
+
+            Energy_SEL_02_Text = new WpadTextView(getContext(), false, 230, 55, Gravity.CENTER, Color.WHITE, Common.fontsize._26_DEFAULT, false, ID.RemoteMeterMainScreenID.text.TEXT_INFO);
+            ViewRegistration(getLayout(), Energy_SEL_02_Text,
+                    Common.ImgPosion.GetX(93),
+                    Common.ImgPosion.GetY(241));
+            Energy_SEL_02_Text.setText(ShowListEnergyType_String[(ShowNowEnergyIndex + 2) % 4]);
+
+            Energy_SEL_03_Text = new WpadTextView(getContext(), false, 230, 55, Gravity.CENTER, Color.WHITE, Common.fontsize._26_DEFAULT, false, ID.RemoteMeterMainScreenID.text.TEXT_INFO);
+            ViewRegistration(getLayout(), Energy_SEL_03_Text,
+                    Common.ImgPosion.GetX(93),
+                    Common.ImgPosion.GetY(296));
+            Energy_SEL_03_Text.setText(ShowListEnergyType_String[(ShowNowEnergyIndex + 3) % 4]);
         } else if (number == 5) {
             //텍스트 출력
             Energy_SEL_01_Text = new WpadTextView(getContext(), false, 230, 55, Gravity.CENTER, Color.WHITE, Common.fontsize._26_DEFAULT, false, ID.RemoteMeterMainScreenID.text.TEXT_INFO);
@@ -1047,14 +1072,6 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                     Common.ImgPosion.GetX(93),
                     Common.ImgPosion.GetY(351));
             Energy_SEL_04_Text.setText(ShowListEnergyType_String[(ShowNowEnergyIndex + 4) % 6]);
-
-            if(bVIP){
-                Energy_SEL_05_Text = new WpadTextView(getContext(), false, 230, 55, Gravity.CENTER, Color.WHITE, Common.fontsize._26_DEFAULT, false, ID.RemoteMeterMainScreenID.text.TEXT_INFO);
-                ViewRegistration(getLayout(), Energy_SEL_05_Text,
-                        Common.ImgPosion.GetX(93),
-                        Common.ImgPosion.GetY(406));
-                Energy_SEL_05_Text.setText(ShowListEnergyType_String[(ShowNowEnergyIndex + 5) % 6]);
-            }
         }
     }
 
@@ -1071,22 +1088,16 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
 
         RemoveMainEnergy();
         if (wpadtextview.getText().equals(ShowListEnergyType_String[0])) {
-            DebugLogOutput("전기 선택");
             ShowNowEnergyIndex = 0;
         } else if (wpadtextview.getText().equals(ShowListEnergyType_String[1])) {
-            DebugLogOutput("수도 선택!");
             ShowNowEnergyIndex = 1;
         } else if (wpadtextview.getText().equals(ShowListEnergyType_String[2])) {
-            DebugLogOutput("가스 선택");
             ShowNowEnergyIndex = 2;
         } else if (wpadtextview.getText().equals(ShowListEnergyType_String[3])) {
-            DebugLogOutput("온수 선택");
             ShowNowEnergyIndex = 3;
         } else if (wpadtextview.getText().equals(ShowListEnergyType_String[4])) {
-            DebugLogOutput("난방 선택");
             ShowNowEnergyIndex = 4;
         } else if (wpadtextview.getText().equals(ShowListEnergyType_String[5])) {
-            DebugLogOutput("전기차 선택");
             ShowNowEnergyIndex = 5;
         }
         ShowMainEnergy();
@@ -1105,12 +1116,12 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
         }
         if (wpadtextview.getText().equals(ShowMonthType_String[0])) {
             DebugLogOutput("사용량 선택");
-            ShowMonthTypeIndex = 0;
+            //ShowMonthTypeIndex = 0;
         } else if (wpadtextview.getText().equals(ShowMonthType_String[1])) {
             DebugLogOutput("생산량 선택!");
-            ShowMonthTypeIndex = 1;
+            //ShowMonthTypeIndex = 1;
         }
-        ListMonthClose();
+        //ListMonthClose();
     }
 
     /**
@@ -1261,6 +1272,7 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
      * @param //False면 닫힌상태, True면 열린상태 입력
      * @description 당월 사용량/생산량 리스트 버튼 등록
      */
+    /* 당월 사용량/생산량 버튼 삭제됨
     private void ShowListMonth(boolean ListClosed) {
         if (ListClosed == false) {
             mListMonth = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 230, 55, R.drawable.but_title, R.drawable.but_title_p, ID.RemoteMeterMainScreenID.button.SHOW_LIST_MONTH_TYPE);
@@ -1278,6 +1290,8 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
         mShowListMonthTypeText.setText(ShowMonthType_String[ShowMonthTypeIndex]);
     }
 
+     */
+
 
     /**
      * @description 매인페이지 변경 (당월, 일별, 3개월, 전년비 중 선택)
@@ -1359,15 +1373,15 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
             }
             switch (mNumberOfEnergy) {
                 case 3:
-                    ShowMonthEnergyData(mNumberOfEnergy, 151, 151);
+                    //ShowMonthEnergyData(mNumberOfEnergy, 151, 151);
                     break;
 
                 case 5:
-                    ShowMonthEnergyData(mNumberOfEnergy, 90, 90);
+                    //ShowMonthEnergyData(mNumberOfEnergy, 90, 90);
                     break;
 
                 case 6:
-                    ShowMonthEnergyData(mNumberOfEnergy, 74, 74);
+                    //ShowMonthEnergyData(mNumberOfEnergy, 74, 74);
                     break;
 
                 default:
@@ -1385,18 +1399,17 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
      */
     private void ShowVipMonthEnergy() {
         //사용량, 생산량 선택
-        ShowListMonth(false);
+        //ShowListMonth(false);
 
-        if (ShowMonthTypeIndex == 0) { //사용량
-            Show_MonthVipTableEnergy1 = new WpadImageView(getContext(), TOUCH_KIND.NONE, 520, 532, R.drawable.bg_vip_2, 0, ID.RemoteMeterMainScreenID.image.BG_MONTHTABLE_VIP_ENERGY1);
-            ViewRegistration(getLayout(), Show_MonthVipTableEnergy1, Common.ImgPosion.GetX(93), Common.ImgPosion.GetY(221));
+        //사용량
+        //Show_MonthVipTableEnergy1 = new WpadImageView(getContext(), TOUCH_KIND.NONE, 520, 532, R.drawable.bg_vip_2, 0, ID.RemoteMeterMainScreenID.image.BG_MONTHTABLE_VIP_ENERGY1);
+        //ViewRegistration(getLayout(), Show_MonthVipTableEnergy1, Common.ImgPosion.GetX(93), Common.ImgPosion.GetY(221));
 
-            Show_MonthVipTableEnergy2 = new WpadImageView(getContext(), TOUCH_KIND.NONE, 520, 348, R.drawable.bg_vip_3, 0, ID.RemoteMeterMainScreenID.image.BG_MONTHTABLE_VIP_ENERGY2);
-            ViewRegistration(getLayout(), Show_MonthVipTableEnergy2, Common.ImgPosion.GetX(667), Common.ImgPosion.GetY(221));
-        } else if (ShowMonthTypeIndex == 1) { //생산량
-            Show_MonthVipTableEnergy3 = new WpadImageView(getContext(), TOUCH_KIND.NONE, 520, 348, R.drawable.bg_vip_1, 0, ID.RemoteMeterMainScreenID.image.BG_MONTHTABLE_VIP_ENERGY3);
-            ViewRegistration(getLayout(), Show_MonthVipTableEnergy3, Common.ImgPosion.GetX(360), Common.ImgPosion.GetY(221));
-        }
+        Show_MonthVipTableEnergy2 = new WpadImageView(getContext(), TOUCH_KIND.NONE, 520, 348, R.drawable.bg_vip_3, 0, ID.RemoteMeterMainScreenID.image.BG_MONTHTABLE_VIP_ENERGY2);
+        ViewRegistration(getLayout(), Show_MonthVipTableEnergy2, Common.ImgPosion.GetX(93), Common.ImgPosion.GetY(221));
+        //생산량
+        Show_MonthVipTableEnergy3 = new WpadImageView(getContext(), TOUCH_KIND.NONE, 520, 348, R.drawable.bg_vip_1, 0, ID.RemoteMeterMainScreenID.image.BG_MONTHTABLE_VIP_ENERGY3);
+        ViewRegistration(getLayout(), Show_MonthVipTableEnergy3, Common.ImgPosion.GetX(667), Common.ImgPosion.GetY(221));
 
         if (mSampleShow == Common.MODE_BUSINESS_SAMPLE) {
             for (int i = 0; i < 6; i++) {
@@ -1411,15 +1424,15 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
             }
             switch (mNumberOfEnergy) {
                 case 3:
-                    ShowMonthEnergyData(mNumberOfEnergy, 151, 151);
+                    //ShowMonthEnergyData(mNumberOfEnergy, 151, 151);
                     break;
 
                 case 5:
-                    ShowMonthEnergyData(mNumberOfEnergy, 90, 90);
+                    //ShowMonthEnergyData(mNumberOfEnergy, 90, 90);
                     break;
 
                 case 6:
-                    ShowMonthEnergyData(mNumberOfEnergy, 74, 74);
+                    //ShowMonthEnergyData(mNumberOfEnergy, 74, 74);
                     break;
 
                 default:
@@ -1441,6 +1454,7 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
     /**
      * @description 당월 표의 텍스트 데이터 출력
      */
+    /* 삭제됨
     private void ShowMonthEnergyData(int NumberOfEnergy, int Margin_x, int Margin_y) {
         String tempMonthItem = "";
         int TempMargin_y_ForEnergyNum2 = 0;
@@ -1466,15 +1480,16 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
 
     }
 
-    private void ShowMonthEnergyDataRight(int Margin_x, int Margin_y) {
+     */
+    private void ShowMonthEnergyDataRight(int Margin_y) {
         String tempMonthItem = "";
         int TempMargin_y_ForEnergyNum2 = 0;
         for (int i = 0; i < 3; i++) {
             tempMonthItem = monthTableClassRight[1].Use;
 
-            Show_MonthTable_Item_Use_Text_RIGHT[i] = new WpadTextView(getContext(), false, 273, Margin_x, Gravity.CENTER, Color.WHITE, Common.fontsize._26_DEFAULT, false, ID.RemoteMeterMainScreenID.text.TEXT_INFO);
+            Show_MonthTable_Item_Use_Text_RIGHT[i] = new WpadTextView(getContext(), false, 295, 90, Gravity.CENTER, Color.WHITE, Common.fontsize._26_DEFAULT, false, ID.RemoteMeterMainScreenID.text.TEXT_INFO);
             ViewRegistration(getLayout(), Show_MonthTable_Item_Use_Text_RIGHT[i],
-                    Common.ImgPosion.GetX(902),
+                    Common.ImgPosion.GetX(312),
                     Common.ImgPosion.GetY(293 + (i * Margin_y) + TempMargin_y_ForEnergyNum2));
             if (Show_MonthTable_Item_Use_Text_RIGHT[i] != null)
                 Show_MonthTable_Item_Use_Text_RIGHT[i].setText(tempMonthItem);
@@ -1482,35 +1497,35 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
     }
 
     private void ShowMonthEnergyDataCenter(int Margin_x, int Margin_y) {
-        String kepcoMonthItem = "";
+        String photovoltaicsMonthItem = "";
         String fuelcellMonthItem = "";
         double total = 0;
         int TempMargin_y_ForEnergyNum2 = 0;
-        kepcoMonthItem = monthTableClassRight[0].Use;
+        photovoltaicsMonthItem = monthTableClassRight[2].Use;
         fuelcellMonthItem = monthTableClassRight[3].Use;
 
-        total = Double.valueOf(kepcoMonthItem) + Double.valueOf(fuelcellMonthItem);
+        total = Double.valueOf(photovoltaicsMonthItem) + Double.valueOf(fuelcellMonthItem);
 
-        Show_MonthTable_Item_Use_Text_CENTER[0] = new WpadTextView(getContext(), false, 273, Margin_x, Gravity.CENTER, Color.WHITE, Common.fontsize._26_DEFAULT, false, ID.RemoteMeterMainScreenID.text.TEXT_INFO);
+        Show_MonthTable_Item_Use_Text_CENTER[0] = new WpadTextView(getContext(), false, 295, Margin_x, Gravity.CENTER, Color.WHITE, Common.fontsize._26_DEFAULT, false, ID.RemoteMeterMainScreenID.text.TEXT_INFO);
         ViewRegistration(getLayout(), Show_MonthTable_Item_Use_Text_CENTER[0],
-                Common.ImgPosion.GetX(602),
+                Common.ImgPosion.GetX(900),
                 Common.ImgPosion.GetY(293 + (0 * Margin_y) + TempMargin_y_ForEnergyNum2));
         if (Show_MonthTable_Item_Use_Text_CENTER[0] != null)
-            Show_MonthTable_Item_Use_Text_CENTER[0].setText(kepcoMonthItem);
+            Show_MonthTable_Item_Use_Text_CENTER[0].setText(photovoltaicsMonthItem);
 
-        Show_MonthTable_Item_Use_Text_CENTER[1] = new WpadTextView(getContext(), false, 273, Margin_x, Gravity.CENTER, Color.WHITE, Common.fontsize._26_DEFAULT, false, ID.RemoteMeterMainScreenID.text.TEXT_INFO);
+        Show_MonthTable_Item_Use_Text_CENTER[1] = new WpadTextView(getContext(), false, 295, Margin_x, Gravity.CENTER, Color.WHITE, Common.fontsize._26_DEFAULT, false, ID.RemoteMeterMainScreenID.text.TEXT_INFO);
         ViewRegistration(getLayout(), Show_MonthTable_Item_Use_Text_CENTER[1],
-                Common.ImgPosion.GetX(602),
+                Common.ImgPosion.GetX(900),
                 Common.ImgPosion.GetY(293 + (1 * Margin_y) + TempMargin_y_ForEnergyNum2));
         if (Show_MonthTable_Item_Use_Text_CENTER[1] != null)
             Show_MonthTable_Item_Use_Text_CENTER[1].setText(fuelcellMonthItem);
 
-        Show_MonthTable_Item_Use_Text_CENTER[2] = new WpadTextView(getContext(), false, 273, Margin_x, Gravity.CENTER, Color.WHITE, Common.fontsize._26_DEFAULT, false, ID.RemoteMeterMainScreenID.text.TEXT_INFO);
+        Show_MonthTable_Item_Use_Text_CENTER[2] = new WpadTextView(getContext(), false, 295, Margin_x, Gravity.CENTER, Color.WHITE, Common.fontsize._26_DEFAULT, false, ID.RemoteMeterMainScreenID.text.TEXT_INFO);
         ViewRegistration(getLayout(), Show_MonthTable_Item_Use_Text_CENTER[2],
-                Common.ImgPosion.GetX(602),
+                Common.ImgPosion.GetX(900),
                 Common.ImgPosion.GetY(293 + (2 * Margin_y) + TempMargin_y_ForEnergyNum2));
         if (Show_MonthTable_Item_Use_Text_CENTER[2] != null)
-            Show_MonthTable_Item_Use_Text_CENTER[2].setText(total+"");
+            Show_MonthTable_Item_Use_Text_CENTER[2].setText(total + "");
     }
 
 
@@ -1550,7 +1565,7 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                 Common.ImgPosion.GetX(202),
                 Common.ImgPosion.GetY(187));
 
-        Show_3Month_Discription_Text.setText(mShowListEnergyTypeText.getText() + "사용량을 작년 3개월과 올해 3개월분 비교 데이터입니다.");
+        Show_3Month_Discription_Text.setText(ShowListEnergyType_String[ShowNowEnergyIndex] + "사용량을 작년 3개월과 올해 3개월분 비교 데이터입니다.");
 
 
         if (mSampleShow == Common.MODE_BUSINESS_SAMPLE) {
@@ -1690,9 +1705,10 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                 Common.ImgPosion.GetX(202),
                 Common.ImgPosion.GetY(187));
         if (mEMS_Enable == true) {
-            Show_3Month_Discription_Text.setText("최근 3개월간의 " + mShowListEnergyTypeText.getText() + "사용량 입니다.");
+            Show_3Month_Discription_Text.setText("최근 3개월간의 " + ShowListEnergyType_String[ShowNowEnergyIndex] + "사용량 입니다.");
 
             //동평형, 우리집 좌표 필요 //수정필요
+            /*
             Show_Discription_SamePyung = new WpadImageView(getContext(), TOUCH_KIND.NONE, 30, 15, R.drawable.image_dong, 0, ID.RemoteMeterMainScreenID.image.BG_DISCRIPTION_SAMEPYUNG);
             ViewRegistration(getLayout(), Show_Discription_SamePyung, Common.ImgPosion.GetX(1109), Common.ImgPosion.GetY(264));
 
@@ -1710,8 +1726,10 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                     Common.ImgPosion.GetX(1139),
                     Common.ImgPosion.GetY(285));
             Show_Discription_Myhome_Text.setText("우리집");
+
+             */
         } else {
-            Show_3Month_Discription_Text.setText("최근 6개월간의 " + mShowListEnergyTypeText.getText() + "사용량 입니다.");
+            Show_3Month_Discription_Text.setText("최근 6개월간의 " + ShowListEnergyType_String[ShowNowEnergyIndex] + "사용량 입니다.");
         }
 
         if (mSampleShow == Common.MODE_BUSINESS_SAMPLE) {
@@ -1857,6 +1875,7 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
     /**
      * @description 에너지 리스트 버튼 삭제
      */
+
     private void RemoveListEnergy() {
         getLayout().removeView(mListEnergy);
         getLayout().removeView(mShowListEnergyTypeText);
@@ -1866,12 +1885,14 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
     /**
      * @description 당월 사용량/생산량 리스트 버튼 삭제
      */
+    /* 삭제됨
     private void RemoveListMonth() {
         getLayout().removeView(mListMonth);
         getLayout().removeView(mShowListMonthTypeText);
-
     }
 
+     */
+
 
     /**
      * @description 전기, 수도, 가스, 온수, 난방, 탄소 중 현재 표현된 에너지 정보 제거<br>
@@ -2021,8 +2042,8 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
      * @description 전년비, 3개월 비교 그래프 생성을 위한 ArrayList를 초기화 하는 함수
      */
     private void AllArrayListClear() {
-        arrayListElect.removeAll(arrayListElect);
-        arrayListWater.removeAll(arrayListWater);
+        arrayListPhotovoltaics.removeAll(arrayListPhotovoltaics);
+        arrayListFuelcell.removeAll(arrayListFuelcell);
         arrayListGas.removeAll(arrayListGas);
         arrayListHotwater.removeAll(arrayListHotwater);
         arrayListEnergy.removeAll(arrayListEnergy);
@@ -2052,9 +2073,13 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                         (Integer.parseInt(MetringInfo[1]) == 3) ||
                         (Integer.parseInt(MetringInfo[1]) == 5) ||
                         (Integer.parseInt(MetringInfo[1]) == 6)) {
-                    mNumberOfEnergy = Integer.parseInt(MetringInfo[1]);
+                    //mNumberOfEnergy = Integer.parseInt(MetringInfo[1]);
+                    //vip는 4개
+                    mNumberOfEnergy = 4;
                 } else {
-                    mNumberOfEnergy = 5;
+                    //mNumberOfEnergy = 5;
+                    //vip는 4개
+                    mNumberOfEnergy = 4;
                 }
 
                 if (MetringInfo[5].equals("사용함")) {
@@ -2069,16 +2094,22 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                 }
             } catch (RuntimeException re) {
                 Log.e(TAG, "exception : " + re);
-                mNumberOfEnergy = 5;
+                //mNumberOfEnergy = 5;
+                //vip는 4개
+                mNumberOfEnergy = 4;
                 mEMS_Enable = true;
             } catch (Exception e) {
                 //e.printStackTrace();
                 LogUtil.errorLogInfo("", TAG, e);
-                mNumberOfEnergy = 5;
+                //mNumberOfEnergy = 5;
+                //vip는 4개
+                mNumberOfEnergy = 4;
                 mEMS_Enable = true;
             }
         } else {
-            mNumberOfEnergy = 5;
+            //mNumberOfEnergy = 5;
+            //vip는 4개
+            mNumberOfEnergy = 4;
             mEMS_Enable = true;
         }
     }
@@ -2171,20 +2202,25 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
 
                 case 1: //일별
                     switch (energy) {
-                        case 0: //전기
-                            imapRemotemeter.DoWork(false, true, false, false, false, false, false, false, year, month);
+                        case 0: //전기차1
+                            //imapRemotemeter.DoWork(false, true, false, false, false, false, false, false, year, month);
+                            imapRemotemeter.DoWorkVIP(false, false, true, false, false, year, month);
                             break;
-                        case 1: //수도
-                            imapRemotemeter.DoWork(false, false, false, true, false, false, false, false, year, month);
+                        case 1: //전기차2
+                            //imapRemotemeter.DoWork(false, false, false, true, false, false, false, false, year, month);
+                            imapRemotemeter.DoWorkVIP(false, false, true, false, false, year, month);
                             break;
-                        case 2: //가스
-                            imapRemotemeter.DoWork(false, false, true, false, false, false, false, false, year, month);
+                        case 2: //태양광
+                            //imapRemotemeter.DoWork(false, false, true, false, false, false, false, false, year, month);
+                            imapRemotemeter.DoWorkVIP(false, false, false, true, false, year, month);
                             break;
-                        case 3: //온수
-                            imapRemotemeter.DoWork(false, false, false, false, true, false, false, false, year, month);
+                        case 3: //연료전지
+                            //imapRemotemeter.DoWork(false, false, false, false, true, false, false, false, year, month);
+                            imapRemotemeter.DoWorkVIP(false, false, false, false, true, year, month);
                             break;
-                        case 4: //난방
-                            imapRemotemeter.DoWork(false, false, false, false, false, true, false, false, year, month);
+                        case 4: //전기차
+                            //imapRemotemeter.DoWork(false, false, false, false, false, true, false, false, year, month);
+                            imapRemotemeter.DoWorkVIP(false, false, true, false, false, year, month);
                             break;
                         case 5: //전기차
                             //imapRemotemeter.DoWork(false, false, false, false, false, false, true, false, year, month);
@@ -2198,24 +2234,29 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                 case 2: //3개월 or 6개월
                 case 3: //전년비
                     switch (energy) {
-                        case 0: //전기
-                            imapRemotemeter.DoWork(true, true, false, false, false, false, false, mEMS_Enable, year, month);
+                        case 0: //전기차1
+                            //imapRemotemeter.DoWork(true, true, false, false, false, false, false, mEMS_Enable, year, month);
+                            imapRemotemeter.DoWorkVIP(true, false, true, false, false, year, month);
                             break;
-                        case 1: //수도
-                            imapRemotemeter.DoWork(true, false, false, true, false, false, false, mEMS_Enable, year, month);
+                        case 1: //전기차2
+                            //imapRemotemeter.DoWork(true, false, false, true, false, false, false, mEMS_Enable, year, month);
+                            imapRemotemeter.DoWorkVIP(true, false, true, false, false, year, month);
                             break;
-                        case 2: //가스
-                            imapRemotemeter.DoWork(true, false, true, false, false, false, false, mEMS_Enable, year, month);
+                        case 2: //태양광
+                            //imapRemotemeter.DoWork(true, false, true, false, false, false, false, mEMS_Enable, year, month);
+                            imapRemotemeter.DoWorkVIP(true, false, false, true, false, year, month);
                             break;
-                        case 3: //온수
-                            imapRemotemeter.DoWork(true, false, false, false, true, false, false, mEMS_Enable, year, month);
+                        case 3: //연료전지
+                            //imapRemotemeter.DoWork(true, false, false, false, true, false, false, mEMS_Enable, year, month);
+                            imapRemotemeter.DoWorkVIP(true, false, false, false, true, year, month);
                             break;
-                        case 4: //난방
-                            imapRemotemeter.DoWork(true, false, false, false, false, true, false, mEMS_Enable, year, month);
+                        case 4: //전기차
+                            //imapRemotemeter.DoWork(true, false, false, false, false, true, false, mEMS_Enable, year, month);
+                            imapRemotemeter.DoWorkVIP(true, false, true, false, false, year, month);
                             break;
                         case 5: //전기차
                             //imapRemotemeter.DoWork(true, false, false, false, false, false, true, mEMS_Enable, year, month);
-                            imapRemotemeter.DoWorkVIP(true, false, true, false,false, year, month);
+                            imapRemotemeter.DoWorkVIP(true, false, true, false, false, year, month);
                             break;
                         default:
                             break;
@@ -2401,21 +2442,21 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                                 if ((result == true) && (ShowNowTypeIndex == 0)) {
                                     switch (mNumberOfEnergy) {
                                         case 2:
-                                            ShowMonthEnergyData(3, 273, 228);
+                                            //ShowMonthEnergyData(3, 273, 228);
                                             break;
 
                                         case 3:
-                                            ShowMonthEnergyData(mNumberOfEnergy, 151, 151);
+                                            //ShowMonthEnergyData(mNumberOfEnergy, 151, 151);
                                             break;
 
                                         case 5:
-                                            if (ShowMonthTypeIndex == 0) {
-                                                ShowMonthEnergyData(mNumberOfEnergy, 90, 90);
-                                            }
+                                            //if (ShowMonthTypeIndex == 0) {
+                                            //    ShowMonthEnergyData(mNumberOfEnergy, 90, 90);
+                                            //}
                                             break;
 
                                         case 6:
-                                            ShowMonthEnergyData(mNumberOfEnergy, 90, 74);
+                                            //ShowMonthEnergyData(mNumberOfEnergy, 90, 74);
                                             break;
 
                                         default:
@@ -2460,11 +2501,9 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                                 }
 
                                 if (result == true) {
-                                    if (ShowMonthTypeIndex == 0) {
-                                        ShowMonthEnergyDataRight(90, 90);
-                                    } else if (ShowMonthTypeIndex == 1) {
-                                        ShowMonthEnergyDataCenter(90, 90);
-                                    }
+                                    //사용량, 생산량 같이 표현
+                                    ShowMonthEnergyDataRight(90);
+                                    ShowMonthEnergyDataCenter(90, 90);
                                 }
                             }
                             break;
@@ -2481,43 +2520,43 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                                             && (Integer.parseInt(imapRemotemeter.GetAttributeVal(i, "year")) == (CalendarYear))) {
                                         DebugLogOutput("day " + imapRemotemeter.GetAttributeVal(i, "day"));
                                         switch (ShowNowEnergyIndex) {
-                                            case 0: // 전기
-                                                TempString = imapRemotemeter.GetAttributeVal(i, "elect_used");
+                                            case 0: // 전기차1
+                                                TempString = imapRemotemeter.GetAttributeVal(i, "eleccar_used");
                                                 if (TempString.equals("1000000") == false) {
                                                     CalendarItemShow(mCalendarItemIndex, (Integer.parseInt(imapRemotemeter.GetAttributeVal(i, "day"))),
-                                                            imapRemotemeter.GetAttributeVal(i, "elect_used"));
+                                                            imapRemotemeter.GetAttributeVal(i, "eleccar_used"));
                                                 }
                                                 break;
 
-                                            case 1: // 수도
-                                                TempString = imapRemotemeter.GetAttributeVal(i, "water_used");
+                                            case 1: // 전기차2
+                                                TempString = imapRemotemeter.GetAttributeVal(i, "eleccar_used");
                                                 if (TempString.equals("1000000") == false) {
                                                     CalendarItemShow(mCalendarItemIndex, (Integer.parseInt(imapRemotemeter.GetAttributeVal(i, "day"))),
-                                                            imapRemotemeter.GetAttributeVal(i, "water_used"));
+                                                            imapRemotemeter.GetAttributeVal(i, "eleccar_used"));
                                                 }
                                                 break;
 
-                                            case 2: // 가스
-                                                TempString = imapRemotemeter.GetAttributeVal(i, "gas_used");
+                                            case 2: // 태양광
+                                                TempString = imapRemotemeter.GetAttributeVal(i, "photovoltaics_used");
                                                 if (TempString.equals("1000000") == false) {
                                                     CalendarItemShow(mCalendarItemIndex, (Integer.parseInt(imapRemotemeter.GetAttributeVal(i, "day"))),
-                                                            imapRemotemeter.GetAttributeVal(i, "gas_used"));
+                                                            imapRemotemeter.GetAttributeVal(i, "photovoltaics_used"));
                                                 }
                                                 break;
 
-                                            case 3: // 온수
-                                                TempString = imapRemotemeter.GetAttributeVal(i, "hotwater_used");
+                                            case 3: // 연료전지
+                                                TempString = imapRemotemeter.GetAttributeVal(i, "fuelcell_used");
                                                 if (TempString.equals("1000000") == false) {
                                                     CalendarItemShow(mCalendarItemIndex, (Integer.parseInt(imapRemotemeter.GetAttributeVal(i, "day"))),
-                                                            imapRemotemeter.GetAttributeVal(i, "hotwater_used"));
+                                                            imapRemotemeter.GetAttributeVal(i, "fuelcell_used"));
                                                 }
                                                 break;
 
-                                            case 4: // 난방
-                                                TempString = imapRemotemeter.GetAttributeVal(i, "energy_used");
+                                            case 4: // 전기차
+                                                TempString = imapRemotemeter.GetAttributeVal(i, "eleccar_used");
                                                 if (TempString.equals("1000000") == false) {
                                                     CalendarItemShow(mCalendarItemIndex, (Integer.parseInt(imapRemotemeter.GetAttributeVal(i, "day"))),
-                                                            imapRemotemeter.GetAttributeVal(i, "energy_used"));
+                                                            imapRemotemeter.GetAttributeVal(i, "eleccar_used"));
                                                 }
                                                 break;
 
@@ -2549,78 +2588,56 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                                     float Temp_SameSize = 0;
 
                                     switch (ShowNowEnergyIndex) {
-                                        case 0: // 전기
-                                            if (imapRemotemeter.GetAttributeVal(i, "elect_used") != null) {
-                                                if (imapRemotemeter.GetAttributeVal(i, "elect_used").equals("1000000") == false) {
-                                                    Temp_Myhome = Float.parseFloat(imapRemotemeter.GetAttributeVal(i, "elect_used"));
-                                                }
-                                            }
-                                            if (imapRemotemeter.GetAttributeVal(i, "elect_average_used_samesize") != null) {
-                                                if (imapRemotemeter.GetAttributeVal(i, "elect_average_used_samesize").equals("null") == false) {
-                                                    Temp_SameSize = Float.parseFloat(imapRemotemeter.GetAttributeVal(i, "elect_average_used_samesize"));
+                                        case 0: // 전기차1
+                                            if (imapRemotemeter.GetAttributeVal(i, "eleccar_used") != null) {
+                                                if (imapRemotemeter.GetAttributeVal(i, "eleccar_used").equals("1000000") == false) {
+                                                    Temp_Myhome = Float.parseFloat(imapRemotemeter.GetAttributeVal(i, "eleccar_used"));
                                                 }
-                                                DebugLogOutput("elect_average_used_samesize " + imapRemotemeter.GetAttributeVal(i, "elect_average_used_samesize"));
-
                                             }
-                                            arrayListElect.add(new UsedValueArrayClass(Integer.parseInt(imapRemotemeter.GetAttributeVal(i, "year")), Integer
-                                                    .parseInt(imapRemotemeter.GetAttributeVal(i, "month")), Temp_Myhome, Temp_SameSize));
+                                            arrayListElecCar.add(new UsedValueArrayClass(Integer.parseInt(imapRemotemeter.GetAttributeVal(i, "year")), Integer
+                                                    .parseInt(imapRemotemeter.GetAttributeVal(i, "month")), Temp_Myhome, 0));
 
-                                            DebugLogOutput("arrayListElect " + arrayListElect.size());
-                                            DebugLogOutput("arrayListElect used " + arrayListElect.get(i).UsedValue_Myhome);
+                                            DebugLogOutput("arrayListElecCar " + arrayListElecCar.size());
+                                            DebugLogOutput("arrayListElecCar used " + arrayListElecCar.get(i).UsedValue_Myhome);
                                             break;
 
-                                        case 1: // 수도
-                                            if (imapRemotemeter.GetAttributeVal(i, "water_used") != null) {
-                                                if (imapRemotemeter.GetAttributeVal(i, "water_used").equals("1000000") == false) {
-                                                    Temp_Myhome = Float.parseFloat(imapRemotemeter.GetAttributeVal(i, "water_used"));
-                                                }
-                                            }
-                                            if (imapRemotemeter.GetAttributeVal(i, "water_average_used_samesize") != null) {
-                                                if (imapRemotemeter.GetAttributeVal(i, "water_average_used_samesize").equals("null") == false) {
-                                                    Temp_SameSize = Float.parseFloat(imapRemotemeter.GetAttributeVal(i, "water_average_used_samesize"));
+                                        case 1: // 전기차2
+                                            if (imapRemotemeter.GetAttributeVal(i, "eleccar_used") != null) {
+                                                if (imapRemotemeter.GetAttributeVal(i, "eleccar_used").equals("1000000") == false) {
+                                                    Temp_Myhome = Float.parseFloat(imapRemotemeter.GetAttributeVal(i, "eleccar_used"));
                                                 }
                                             }
-                                            arrayListWater.add(new UsedValueArrayClass(Integer.parseInt(imapRemotemeter.GetAttributeVal(i, "year")), Integer
-                                                    .parseInt(imapRemotemeter.GetAttributeVal(i, "month")), Temp_Myhome, Temp_SameSize));
+                                            arrayListElecCar.add(new UsedValueArrayClass(Integer.parseInt(imapRemotemeter.GetAttributeVal(i, "year")), Integer
+                                                    .parseInt(imapRemotemeter.GetAttributeVal(i, "month")), Temp_Myhome, 0));
 
-                                            DebugLogOutput("arrayListWater " + arrayListWater.size());
-                                            DebugLogOutput("arrayListWater used " + arrayListWater.get(i).UsedValue_Myhome);
+                                            DebugLogOutput("arrayListElecCar " + arrayListElecCar.size());
+                                            DebugLogOutput("arrayListElecCar used " + arrayListElecCar.get(i).UsedValue_Myhome);
                                             break;
 
-                                        case 2: // 가스
-                                            if (imapRemotemeter.GetAttributeVal(i, "gas_used") != null) {
-                                                if (imapRemotemeter.GetAttributeVal(i, "gas_used").equals("1000000") == false) {
-                                                    Temp_Myhome = Float.parseFloat(imapRemotemeter.GetAttributeVal(i, "gas_used"));
-                                                }
-                                            }
-                                            if (imapRemotemeter.GetAttributeVal(i, "gas_average_used_samesize") != null) {
-                                                if (imapRemotemeter.GetAttributeVal(i, "gas_average_used_samesize").equals("null") == false) {
-                                                    Temp_SameSize = Float.parseFloat(imapRemotemeter.GetAttributeVal(i, "gas_average_used_samesize"));
+                                        case 2: // 태양광
+                                            if (imapRemotemeter.GetAttributeVal(i, "photovoltaics_used") != null) {
+                                                if (imapRemotemeter.GetAttributeVal(i, "photovoltaics_used").equals("1000000") == false) {
+                                                    Temp_Myhome = Float.parseFloat(imapRemotemeter.GetAttributeVal(i, "photovoltaics_used"));
                                                 }
                                             }
-                                            arrayListGas.add(new UsedValueArrayClass(Integer.parseInt(imapRemotemeter.GetAttributeVal(i, "year")), Integer
-                                                    .parseInt(imapRemotemeter.GetAttributeVal(i, "month")), Temp_Myhome, Temp_SameSize));
+                                            arrayListPhotovoltaics.add(new UsedValueArrayClass(Integer.parseInt(imapRemotemeter.GetAttributeVal(i, "year")), Integer
+                                                    .parseInt(imapRemotemeter.GetAttributeVal(i, "month")), Temp_Myhome, 0));
 
-                                            DebugLogOutput("arrayListGas " + arrayListGas.size());
-                                            DebugLogOutput("arrayListGas used " + arrayListGas.get(i).UsedValue_Myhome);
+                                            DebugLogOutput("arrayListPhotovoltaics " + arrayListPhotovoltaics.size());
+                                            DebugLogOutput("arrayListPhotovoltaics used " + arrayListPhotovoltaics.get(i).UsedValue_Myhome);
                                             break;
 
-                                        case 3: // 온수
-                                            if (imapRemotemeter.GetAttributeVal(i, "hotwater_used") != null) {
-                                                if (imapRemotemeter.GetAttributeVal(i, "hotwater_used").equals("1000000") == false) {
-                                                    Temp_Myhome = Float.parseFloat(imapRemotemeter.GetAttributeVal(i, "hotwater_used"));
+                                        case 3: // 연료전지
+                                            if (imapRemotemeter.GetAttributeVal(i, "fuelcell_used") != null) {
+                                                if (imapRemotemeter.GetAttributeVal(i, "fuelcell_used").equals("1000000") == false) {
+                                                    Temp_Myhome = Float.parseFloat(imapRemotemeter.GetAttributeVal(i, "fuelcell_used"));
                                                 }
                                             }
-                                            if (imapRemotemeter.GetAttributeVal(i, "hotwater_average_used_samesize") != null) {
-                                                if (imapRemotemeter.GetAttributeVal(i, "hotwater_average_used_samesize").equals("null") == false) {
-                                                    Temp_SameSize = Float.parseFloat(imapRemotemeter.GetAttributeVal(i, "hotwater_average_used_samesize"));
-                                                }
-                                            }
-                                            arrayListHotwater.add(new UsedValueArrayClass(Integer.parseInt(imapRemotemeter.GetAttributeVal(i, "year")), Integer
-                                                    .parseInt(imapRemotemeter.GetAttributeVal(i, "month")), Temp_Myhome, Temp_SameSize));
+                                            arrayListFuelcell.add(new UsedValueArrayClass(Integer.parseInt(imapRemotemeter.GetAttributeVal(i, "year")), Integer
+                                                    .parseInt(imapRemotemeter.GetAttributeVal(i, "month")), Temp_Myhome, 0));
 
-                                            DebugLogOutput("arrayListHotwater " + arrayListHotwater.size());
-                                            DebugLogOutput("arrayListHotwater used " + arrayListHotwater.get(i).UsedValue_Myhome);
+                                            DebugLogOutput("arrayListFuelcell " + arrayListFuelcell.size());
+                                            DebugLogOutput("arrayListFuelcell used " + arrayListFuelcell.get(i).UsedValue_Myhome);
                                             break;
 
                                         case 4: // 난방
@@ -2686,27 +2703,27 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                                 }
 
                                 switch (ShowNowEnergyIndex) {
-                                    case 0: // 전기
-                                        Show3MonthEnergy_inRetProci(arrayListElect);
+                                    case 0: // 전기차1
+                                        Show3MonthEnergy_inRetProci(arrayListElecCar);
                                         break;
 
-                                    case 1: // 수도
-                                        Show3MonthEnergy_inRetProci(arrayListWater);
+                                    case 1: // 전기차2
+                                        Show3MonthEnergy_inRetProci(arrayListElecCar);
                                         break;
 
-                                    case 2: // 가스
-                                        Show3MonthEnergy_inRetProci(arrayListGas);
+                                    case 2: // 태양광
+                                        Show3MonthEnergy_inRetProci(arrayListPhotovoltaics);
                                         break;
 
-                                    case 3: // 온수
-                                        Show3MonthEnergy_inRetProci(arrayListHotwater);
+                                    case 3: // 연료전지
+                                        Show3MonthEnergy_inRetProci(arrayListFuelcell);
                                         break;
 
                                     case 4: // 열량
-                                        Show3MonthEnergy_inRetProci(arrayListEnergy);
+                                        Show3MonthEnergy_inRetProci(arrayListElecCar);
                                         break;
 
-                                    case 5: // 탄소
+                                    case 5: // 전기차
                                         Show3MonthEnergy_inRetProci(arrayListElecCar);
                                         break;
 
@@ -2716,24 +2733,24 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
                             } else if (inputType == 3) {
                                 //전년비
                                 switch (ShowNowEnergyIndex) {
-                                    case 0: // 전기
-                                        ShowYearEnergy_inRetProci(arrayListElect);
+                                    case 0: // 전기차1
+                                        ShowYearEnergy_inRetProci(arrayListElecCar);
                                         break;
 
-                                    case 1: // 수도
-                                        ShowYearEnergy_inRetProci(arrayListWater);
+                                    case 1: // 전기차2
+                                        ShowYearEnergy_inRetProci(arrayListElecCar);
                                         break;
 
-                                    case 2: // 가스
-                                        ShowYearEnergy_inRetProci(arrayListGas);
+                                    case 2: // 태양광
+                                        ShowYearEnergy_inRetProci(arrayListPhotovoltaics);
                                         break;
 
-                                    case 3: // 온수
-                                        ShowYearEnergy_inRetProci(arrayListHotwater);
+                                    case 3: // 연료전지
+                                        ShowYearEnergy_inRetProci(arrayListFuelcell);
                                         break;
 
                                     case 4: // 열량
-                                        ShowYearEnergy_inRetProci(arrayListEnergy);
+                                        ShowYearEnergy_inRetProci(arrayListElecCar);
                                         break;
 
                                     case 5: // 탄소
@@ -2911,7 +2928,8 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
 
         for (int i = 0; i < TempArray.size(); i++) {
             CalcMaxValueArrayList.add((int) TempArray.get(i).UsedValue_Myhome);
-            CalcMaxValueArrayList.add((int) TempArray.get(i).UsedValue_SamePyung);
+            //동평형 제거
+            //CalcMaxValueArrayList.add((int) TempArray.get(i).UsedValue_SamePyung);
         }
 
         DebugLogOutput("CalcMaxValueArrayList " + CalcMaxValueArrayList.size());
@@ -2936,66 +2954,66 @@ public class VIPRemoteMeterMainScreen extends WpadScreen {
             for (int i = 0; i < TempArray.size(); i++) {
                 if ((CalendarMonth + 1) == 2) {
                     if ((TempArray.get(i).Year == (CalendarYear - 1)) && (TempArray.get(i).Month == 12)) {
-                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_SamePyung, true, 274, false, "");
+                        //DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_SamePyung, true, 200, false, "");
                     }
                     if ((TempArray.get(i).Year == CalendarYear - 1) && (TempArray.get(i).Month == 12)) {
-                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_Myhome, false, 378, false, "");
+                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_Myhome, false, 326, false, "");
                     }
 
                     if ((TempArray.get(i).Year == CalendarYear) && (TempArray.get(i).Month == 1)) {
-                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_SamePyung, true, 570, false, "");
+                        //DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_SamePyung, true, 470, false, "");
                     }
                     if ((TempArray.get(i).Year == CalendarYear) && (TempArray.get(i).Month == 1)) {
-                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_Myhome, false, 674, false, "");
+                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_Myhome, false, 622, false, "");
                     }
 
                     if ((TempArray.get(i).Year == CalendarYear) && (TempArray.get(i).Month == 2)) {
-                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_SamePyung, true, 866, false, "");
+                        //DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_SamePyung, true, 766, false, "");
                     }
                     if ((TempArray.get(i).Year == CalendarYear) && (TempArray.get(i).Month == 2)) {
-                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_Myhome, false, 970, false, "");
+                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_Myhome, false, 918, false, "");
                     }
                 } else if ((CalendarMonth + 1) == 1) {
                     if ((TempArray.get(i).Year == (CalendarYear - 1)) && (TempArray.get(i).Month == 11)) {
-                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_SamePyung, true, 274, false, "");
+                        //DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_SamePyung, true, 200, false, "");
                     }
                     if ((TempArray.get(i).Year == CalendarYear - 1) && (TempArray.get(i).Month == 11)) {
-                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_Myhome, false, 378, false, "");
+                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_Myhome, false, 326, false, "");
                     }
 
                     if ((TempArray.get(i).Year == CalendarYear - 1) && (TempArray.get(i).Month == 12)) {
-                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_SamePyung, true, 570, false, "");
+                        //DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_SamePyung, true, 470, false, "");
                     }
                     if ((TempArray.get(i).Year == CalendarYear - 1) && (TempArray.get(i).Month == 12)) {
-                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_Myhome, false, 674, false, "");
+                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_Myhome, false, 622, false, "");
                     }
 
                     if ((TempArray.get(i).Year == CalendarYear) && (TempArray.get(i).Month == 1)) {
-                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_SamePyung, true, 866, false, "");
+                        //DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_SamePyung, true, 766, false, "");
                     }
                     if ((TempArray.get(i).Year == CalendarYear) && (TempArray.get(i).Month == 1)) {
-                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_Myhome, false, 970, false, "");
+                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_Myhome, false, 918, false, "");
                     }
                 } else {
                     if ((TempArray.get(i).Year == CalendarYear) && (TempArray.get(i).Month == (CalendarMonth + 1) - 2)) {
-                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_SamePyung, true, 274, false, "");
+                        //DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_SamePyung, true, 200, false, "");
                     }
                     if ((TempArray.get(i).Year == CalendarYear) && (TempArray.get(i).Month == (CalendarMonth + 1) - 2)) {
-                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_Myhome, false, 378, false, "");
+                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_Myhome, false, 326, false, "");
                     }
 
                     if ((TempArray.get(i).Year == CalendarYear) && (TempArray.get(i).Month == (CalendarMonth + 1) - 1)) {
-                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_SamePyung, true, 570, false, "");
+                        //DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_SamePyung, true, 470, false, "");
                     }
                     if ((TempArray.get(i).Year == CalendarYear) && (TempArray.get(i).Month == (CalendarMonth + 1) - 1)) {
-                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_Myhome, false, 674, false, "");
+                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_Myhome, false, 622, false, "");
                     }
 
                     if ((TempArray.get(i).Year == CalendarYear) && (TempArray.get(i).Month == (CalendarMonth + 1))) {
-                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_SamePyung, true, 866, false, "");
+                        //DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_SamePyung, true, 766, false, "");
                     }
                     if ((TempArray.get(i).Year == CalendarYear) && (TempArray.get(i).Month == (CalendarMonth + 1))) {
-                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_Myhome, false, 970, false, "");
+                        DrawGraphAfterCalc((float) Temp_MaxValue, TempArray.get(i).UsedValue_Myhome, false, 918, false, "");
                     }
                 }
             }

BIN
WallPadEnergyCtrl/src/main/res/drawable-ldpi/box_1_2.png


BIN
WallPadEnergyCtrl/src/main/res/drawable-ldpi/box_2_2.png


BIN
WallPadEnergyCtrl/src/main/res/drawable-ldpi/vip_box_3_2.png


BIN
WallPadHomeCtrl/libs/WallPadSupport.jar


+ 7 - 3
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_aircon/KnxSystemAirconMainScreen.java

@@ -654,7 +654,6 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
                 DebugLogOutput("onTouchEvent [ALL_ONOFF] BUTTON !!!");
                 if (OPERATION_MODE == Common.MODE_NOMAL) {
                     byte onoff = KnxSystemAircon.ONOFF.AirconON;
-                    //madeinLab**
                     if(bCurrentAllOnOff) {
                         onoff = KnxSystemAircon.ONOFF.AirconOFF;
                     }
@@ -1019,7 +1018,7 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
                 RightMoveBtn.setVisibility(View.INVISIBLE);
                 PageNumText.setVisibility(View.INVISIBLE);
             }
-
+/*
             if (startIdx > 0 && startIdx % ROOM_CNT == 0) {
                 for (int j = 0; j < startIdx; j++) {
                     if (roomView[j] != null)
@@ -1031,6 +1030,12 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
                         roomView[j].setVisible(false);
                 }
             }
+*/
+            if (startIdx >= 0 && startIdx % ROOM_CNT == 0) {
+                for (int j = 0; j < roomView.length; j++) {
+                    if (roomView[j] != null) roomView[j].setVisible(false);
+                }
+            }
 
             int left, top;
             for (int i = startIdx; i < info.InsideAirconCount && i < startIdx + ROOM_CNT; i++) {
@@ -1042,7 +1047,6 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
                 Draw_TitleUpdate(i);
             }
         } catch (Exception e) {
-            Log.e(TAG, "[Exception] Draw_CurrentPage");
             e.printStackTrace();
         }
     }

+ 50 - 8
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_aircon/KnxSystemAirconPopupScreen.java

@@ -408,7 +408,8 @@ public class KnxSystemAirconPopupScreen extends WpadScreen {
                 KnxSystemAircon.AirData roomData = mData.airconData.Device.Aircon[mCurrentRoomIndex];
                 roomData.OnOff = hOnOff;
                 Draw_OnOffChange((byte) hOnOff); // 운전모드 표시
-            } else if ((nTargetId >= ID.KNxSystemAirconPopup.button.MODE_1) && (nTargetId <= ID.KNxSystemAirconPopup.button.MODE_5)) {
+            }
+            else if ((nTargetId >= ID.KNxSystemAirconPopup.button.MODE_1) && (nTargetId <= ID.KNxSystemAirconPopup.button.MODE_5)) {
                 Sound().Play(SND.effect.TOUCH_LATCHED);
                 int index = nTargetId - ID.KNxSystemAirconPopup.button.MODE_1;
                 Data_ModeChange(nTargetId);
@@ -424,17 +425,20 @@ public class KnxSystemAirconPopupScreen extends WpadScreen {
                 Sound().Play(SND.effect.TOUCH_LATCHED);
                 Data_VolumeUpDn(false);
                 Draw_Update((byte) mCurrentRoomIndex);
-            } else if (nTargetId == ID.KNxSystemAirconPopup.button.TEMP_ENC) {
+            }
+            else if (nTargetId == ID.KNxSystemAirconPopup.button.TEMP_ENC) {
                 DebugLogOutput("[onTouchEvent] TEMP UP BUTTON !!!");
                 Sound().Play(SND.effect.TOUCH_LATCHED);
                 Data_SetTempUpDn(true);
                 Draw_Update((byte) mCurrentRoomIndex);
-            } else if (nTargetId == ID.KNxSystemAirconPopup.button.TEMP_DEC) {
+            }
+            else if (nTargetId == ID.KNxSystemAirconPopup.button.TEMP_DEC) {
                 DebugLogOutput("[onTouchEvent] TEMP DOWN BUTTON !!!");
                 Sound().Play(SND.effect.TOUCH_LATCHED);
                 Data_SetTempUpDn(false);
                 Draw_Update((byte) mCurrentRoomIndex);
-            } else if (nTargetId == ID.heatingV2Popup.button.EDIT) {
+            }
+            else if (nTargetId == ID.heatingV2Popup.button.EDIT) {
                 Log.d(TAG, "[onTouchEvent] EDIT BUTTON");
                 Sound().Play(SND.effect.TOUCH_LATCHED);
                 editRoomName();
@@ -524,7 +528,7 @@ public class KnxSystemAirconPopupScreen extends WpadScreen {
 
         // 운전모드 갱신
         //madeinLab 현재온도와 설정온도에 따라 자동으로 에어컨이 OFF로 전환되어야 하는지 확인이 필요함.
-        Draw_ModeChange(roomData.Mode);
+        Draw_ModeChange(roomData);
         // 현재온도 갱신
         Draw_NowTempChange(roomData.NowTemp);
         // 설정온도 갱신
@@ -597,9 +601,10 @@ public class KnxSystemAirconPopupScreen extends WpadScreen {
     /**
      * 모드상태와 화면에 반영한다.
      *
-     * @param mode - (int) 변경할 운전모드 ( 0 : OFF, 1 : ON, 2 : 일시정지 )
+     * @param roomData - (int) 변경할 운전모드 ( 0 : OFF, 1 : ON, 2 : 일시정지 )
      */
-    private void Draw_ModeChange(byte mode) {
+    private void Draw_ModeChange(KnxSystemAircon.AirData roomData) {
+        byte mode = roomData.Mode;
         ModeBtn[0].setButtonDefaultImageID();
         ModeBtn[1].setButtonDefaultImageID();
         ModeBtn[2].setButtonDefaultImageID();
@@ -612,6 +617,19 @@ public class KnxSystemAirconPopupScreen extends WpadScreen {
         VolumeEncBtn.setButtonEventOffDisable();
         VolumeDecBtn.setButtonEventOffDisable();
 
+        //최대 최소 설정 온도에 맞춰 버튼을 disable 해준다.
+        if (roomData.SetTemp >= (double) mData.airconData.Device.info.Support.MaxSetTemp) {
+            TempEncBtn.setButtonEventOffEnable(R.drawable.btn_temp_up_disabled);
+        } else {
+            TempEncBtn.setButtonEventOffDisable();
+        }
+
+        if (roomData.SetTemp <= (double) mData.airconData.Device.info.Support.MinSetTemp) {
+            TempDecBtn.setButtonEventOffEnable(R.drawable.btn_temp_down_disabled);
+        } else {
+            TempDecBtn.setButtonEventOffDisable();
+        }
+
         if (mode == KnxSystemAircon.MODE.Auto) {
             ModeBtn[0].setButtonPressedImageID();
             //프로토콜 1.2 : 자동인 경우는 풍량 조절이 안되고 자동으로 고정
@@ -631,6 +649,17 @@ public class KnxSystemAirconPopupScreen extends WpadScreen {
             TempDecBtn.setButtonEventOffEnable(R.drawable.btn_temp_down_disabled);
         } else if (mode == KnxSystemAircon.MODE.Heat) {
             ModeBtn[4].setButtonPressedImageID();
+            /*
+            //난방인 경우와 이외의 경우의 minTemp가 다르다. 난방은 16, 이외는 18
+            double minRange = (double) mData.airconData.Device.info.Support.HeatMinSetTemp;
+            if (roomData.SetTemp <= minRange) {
+                roomData.SetTemp = minRange;
+                TempDecBtn.setButtonEventOffEnable(R.drawable.btn_temp_down_disabled);
+            } else {
+                TempDecBtn.setButtonEventOffDisable();
+            }
+
+             */
         } else {
             OnOffBtn.setButtonRearImage();
         }
@@ -913,6 +942,19 @@ public class KnxSystemAirconPopupScreen extends WpadScreen {
         VolumeEncBtn.setButtonEventOffDisable();
         VolumeDecBtn.setButtonEventOffDisable();
 
+        //최대 최소 설정 온도에 맞춰 버튼을 disable 해준다.
+        if (roomData.SetTemp >= (double) mData.airconData.Device.info.Support.MaxSetTemp) {
+            TempEncBtn.setButtonEventOffEnable(R.drawable.btn_temp_up_disabled);
+        } else {
+            TempEncBtn.setButtonEventOffDisable();
+        }
+
+        if (roomData.SetTemp <= (double) mData.airconData.Device.info.Support.MinSetTemp) {
+            TempDecBtn.setButtonEventOffEnable(R.drawable.btn_temp_down_disabled);
+        } else {
+            TempDecBtn.setButtonEventOffDisable();
+        }
+
         if (index == ID.KNxSystemAirconPopup.button.MODE_1) {
             mode = 0x00;
             ModeBtn[0].setButtonPressedImageID();
@@ -962,7 +1004,7 @@ public class KnxSystemAirconPopupScreen extends WpadScreen {
      */
     private void Data_VolumeUpDn(boolean bUp) {
         if (mData == null) return;
-        if (mData.airconData.Device.Aircon == null) return; // TODO 임시 주석처리
+        if (mData.airconData.Device.Aircon == null) return;
 
         KnxSystemAircon.Info info = mData.airconData.Device.info;
         KnxSystemAircon.AirData roomData = mData.airconData.Device.Aircon[mCurrentRoomIndex];

+ 10 - 9
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_heating/HeatingV2PopupScreen.java

@@ -212,8 +212,6 @@ public class HeatingV2PopupScreen extends WpadScreen {
         // 1. Data Create
         DebugLogOutput("[Create] - Step1 : Data Create");
         OPERATION_MODE = operationMode;
-        //OPERATION_MODE = Common.MODE_BUSINESS_SAMPLE;
-
         mData = new Data();
         if (wallpadStatusData == null) wallpadStatusData = new WallpadStatusData(context);
 
@@ -791,7 +789,8 @@ public class HeatingV2PopupScreen extends WpadScreen {
                     Draw_TitleChange(mCurrentRoomIndex);
                     if (OPERATION_MODE == Common.MODE_NOMAL) Device_SetPollingMode(POLLING_MODE.FixRoom, (byte) mCurrentRoomIndex);
                     drawUpdate((byte) mCurrentRoomIndex);
-                } else if ((TargetId >= ID.heatingV2Popup.text.TAB_DEFAULT) && (TargetId <= ID.heatingV2Popup.text.TAB_SLEEP)) {
+                }
+                else if ((TargetId >= ID.heatingV2Popup.text.TAB_DEFAULT) && (TargetId <= ID.heatingV2Popup.text.TAB_SLEEP)) {
                     int index = TargetId - ID.heatingV2Popup.text.TAB_DEFAULT;
                     DebugLogOutput("onTouchEvent [TAB_" + (index + 1) + "] BUTTON !!!");
                     edit_state = EDIT_STATE.Normal;
@@ -895,7 +894,8 @@ public class HeatingV2PopupScreen extends WpadScreen {
                             Sound().Play(SND.effect.TOUCH_LATCHED);
                         }
                     }
-                } else if (TargetId == ID.heatingV2Popup.tabDefault.button.TEMP_UP) {
+                }
+                else if (TargetId == ID.heatingV2Popup.tabDefault.button.TEMP_UP) {
                     DebugLogOutput("onTouchEvent [DefaultTab-TEMP_UP(short)] BUTTON !!!");
                     Sound().Play(SND.effect.TOUCH_LATCHED);
 
@@ -906,7 +906,8 @@ public class HeatingV2PopupScreen extends WpadScreen {
                         Sample_ChangeValveReflect();
 
                     drawUpdate((byte) mCurrentRoomIndex);
-                } else if (TargetId == ID.heatingV2Popup.tabDefault.button.TEMP_DN) {
+                }
+                else if (TargetId == ID.heatingV2Popup.tabDefault.button.TEMP_DN) {
                     DebugLogOutput("onTouchEvent [DefaultTab-TEMP_DN(short)] BUTTON !!!");
                     Sound().Play(SND.effect.TOUCH_LATCHED);
 
@@ -1062,7 +1063,7 @@ public class HeatingV2PopupScreen extends WpadScreen {
                     Log.i(TAG, "[drawUpdate] - SetTemp2 = " + roomData.SetTemp);
 
                     if (roomData.SetTemp >= (double) mData.heatingV2.Device.info.Support.MaxSetTemp) {
-                        D_TempUpBtn.setButtonEventOffEnable(R.drawable.heating_popup_up);
+                        D_TempUpBtn.setButtonEventOffEnable(R.drawable.btn_temp_up_disabled);
                         Log.d(TAG, "[drawUpdate] TEMP UP - EventOffEnable");
                     }
                     else {
@@ -1071,7 +1072,7 @@ public class HeatingV2PopupScreen extends WpadScreen {
                     }
 
                     if (roomData.SetTemp <= (double) mData.heatingV2.Device.info.Support.MinSetTemp) {
-                        D_TempDownBtn.setButtonEventOffEnable(R.drawable.heating_popup_down);
+                        D_TempDownBtn.setButtonEventOffEnable(R.drawable.btn_temp_down_disabled);
                         Log.d(TAG, "[drawUpdate] TEMP DN - EventOffEnable");
                     }
                     else {
@@ -1081,8 +1082,8 @@ public class HeatingV2PopupScreen extends WpadScreen {
                 }
                 else {
                     D_SetTempText.setText("");
-                    D_TempUpBtn.setButtonEventOffEnable(R.drawable.heating_popup_up);
-                    D_TempDownBtn.setButtonEventOffEnable(R.drawable.heating_popup_down);
+                    D_TempUpBtn.setButtonEventOffEnable(R.drawable.btn_temp_up_disabled);
+                    D_TempDownBtn.setButtonEventOffEnable(R.drawable.btn_temp_down_disabled);
                 }
             }
             // 예약설정

+ 10 - 12
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/HeatingV2PopupTestScreen.java

@@ -311,7 +311,8 @@ public class HeatingV2PopupTestScreen extends WpadScreen {
                         if (resultData.getType().equals("controlResponse") && resultData.getResult().equals("ok")) {
                             //제어 명령을 내리고 제대로 응답이 오면 상태를 다시 조회해서 UI 갱신하도록 한다.
                             Sound().Play(SND.effect.TOUCH_LATCHED);
-                            startRefreshTimer(500);
+                            //startRefreshTimer(500);
+                            updateData();
                         } else if (resultData.getType().equals("updateResponse")) {
                             //상태 조회 응답이 오면, data를 갱신한다.
                             makeDeviceData(jsonObject);
@@ -668,7 +669,8 @@ public class HeatingV2PopupTestScreen extends WpadScreen {
         SetManualStr(NowTab, ReserveUse, SleepUse);
 
         timer = new Timer();
-        startRefreshTimer(3000);
+        //startRefreshTimer(3000);
+        updateData();
     }
 
     private boolean setManualBtnVisible(boolean bEnable) {
@@ -704,7 +706,7 @@ public class HeatingV2PopupTestScreen extends WpadScreen {
                 if (timer != null)
                     timer.cancel();
             }
-        }, 2000); // delayed가 true이면 3.5초 지연을 준 후 시작
+        }, 2000); // 지연을 준 이유는, 바로 종료하면 제어이벤트 처리가 제대로 안될 수 있음.
 
 
         Log.i(TAG, "[END   - Screen] ********************************************");
@@ -1057,24 +1059,20 @@ public class HeatingV2PopupTestScreen extends WpadScreen {
                     Log.i(TAG, "[drawUpdate] - SetTemp2 = " + roomData.SetTemp);
 
                     if (roomData.SetTemp >= (double) mData.heatingV2.Device.info.Support.MaxSetTemp) {
-                        D_TempUpBtn.setButtonEventOffEnable(R.drawable.heating_popup_up);
-                        Log.d(TAG, "[drawUpdate] TEMP UP - EventOffEnable");
+                        D_TempUpBtn.setButtonEventOffEnable(R.drawable.btn_temp_up_disabled);
                     } else {
                         D_TempUpBtn.setButtonEventOffDisable();
-                        Log.d(TAG, "[drawUpdate] TEMP UP - EventOffDisable");
                     }
 
                     if (roomData.SetTemp <= (double) mData.heatingV2.Device.info.Support.MinSetTemp) {
-                        D_TempDownBtn.setButtonEventOffEnable(R.drawable.heating_popup_down);
-                        Log.d(TAG, "[drawUpdate] TEMP DN - EventOffEnable");
+                        D_TempDownBtn.setButtonEventOffEnable(R.drawable.btn_temp_down_disabled);
                     } else {
                         D_TempDownBtn.setButtonEventOffDisable();
-                        Log.d(TAG, "[drawUpdate] TEMP DN - EventOffDisable");
                     }
                 } else {
                     D_SetTempText.setText("");
-                    D_TempUpBtn.setButtonEventOffEnable(R.drawable.heating_popup_up);
-                    D_TempDownBtn.setButtonEventOffEnable(R.drawable.heating_popup_down);
+                    D_TempUpBtn.setButtonEventOffEnable(R.drawable.btn_temp_up_disabled);
+                    D_TempDownBtn.setButtonEventOffEnable(R.drawable.btn_temp_down_disabled);
                 }
             }
             // 예약설정
@@ -1438,7 +1436,7 @@ public class HeatingV2PopupTestScreen extends WpadScreen {
         mData.TempSetDelayedEnable = true;
 
         // 4. 핸들러에 메시지 전송
-        mDeviceTempSetHandler.sendEmptyMessageDelayed(DEVICE_CMD_TEMP_CHANGE, 300);
+        mDeviceTempSetHandler.sendEmptyMessageDelayed(DEVICE_CMD_TEMP_CHANGE, 700);
 
         return true;
     }

+ 7 - 3
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/HeatingV2TestScreen.java

@@ -427,12 +427,14 @@ public class HeatingV2TestScreen extends WpadScreen {
                 }
 
                 if (bImageIDSet) {
-                    int[][] mExecutePos = {{980, 168}, {936, 110}};
+                    int nTopMargin = 0;
+                    if (info.RoomCount > 6) nTopMargin = 58;
+                    int[][] mExecutePos = {{980, 168 - nTopMargin}, {936, 110 - nTopMargin}};
                     BTN_ENTIRE_SET_PAUSEOUT = new WpadImageView(mContext, TOUCH_KIND.BUTTON, 230, 272, nImgID_Set_PuaseOut_Normal, nImgID_Set_PuaseOut_Pressed, ID.heatingV2main.button.ALL_EXECUTION);
                     ViewRegistration(getLayout(), BTN_ENTIRE_SET_PAUSEOUT, Common.ImgPosion.GetX(mExecutePos[UX_MODE][0]), Common.ImgPosion.GetY(mExecutePos[UX_MODE][1]));
                     BTN_ENTIRE_SET_PAUSEOUT.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL);
 
-                    int[][] mReleasePos = {{980, 440}, {936, 382}};
+                    int[][] mReleasePos = {{980, 440 - nTopMargin}, {936, 382 - nTopMargin}};
                     BTN_ENTIRE_UNSET_PAUSEOUT = new WpadImageView(mContext, TOUCH_KIND.BUTTON, 230, 272, nImgID_Unset_PuaseOut_Normal, nImgID_Unset_PuaseOut_Pressed, ID.heatingV2main.button.ALL_RELEASE);
                     ViewRegistration(getLayout(), BTN_ENTIRE_UNSET_PAUSEOUT, Common.ImgPosion.GetX(mReleasePos[UX_MODE][0]), Common.ImgPosion.GetY(mReleasePos[UX_MODE][1]));
                     BTN_ENTIRE_UNSET_PAUSEOUT.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL);
@@ -644,11 +646,13 @@ public class HeatingV2TestScreen extends WpadScreen {
 
     /**
      * 팝업종료시 데이터가 있을시 호출됨
+     * 팝업 종료 후 다시 화면 갱신을 위해 주기적으로 update를 요청해야 함.
      */
     @Override
     protected void onPopupResult(Intent intent) {
         if (intent != null) {
-            updateData();
+            //updateData();
+            startRefreshTimer(1300);
         }
     }
 

+ 31 - 7
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/KnxSystemAirconPopupTestScreen.java

@@ -68,7 +68,6 @@ public class KnxSystemAirconPopupTestScreen extends WpadScreen {
     private WpadImageView TempDecBtn;
     private WpadImageView ManualBtn;                                       // 매뉴얼 버튼
 
-
     private WpadTextView TitleText;                                        // 방이름
     private WpadTextView NowTempText;
     private WpadTextView SetTempText;
@@ -283,7 +282,7 @@ public class KnxSystemAirconPopupTestScreen extends WpadScreen {
                     airData.Volume = VolumeArray[i];
                 }
             }
-            info.Support.MinSetTemp = 16; // 지원하는 최저 설정온도
+            info.Support.MinSetTemp = 18; // 지원하는 최저 설정온도
             info.Support.MaxSetTemp = 30; // 지원하는 최대 설정온도
             //info.Support.bModeAuto = airconData.getSupportAuto();
             //info.Support.bModeCooling = airconData.getSupportCooling();
@@ -517,7 +516,7 @@ public class KnxSystemAirconPopupTestScreen extends WpadScreen {
 
         // 운전모드 갱신
         //madeinLab 현재온도와 설정온도에 따라 자동으로 에어컨이 OFF로 전환되어야 하는지 확인이 필요함.
-        Draw_ModeChange(roomData.Mode);
+        Draw_ModeChange(roomData);
         // 현재온도 갱신
         Draw_NowTempChange(roomData.NowTemp);
         // 설정온도 갱신
@@ -589,9 +588,10 @@ public class KnxSystemAirconPopupTestScreen extends WpadScreen {
     /**
      * 모드상태와 화면에 반영한다.
      *
-     * @param mode - (int) 변경할 운전모드 ( 0 : OFF, 1 : ON, 2 : 일시정지 )
+     * @param roomData - (int) 변경할 운전모드 ( 0 : OFF, 1 : ON, 2 : 일시정지 )
      */
-    private void Draw_ModeChange(byte mode) {
+    private void Draw_ModeChange(KnxSystemAircon.AirData roomData) {
+        byte mode = roomData.Mode;
         ModeBtn[0].setButtonDefaultImageID();
         ModeBtn[1].setButtonDefaultImageID();
         ModeBtn[2].setButtonDefaultImageID();
@@ -604,10 +604,22 @@ public class KnxSystemAirconPopupTestScreen extends WpadScreen {
         VolumeEncBtn.setButtonEventOffDisable();
         VolumeDecBtn.setButtonEventOffDisable();
 
+        //최대 최소 설정 온도에 맞춰 버튼을 disable 해준다.
+        if (roomData.SetTemp >= (double) mData.systemAircon.Device.info.Support.MaxSetTemp) {
+            TempEncBtn.setButtonEventOffEnable(R.drawable.btn_temp_up_disabled);
+        } else {
+            TempEncBtn.setButtonEventOffDisable();
+        }
+
+        if (roomData.SetTemp <= (double) mData.systemAircon.Device.info.Support.MinSetTemp) {
+            TempDecBtn.setButtonEventOffEnable(R.drawable.btn_temp_down_disabled);
+        } else {
+            TempDecBtn.setButtonEventOffDisable();
+        }
+
         if (mode == KnxSystemAircon.MODE.Auto) {
             ModeBtn[0].setButtonPressedImageID();
             //프로토콜 1.2 : 자동인 경우는 풍량 조절이 안되고 자동으로 고정
-            //madeinlab 이후 disable 이미지를 요청해야 한다
             VolumeEncBtn.setButtonEventOffEnable(R.drawable.btn_temp_up_disabled);
             VolumeDecBtn.setButtonEventOffEnable(R.drawable.btn_temp_down_disabled);
         } else if (mode == KnxSystemAircon.MODE.Cold) {
@@ -763,11 +775,23 @@ public class KnxSystemAirconPopupTestScreen extends WpadScreen {
         VolumeEncBtn.setButtonEventOffDisable();
         VolumeDecBtn.setButtonEventOffDisable();
 
+        //최대 최소 설정 온도에 맞춰 버튼을 disable 해준다.
+        if (roomData.SetTemp >= (double) mData.systemAircon.Device.info.Support.MaxSetTemp) {
+            TempEncBtn.setButtonEventOffEnable(R.drawable.btn_temp_up_disabled);
+        } else {
+            TempEncBtn.setButtonEventOffDisable();
+        }
+
+        if (roomData.SetTemp <= (double) mData.systemAircon.Device.info.Support.MinSetTemp) {
+            TempDecBtn.setButtonEventOffEnable(R.drawable.btn_temp_down_disabled);
+        } else {
+            TempDecBtn.setButtonEventOffDisable();
+        }
+
         if (index == ID.KNxSystemAirconPopup.button.MODE_1) {
             mode = 0x00;
             ModeBtn[0].setButtonPressedImageID();
             //프로토콜 1.2 : 자동인 경우는 풍량 조절이 안되고 자동으로 고정
-            //madeinlab 이후 disable 이미지로 교체한다.
             VolumeEncBtn.setButtonEventOffEnable(R.drawable.btn_temp_up_disabled);
             VolumeDecBtn.setButtonEventOffEnable(R.drawable.btn_temp_down_disabled);
             roomData.Volume = (byte) KnxSystemAircon.VOLUME.Auto;

+ 2 - 1
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/LightKnxMainTestScreen.java

@@ -995,7 +995,8 @@ public class LightKnxMainTestScreen extends WpadScreen {
      */
     @Override
     protected void onPopupResult(Intent intent) {
-        updateData();
+        //updateData();
+        startRefreshTimer(500);
     }
 
     // =================================================================================================

+ 3 - 9
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/VentiPopupReservationTestScreen.java

@@ -253,6 +253,8 @@ public class VentiPopupReservationTestScreen extends WpadScreen {
 
         } catch (RuntimeException re) {
             LogUtil.errorLogInfo("", TAG, re);
+            //에러시 종료
+            super.finish();
         } catch (Exception e) {
             Log.e(TAG, "[Exception] Sample_DataDefaultSetting()");
             //e.printStackTrace();
@@ -301,15 +303,7 @@ public class VentiPopupReservationTestScreen extends WpadScreen {
                         if (resultData.getType().equals("controlResponse") && resultData.getResult().equals("ok")) {
                             //제어 명령을 내리고 제대로 응답이 오면 상태를 다시 조회해서 UI 갱신하도록 한다.
                             Sound().Play(SND.effect.TOUCH_LATCHED);
-                            timer = new Timer();
-                            TimerTask TT = new TimerTask() {
-                                @Override
-                                public void run() {
-                                    // 반복실행할 구문
-                                    updateData();
-                                }
-                            };
-                            timer.schedule(TT, 500, 3500); //Timer 실행
+                            updateData();
                         } else if (resultData.getType().equals("updateResponse")) {
                             //상태 조회 응답이 오면, data를 갱신한다.
                             makeDeviceData(jsonObject);

+ 74 - 31
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/VentilationMainTestScreen.java

@@ -71,7 +71,7 @@ import kr.co.icontrols.wallpadsupport.WpadTextView;
  */
 @SuppressLint("ViewConstructor")
 public class VentilationMainTestScreen extends WpadScreen {
-    private final String TAG = "VentilationMainScreen";
+    private final String TAG = "VentilMainTestScreen";
 
     private final boolean DEBUG_LOG_ON = true;
     Context mContext;
@@ -183,6 +183,9 @@ public class VentilationMainTestScreen extends WpadScreen {
 
     VentiData ventiData;
 
+    Timer timer;
+    TimerTask TT;
+
     private void makeDeviceData(JSONObject jsonObject) {
         try {
             Gson gson = new Gson();
@@ -489,7 +492,7 @@ public class VentilationMainTestScreen extends WpadScreen {
             }
 
             // 5. Draw_Update
-            printDebugLog("[Create] - Step5 : Draw_Update");
+            printDebugLog("[makeDeviceData] - Step5 : Draw_Update");
             updateScreen();
             updateAirQualityFragment();
 
@@ -502,7 +505,19 @@ public class VentilationMainTestScreen extends WpadScreen {
         }
     }
 
+    private void resetTimer(){
+        try {
+            if (TT != null) {
+                TT.cancel();
+                TT = null;
+            }
+            if (timer != null)
+                timer.purge();
+        }catch (Exception e){}
+    }
+
     private void requestMultiControl(int kind, int reason, int position, String category, int number, int state) {
+        resetTimer();
         ((MainActivity) mContext).requestMultiControl(handler, JSON.MENU.VENTI, kind, reason, position, category, number, state);
     }
 
@@ -522,7 +537,6 @@ public class VentilationMainTestScreen extends WpadScreen {
         }
     }
 
-    Timer timer;
     @SuppressLint("HandlerLeak")
     final Handler handler = new Handler() {
         Gson gson = new Gson();
@@ -538,16 +552,7 @@ public class VentilationMainTestScreen extends WpadScreen {
                         ResultData resultData = gson.fromJson(jsonObject.toString(), ResultData.class);
                         if (resultData.getType().equals("controlResponse") && resultData.getResult().equals("ok")) {
                             //제어 명령을 내리고 제대로 응답이 오면 상태를 다시 조회해서 UI 갱신하도록 한다.
-                            Sound().Play(SND.effect.TOUCH_LATCHED);
-                            timer = new Timer();
-                            TimerTask TT = new TimerTask() {
-                                @Override
-                                public void run() {
-                                    // 반복실행할 구문
-                                    updateData();
-                                }
-                            };
-                            timer.schedule(TT, 500, 3500); //Timer 실행
+                            startRefreshTimer(500);
                         } else if (resultData.getType().equals("updateResponse")) {
                             //상태 조회 응답이 오면, data를 갱신한다.
                             makeDeviceData(jsonObject);
@@ -596,8 +601,25 @@ public class VentilationMainTestScreen extends WpadScreen {
         bVentilCareService = mWallpadDeviceSet.Get_VentiServiceQRUse();
         mWallpadDeviceSet.closeDB();
 
+        timer = new Timer();
+
         //환기 전체 상태 조회. 조회해서 data에 대입해준다.
-        updateData();
+        startRefreshTimer(300);
+        //updateData();
+    }
+
+    private void startRefreshTimer(int delay){
+        try {
+            resetTimer();
+            TT = new TimerTask() {
+                @Override
+                public void run() {
+                    // 반복실행할 구문
+                    updateData();
+                }
+            };
+            timer.schedule(TT, delay, 3000); //Timer 실행
+        }catch (Exception e){}
     }
 
     private void registerVentilModeAnimHandler() {
@@ -709,8 +731,11 @@ public class VentilationMainTestScreen extends WpadScreen {
         drawAirFlowAnim((byte) 0x00);
         mVentilAnimHandler = null;
 
-        if (timer != null)
-            timer.cancel();
+        try {
+            resetTimer();
+            if (timer != null)
+                timer.cancel();
+        }catch (Exception e){}
     }
 
     // =================================================================================================
@@ -796,6 +821,8 @@ public class VentilationMainTestScreen extends WpadScreen {
                     Sample_ReservationOnOff(Reservation);
                 }
             }
+
+            startRefreshTimer(1500);
         }
     }
 
@@ -820,7 +847,8 @@ public class VentilationMainTestScreen extends WpadScreen {
             if (nTargetID == ID.VentilationMainScreenID.TXT.ALARM_MESSAGE) {
                 printDebugLog("[onTouchEvent] ALARMMSG");
                 startAlarmPopup(ID.VentiPopup_Alarm.kind.DeviceError);
-            } else if (nTargetID == ID.VentilationMainScreenID.BTN.ONOFF_POWER) {
+            }
+            else if (nTargetID == ID.VentilationMainScreenID.BTN.ONOFF_POWER) {
                 // ON/OFF
                 printDebugLog("[onTouchEvent] ONOFF_POWER");
                 if (Version.getGatewayUsage()) {
@@ -849,7 +877,8 @@ public class VentilationMainTestScreen extends WpadScreen {
                     Sample_PowerOnOff();
                     Sound().Play(SND.effect.TOUCH_LATCHED);
                 }
-            } else if (nTargetID == ID.VentilationMainScreenID.BTN.ONOFF_AUTOCLEAN) {
+            }
+            else if (nTargetID == ID.VentilationMainScreenID.BTN.ONOFF_AUTOCLEAN) {
                 // 자동청정
                 printDebugLog("[onTouchEvent] ONOFF_AUTOCLEAN");
 
@@ -896,7 +925,8 @@ public class VentilationMainTestScreen extends WpadScreen {
                     Sample_PowerOnOff();
                     Sound().Play(SND.effect.TOUCH_LATCHED);
                 }
-            } else if (nTargetID == ID.VentilationMainScreenID.BTN.ONOFF_RESERVATION) {
+            }
+            else if (nTargetID == ID.VentilationMainScreenID.BTN.ONOFF_RESERVATION) {
                 // 예약
                 printDebugLog("[onTouchEvent] ONOFF_RESERVATION");
 
@@ -913,8 +943,10 @@ public class VentilationMainTestScreen extends WpadScreen {
                 //int ret = ctrlDeviceReservation(OnOff);
                 //if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
                 //else Sound().Play(SND.effect.TOUCH_UNLATCHED);
-            } else if (nTargetID == ID.VentilationMainScreenID.BTN.RESERVATION_SET) {
+            }
+            else if (nTargetID == ID.VentilationMainScreenID.BTN.RESERVATION_SET) {
                 // 예약운전
+                resetTimer();
                 printDebugLog("[onTouchEvent] ONOFF_POWER");
 
                 Sound().Play(SND.effect.TOUCH_LATCHED);
@@ -926,7 +958,8 @@ public class VentilationMainTestScreen extends WpadScreen {
                     intent.putExtra("Reservation", mVentilData.VentilStatus.Reservation);
                     ((MainActivity) (getContext())).StartPopup(ID.screen.VentiPopupReservationScreen, intent);
                 }
-            } else if (nTargetID == ID.VentilationMainScreenID.BTN.ONOFF_HEATER) {
+            }
+            else if (nTargetID == ID.VentilationMainScreenID.BTN.ONOFF_HEATER) {
                 // 히터
                 printDebugLog("onTouchEvent [HEATER] BUTTON !!!");
 
@@ -943,7 +976,8 @@ public class VentilationMainTestScreen extends WpadScreen {
                     //if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
                     //else Sound().Play(SND.effect.TOUCH_UNLATCHED);
                 }
-            } else if (nTargetID == ID.VentilationMainScreenID.BTN.MODE_NORMAL) {
+            }
+            else if (nTargetID == ID.VentilationMainScreenID.BTN.MODE_NORMAL) {
                 // 일반환기
                 printDebugLog("onTouchEvent [MODE_NORMAL] BUTTON !!!");
 
@@ -991,7 +1025,8 @@ public class VentilationMainTestScreen extends WpadScreen {
                     //    return;
                     //}
                 }
-            } else if (nTargetID == ID.VentilationMainScreenID.BTN.MODE_BYPASS) {
+            }
+            else if (nTargetID == ID.VentilationMainScreenID.BTN.MODE_BYPASS) {
                 // 자연환기
                 printDebugLog("onTouchEvent [BYPASS] BUTTON !!!");
 
@@ -1012,7 +1047,8 @@ public class VentilationMainTestScreen extends WpadScreen {
                 //int ret = ctrlDeviceNaturalVentil(OnOff);
                 //if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
                 //else Sound().Play(SND.effect.TOUCH_UNLATCHED);
-            } else if (nTargetID == ID.VentilationMainScreenID.BTN.MODE_AUTODRIVING) {
+            }
+            else if (nTargetID == ID.VentilationMainScreenID.BTN.MODE_AUTODRIVING) {
                 // 자동환기
                 printDebugLog("onTouchEvent [AUTODRIVING] BUTTON !!!");
 
@@ -1052,7 +1088,8 @@ public class VentilationMainTestScreen extends WpadScreen {
                     //if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
                     //else Sound().Play(SND.effect.TOUCH_UNLATCHED);
                 }
-            } else if (nTargetID == ID.VentilationMainScreenID.BTN.MODE_INNERCYCLE) {
+            }
+            else if (nTargetID == ID.VentilationMainScreenID.BTN.MODE_INNERCYCLE) {
                 // 내부순환
                 printDebugLog("onTouchEvent [INNERCYCLE] BUTTON !!!");
 
@@ -1087,7 +1124,8 @@ public class VentilationMainTestScreen extends WpadScreen {
                     Sample_InnerCycle(!mVentilData.VentilStatus.InnerCycle);
                     Sound().Play(SND.effect.TOUCH_LATCHED);
                 }
-            } else if (nTargetID == ID.VentilationMainScreenID.BTN.MODE_OUTAIRCLEAN) {
+            }
+            else if (nTargetID == ID.VentilationMainScreenID.BTN.MODE_OUTAIRCLEAN) {
                 // 내부순환
                 printDebugLog("onTouchEvent [OUTAIRCLEAN] BUTTON !!!");
 
@@ -1123,7 +1161,8 @@ public class VentilationMainTestScreen extends WpadScreen {
                     Sample_OutAirClean(!mVentilData.VentilStatus.OutAirClean);
                     Sound().Play(SND.effect.TOUCH_LATCHED);
                 }
-            } else if (nTargetID == ID.VentilationMainScreenID.BTN.MODE_SLEEP) {
+            }
+            else if (nTargetID == ID.VentilationMainScreenID.BTN.MODE_SLEEP) {
                 // 취침 모드
                 printDebugLog("onTouchEvent [SLEEP] BUTTON !!!");
 
@@ -1161,7 +1200,8 @@ public class VentilationMainTestScreen extends WpadScreen {
                     Sample_SleepMode(onoff);
                     Sound().Play(SND.effect.TOUCH_LATCHED);
                 }
-            } else if ((nTargetID >= ID.VentilationMainScreenID.BTN.WIND_1) && (nTargetID <= ID.VentilationMainScreenID.BTN.WIND_3)) {
+            }
+            else if ((nTargetID >= ID.VentilationMainScreenID.BTN.WIND_1) && (nTargetID <= ID.VentilationMainScreenID.BTN.WIND_3)) {
                 // 풍량변경 [약풍 , 미풍 , 강풍]
                 int index = nTargetID - ID.VentilationMainScreenID.BTN.WIND_1;
                 printDebugLog("onTouchEvent [WIND_" + (index + 1) + "] BUTTON !!!");
@@ -1193,7 +1233,8 @@ public class VentilationMainTestScreen extends WpadScreen {
                     Sample_WindCont(Wind);
                     Sound().Play(SND.effect.TOUCH_LATCHED);
                 }
-            } else if ((nTargetID == ID.VentilationMainScreenID.BTN.TIMER_LEFT) || (nTargetID == ID.VentilationMainScreenID.BTN.TIMER_RIGHT)) {
+            }
+            else if ((nTargetID == ID.VentilationMainScreenID.BTN.TIMER_LEFT) || (nTargetID == ID.VentilationMainScreenID.BTN.TIMER_RIGHT)) {
                 // 타이머 변경 [좌 , 우]
                 if (nTargetID == ID.VentilationMainScreenID.BTN.TIMER_LEFT)
                     printDebugLog("onTouchEvent [TIMER_LEFT] BUTTON !!!");
@@ -1220,14 +1261,16 @@ public class VentilationMainTestScreen extends WpadScreen {
                     Sample_TimerCont(nTargetID);
                     Sound().Play(SND.effect.TOUCH_LATCHED);
                 }
-            } else if (nTargetID == ID.VentilationMainScreenID.BTN.FILLTER_CHANGE) {
+            }
+            else if (nTargetID == ID.VentilationMainScreenID.BTN.FILLTER_CHANGE) {
                 printDebugLog("onTouchEvent [FILLTER_CHANGE] BUTTON !!!");
 
                 if (mVentilData.VentilStatus.Support.FilterReset) {
                     // 필터교환 팝업
                     startAlarmPopup(ID.VentiPopup_Alarm.kind.FilterReset);
                 }
-            } else if (nTargetID == ID.VentilationMainScreenID.BTN.BATHROOM) {
+            }
+            else if (nTargetID == ID.VentilationMainScreenID.BTN.BATHROOM) {
                 //욕실 배기
                 printDebugLog("onTouchEvent [BATHROOM] BUTTON !!!");
 

+ 1 - 1
WallPadMain/src/main/AndroidManifest.xml

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="kr.co.icontrols.wallpadmain"
     android:versionCode="17"
-    android:versionName="2022.01.04.01">
+    android:versionName="2022.01.12.01">
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

+ 10 - 0
WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/MainActivity.java

@@ -2831,6 +2831,16 @@ public class MainActivity extends WpadActivity {
                             mIOInterface.ctrlLcdWakeUp();
                             StartPopup(ID.POPUPS.POPUP_CHARGINGELECTRICVEHICLE, data);
                         }
+                        else if (strState.equals("full")) {
+                            // 충전 종료
+                            Intent data = new Intent();
+                            data.putExtra("CarNum", strCarNum);
+                            data.putExtra("ChargerNum", strChargerNum);
+                            data.putExtra("Msg", "충전이 완료되었습니다.");
+
+                            mIOInterface.ctrlLcdWakeUp();
+                            StartPopup(ID.POPUPS.POPUP_CHARGINGELECTRICVEHICLE, data);
+                        }
                         break;
 
                     case define.NOTIFY_INTERLAYTER_NOISE_ALARM:

+ 1 - 1
WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/declare/ID.java

@@ -1614,7 +1614,7 @@ public final class ID {
             SECURITY_VISITORVIDEO(MENU_SECURITY + 5, "방문자영상", "Visitor video"),
 
             ENERGY_ENERGYMETER(MENU_ENERGY + 1, "에너지미터", "Energy meter"),
-            ENERGY_REMOTEMETER(MENU_ENERGY + 2, "원격검침", "Remote meter"),
+            ENERGY_REMOTEMETER(MENU_ENERGY + 2, "전기 에너지\n현황", "Remote meter"),
             ENERGY_ENERGYCONSUMPTION(MENU_ENERGY + 3, "에너지\n사용량", "Energy\nconsumption"),
             ENERGY_ENERGYCOSTTABLE(MENU_ENERGY + 4, "에너지\n요금제", "Cost table"),
             ENERGY_SMARTPANEL(MENU_ENERGY + 5, "스마트\n분전반", "Smart Panel"),   // Distribution Panel Board

+ 3 - 3
WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/popup/ChargingElectricVehicle.java

@@ -52,7 +52,7 @@ public class ChargingElectricVehicle extends WpadScreen {
 		String strMsg = data.getStringExtra("Msg");
 		Log.d(TAG, "strCarNum : " + strCarNum );
 		Log.d(TAG, "strMsg : " + strMsg );
-		strInstruction = "[" + strChargerNum +  "] "+ strMsg;
+		strInstruction = "[" + strChargerNum +  "번 충전기] "+ strMsg;
 		WallpadStatusData SetData = new WallpadStatusData(getContext());
 		boolean soundOut = SetData.GetSoundOutputOfEventAlarm();
 		SetData.closeDB();
@@ -174,11 +174,11 @@ public class ChargingElectricVehicle extends WpadScreen {
 					if (strState != null) {
 						if (strState.equals("start")) {
 							// 메인화면에 충전중 아이콘 그리고
-							drawMsg(strChargerNum , "충전을 시작합니다.");
+							drawMsg(strChargerNum+"번 충전기" , "충전을 시작합니다.");
 						}
 						else if (strState.equals("stop")) {
 							// 메인화면에 충전중 아이콘 삭제하고
-							drawMsg(strChargerNum , "충전이 종료되었습니다.");
+							drawMsg(strChargerNum+"번 충전기" , "충전이 종료되었습니다.");
 						}
 					}
 				}

+ 7 - 5
WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/screen/MAIN.java

@@ -1359,15 +1359,17 @@ public class MAIN extends WpadScreen {
                         Log.d(TAG, "[MainScreenBroadcastReceiver] (BR.nKind) NOTIFY_ALARM_CHANGE");
                         displayNotificatoinIcon();
                     }
-                    else if (nKind == define.NOTIFY_ALL_LIGHT_OFF) {
-                        // 일괄소등 설정 (조명 OFF)
+
+                    else if (nKind == 9888) {
+                        Log.d(TAG, "[MainScreenBroadcastReceiver] (BR.nKind) NOTIFY_ALL_LIGHT_OFF_BY_SMARTSWITCH");
+                        //스마트 스위치에 의한 일괄소등 설정 (조명 OFF)
                         for(int i=2; i<4; i++) {
                             requestMultiControl(Common.JSON.KIND.All, Common.JSON.REASON.Control, Common.JSON.POSITION.All, "all_execution_release", 0, 0, i);
                         }
-
                     }
-                    else if (nKind == define.NOTIFY_ALL_LIGHT_ON) {
-                        // 일괄소등 해제 (조명 ON)
+                    else if (nKind == 9777) {
+                        Log.d(TAG, "[MainScreenBroadcastReceiver] (BR.nKind) NOTIFY_ALL_LIGHT_ON_BY_SMARTSWITCH");
+                        //스마트 스위치에 의한 일괄소등 해제 (조명 ON)
                         for(int i=2; i<4; i++) {
                             requestMultiControl(Common.JSON.KIND.All, Common.JSON.REASON.Control, Common.JSON.POSITION.All, "all_execution_release", 0, 1, i);
                         }

+ 1 - 1
WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/util/iMapServer.java

@@ -13032,7 +13032,7 @@ public class iMapServer extends Service {
                         Log.d(TAG, "sendMsgToActivity!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11");
                     }
                     skipCount++;
-                    if(skipCount==6) skipCount = 0 ;
+                    if(skipCount==18) skipCount = 0 ;
                 }
                 try {
                     Thread.sleep(10000);

+ 14 - 8
WallPadMultiControlService/src/main/java/kr/co/icontrols/wallpadmulticontrolservice/DataSenderService.java

@@ -1876,16 +1876,21 @@ public class DataSenderService extends Service {
             }
             else if (menu == JSON.MENU.CONCENT) {
                 return updateConcent(kind, position);
-            } else if (menu == JSON.MENU.HEATING) {
+            }
+            else if (menu == JSON.MENU.HEATING) {
                 return updateHeating(kind, position);
-            } else if (menu == JSON.MENU.AIRCON) {
+            }
+            else if (menu == JSON.MENU.AIRCON) {
                 return updateKnxAircon(kind, position);
                 //return updateAircon(kind, position);
-            } else if (menu == JSON.MENU.VENTI) {
+            }
+            else if (menu == JSON.MENU.VENTI) {
                 return updateVenti(kind, position);
-            } else if (menu == JSON.MENU.GAS) {
+            }
+            else if (menu == JSON.MENU.GAS) {
                 return updateGas(kind, position);
-            } else if (menu == JSON.MENU.COOKTOP) {
+            }
+            else if (menu == JSON.MENU.COOKTOP) {
                 return updateCookTop(kind, position);
             }
         } catch (Exception e) {
@@ -1963,10 +1968,11 @@ public class DataSenderService extends Service {
             }
 
             String[] devlist;
-            if(nConcentEnable==1){
-                devlist = new String[]{"gas", "livinglight", "doorlock", "light", "ventil", "thermostat", "electric", "smartlight", "cooktop", "sysaircon"};
-            } else {
+
+            if(Gasinfo==1){
                 devlist = new String[]{"gas", "livinglight", "doorlock", "light", "ventil", "thermostat", "smartlight", "cooktop", "sysaircon"};
+            } else {
+                devlist = new String[]{"livinglight", "doorlock", "light", "ventil", "thermostat", "smartlight", "sysaircon"};
             }
 
             for (int i = 0; i < devlist.length; i++) {