Pārlūkot izejas kodu

아이콘 정리, 스마트 스위치 일괄소등/해제 멀티 적용.

jslee(madeinlab) 3 gadi atpakaļ
vecāks
revīzija
a4a20ca1bc

+ 2 - 2
WallPadAddService/src/main/java/kr/co/icontrols/wallpadaddservice/MainActivity.java

@@ -317,11 +317,11 @@ public class MainActivity extends WpadActivity {
             mChildList.add(API_Menu.SubMenuAddService.AutoPicture);
             mChildList.add(API_Menu.SubMenuAddService.Schedule);
 
-            if (cctvUse == WallpadDeviceSet.DEV_DATA_ENABLE || cctvUse == WallpadDeviceSet.DEV_DATA_NONE) {
+            if (cctvUse == WallpadDeviceSet.DEV_DATA_ENABLE) {
                 mChildList.add(API_Menu.SubMenuAddService.Cctv);
             }
 
-            if (parkingUse == WallpadDeviceSet.DEV_DATA_ENABLE || parkingUse == WallpadDeviceSet.DEV_DATA_NONE) {
+            if (parkingUse == WallpadDeviceSet.DEV_DATA_ENABLE) {
                 mChildList.add(API_Menu.SubMenuAddService.Parking);
             }
 

BIN
WallPadHomeCtrl/libs/WallPadAPI.jar


+ 25 - 10
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/MainActivity.java

@@ -225,11 +225,6 @@ public class MainActivity extends WpadActivity {
     private PurityMainScreen purityMainScreen = null;
     private ParkingDoorMainScreen parkingDoorMainScreen = null;
 
-	//API
-	public WallpadStatusData GetDBObj() {
-		return wdb;
-	}
-
 	// 명칭 관련
 	public static final int HEATING = 1;
 	public static final int LIGHT = 2;
@@ -393,6 +388,7 @@ public class MainActivity extends WpadActivity {
         try {
 			wdb = new WallpadStatusData(this);
 			wallpaddbmgr.AddressSet addc = wdb.getAddressMGR(); //DB에서 동호 정보 받아옴
+			if (wdb != null) wdb.closeDB();
 			//동, 호, ip 정보 저장
 			myIP = addc.IPAddress;
 			myDong = addc.Dong;
@@ -983,8 +979,6 @@ public class MainActivity extends WpadActivity {
 		try {
 			setChangeScreen(mCurrentScreenId, true);
 
-			if (wdb != null) wdb.closeDB();
-
 			if (mWallPadApiCheckHandler != null) {
 				mWallPadApiCheckHandler.removeMessages(0);
 			}
@@ -3579,6 +3573,7 @@ public class MainActivity extends WpadActivity {
 		private double doubleState;
 		private byte[] arrayState;
 		private int state = -9999;
+		int dong=0;
 
 		public ClientThread(Handler handler, int menu, int kind, int reason, int position, String category, int roomNumber, int state) {
 			this.handler = handler;
@@ -3591,6 +3586,18 @@ public class MainActivity extends WpadActivity {
 			this.state = state;
 		}
 
+		public ClientThread(Handler handler, int menu, int dong, int kind, int reason, int position, String category, int roomNumber, int state) {
+			this.handler = handler;
+			this.menu = menu;
+			this.dong = dong;
+			this.kind = kind;
+			this.reason = reason;
+			this.position = position;
+			this.category = category;
+			this.roomNumber = roomNumber;
+			this.state = state;
+		}
+
 		public ClientThread(Handler handler, int menu, int kind, int reason, int position, String category, int roomNumber, double state) {
 			this.handler = handler;
 			this.menu = menu;
@@ -3623,9 +3630,12 @@ public class MainActivity extends WpadActivity {
 		}
 
 		public void run() {
-			//String host = "10.1.1.1";
-			//String host = "10.1.1.2";
-			String host = "10.1."+mMultiAddress+".1";
+			String host = "10.1.1.1";
+			if(dong==0) {
+				host = "10.1." + mMultiAddress + ".1";
+			}else{
+				host = "10.1." + dong + ".1";
+			}
 			int port = 9998;
 			String json = "";
 			// build jsonObject
@@ -3731,6 +3741,11 @@ public class MainActivity extends WpadActivity {
 		thread.start();
 	}
 
+	public void requestMultiControl(Handler handler, int menu, int dong, int kind, int reason, int position, String category, int number, int state) {
+		ClientThread thread = new ClientThread(handler, menu, dong, kind, reason, position, category, number, state);
+		thread.start();
+	}
+
 	public void requestMultiControl(Handler handler, int menu, int kind, int reason, int position, String category, int number, double state) {
 		ClientThread thread = new ClientThread(handler, menu, kind, reason, position, category, number, state);
 		thread.start();

+ 60 - 8
WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/MainActivity.java

@@ -11080,6 +11080,10 @@ public class MainActivity extends WpadActivity {
     class ClientThread extends Thread {
         private Handler handler;
         private int menu, reason, position;
+        int kind, roomNumber;
+        private int state = -9999;
+        String category;
+        int dong = 0;
 
         public ClientThread(Handler handler, int menu, int reason, int position) {
             this.handler = handler;
@@ -11088,20 +11092,53 @@ public class MainActivity extends WpadActivity {
             this.position = position;
         }
 
+        public ClientThread(Handler handler, int menu, int kind, int reason, int position, String category, int roomNumber, int state, int dong) {
+            this.handler = handler;
+            this.menu = menu;
+            this.kind = kind;
+            this.reason = reason;
+            this.position = position;
+            this.category = category;
+            this.roomNumber = roomNumber;
+            this.state = state;
+            this.dong = dong;
+        }
+
         public void run() {
-            //String host = "10.1.1.1";
-            String host = "10.1."+position+".1";
+            String host = "10.1.1.1";
+            if(dong==0) {
+                host = "10.1."+position+".1";
+            }else{
+                host = "10.1." + dong + ".1";
+            }
             int port = 9998;
             String json = "";
             JSONObject jsonObject = new JSONObject();
+            JSONObject dataJsonObject = new JSONObject();
 
             try {
-                jsonObject.accumulate("type", "request");
-                jsonObject.accumulate("timestamp", millToDate(System.currentTimeMillis()));
-                jsonObject.accumulate("wallpadip", myIP);
-                jsonObject.accumulate("menu", menu);
-                jsonObject.accumulate("reason", reason);
-                jsonObject.accumulate("position", position);
+                if(reason==Common.JSON.REASON.DeviceInfo) {
+                    jsonObject.accumulate("type", "request");
+                    jsonObject.accumulate("timestamp", millToDate(System.currentTimeMillis()));
+                    jsonObject.accumulate("wallpadip", myIP);
+                    jsonObject.accumulate("menu", menu);
+                    jsonObject.accumulate("reason", reason);
+                    jsonObject.accumulate("position", position);
+                } else{
+                    jsonObject.accumulate("type", "request");
+                    jsonObject.accumulate("timestamp", millToDate(System.currentTimeMillis()));
+                    jsonObject.accumulate("wallpadip", myIP);
+                    jsonObject.accumulate("menu", menu);
+                    jsonObject.accumulate("kind", kind);
+                    jsonObject.accumulate("reason", reason);
+                    jsonObject.accumulate("position", position);
+                    if (reason == Common.JSON.REASON.Control) {
+                        dataJsonObject.accumulate("number", roomNumber);
+                        dataJsonObject.accumulate("category", category);
+                        dataJsonObject.accumulate("state", state);
+                    }
+                    jsonObject.accumulate("data", dataJsonObject);
+                }
             } catch (JSONException e) {
                 e.printStackTrace();
             }
@@ -11140,6 +11177,16 @@ public class MainActivity extends WpadActivity {
                         break;
                     }
                 }
+                if (socket != null) {
+                    socket.close();
+                }
+                if (inputStream != null) {
+                    inputStream.close();
+                }
+                if (outputStream != null) {
+                    outputStream.close();
+                }
+
                 final String response = String.valueOf(stb);
 
                 Log.d("ClientThread", "response=" + response);
@@ -11168,5 +11215,10 @@ public class MainActivity extends WpadActivity {
         }
     }
 
+    public void requestMultiControl(Handler handler, int menu, int kind, int reason, int position, String category, int number, int state, int dong) {
+        ClientThread thread = new ClientThread(handler, menu, kind, reason, position, category, number, state, dong);
+        thread.start();
+    }
+
 }
 

+ 50 - 0
WallPadMain/src/main/java/kr/co/icontrols/wallpadmain/screen/MAIN.java

@@ -1,11 +1,13 @@
 package kr.co.icontrols.wallpadmain.screen;
 
+import android.annotation.SuppressLint;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.graphics.Color;
 import android.os.Build;
+import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
 import android.util.Log;
@@ -26,11 +28,16 @@ import com.artncore.wallpadapi.LedDimmingKCC_API;
 import com.artncore.wallpadapi.MultiSwitchAPI;
 import com.artncore.wallpadapi.Sdb_LivingRoomLightAPI;
 import com.artncore.wallpadapi.WallPadAPI;
+import com.google.gson.Gson;
 import com.util.LogUtil;
 
+import org.json.JSONException;
+import org.json.JSONObject;
+
 import java.util.Calendar;
 import java.util.List;
 
+import kr.co.icontrols.data.ResultData;
 import kr.co.icontrols.wallpadmain.MainActivity;
 import kr.co.icontrols.wallpadmain.R;
 import kr.co.icontrols.wallpadmain.declare.Common;
@@ -1201,6 +1208,36 @@ public class MAIN extends WpadScreen {
         }
     }
 
+    @SuppressLint("HandlerLeak")
+    final Handler handler = new Handler() {
+        Gson gson = new Gson();
+
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case 1000:
+                    try {
+                        Bundle bundle = msg.getData();
+                        String response = bundle.getString("response");
+                        JSONObject jsonObject = new JSONObject(response);
+                        ResultData resultData = gson.fromJson(jsonObject.toString(), ResultData.class);
+                        if (resultData.getType().equals("controlResponse") && resultData.getResult().equals("ok")) {
+                            //제어 명령을 내리고 제대로 응답이 온 이후 처리는 여기에.
+                        }
+                    } catch (JSONException e) {
+                        e.printStackTrace();
+                    }
+                    break;
+                default:
+                    break;
+            }
+        }
+    };
+
+    private void requestMultiControl(int kind, int reason, int position, String category, int number, int state, int dong) {
+        ((MainActivity) mContext).requestMultiControl(handler, Common.JSON.MENU.LIGHT, kind, reason, position, category, number, state, dong);
+    }
+
     BroadcastReceiver MainScreenBroadcastReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
@@ -1322,6 +1359,19 @@ public class MAIN extends WpadScreen {
                         Log.d(TAG, "[MainScreenBroadcastReceiver] (BR.nKind) NOTIFY_ALARM_CHANGE");
                         displayNotificatoinIcon();
                     }
+                    else if (nKind == define.NOTIFY_ALL_LIGHT_OFF) {
+                        // 일괄소등 설정 (조명 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)
+                        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);
+                        }
+                    }
                     else {
                         Log.w(TAG, "[MainScreenBroadcastReceiver] (BR.nKind) Not support!! -> " + nKind);
                     }

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

@@ -2956,7 +2956,6 @@ public class iMapServer extends Service {
     private final Messenger mMessenger = new Messenger(new Handler(new Handler.Callback() {
         @Override
         public boolean handleMessage(Message msg) {
-            Log.w("test", "ControlService - message what : " + msg.what + " , msg.obj " + msg.obj);
             switch (msg.what) {
                 case MSG_REGISTER_CLIENT:
                     mClient = msg.replyTo;  // activity로부터 가져온

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

@@ -497,7 +497,8 @@ public class DataSenderService extends Service {
                         outputStream.writeObject(json);
                         outputStream.close();
                         Log.d("ServerThread", "result 보냄 : " + result);
-                    } else if (data != null && !data.trim().equals("") && basicData.getType().equalsIgnoreCase("request") && basicData.getMenu() == JSON.MENU.MOBILE) {
+                    }
+                    else if (data != null && !data.trim().equals("") && basicData.getType().equalsIgnoreCase("request") && basicData.getMenu() == JSON.MENU.MOBILE) {
                         //모바일 등록 관련
                         int result = updateMobile(basicData.getReason(), basicData.getName(), basicData.getId());
                         String json = "";
@@ -525,7 +526,8 @@ public class DataSenderService extends Service {
                         outputStream.writeObject(json);
                         outputStream.close();
                         Log.d("ServerThread", "result 보냄 : " + result);
-                    } else if (data != null && !data.trim().equals("") && basicData.getType().equalsIgnoreCase("request") && basicData.getMenu() == JSON.MENU.DEVICE_INFO) {
+                    }
+                    else if (data != null && !data.trim().equals("") && basicData.getType().equalsIgnoreCase("request") && basicData.getMenu() == JSON.MENU.DEVICE_INFO) {
                         //제어 디바이스 목록 가져오기
                         String result = getDeviceInfo(basicData.getPosition());
                         outputStream.writeObject(result);