|
@@ -23,6 +23,7 @@ import android.os.Message;
|
|
import android.os.Messenger;
|
|
import android.os.Messenger;
|
|
import android.os.PowerManager;
|
|
import android.os.PowerManager;
|
|
import android.os.RemoteException;
|
|
import android.os.RemoteException;
|
|
|
|
+import android.os.SystemClock;
|
|
import android.provider.Settings;
|
|
import android.provider.Settings;
|
|
import android.util.Log;
|
|
import android.util.Log;
|
|
import android.view.KeyEvent;
|
|
import android.view.KeyEvent;
|
|
@@ -111,6 +112,8 @@ import javax.net.ssl.SSLServerSocket;
|
|
import javax.xml.parsers.DocumentBuilder;
|
|
import javax.xml.parsers.DocumentBuilder;
|
|
import javax.xml.parsers.DocumentBuilderFactory;
|
|
import javax.xml.parsers.DocumentBuilderFactory;
|
|
|
|
|
|
|
|
+import de.re.easymodbus.exceptions.ModbusException;
|
|
|
|
+import de.re.easymodbus.modbusclient.ModbusClient;
|
|
import kr.co.icontrols.gledeviceinterface.jni;
|
|
import kr.co.icontrols.gledeviceinterface.jni;
|
|
import kr.co.icontrols.hdcftp.HDCFTPManager;
|
|
import kr.co.icontrols.hdcftp.HDCFTPManager;
|
|
import kr.co.icontrols.sslapi.SSLClient;
|
|
import kr.co.icontrols.sslapi.SSLClient;
|
|
@@ -3425,6 +3428,11 @@ public class iMapServer extends Service {
|
|
Common.SendAppFinishReqBR(getApplicationContext());
|
|
Common.SendAppFinishReqBR(getApplicationContext());
|
|
}
|
|
}
|
|
//~add KSJ
|
|
//~add KSJ
|
|
|
|
+ //add 2022.03.02 front_open msg 추가 (현관에서 문열림 요청)
|
|
|
|
+ else if (cmd.equals("front_open")) {
|
|
|
|
+ retXML = ProcFrontOpen();
|
|
|
|
+ }
|
|
|
|
+ //~add
|
|
else if (cmd.equalsIgnoreCase("remote_get_home_devices")) {
|
|
else if (cmd.equalsIgnoreCase("remote_get_home_devices")) {
|
|
retXML = iCMDProcDevList(doc);
|
|
retXML = iCMDProcDevList(doc);
|
|
} else if (cmd.equalsIgnoreCase("remote_access_gas")) {
|
|
} else if (cmd.equalsIgnoreCase("remote_access_gas")) {
|
|
@@ -12583,6 +12591,71 @@ public class iMapServer extends Service {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 현관 열림 명령을 내린다.
|
|
|
|
+ *
|
|
|
|
+ * @return (String) - > success : 성공, fail : 실패
|
|
|
|
+ */
|
|
|
|
+ private String Device_DoorOpen(final int address) {
|
|
|
|
+ Log.i(TAG, "[Device_DoorOpen] - Start");
|
|
|
|
+ final ModbusClient modbusClient = new ModbusClient("10.0.215.2", 502);
|
|
|
|
+ modbusClient.setConnectionTimeout(5000);
|
|
|
|
+ try {
|
|
|
|
+ new Thread() {
|
|
|
|
+ public void run() {
|
|
|
|
+ try {
|
|
|
|
+ modbusClient.Connect();
|
|
|
|
+ modbusClient.WriteSingleCoil(address, true);
|
|
|
|
+ Thread.sleep(600);
|
|
|
|
+ modbusClient.WriteSingleCoil(address, false);
|
|
|
|
+ modbusClient.Disconnect();
|
|
|
|
+ } catch (IOException | ModbusException | InterruptedException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ try {
|
|
|
|
+ modbusClient.Disconnect();
|
|
|
|
+ } catch (IOException ioException) {
|
|
|
|
+ ioException.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }.start();
|
|
|
|
+
|
|
|
|
+ } catch (RuntimeException re) {
|
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
|
+ return "fail";
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ //e.printStackTrace();
|
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
|
+ return "fail";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Log.i(TAG, "[Device_DoorOpen] - OK");
|
|
|
|
+ return "ok";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 현관 문열림 요청에 대한 응답
|
|
|
|
+ * @return String 타입의 응답 메시지 생성
|
|
|
|
+ **/
|
|
|
|
+ private long mLastClickTime = 0;
|
|
|
|
+ private final long MIN_CLICK_INTERVAL = 3000;
|
|
|
|
+ public String ProcFrontOpen() {
|
|
|
|
+ String oepn_result;
|
|
|
|
+ long currentClickTime = SystemClock.uptimeMillis();
|
|
|
|
+ long elapsedTime = currentClickTime - mLastClickTime;
|
|
|
|
+ mLastClickTime = currentClickTime;
|
|
|
|
+ // 연속으로 문열림 요청이 들어오는 경우를 방지하기 위한 처리. 3초안에 문열림 요청이 다시 들어오면 무시하고, fail 처리함.
|
|
|
|
+ if (elapsedTime < MIN_CLICK_INTERVAL) {
|
|
|
|
+ mLastClickTime = 0;
|
|
|
|
+ oepn_result = "fail";
|
|
|
|
+ }else{
|
|
|
|
+ oepn_result = Device_DoorOpen(19);
|
|
|
|
+ }
|
|
|
|
+ String retXML = XMLHeader + "<service type=\"reply\" name=\"front_open\" result=\"" + oepn_result + "\">\r\n <message>\"null\"</message>\r\n</service>\r\n</imap>\r\n";
|
|
|
|
+ return retXML;
|
|
|
|
+ }
|
|
|
|
+
|
|
// 메인 서버 소켓 클래스
|
|
// 메인 서버 소켓 클래스
|
|
public class iMapSverReload extends Thread {
|
|
public class iMapSverReload extends Thread {
|
|
ServerSocket svr;
|
|
ServerSocket svr;
|