Kaynağa Gözat

가스 관련 수정, 에너지 사용량 수정, 에어컨 수정, 방명칭 관련 수정

jslee(madeinlab) 3 yıl önce
ebeveyn
işleme
3f03fff84e
23 değiştirilmiş dosya ile 229 ekleme ve 142 silme
  1. 1 1
      WallPadDevService/src/main/AndroidManifest.xml
  2. 11 0
      WallPadDevService/src/main/java/com/artncore/wallpaddevservice/ServiceMain.java
  3. 1 1
      WallPadEnergyCtrl/src/main/AndroidManifest.xml
  4. 9 6
      WallPadEnergyCtrl/src/main/java/kr/co/icontrols/wallpadenergyctrl/imap/iMAPRemotemeter.java
  5. 22 11
      WallPadEnergyCtrl/src/main/java/kr/co/icontrols/wallpadenergyctrl/screen/VIPIcEnergyMgrScreen.java
  6. 1 1
      WallPadHomeCtrl/src/main/AndroidManifest.xml
  7. 3 1
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/MainActivity.java
  8. 39 36
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_aircon/KnxSystemAirconMainScreen.java
  9. 9 9
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_aircon/KnxSystemAirconPopupScreen.java
  10. 17 4
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_heating/HeatingV2MainScreen.java
  11. 9 9
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_heating/HeatingV2PopupScreen.java
  12. 28 7
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_light/LightKnxMainScreen.java
  13. 5 5
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_light/LightKnxPopupRoomScreen.java
  14. 6 6
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/HeatingV2PopupTestScreen.java
  15. 13 4
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/HeatingV2TestScreen.java
  16. 24 23
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/KnxSystemAirconMainTestScreen.java
  17. 6 6
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/KnxSystemAirconPopupTestScreen.java
  18. 15 5
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/LightKnxMainTestScreen.java
  19. 2 2
      WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/LightKnxPopupTestScreen.java
  20. 1 1
      WallPadMain/src/main/AndroidManifest.xml
  21. 4 2
      WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/util/IconManager.java
  22. 2 1
      WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/util/iMapServer.java
  23. 1 1
      WallPadMultiControlService/src/main/java/kr/co/icontrols/wallpadmulticontrolservice/DataSenderService.java

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

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.artncore.deviceservice"
     android:versionCode="1"
-    android:versionName="2022.04.11.04">
+    android:versionName="2022.04.13.01">
 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

+ 11 - 0
WallPadDevService/src/main/java/com/artncore/wallpaddevservice/ServiceMain.java

@@ -700,6 +700,11 @@ public class ServiceMain extends Service {
 					///////////////////////////////////////////
 					// CookTopFinder_Driver
 					///////////////////////////////////////////
+					// 0. 로딩여부 판단
+					WallpadDeviceSet devset = new WallpadDeviceSet(getApplicationContext());
+					int setdata = devset.Get_GAS_Info();
+					devset.closeDB();
+					if (setdata == WallpadDeviceSet.DO_NOT_USE) return;
 
 					// 1. Class 생성
 					cooktopfinder_Controller = new CookTopFinder_Controller();
@@ -740,6 +745,12 @@ public class ServiceMain extends Service {
 					// CookTop_Driver
 					///////////////////////////////////////////
 
+					// 0. 로딩여부 판단
+					WallpadDeviceSet devset = new WallpadDeviceSet(getApplicationContext());
+					boolean cookTopConcent = devset.Get_CookTopConcent_Use();
+					devset.closeDB();
+					if (!cookTopConcent) return;
+
 					// 0. 로딩여부 판단
 					// 1. Class 생성
 					cooktop_Controller = new Cooktop_Controller();

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

@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="kr.co.icontrols.wallpadenergyctrl"
     android:versionCode="01"
-    android:versionName="2022.04.12.01">
+    android:versionName="2022.04.20.01">
 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

+ 9 - 6
WallPadEnergyCtrl/src/main/java/kr/co/icontrols/wallpadenergyctrl/imap/iMAPRemotemeter.java

@@ -238,17 +238,19 @@ public class iMAPRemotemeter extends WallPadiMAPClient{
 
         return retXML;
     }
-    private String GetXMLGetRemoteMeterVIP_RealTime(boolean kepco, boolean eleccar, boolean photovoltaics, boolean fuelcell)
+    private String GetXMLGetRemoteMeterVIP_RealTime(boolean kepco, boolean eleccar1, boolean eleccar2, boolean photovoltaics, boolean fuelcell)
     {
         String retXML = null;
 
         String kepco_String = null;
-        String eleccar_String = null;
+        String eleccar1_String = null;
+        String eleccar2_String = null;
         String photovoltaics_String = null;
         String fuelcell_String = null;
 
         kepco_String = kepco==true?"yes":"no";
-        eleccar_String = eleccar==true?"yes":"no";
+        eleccar1_String = eleccar1==true?"yes":"no";
+        eleccar2_String = eleccar2==true?"yes":"no";
         photovoltaics_String = photovoltaics==true?"yes":"no";
         fuelcell_String = fuelcell==true?"yes":"no";
 
@@ -257,7 +259,8 @@ public class iMAPRemotemeter extends WallPadiMAPClient{
                 +" <kepco>\""+kepco_String+"\"</kepco>\r\n"
                 +" <photovoltaics>\""+photovoltaics_String+"\"</photovoltaics>\r\n"
                 +" <fuelcell>\""+fuelcell_String+"\"</fuelcell>\r\n"
-                +" <eleccar>\""+eleccar_String+"\"</eleccar>\r\n"+
+                +" <eleccar1>\""+eleccar1_String+"\"</eleccar1>\r\n"
+                +" <eleccar2>\""+eleccar2_String+"\"</eleccar2>\r\n"+
                 "   </service>\r\n</imap>";
 
         return retXML;
@@ -361,9 +364,9 @@ public class iMAPRemotemeter extends WallPadiMAPClient{
         SendXMLDoc(GetXMLGetRemoteMeterVIP(isDistinguishYear, kepco, eleccar1, eleccar2, photovoltaics, fuelcell, year, month), true);
     }
 
-    public void DoWDoWorkVIP_RealTime(boolean kepco, boolean eleccar, boolean photovoltaics, boolean fuelcell)
+    public void DoWDoWorkVIP_RealTime(boolean kepco, boolean eleccar1, boolean eleccar2, boolean photovoltaics, boolean fuelcell)
     {
         SetServerIPConfig(ServerIP, SvrPort);
-        SendXMLDoc(GetXMLGetRemoteMeterVIP_RealTime(kepco, eleccar, photovoltaics, fuelcell), true);
+        SendXMLDoc(GetXMLGetRemoteMeterVIP_RealTime(kepco, eleccar1, eleccar2, photovoltaics, fuelcell), true);
     }
 }

+ 22 - 11
WallPadEnergyCtrl/src/main/java/kr/co/icontrols/wallpadenergyctrl/screen/VIPIcEnergyMgrScreen.java

@@ -148,7 +148,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
     WpadImageView RealTimeData_bg2;
     WpadTextView RealTimeData; //실시간 사용량 데이터
     double RealTimeData_Double = 0;
-    double EnergyMax_Double = 100;
+    double EnergyMax_Double = 20;
     WpadTextView CalorieUnit1, CalorieUnit2; //난방 단위
     // WpadTextView RealtimeMeter_Marking1, RealtimeMeter_Marking2, RealtimeMeter_Marking3,
     //        RealtimeMeter_Marking4, RealtimeMeter_Marking5, RealtimeMeter_Marking6, RealtimeMeter_Marking7;
@@ -514,9 +514,16 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                     public void run() {
                         ShowRealTimeDataGraph_DayVersion();
                     }
-                }, 1000);
+                }, 700);
+
+                new Handler().postDelayed(new Runnable() {
+                    @Override
+                    public void run() {
+                        ShowDayGraph();
+                    }
+                }, 800);
+
 
-                ShowDayGraph();
             }
         }
 
@@ -1285,7 +1292,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                         NowShowEnergyKind = ID.IcEnergyMgrID.DataKind.KEPCO;
                         if (RealtimeMeterUse == false) {
                             // 실시간 검침 사용하지 않음
-                            EnergyMax_Double = 100;
+                            EnergyMax_Double = 20;
                             if (RealTimeData != null) RealTimeData.setText("0 kWh");
                         } else {
                             EnergyMax_Double = 3000;
@@ -1305,7 +1312,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
 
                         if (RealtimeMeterUse == false) {
                             // 실시간 검침 사용하지 않음
-                            EnergyMax_Double = 100;
+                            EnergyMax_Double = 20;
                             if (RealTimeData != null) RealTimeData.setText("0 kWh");
                         } else {
                             EnergyMax_Double = 3000;
@@ -1324,7 +1331,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
 
                         if (RealtimeMeterUse == false) {
                             // 실시간 검침 사용하지 않음
-                            EnergyMax_Double = 100;
+                            EnergyMax_Double = 1.2;
                             if (RealTimeData != null) RealTimeData.setText("0 kWh");
                         } else {
                             EnergyMax_Double = 3000;
@@ -1347,7 +1354,8 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                     RemoveUsedData();
                     ShowUsedDataGraph();
                 } else {
-                    ShowUsedDataGraph_DayVersion();
+                    ShowRealTimeDataGraph_DayVersion();
+                    //ShowUsedDataGraph_DayVersion();
                     ShowDayGraph();
                 }
             }
@@ -1509,18 +1517,21 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
                 switch (NowShowEnergyKind) {
                     case ID.IcEnergyMgrID.DataKind.KEPCO:
                         //Draw_TextValueWrite(ID.IcEnergyMgrID.DataKind.KEPCO, arrayListDayEnergyData.get(arrayListDayEnergyData.size() - 1).getKepco_used());
-                        Draw_TextValueWrite(ID.IcEnergyMgrID.DataKind.KEPCO, realTimeEnergyData.getKepco_used());
+                        if(realTimeEnergyData!=null)
+                            Draw_TextValueWrite(ID.IcEnergyMgrID.DataKind.KEPCO, realTimeEnergyData.getKepco_used());
                         break;
 
                     case ID.IcEnergyMgrID.DataKind.SOLAR:
                         //Draw_TextValueWrite(ID.IcEnergyMgrID.DataKind.SOLAR, arrayListDayEnergyData.get(arrayListDayEnergyData.size() - 1).getSolar_used());
-                        Draw_TextValueWrite(ID.IcEnergyMgrID.DataKind.KEPCO, realTimeEnergyData.getSolar_used());
+                        if(realTimeEnergyData!=null)
+                            Draw_TextValueWrite(ID.IcEnergyMgrID.DataKind.KEPCO, realTimeEnergyData.getSolar_used());
                         CircleGraph.setImageResource(CircleGraph_bg[0]);
                         break;
 
                     case ID.IcEnergyMgrID.DataKind.FUEL:
                         //Draw_TextValueWrite(ID.IcEnergyMgrID.DataKind.FUEL, arrayListDayEnergyData.get(arrayListDayEnergyData.size() - 1).getFuel_used());
-                        Draw_TextValueWrite(ID.IcEnergyMgrID.DataKind.KEPCO, realTimeEnergyData.getFuel_used());
+                        if(realTimeEnergyData!=null)
+                            Draw_TextValueWrite(ID.IcEnergyMgrID.DataKind.KEPCO, realTimeEnergyData.getFuel_used());
                         break;
 
                     default:
@@ -3079,7 +3090,7 @@ public class VIPIcEnergyMgrScreen extends WpadScreen {
 
                 case 2: //Real Time
                     //imapRemotemeter.DoWork(false, true, true, true, true, true, false, false, year, month);
-                    imapRemotemeter.DoWDoWorkVIP_RealTime(false, false, true, true);
+                    imapRemotemeter.DoWDoWorkVIP_RealTime(false, false, false, true, true);
                     break;
 
                 default:

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

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

+ 3 - 1
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/MainActivity.java

@@ -2339,7 +2339,9 @@ public class MainActivity extends WpadActivity {
 			int[] nDoorlockType = mWallpadDeviceSet.Get_DoorLock_Info();
 			int[] nVentilType = mWallpadDeviceSet.Get_Ventil_Info();
 			int nHeatingUsage = mWallpadDeviceSet.Get_Temper_Info();
-			int nGasValveUsage = mWallpadDeviceSet.Get_GAS_Info();
+			//가스는 설정과 관계없이 true
+			//int nGasValveUsage = mWallpadDeviceSet.Get_GAS_Info();
+			int nGasValveUsage = WallpadDeviceSet.DO_USE;
 			boolean bElecCooktopUsage = mWallpadDeviceSet.Get_ElectricRange_Use();
 			boolean bCooktopOutletUsage = mWallpadDeviceSet.Get_CookTopConcent_Use();
 			int nSystemAirconUsage = mWallpadDeviceSet.Get_AirCON_Info();

+ 39 - 36
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_aircon/KnxSystemAirconMainScreen.java

@@ -4,6 +4,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.graphics.Color;
 import android.os.SystemClock;
+import android.text.TextUtils;
 import android.util.Log;
 import android.util.TypedValue;
 import android.view.Gravity;
@@ -62,8 +63,8 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
 //    private WpadImageView MediumVolumeBtn;
 //    private WpadImageView StrongVolumeBtn;
     private WpadImageView AllRoomBG;
-    private WpadImageView LouverTitle;
-    private WpadImageView LouverMode;
+    //private WpadImageView LouverTitle;
+    //private WpadImageView LouverMode;
 
     // [Button]
     private WpadImageView LeftMoveBtn;
@@ -81,7 +82,7 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
     // [Variables]
     private int OPERATION_MODE = -1;                    // 동작모드
     private Data mData = null;                          // 데이터
-    private DataLouver mDataLouver = null;                          // 데이터
+    //private DataLouver mDataLouver = null;                          // 데이터
     private String[] mRoomNameList = null;             // 각방 명칭
 
     private int AirconCount = 0;
@@ -187,7 +188,7 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
             ViewRegistration(getLayout(), TitleBtn, Common.ImgPosion.GetX(left + 10), Common.ImgPosion.GetY(top + 10));
             TitleBtn.setTouchDelayMs(Common.BTN_DELAY_SHOWPOPUP);
 
-            int[] mTitleFontSize = {Common.fontsize._30, Common.fontsize._44};
+            int[] mTitleFontSize = {28, Common.fontsize._44};
             TitleText = new WpadTextView(getContext(), false, mTitleSize[UX_MODE][0], mTitleSize[UX_MODE][1], Gravity.CENTER, Color.BLACK, mTitleFontSize[UX_MODE], true, ID.KnxSystemAirconMain.text.ROOM_TITLE_1 + index);
             //ViewRegistration(getLayout(), TitleText, left+10, top+10);
             ViewRegistration(getLayout(), TitleText, Common.ImgPosion.GetX(left + 10), Common.ImgPosion.GetY(top + 10) - UX_MODE * 2);
@@ -253,7 +254,7 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
 
     // [API]
     private KnxSystemAirconAPI airconAPI;       // 난방 API
-    private LouverAPI louverAPI = null;          // 루버 API
+    //private LouverAPI louverAPI = null;          // 루버 API
     private byte [] mDriveModeByte = new byte [] {KnxSystemAircon.ONOFF.NoInfo, KnxSystemAircon.ONOFF.AirconON, KnxSystemAircon.ONOFF.AirconOFF, KnxSystemAircon.MODE.Auto, KnxSystemAircon.MODE.Cold, KnxSystemAircon.MODE.Dry, KnxSystemAircon.MODE.Venti, KnxSystemAircon.MODE.Heat};
     private byte [] mDriveVolumeByte = new byte [] {KnxSystemAircon.VOLUME.Weak, KnxSystemAircon.VOLUME.Medium, KnxSystemAircon.VOLUME.Strong};
     //
@@ -303,7 +304,7 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
         else mRoomNameList = roomNameList;
 
         mData = new Data();
-        mDataLouver = new DataLouver();
+        //mDataLouver = new DataLouver();
         inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 
         // 2. Device API Load & Update
@@ -384,11 +385,12 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
         AutoVolumeBtn = new WpadImageView(getContext(), WpadImageView.TOUCH_KIND.BUTTON, 103, 100, R.drawable.btn_wind_4_normal, R.drawable.btn_wind_4_pressed, ID.KnxSystemAirconMain.button.AUTO_VOLUME);
         ViewRegistration(getLayout(), AutoVolumeBtn, Common.ImgPosion.GetX(1097), Common.ImgPosion.GetY(603 - yMarginWithPage));
 */
+/*루버 제거
         LouverTitle = new WpadImageView(getContext(), WpadImageView.TOUCH_KIND.NONE, 103, 70, R.drawable.louver_title_1, R.drawable.louver_title_1, ID.KnxSystemAirconMain.button.LOUVER_TITLE);
         ViewRegistration(getLayout(), LouverTitle, Common.ImgPosion.GetX(990), Common.ImgPosion.GetY(722 - yMarginWithPage));
         LouverMode = new WpadImageView(getContext(), WpadImageView.TOUCH_KIND.BUTTON, 103, 70, R.drawable.louver_airc_status_2, R.drawable.louver_airc_status_2, ID.KnxSystemAirconMain.button.LOUVER_MODE);
         ViewRegistration(getLayout(), LouverMode, Common.ImgPosion.GetX(1097), Common.ImgPosion.GetY(722 - yMarginWithPage));
-
+*/
         // 4. Button Create
         DebugLogOutput("[Create] - Step4 : Room & Button Create");
         AirconCount = info.InsideAirconCount;
@@ -429,16 +431,17 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
                     if (MainActivity.getHideMenuOn())
                         transactionDisplay = new TransactionDisplay(true, (WallPadDevAPI) airconAPI, (WpadScreen) this);
                 }
+                /*
                 if (louverAPI != null) {
-                    /*
+
                     Device_BrRegistration_Louver(true);
                     Draw_Update(INDEX_LOUVER);
 
                     if (MainActivity.getHideMenuOn())
                         transactionDisplay = new TransactionDisplay(true, (WallPadDevAPI) airconAPI, (WpadScreen) this);
-
-                     */
                 }
+
+                 */
             } else {
                 Draw_Update(Common.INDEX_ALL);
             }
@@ -500,6 +503,7 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
      *
      * @return (int) - >=0 : 성공, <0 : 실패
      */
+    /*
     private int Device_BrRegistration_Louver(boolean OnOff) {
         DebugLogOutput("[Device_BrRegistration_Louver] - Start (OnOff:" + OnOff + ")");
 
@@ -539,6 +543,7 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
 
         return 0;
     }
+     */
 
     /**
      * 부모 Activity 에서 BroadcastReceiver 을 수신받을시 호출됨
@@ -900,20 +905,21 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
             switch (info.AirconStatus) {
                 case 0:
                     //msg = "(정보없음 or 열교환기 응답 없음)";
-                    msg = "(0)";
+                    msg = "\n(실외기 정보 수신 대기중 - 0)";
                     break;
 
                 case 1:
                     //msg = "(실외기 수는 받았으나, 실내기 수 미수신 상태)";
-                    msg = "(1)";
+                    msg = "\n(실내기 개수 정보 수신 대기중 - 1)";
                     break;
 
                 case 2:
                     //msg = "(실내기 수는 받았으나, 전체방 모니터링 정보 미수신 상태)";
-                    msg = "(2)";
+                    msg = "\n(실내기 상태 정보 수신 대기중 - 2)";
                     break;
 
                 default:
+                    msg = "\n(알수 없음)";
                     break;
             }
             AlarmText.setText("에어컨 연동 준비중입니다. 잠시후 다시 시도해주세요." + msg);
@@ -940,14 +946,15 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
                     Draw_VolumeChange(i, (byte) roomData.Volume); // 풍량 표시
                     Draw_NowTempChange(i, roomData.NowTemp); // 현재온도 표시
                     Draw_SetTempChange(i, roomData.SetTemp); // 설정온도 표시
-                    if(roomData.OnOff== KnxSystemAircon.ONOFF.AirconON)
-                        onAirconCount++;
-                    if(i==0){
-                        savedMode = (byte)roomData.Mode;            //모드 저장
-                    }
                 }
             }
 
+            // 전체제어 영역 상태 갱신을 위해
+            for (int i = 0; i < info.InsideAirconCount; i++) {
+                if (mData.systemAircon.Device.Aircon[i].OnOff == KnxSystemAircon.ONOFF.AirconON) onAirconCount++;
+                if (i==0) savedMode = (byte) mData.systemAircon.Device.Aircon[i].Mode;
+            }
+
             if(onAirconCount>0){
                 bCurrentAllOnOff = true;
                 onAirconCount = 0;
@@ -989,20 +996,21 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
                 switch (info.AirconStatus) {
                     case 0:
                         //msg = "(정보없음 or 열교환기 응답 없음)";
-                        msg = "(0)";
+                        msg = "\n(실외기 정보 수신 대기중 - 0)";
                         break;
 
                     case 1:
                         //msg = "(실외기 수는 받았으나, 실내기 수 미수신 상태)";
-                        msg = "(1)";
+                        msg = "\n(실내기 개수 정보 수신 대기중 - 1)";
                         break;
 
                     case 2:
                         //msg = "(실내기 수는 받았으나, 전체방 모니터링 정보 미수신 상태)";
-                        msg = "(2)";
+                        msg = "\n(실내기 상태 정보 수신 대기중 - 2)";
                         break;
 
                     default:
+                        msg = "\n(알수 없음)";
                         break;
                 }
                 AlarmText.setText("에어컨 연동 준비중입니다. 잠시후 다시 시도해주세요." + msg);
@@ -1220,6 +1228,7 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
      *
      * @param status  - (byte) 변경할 운전모드 ( 0 : OFF, 1 : ON )
      */
+    /*
     private void Draw_LouverStatusChange(byte status) {
         if (status== LouverAPI.LOUVERSTATUS.Close) {
             LouverMode.setImageResource(R.drawable.louver_airc_status_2);
@@ -1233,6 +1242,8 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
         }
     }
 
+     */
+
     /**
      * {@link #roomView} 에 대한 기본적인 범위체크를 한다.
      *
@@ -1259,12 +1270,6 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
     {
         if(!Draw_RangeChecker(index)) return;
         roomView[index].TitleText.setText(value);
-        roomView[index].TitleText.setTextSize(0, Common.fontsize._30);
-        if(value.length() == 6)
-        {
-            roomView[index].TitleText.setTextSize(0, Common.fontsize._26_DEFAULT);
-        }
-
     }
 
     // =================================================================================================
@@ -1309,6 +1314,7 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
 
         DebugLogOutput("[Device_ApiLoad] - Step1 : Louver API Load...");
         //Louver 가 에러인 경우엔, return error를 하지 않고 에러를 이미지를 표시해준다.
+        /*
         try
         {
             louverAPI = wpapi.Get_LouverController();
@@ -1328,6 +1334,8 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
             LouverMode.setImageResource(R.drawable.louver_airc_status_1);
         }
 
+         */
+
         DebugLogOutput("[Device_ApiLoad] - OK");
 
         return 0;
@@ -1384,8 +1392,9 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
             // 4. Data Copy
             mData.systemAircon = airconAPI.data;
             // 2. Reflash
+             /*
             if (louverAPI != null) {
-                /*
+
                 try {
 
                     int ret = (byte) louverAPI.Refresh(real);
@@ -1402,9 +1411,9 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
                     e.printStackTrace();
                     //return -100;
                 }
-
-                 */
             }
+
+              */
         } else {
             // 2. Reflash
             /*
@@ -1435,12 +1444,6 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
             DebugLogOutput("---------------------------------------");
             DebugLogOutput("[Device_Update]");
             DebugLogOutput("---------------------------------------");
-
-            if(Index == INDEX_LOUVER)
-            {
-                DebugLogOutput(mDataLouver.louver.ToDebugString());
-            }
-            DebugLogOutput("---------------------------------------");
         }
         DebugLogOutput("[Device_Update] - OK");
 

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

@@ -217,18 +217,18 @@ public class KnxSystemAirconPopupScreen extends WpadScreen {
         ExitBtn = new WpadImageView(context, WpadImageView.TOUCH_KIND.BUTTON, 80, 80, R.drawable.but_close, R.drawable.but_close_p, ID.KNxSystemAirconPopup.button.EXIT);
         ViewRegistration(layout, ExitBtn, Common.PopupNomalMarginLEFT(1050), Common.PopupNomalMarginTOP(70));
 
-        RoomPrevBtn = new WpadImageView(context, WpadImageView.TOUCH_KIND.BUTTON, 110, 90, R.drawable.top_but_back, R.drawable.top_but_back_p, ID.KNxSystemAirconPopup.button.ROOM_PREV);
-        ViewRegistration(layout, RoomPrevBtn, Common.PopupNomalMarginLEFT(400), 0);
+        RoomPrevBtn = new WpadImageView(context, WpadImageView.TOUCH_KIND.BUTTON, 80, 90, R.drawable.top_but_back, R.drawable.top_but_back_p, ID.KNxSystemAirconPopup.button.ROOM_PREV);
+        ViewRegistration(layout, RoomPrevBtn, Common.PopupNomalMarginLEFT(358), 0);
         RoomPrevBtn.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL);
 
-        RoomNextBtn = new WpadImageView(context, WpadImageView.TOUCH_KIND.BUTTON, 110, 90, R.drawable.top_but_next, R.drawable.top_but_next_p, ID.KNxSystemAirconPopup.button.ROOM_NEXT);
-        ViewRegistration(layout, RoomNextBtn, Common.PopupNomalMarginLEFT(740), 0);
+        RoomNextBtn = new WpadImageView(context, WpadImageView.TOUCH_KIND.BUTTON, 80, 90, R.drawable.top_but_next, R.drawable.top_but_next_p, ID.KNxSystemAirconPopup.button.ROOM_NEXT);
+        ViewRegistration(layout, RoomNextBtn, Common.PopupNomalMarginLEFT(787), 0);
         RoomNextBtn.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL);
 
         KnxSystemAircon.Info info = mData.airconData.Device.info;
 
-        TitleText = new WpadTextView(context, false, 203, 66, Gravity.CENTER, Color.WHITE, Common.fontsize._32_POPUP_TITLE, true, ID.KNxSystemAirconPopup.text.TITLE);
-        ViewRegistration(getLayout(), TitleText, Common.PopupNomalMarginLEFT(510), Common.PopupNomalMarginTOP(75));
+        TitleText = new WpadTextView(context, false, 322, 66, Gravity.CENTER, Color.WHITE, Common.fontsize._32_POPUP_TITLE, true, ID.KNxSystemAirconPopup.text.TITLE);
+        ViewRegistration(getLayout(), TitleText, Common.PopupNomalMarginLEFT(450), Common.PopupNomalMarginTOP(75));
 
         OnOffBtn = new WpadImageView(getContext(), WpadImageView.TOUCH_KIND.BUTTON, 140, 100,
                 new int[]{R.drawable.btn_heat_onoff_off, R.drawable.btn_heat_onoff_off},
@@ -283,15 +283,15 @@ public class KnxSystemAirconPopupScreen extends WpadScreen {
 
         if (MainActivity.bRoomNameEditUse) {
             nameEditText = new EditText(context);
-            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(WpadScale.getWidth(282), WpadScale.getHeight(59));
-            params.setMargins(WpadScale.getWidth(Common.PopupNomalMarginLEFT(482)), WpadScale.getHeight(Common.PopupNomalMarginTOP(79)), 0, 0);
+            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(WpadScale.getWidth(322), WpadScale.getHeight(59));
+            params.setMargins(WpadScale.getWidth(Common.PopupNomalMarginLEFT(450)), WpadScale.getHeight(Common.PopupNomalMarginTOP(79)), 0, 0);
             nameEditText.setLayoutParams(params);
             nameEditText.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER);
             nameEditText.setTextSize(TypedValue.COMPLEX_UNIT_PX, (float) Common.fontsize._26_DEFAULT);
             nameEditText.setTextColor(Color.BLACK);
             nameEditText.setSingleLine(true);
 
-            int maxLength = 6;
+            int maxLength = 10;
             InputFilter[] filterArray = new InputFilter[1];
             filterArray[0] = new InputFilter.LengthFilter(maxLength);
             nameEditText.setFilters(filterArray);

+ 17 - 4
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_heating/HeatingV2MainScreen.java

@@ -13,6 +13,7 @@ import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.Color;
+import android.text.TextUtils;
 import android.util.Log;
 import android.util.TypedValue;
 import android.view.Gravity;
@@ -257,6 +258,7 @@ public class HeatingV2MainScreen extends WpadScreen {
                 BTN_TITLE.setVisibility(View.VISIBLE);
                 BTN_ONOFF.setVisibility(View.VISIBLE);
                 TXT_TITLE.setVisibility(View.VISIBLE);
+                TXT_TITLE.setSelected(true);
                 TXT_MODE.setVisibility(View.VISIBLE);
                 TXT_TEMPER_CURRENT.setVisibility(View.VISIBLE);
                 TXT_TEMPER_SET.setVisibility(View.VISIBLE);
@@ -1122,14 +1124,25 @@ public class HeatingV2MainScreen extends WpadScreen {
      * @param index - (int) 변경할 룸의 인덱스
      * param TitleStr - (String) 변경할 명칭
      */
-    private void drawRoomTitle(int index, String value) {
+    private void drawRoomTitle(final int index, String value) {
         if(!checkRoomIndex(index)) return;
         roomView[index].TXT_TITLE.setText(value);
         roomView[index].TXT_TITLE.setTextSize(0, Common.fontsize._30);
-        if(value.length() == 6)
-        {
-            roomView[index].TXT_TITLE.setTextSize(0, Common.fontsize._26_DEFAULT);
+        if (value.length() >= 6) {
+            roomView[index].TXT_TITLE.setSingleLine();
+            roomView[index].TXT_TITLE.setEllipsize(TextUtils.TruncateAt.MARQUEE); // 흐르게 만들기
+            roomView[index].TXT_TITLE.setMarqueeRepeatLimit(-1);
+            roomView[index].TXT_TITLE.post(new Runnable() {
+                @Override
+                public void run() {
+                    roomView[index].TXT_TITLE.setSelected(true);
+                }
+            });
         }
+        //if(value.length() == 6)
+        //{
+        //    roomView[index].TXT_TITLE.setTextSize(0, Common.fontsize._26_DEFAULT);
+        //}
     }
 
     /**

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

@@ -337,12 +337,12 @@ public class HeatingV2PopupScreen extends WpadScreen {
 
         ExitBtn = new WpadImageView(context, TOUCH_KIND.BUTTON, 80, 80, R.drawable.topbar_icon_close_normal, R.drawable.topbar_icon_close_pressed, ID.heatingV2Popup.button.EXIT);
         ViewRegistration(layout, ExitBtn, Common.PopupNomalMarginLEFT(1048), Common.PopupNomalMarginTOP(67));
-        RoomSel_LeftBtn = new WpadImageView(context, TOUCH_KIND.BUTTON, 110, 90, R.drawable.top_but_back, R.drawable.top_but_back_p, ID.heatingV2Popup.button.ROOMSEL_LEFT);
-        ViewRegistration(layout, RoomSel_LeftBtn, Common.PopupNomalMarginLEFT(384), Common.PopupNomalMarginTOP(62));
+        RoomSel_LeftBtn = new WpadImageView(context, TOUCH_KIND.BUTTON, 80, 90, R.drawable.top_but_back, R.drawable.top_but_back_p, ID.heatingV2Popup.button.ROOMSEL_LEFT);
+        ViewRegistration(layout, RoomSel_LeftBtn, Common.PopupNomalMarginLEFT(358), Common.PopupNomalMarginTOP(62));
         RoomSel_LeftBtn.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL);
 
-        RoomSel_RightBtn = new WpadImageView(context, TOUCH_KIND.BUTTON, 110, 90, R.drawable.top_but_next, R.drawable.top_but_next_p, ID.heatingV2Popup.button.ROOMSEL_RIGHT);
-        ViewRegistration(layout, RoomSel_RightBtn, Common.PopupNomalMarginLEFT(758), Common.PopupNomalMarginTOP(62));
+        RoomSel_RightBtn = new WpadImageView(context, TOUCH_KIND.BUTTON, 80, 90, R.drawable.top_but_next, R.drawable.top_but_next_p, ID.heatingV2Popup.button.ROOMSEL_RIGHT);
+        ViewRegistration(layout, RoomSel_RightBtn, Common.PopupNomalMarginLEFT(787), Common.PopupNomalMarginTOP(62));
         RoomSel_RightBtn.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL);
 
         m_Manual = new WpadImageView(context, TOUCH_KIND.BUTTON, 78, 78, R.drawable.topbar_icon_manual_normal, R.drawable.topbar_icon_manual_pressed, ID.heatingV2Popup.button.MANUAL);
@@ -351,15 +351,15 @@ public class HeatingV2PopupScreen extends WpadScreen {
 
         if (MainActivity.bRoomNameEditUse) {
             nameEditText = new EditText(context);
-            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(WpadScale.getWidth(282), WpadScale.getHeight(59));
-            params.setMargins(WpadScale.getWidth(Common.PopupNomalMarginLEFT(482)), WpadScale.getHeight(Common.PopupNomalMarginTOP(79)), 0, 0);
+            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(WpadScale.getWidth(322), WpadScale.getHeight(59));
+            params.setMargins(WpadScale.getWidth(Common.PopupNomalMarginLEFT(450)), WpadScale.getHeight(Common.PopupNomalMarginTOP(79)), 0, 0);
             nameEditText.setLayoutParams(params);
             nameEditText.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER);
             nameEditText.setTextSize(TypedValue.COMPLEX_UNIT_PX, (float) Common.fontsize._26_DEFAULT);
             nameEditText.setTextColor(Color.BLACK);
             nameEditText.setSingleLine(true);
 
-            int maxLength = 6;
+            int maxLength = 10;
             InputFilter[] filterArray = new InputFilter[1];
             filterArray[0] = new InputFilter.LengthFilter(maxLength);
             nameEditText.setFilters(filterArray);
@@ -424,8 +424,8 @@ public class HeatingV2PopupScreen extends WpadScreen {
             ReserveUse = "Reserve:0";
         }
 
-        TitleText = new WpadTextView(context, false, 264, 90, Gravity.CENTER, Color.WHITE, Common.fontsize._46, true, ID.heatingV2Popup.text.TITLE);
-        ViewRegistration(layout, TitleText, Common.PopupNomalMarginLEFT(494), Common.PopupNomalMarginTOP(62));
+        TitleText = new WpadTextView(context, false, 322, 90, Gravity.CENTER, Color.WHITE, 32, true, ID.heatingV2Popup.text.TITLE);
+        ViewRegistration(layout, TitleText, Common.PopupNomalMarginLEFT(450), Common.PopupNomalMarginTOP(62));
 
 
         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////

+ 28 - 7
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_light/LightKnxMainScreen.java

@@ -4,6 +4,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.graphics.Color;
 import android.os.SystemClock;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.Gravity;
 import android.view.MotionEvent;
@@ -240,17 +241,26 @@ public class LightKnxMainScreen extends WpadScreen {
             ViewRegistration(getLayout(), RoomBackground, Common.ImgPosion.GetX(left), Common.ImgPosion.GetY(top));
 
             // 방 이름 버튼
-            RoomTitleBg = new WpadImageView(getContext(), WpadImageView.TOUCH_KIND.BUTTON, 221, 56, R.drawable.knx_btn_room_normal, R.drawable.knx_btn_room_pressed, ID.KnxLight.button.Room_TITLE_1 + seq);
+            RoomTitleBg = new WpadImageView(getContext(), WpadImageView.TOUCH_KIND.BUTTON, 221, 56, R.drawable.btn_room_name_normal, R.drawable.btn_room_name_pressed, ID.KnxLight.button.Room_TITLE_1 + seq);
             ViewRegistration(getLayout(), RoomTitleBg, Common.ImgPosion.GetX(left + 10), Common.ImgPosion.GetY(top + 10));
 
             // 방 이름 텍스트
             RoomTitleText = new WpadTextView(getContext(), false, 221, 56, Gravity.CENTER, Color.BLACK, Common.fontsize._30, true, ID.KnxLight.text.Room_TITLE_1 + seq);
             ViewRegistration(getLayout(), RoomTitleText, Common.ImgPosion.GetX(left + 10), Common.ImgPosion.GetY(top + 10));
+            RoomTitleText.setText(roomName);
             RoomTitleText.setTextSize(0, Common.fontsize._30);
-            if (roomName.length() == 6) {
-                RoomTitleText.setTextSize(0, Common.fontsize._26_DEFAULT);
+            if (roomName.length() >= 6) {
+                //RoomTitleText.setTextSize(0, Common.fontsize._26_DEFAULT);
+                RoomTitleText.setSingleLine();
+                RoomTitleText.setEllipsize(TextUtils.TruncateAt.MARQUEE); // 흐르게 만들기
+                RoomTitleText.setMarqueeRepeatLimit(100);
+                RoomTitleText.post(new Runnable() {
+                    @Override
+                    public void run() {
+                        RoomTitleText.setSelected(true);
+                    }
+                });     // 선택하기
             }
-            RoomTitleText.setText(roomName);
 
             OnOffBtn = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 120, 120, mOffImg[type], mOnImg[type], ID.KnxLight.button.Light_Btn_1 + index);
             ViewRegistration(getLayout(), OnOffBtn, Common.ImgPosion.GetX(left + 63), Common.ImgPosion.GetY(top + 108));
@@ -506,13 +516,24 @@ public class LightKnxMainScreen extends WpadScreen {
      * @param index - (int) 변경할 룸의 인덱스
      *              param TitleStr - (String) 변경할 명칭
      */
-    private void drawRoomTitle(int index, String value) {
+    private void drawRoomTitle(final int index, String value) {
         if (!checkRoomIndex(index)) return;
         lightRooms[index].RoomTitleText.setText(value);
         lightRooms[index].RoomTitleText.setTextSize(0, Common.fontsize._30);
-        if (value.length() == 6) {
-            lightRooms[index].RoomTitleText.setTextSize(0, Common.fontsize._26_DEFAULT);
+        if (value.length() >= 6) {
+            lightRooms[index].RoomTitleText.setSingleLine();
+            lightRooms[index].RoomTitleText.setEllipsize(TextUtils.TruncateAt.MARQUEE); // 흐르게 만들기
+            lightRooms[index].RoomTitleText.setMarqueeRepeatLimit(100);
+            lightRooms[index].RoomTitleText.post(new Runnable() {
+                @Override
+                public void run() {
+                    lightRooms[index].RoomTitleText.setSelected(true);
+                }
+            });
         }
+        //if (value.length() == 6) {
+        //    lightRooms[index].RoomTitleText.setTextSize(0, Common.fontsize._26_DEFAULT);
+        //}
     }
 
     /**

+ 5 - 5
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_light/LightKnxPopupRoomScreen.java

@@ -337,20 +337,20 @@ public class LightKnxPopupRoomScreen extends WpadScreen {
 
         // 5. Text Create
         DebugLogOutput("[Create] - Step5 : Text Create");
-        TitleText = new WpadTextView(context, false, 322, 90, Gravity.CENTER, Color.WHITE, Common.fontsize._36, true, ID.lightKnxPopupRoom.text.TITLE);
-        ViewRegistration(getLayout(), TitleText, Common.PopupNomalMarginLEFT(465), Common.PopupNomalMarginTOP(62));
+        TitleText = new WpadTextView(context, false, 322, 90, Gravity.CENTER, Color.WHITE, 32, true, ID.lightKnxPopupRoom.text.TITLE);
+        ViewRegistration(getLayout(), TitleText, Common.PopupNomalMarginLEFT(450), Common.PopupNomalMarginTOP(62));
 
         if (MainActivity.bRoomNameEditUse) {
             nameEditText = new EditText(context);
-            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(WpadScale.getWidth(282), WpadScale.getHeight(59));
-            params.setMargins(WpadScale.getWidth(Common.PopupNomalMarginLEFT(482)), WpadScale.getHeight(Common.PopupNomalMarginTOP(79)), 0, 0);
+            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(WpadScale.getWidth(322), WpadScale.getHeight(59));
+            params.setMargins(WpadScale.getWidth(Common.PopupNomalMarginLEFT(450)), WpadScale.getHeight(Common.PopupNomalMarginTOP(79)), 0, 0);
             nameEditText.setLayoutParams(params);
             nameEditText.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER);
             nameEditText.setTextSize(TypedValue.COMPLEX_UNIT_PX, (float) Common.fontsize._26_DEFAULT);
             nameEditText.setTextColor(Color.BLACK);
             nameEditText.setSingleLine(true);
 
-            int maxLength = 6;
+            int maxLength = 10;
             InputFilter[] filterArray = new InputFilter[1];
             filterArray[0] = new InputFilter.LengthFilter(maxLength);
             nameEditText.setFilters(filterArray);

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

@@ -463,12 +463,12 @@ public class HeatingV2PopupTestScreen extends WpadScreen {
 
         ExitBtn = new WpadImageView(context, TOUCH_KIND.BUTTON, 80, 80, R.drawable.topbar_icon_close_normal, R.drawable.topbar_icon_close_pressed, ID.heatingV2Popup.button.EXIT);
         ViewRegistration(layout, ExitBtn, Common.PopupNomalMarginLEFT(1048), Common.PopupNomalMarginTOP(67));
-        RoomSel_LeftBtn = new WpadImageView(context, TOUCH_KIND.BUTTON, 110, 90, R.drawable.top_but_back, R.drawable.top_but_back_p, ID.heatingV2Popup.button.ROOMSEL_LEFT);
-        ViewRegistration(layout, RoomSel_LeftBtn, Common.PopupNomalMarginLEFT(384), Common.PopupNomalMarginTOP(62));
+        RoomSel_LeftBtn = new WpadImageView(context, TOUCH_KIND.BUTTON, 80, 90, R.drawable.top_but_back, R.drawable.top_but_back_p, ID.heatingV2Popup.button.ROOMSEL_LEFT);
+        ViewRegistration(layout, RoomSel_LeftBtn, Common.PopupNomalMarginLEFT(358), Common.PopupNomalMarginTOP(62));
         RoomSel_LeftBtn.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL);
 
-        RoomSel_RightBtn = new WpadImageView(context, TOUCH_KIND.BUTTON, 110, 90, R.drawable.top_but_next, R.drawable.top_but_next_p, ID.heatingV2Popup.button.ROOMSEL_RIGHT);
-        ViewRegistration(layout, RoomSel_RightBtn, Common.PopupNomalMarginLEFT(758), Common.PopupNomalMarginTOP(62));
+        RoomSel_RightBtn = new WpadImageView(context, TOUCH_KIND.BUTTON, 80, 90, R.drawable.top_but_next, R.drawable.top_but_next_p, ID.heatingV2Popup.button.ROOMSEL_RIGHT);
+        ViewRegistration(layout, RoomSel_RightBtn, Common.PopupNomalMarginLEFT(787), Common.PopupNomalMarginTOP(62));
         RoomSel_RightBtn.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL);
 
         m_Manual = new WpadImageView(context, TOUCH_KIND.BUTTON, 78, 78, R.drawable.topbar_icon_manual_normal, R.drawable.topbar_icon_manual_pressed, ID.heatingV2Popup.button.MANUAL);
@@ -525,8 +525,8 @@ public class HeatingV2PopupTestScreen extends WpadScreen {
             ReserveUse = "Reserve:0";
         }
 
-        TitleText = new WpadTextView(context, false, 264, 90, Gravity.CENTER, Color.WHITE, Common.fontsize._46, true, ID.heatingV2Popup.text.TITLE);
-        ViewRegistration(layout, TitleText, Common.PopupNomalMarginLEFT(494), Common.PopupNomalMarginTOP(62));
+        TitleText = new WpadTextView(context, false, 322, 90, Gravity.CENTER, Color.WHITE, Common.fontsize._32_POPUP_TITLE, true, ID.heatingV2Popup.text.TITLE);
+        ViewRegistration(layout, TitleText, Common.PopupNomalMarginLEFT(450), Common.PopupNomalMarginTOP(62));
 
 
         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////

+ 13 - 4
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/HeatingV2TestScreen.java

@@ -16,6 +16,7 @@ import android.graphics.Color;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.text.TextUtils;
 import android.util.Log;
 import android.util.TypedValue;
 import android.view.Gravity;
@@ -252,6 +253,7 @@ public class HeatingV2TestScreen extends WpadScreen {
                 BTN_TITLE.setVisibility(View.VISIBLE);
                 BTN_ONOFF.setVisibility(View.VISIBLE);
                 TXT_TITLE.setVisibility(View.VISIBLE);
+                TXT_TITLE.setSelected(true);
                 TXT_MODE.setVisibility(View.VISIBLE);
                 TXT_TEMPER_CURRENT.setVisibility(View.VISIBLE);
                 TXT_TEMPER_SET.setVisibility(View.VISIBLE);
@@ -988,13 +990,20 @@ public class HeatingV2TestScreen extends WpadScreen {
      * @param index - (int) 변경할 룸의 인덱스
      * param TitleStr - (String) 변경할 명칭
      */
-    private void drawRoomTitle(int index, String value) {
+    private void drawRoomTitle(final int index, String value) {
         if(!checkRoomIndex(index)) return;
         roomView[index].TXT_TITLE.setText(value);
         roomView[index].TXT_TITLE.setTextSize(0, Common.fontsize._30);
-        if(value.length() == 6)
-        {
-            roomView[index].TXT_TITLE.setTextSize(0, Common.fontsize._26_DEFAULT);
+        if (value.length() >= 6) {
+            roomView[index].TXT_TITLE.setSingleLine();
+            roomView[index].TXT_TITLE.setEllipsize(TextUtils.TruncateAt.MARQUEE); // 흐르게 만들기
+            roomView[index].TXT_TITLE.setMarqueeRepeatLimit(-1);
+            roomView[index].TXT_TITLE.post(new Runnable() {
+                @Override
+                public void run() {
+                    roomView[index].TXT_TITLE.setSelected(true);
+                }
+            });
         }
     }
 

+ 24 - 23
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/KnxSystemAirconMainTestScreen.java

@@ -75,8 +75,8 @@ public class KnxSystemAirconMainTestScreen extends WpadScreen {
 //    private WpadImageView MediumVolumeBtn;
 //    private WpadImageView StrongVolumeBtn;
     private WpadImageView AllRoomBG;
-    private WpadImageView LouverTitle;
-    private WpadImageView LouverMode;
+    //private WpadImageView LouverTitle;
+    //private WpadImageView LouverMode;
 
     // [Button]
     private WpadImageView LeftMoveBtn;
@@ -199,7 +199,7 @@ public class KnxSystemAirconMainTestScreen extends WpadScreen {
             ViewRegistration(getLayout(), TitleBtn, Common.ImgPosion.GetX(left + 10), Common.ImgPosion.GetY(top + 10));
             TitleBtn.setTouchDelayMs(Common.BTN_DELAY_SHOWPOPUP);
 
-            int[] mTitleFontSize = {Common.fontsize._30, Common.fontsize._44};
+            int[] mTitleFontSize = {28, Common.fontsize._44};
             TitleText = new WpadTextView(getContext(), false, mTitleSize[UX_MODE][0], mTitleSize[UX_MODE][1], Gravity.CENTER, Color.BLACK, mTitleFontSize[UX_MODE], true, ID.KnxSystemAirconMain.text.ROOM_TITLE_1 + index);
             //ViewRegistration(getLayout(), TitleText, left+10, top+10);
             ViewRegistration(getLayout(), TitleText, Common.ImgPosion.GetX(left + 10), Common.ImgPosion.GetY(top + 10) - UX_MODE * 2);
@@ -264,7 +264,7 @@ public class KnxSystemAirconMainTestScreen extends WpadScreen {
 
     // [API]
     private KnxSystemAirconAPI airconAPI;       // 난방 API
-    private LouverAPI louverAPI = null;          // 루버 API
+    //private LouverAPI louverAPI = null;          // 루버 API
     private byte [] mDriveModeByte = new byte [] {KnxSystemAircon.ONOFF.NoInfo, KnxSystemAircon.ONOFF.AirconON, KnxSystemAircon.ONOFF.AirconOFF, KnxSystemAircon.MODE.Auto, KnxSystemAircon.MODE.Cold, KnxSystemAircon.MODE.Dry, KnxSystemAircon.MODE.Venti, KnxSystemAircon.MODE.Heat};
     private byte [] mDriveVolumeByte = new byte [] {KnxSystemAircon.VOLUME.Weak, KnxSystemAircon.VOLUME.Medium, KnxSystemAircon.VOLUME.Strong};
     //
@@ -371,7 +371,7 @@ public class KnxSystemAirconMainTestScreen extends WpadScreen {
                 ViewRegistration(getLayout(), VentiModeBtn, Common.ImgPosion.GetX(990), Common.ImgPosion.GetY(575 - yMarginWithPage));
                 HeatModeBtn = new WpadImageView(getContext(), WpadImageView.TOUCH_KIND.BUTTON, 210, 60, R.drawable.mode_5_normal, R.drawable.mode_5_pressed, ID.KnxSystemAirconMain.button.HEAT_MODE);
                 ViewRegistration(getLayout(), HeatModeBtn, Common.ImgPosion.GetX(990), Common.ImgPosion.GetY(643 - yMarginWithPage));
-/* 풍량 막는다
+/* 풍량, 루버는 막는다
         WeakVolumeBtn = new WpadImageView(getContext(), WpadImageView.TOUCH_KIND.BUTTON, 103, 100, R.drawable.btn_wind_1_normal, R.drawable.btn_wind_1_pressed, ID.KnxSystemAirconMain.button.WEAK_VOLUME);
         ViewRegistration(getLayout(), WeakVolumeBtn, Common.ImgPosion.GetX(990), Common.ImgPosion.GetY(499 - yMarginWithPage));
         MediumVolumeBtn = new WpadImageView(getContext(), WpadImageView.TOUCH_KIND.BUTTON, 103, 100, R.drawable.btn_wind_2_normal, R.drawable.btn_wind_2_pressed, ID.KnxSystemAirconMain.button.MEDIUM_VOLUME);
@@ -380,12 +380,12 @@ public class KnxSystemAirconMainTestScreen extends WpadScreen {
         ViewRegistration(getLayout(), StrongVolumeBtn, Common.ImgPosion.GetX(990), Common.ImgPosion.GetY(603 - yMarginWithPage));
         AutoVolumeBtn = new WpadImageView(getContext(), WpadImageView.TOUCH_KIND.BUTTON, 103, 100, R.drawable.btn_wind_4_normal, R.drawable.btn_wind_4_pressed, ID.KnxSystemAirconMain.button.AUTO_VOLUME);
         ViewRegistration(getLayout(), AutoVolumeBtn, Common.ImgPosion.GetX(1097), Common.ImgPosion.GetY(603 - yMarginWithPage));
-*/
+
                 LouverTitle = new WpadImageView(getContext(), WpadImageView.TOUCH_KIND.NONE, 103, 70, R.drawable.louver_title_1, R.drawable.louver_title_1, ID.KnxSystemAirconMain.button.LOUVER_TITLE);
                 ViewRegistration(getLayout(), LouverTitle, Common.ImgPosion.GetX(990), Common.ImgPosion.GetY(722 - yMarginWithPage));
                 LouverMode = new WpadImageView(getContext(), WpadImageView.TOUCH_KIND.BUTTON, 103, 70, R.drawable.louver_airc_status_2, R.drawable.louver_airc_status_2, ID.KnxSystemAirconMain.button.LOUVER_MODE);
                 ViewRegistration(getLayout(), LouverMode, Common.ImgPosion.GetX(1097), Common.ImgPosion.GetY(722 - yMarginWithPage));
-
+*/
                 // 4. Button Create
                 DebugLogOutput("[Create] - Step4 : Room & Button Create");
                 AirconCount = info.InsideAirconCount;
@@ -802,20 +802,21 @@ public class KnxSystemAirconMainTestScreen extends WpadScreen {
             switch (info.AirconStatus) {
                 case 0:
                     //msg = "(정보없음 or 열교환기 응답 없음)";
-                    msg = "(0)";
+                    msg = "\n(실외기 정보 수신 대기중 - 0)";
                     break;
 
                 case 1:
                     //msg = "(실외기 수는 받았으나, 실내기 수 미수신 상태)";
-                    msg = "(1)";
+                    msg = "\n(실내기 개수 정보 수신 대기중 - 1)";
                     break;
 
                 case 2:
                     //msg = "(실내기 수는 받았으나, 전체방 모니터링 정보 미수신 상태)";
-                    msg = "(2)";
+                    msg = "\n(실내기 상태 정보 수신 대기중 - 2)";
                     break;
 
                 default:
+                    msg = "\n(알수 없음)";
                     break;
             }
             AlarmText.setText("에어컨 연동 준비중입니다. 잠시후 다시 시도해주세요." + msg);
@@ -842,14 +843,15 @@ public class KnxSystemAirconMainTestScreen extends WpadScreen {
                     Draw_VolumeChange(i, (byte) roomData.Volume); // 풍량 표시
                     Draw_NowTempChange(i, roomData.NowTemp); // 현재온도 표시
                     Draw_SetTempChange(i, roomData.SetTemp); // 설정온도 표시
-                    if(roomData.OnOff== KnxSystemAircon.ONOFF.AirconON)
-                        onAirconCount++;
-                    if(i==0){
-                        savedMode = (byte)roomData.Mode;            //모드 저장
-                    }
                 }
             }
 
+            // 전체제어 영역 상태 갱신을 위해
+            for (int i = 0; i < info.InsideAirconCount; i++) {
+                if (mData.systemAircon.Device.Aircon[i].OnOff == KnxSystemAircon.ONOFF.AirconON) onAirconCount++;
+                if (i==0) savedMode = (byte) mData.systemAircon.Device.Aircon[i].Mode;
+            }
+
             if(onAirconCount>0){
                 bCurrentAllOnOff = true;
                 onAirconCount = 0;
@@ -891,20 +893,21 @@ public class KnxSystemAirconMainTestScreen extends WpadScreen {
                 switch (info.AirconStatus) {
                     case 0:
                         //msg = "(정보없음 or 열교환기 응답 없음)";
-                        msg = "(0)";
+                        msg = "\n(실외기 정보 수신 대기중 - 0)";
                         break;
 
                     case 1:
                         //msg = "(실외기 수는 받았으나, 실내기 수 미수신 상태)";
-                        msg = "(1)";
+                        msg = "\n(실내기 개수 정보 수신 대기중 - 1)";
                         break;
 
                     case 2:
                         //msg = "(실내기 수는 받았으나, 전체방 모니터링 정보 미수신 상태)";
-                        msg = "(2)";
+                        msg = "\n(실내기 상태 정보 수신 대기중 - 2)";
                         break;
 
                     default:
+                        msg = "\n(알수 없음)";
                         break;
                 }
                 AlarmText.setText("에어컨 연동 준비중입니다. 잠시후 다시 시도해주세요." + msg);
@@ -1123,6 +1126,7 @@ public class KnxSystemAirconMainTestScreen extends WpadScreen {
      *
      * @param status  - (byte) 변경할 운전모드 ( 0 : OFF, 1 : ON )
      */
+    /*
     private void Draw_LouverStatusChange(byte status) {
         if (status== LouverAPI.LOUVERSTATUS.Close) {
             LouverMode.setImageResource(R.drawable.louver_airc_status_2);
@@ -1136,6 +1140,8 @@ public class KnxSystemAirconMainTestScreen extends WpadScreen {
         }
     }
 
+     */
+
     /**
      * {@link #roomView} 에 대한 기본적인 범위체크를 한다.
      *
@@ -1162,11 +1168,6 @@ public class KnxSystemAirconMainTestScreen extends WpadScreen {
     {
         if(!Draw_RangeChecker(index)) return;
         roomView[index].TitleText.setText(value);
-        roomView[index].TitleText.setTextSize(0, Common.fontsize._30);
-        if(value.length() == 6)
-        {
-            roomView[index].TitleText.setTextSize(0, Common.fontsize._26_DEFAULT);
-        }
     }
 
     // =================================================================================================

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

@@ -306,18 +306,18 @@ public class KnxSystemAirconPopupTestScreen extends WpadScreen {
         ExitBtn = new WpadImageView(context, WpadImageView.TOUCH_KIND.BUTTON, 80, 80, R.drawable.but_close, R.drawable.but_close_p, ID.KNxSystemAirconPopup.button.EXIT);
         ViewRegistration(layout, ExitBtn, Common.PopupNomalMarginLEFT(1050), Common.PopupNomalMarginTOP(70));
 
-        RoomPrevBtn = new WpadImageView(context, WpadImageView.TOUCH_KIND.BUTTON, 110, 90, R.drawable.top_but_back, R.drawable.top_but_back_p, ID.KNxSystemAirconPopup.button.ROOM_PREV);
-        ViewRegistration(layout, RoomPrevBtn, Common.PopupNomalMarginLEFT(400), 0);
+        RoomPrevBtn = new WpadImageView(context, WpadImageView.TOUCH_KIND.BUTTON, 80, 80, R.drawable.top_but_back, R.drawable.top_but_back_p, ID.KNxSystemAirconPopup.button.ROOM_PREV);
+        ViewRegistration(layout, RoomPrevBtn, Common.PopupNomalMarginLEFT(358), 0);
         RoomPrevBtn.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL);
 
-        RoomNextBtn = new WpadImageView(context, WpadImageView.TOUCH_KIND.BUTTON, 110, 90, R.drawable.top_but_next, R.drawable.top_but_next_p, ID.KNxSystemAirconPopup.button.ROOM_NEXT);
-        ViewRegistration(layout, RoomNextBtn, Common.PopupNomalMarginLEFT(740), 0);
+        RoomNextBtn = new WpadImageView(context, WpadImageView.TOUCH_KIND.BUTTON, 80, 80, R.drawable.top_but_next, R.drawable.top_but_next_p, ID.KNxSystemAirconPopup.button.ROOM_NEXT);
+        ViewRegistration(layout, RoomNextBtn, Common.PopupNomalMarginLEFT(787), 0);
         RoomNextBtn.setTouchDelayMs(Common.BTN_DELAY_DEVCTRL);
 
         KnxSystemAircon.Info info = mData.systemAircon.Device.info;
 
-        TitleText = new WpadTextView(context, false, 203, 66, Gravity.CENTER, Color.WHITE, Common.fontsize._32_POPUP_TITLE, true, ID.KNxSystemAirconPopup.text.TITLE);
-        ViewRegistration(getLayout(), TitleText, Common.PopupNomalMarginLEFT(510), Common.PopupNomalMarginTOP(75));
+        TitleText = new WpadTextView(context, false, 322, 66, Gravity.CENTER, Color.WHITE, Common.fontsize._32_POPUP_TITLE, true, ID.KNxSystemAirconPopup.text.TITLE);
+        ViewRegistration(getLayout(), TitleText, Common.PopupNomalMarginLEFT(450), Common.PopupNomalMarginTOP(75));
 
         OnOffBtn = new WpadImageView(getContext(), WpadImageView.TOUCH_KIND.BUTTON, 140, 100,
                 new int[]{R.drawable.btn_heat_onoff_off, R.drawable.btn_heat_onoff_off},

+ 15 - 5
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_multi/LightKnxMainTestScreen.java

@@ -9,6 +9,7 @@ import android.os.CountDownTimer;
 import android.os.Handler;
 import android.os.Message;
 import android.os.SystemClock;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.Gravity;
 import android.view.MotionEvent;
@@ -243,17 +244,26 @@ public class LightKnxMainTestScreen extends WpadScreen {
             ViewRegistration(getLayout(), RoomBackground, Common.ImgPosion.GetX(left), Common.ImgPosion.GetY(top));
 
             // 방 이름 버튼
-            RoomTitleBg = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 221, 56, R.drawable.knx_btn_room_normal, R.drawable.knx_btn_room_pressed, ID.KnxLight.button.Room_TITLE_1 + seq);
+            RoomTitleBg = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 221, 56, R.drawable.btn_room_name_normal, R.drawable.btn_room_name_pressed, ID.KnxLight.button.Room_TITLE_1 + seq);
             ViewRegistration(getLayout(), RoomTitleBg, Common.ImgPosion.GetX(left + 10), Common.ImgPosion.GetY(top + 10));
 
             // 방 이름 텍스트
-            RoomTitleText = new WpadTextView(getContext(), false, 221, 56, Gravity.CENTER, Color.BLACK, Common.fontsize._26_DEFAULT, true, ID.KnxLight.text.Room_TITLE_1 + seq);
+            RoomTitleText = new WpadTextView(getContext(), false, 221, 56, Gravity.CENTER, Color.BLACK, Common.fontsize._30, true, ID.KnxLight.text.Room_TITLE_1 + seq);
             ViewRegistration(getLayout(), RoomTitleText, Common.ImgPosion.GetX(left + 10), Common.ImgPosion.GetY(top + 10));
+            RoomTitleText.setText(roomName);
             RoomTitleText.setTextSize(0, Common.fontsize._30);
-            if (roomName.length() == 6) {
-                RoomTitleText.setTextSize(0, Common.fontsize._26_DEFAULT);
+            if (roomName.length() >= 6) {
+                //RoomTitleText.setTextSize(0, Common.fontsize._26_DEFAULT);
+                RoomTitleText.setSingleLine();
+                RoomTitleText.setEllipsize(TextUtils.TruncateAt.MARQUEE); // 흐르게 만들기
+                RoomTitleText.setMarqueeRepeatLimit(100);
+                RoomTitleText.post(new Runnable() {
+                    @Override
+                    public void run() {
+                        RoomTitleText.setSelected(true);
+                    }
+                });     // 선택하기
             }
-            RoomTitleText.setText(roomName);
 
             OnOffBtn = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, 120, 120, mOffImg[type], mOnImg[type], ID.KnxLight.button.Light_Btn_1 + index);
             ViewRegistration(getLayout(), OnOffBtn, Common.ImgPosion.GetX(left + 63), Common.ImgPosion.GetY(top + 108));

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

@@ -320,8 +320,8 @@ public class LightKnxPopupTestScreen extends WpadScreen {
 
                     // 5. Text Create
                     DebugLogOutput("[Create] - Step5 : Text Create");
-                    TitleText = new WpadTextView(mContext, false, 322, 90, Gravity.CENTER, Color.WHITE, Common.fontsize._36, true, ID.lightKnxPopupRoom.text.TITLE);
-                    ViewRegistration(getLayout(), TitleText, Common.PopupNomalMarginLEFT(465), Common.PopupNomalMarginTOP(62));
+                    TitleText = new WpadTextView(mContext, false, 322, 90, Gravity.CENTER, Color.WHITE, Common.fontsize._32_POPUP_TITLE, true, ID.lightKnxPopupRoom.text.TITLE);
+                    ViewRegistration(getLayout(), TitleText, Common.PopupNomalMarginLEFT(450), Common.PopupNomalMarginTOP(62));
 
                     //SeekBar 등록
                     Registration_SeekBar();

+ 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.04.12.01">
+    android:versionName="2022.04.13.01">
 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

+ 4 - 2
WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/util/IconManager.java

@@ -32,7 +32,8 @@ public class IconManager {
     int[] naDoorlockEnable = null;   // 도어락
     int nThermostatEnable = WallpadDeviceSet.DO_NOT_USE;   // 난방
     int[] naVentilEnable;   // 환기시스템
-    int nGasValveEnable = WallpadDeviceSet.DO_NOT_USE;   // 가스밸브
+    //가스는 항상 사용하도록 한다.
+    int nGasValveEnable = WallpadDeviceSet.DO_USE;   // 가스밸브
     boolean bElecCooktopEnable = false;   // 전기레인지
     boolean bMultiSWOutlet = false;   // 대기전력 차단 콘센트
     int nMoodLightEnable = WallpadDeviceSet.DO_NOT_USE;   // 무드등
@@ -172,7 +173,8 @@ public class IconManager {
             naDoorlockEnable = mWallpadDeviceSet.Get_DoorLock_Info();   // 도어락
             nThermostatEnable = mWallpadDeviceSet.Get_Temper_Info();   // 난방제어
             naVentilEnable = mWallpadDeviceSet.Get_Ventil_Info();   // 환기 0 : 사용안함, 1 : 사용함
-            nGasValveEnable = mWallpadDeviceSet.Get_GAS_Info();   // 가스밸브 제어
+            //가스는 항상 사용하도록 한다.
+            //nGasValveEnable = mWallpadDeviceSet.Get_GAS_Info();   // 가스밸브 제어
             bElecCooktopEnable = mWallpadDeviceSet.Get_ElectricRange_Use();   // 전기레인지
             nMoodLightEnable = mWallpadDeviceSet.GetDeviceSetted("무드등");
             nAirQualityEnable = mWallpadDeviceSet.GetDeviceSetted("센서AP");   // 공기질 센서

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

@@ -5059,8 +5059,9 @@ public class iMapServer extends Service {
 
                     if (tempercmd.unitnum.equals("all")) {
                         if (heatingV2API != null) {
+                            int ret_pre = heatingV2API.SetAllRoomStatus(HeatingV2.MODE.PauseRelease);
                             int ret = heatingV2API.SetAllRoomStatus(Mode);
-                            if (ret != APIErrorCode.C_SUCCESS) {
+                            if (ret_pre != APIErrorCode.C_SUCCESS && ret != APIErrorCode.C_SUCCESS) {
                                 retStr += "\"fail\">\r\n      <target name=\"" + tempercmd.target + "\" id=\"" + tempercmd.tid + "\" msg_no=\"" + tempercmd.msgno + "\"/>\r\n   </service>\r\n</imap>";
                                 return retStr;
                             }

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

@@ -1976,7 +1976,7 @@ public class DataSenderService extends Service {
 
     private String getDeviceInfo(int index) {
         String strResult = "";
-        String strLight = "1_2_3_4_5_6_7_8_9_10_11_12_13_14_15_16_17_18_19_20";
+        String strLight = "1_2_3_4_5_6_7_8_9_10_11_12_13_14_15_16_17_18_19_20_21_22_23_24";
         String strHeating = "1_2_3_4_5_6_7_8_9_10_11_12_13_14_15_16_17_18_19_20";
         String strAircon = "1_2_3_4_5_6_7_8_9_10_11_12_13_14_15_16_17_18_19_20";
         Log.d(TAG, "[getDeviceInfo] Start !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");