|
@@ -0,0 +1,130 @@
|
|
|
+package com.its.op.service.its.cctv;
|
|
|
+
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+
|
|
|
+import javax.annotation.PostConstruct;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+@RequiredArgsConstructor
|
|
|
+//@Service
|
|
|
+public class CctvControlProbeService2 {
|
|
|
+
|
|
|
+ Map<String, ProbeCommand2> startCmd = new HashMap<>();
|
|
|
+ Map<String, ProbeCommand2> stopCmd = new HashMap<>();
|
|
|
+ Map<String, ProbeCommand2> presetCmd = new HashMap<>();
|
|
|
+
|
|
|
+// 요청 URL: http://172.16.53.45/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=2&PTZCTRL.speed=30&nRanId=60142769
|
|
|
+// 요청 메서드: POST
|
|
|
+// 상태 코드: 200 / O
|
|
|
+// - 요청 헤더
|
|
|
+// Accept: */*
|
|
|
+// Accept-Encoding: gzip, deflate
|
|
|
+// Accept-Language: ko
|
|
|
+// Authorization: Basic YWRtaW46MTIzNDU=
|
|
|
+// Cache-Control: no-cache
|
|
|
+// Connection: Keep-Alive
|
|
|
+// Content-Length: 8
|
|
|
+// Content-Type: text/html; charset=UTF-8
|
|
|
+// Cookie: nLANGUAGE=0; nDevType=4; nChnCount=1; nRtspPort=554; nRtmpPort=1935; nMsgPort=8080; nUserLevel=4; szUsername=admin; szPassword=12345
|
|
|
+// Host: 172.16.53.45
|
|
|
+// Referer: http://172.16.53.45/login.asp
|
|
|
+// User-Agent: Mozilla/5.0 (
|
|
|
+// Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
|
|
|
+//
|
|
|
+// 요청 URL: http://172.16.53.45/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=0&nRanId=72662842
|
|
|
+// 요청 URL: http://172.16.53.45/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=3&PTZCTRL.speed=30&nRanId=16982543
|
|
|
+// 요청 URL: http://172.16.53.45/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=0&nRanId=28699669
|
|
|
+// 요청 URL: http://172.16.53.45/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=4&PTZCTRL.speed=30&nRanId=40995292
|
|
|
+// 요청 URL: http://172.16.53.45/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=0&nRanId=52674826
|
|
|
+// 요청 URL: http://172.16.53.45/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=5&PTZCTRL.speed=30&nRanId=95129168
|
|
|
+// 요청 URL: http://172.16.53.45/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=0&nRanId=62661428
|
|
|
+
|
|
|
+ @PostConstruct
|
|
|
+ void init() {
|
|
|
+ this.startCmd.put("tilt-up", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=4&PTZCTRL.speed=", ""));
|
|
|
+ this.startCmd.put("tilt-down", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=5&PTZCTRL.speed=",""));
|
|
|
+ this.startCmd.put("pan-left", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=2&PTZCTRL.speed=",""));
|
|
|
+ this.startCmd.put("pan-right", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=3&PTZCTRL.speed=",""));
|
|
|
+ this.startCmd.put("zoom-in", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=13&PTZCTRL.speed=",""));
|
|
|
+ this.startCmd.put("zoom-out", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=14&PTZCTRL.speed=",""));
|
|
|
+ this.startCmd.put("focus-in", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=15&PTZCTRL.speed=",""));
|
|
|
+ this.startCmd.put("focus-out", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=16&PTZCTRL.speed=",""));
|
|
|
+
|
|
|
+ this.stopCmd.put("tilt-up", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=0",""));
|
|
|
+ this.stopCmd.put("tilt-down", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=0",""));
|
|
|
+ this.stopCmd.put("pan-left", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=0",""));
|
|
|
+ this.stopCmd.put("pan-right", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=0",""));
|
|
|
+ this.stopCmd.put("zoom-in", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=0",""));
|
|
|
+ this.stopCmd.put("zoom-out", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=0",""));
|
|
|
+ this.stopCmd.put("focus-in", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=0",""));
|
|
|
+ this.stopCmd.put("focus-out", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=0",""));
|
|
|
+
|
|
|
+ this.presetCmd.put("call", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=11&PTZCTRL.no=",""));
|
|
|
+ this.presetCmd.put("save", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=10&PTZCTRL.no=",""));
|
|
|
+ this.presetCmd.put("delete", new ProbeCommand2("/cgi-bin/control.cgi?action=update&group=PTZCTRL&channel=0&PTZCTRL.action=12&PTZCTRL.no=",""));
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getPtzCmd(String control, String action, int speed) {
|
|
|
+ if (StringUtils.equalsIgnoreCase("start", action)) {
|
|
|
+ ProbeCommand2 command = this.startCmd.get(control);
|
|
|
+ if (command != null) {
|
|
|
+ return command.getUri() + speed;
|
|
|
+ }
|
|
|
+ } else if (StringUtils.equalsIgnoreCase("stop", action)) {
|
|
|
+ ProbeCommand2 command = this.stopCmd.get(control);
|
|
|
+ if (command != null) {
|
|
|
+ return command.getUri();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ public String getPtzControlCmd(String control, String action, int speed) {
|
|
|
+ if (StringUtils.equalsIgnoreCase("start", action)) {
|
|
|
+ ProbeCommand2 command = this.startCmd.get(control);
|
|
|
+ if (command != null) {
|
|
|
+ return command.getCmd();
|
|
|
+ }
|
|
|
+ } else if (StringUtils.equalsIgnoreCase("stop", action)) {
|
|
|
+ ProbeCommand2 command = this.stopCmd.get(control);
|
|
|
+ if (command != null) {
|
|
|
+ return command.getCmd();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getPresetCmd(String action, Integer psetNmbr) {
|
|
|
+ ProbeCommand2 command = this.presetCmd.get(action);
|
|
|
+ if (command != null) {
|
|
|
+ return command.getUri() + psetNmbr;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ public String getPresetControlCmd(String action, Integer psetNmbr) {
|
|
|
+ ProbeCommand2 command = this.presetCmd.get(action);
|
|
|
+ if (command != null) {
|
|
|
+ return command.getCmd();
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static class ProbeCommand2 {
|
|
|
+ private String uri;
|
|
|
+ private String cmd;
|
|
|
+ public ProbeCommand2(String uri, String cmd) {
|
|
|
+ this.uri = uri;
|
|
|
+ this.cmd = cmd;
|
|
|
+ }
|
|
|
+ public String getUri() {
|
|
|
+ return this.uri;
|
|
|
+ }
|
|
|
+ public String getCmd() {
|
|
|
+ return this.cmd;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|