diff --git a/src/components/account/mypage/AccountMypageForm.js b/src/components/account/mypage/AccountMypageForm.js
index b9186b5..8e67d09 100644
--- a/src/components/account/mypage/AccountMypageForm.js
+++ b/src/components/account/mypage/AccountMypageForm.js
@@ -34,19 +34,19 @@ const AccountMypageForm = ({ userInfo,handlerSmsSend,isCrtfy,seconds_Counter,han
-
+
-
+
-
+
@@ -55,7 +55,7 @@ const AccountMypageForm = ({ userInfo,handlerSmsSend,isCrtfy,seconds_Counter,han
-
+
@@ -63,13 +63,13 @@ const AccountMypageForm = ({ userInfo,handlerSmsSend,isCrtfy,seconds_Counter,han
-
+
- handlerInput(e)} />
+ handlerInput(e)} />
@@ -82,7 +82,7 @@ const AccountMypageForm = ({ userInfo,handlerSmsSend,isCrtfy,seconds_Counter,han
변경
-
+
-
+
휴대폰 번호 변경
변경할 휴대폰 번호로 인증을 완료해주세요.
@@ -103,7 +103,7 @@ const AccountMypageForm = ({ userInfo,handlerSmsSend,isCrtfy,seconds_Counter,han
-
+
{/* 발송 버튼을 누르면 남은시간 d-none를 빼주세여~ 그럼나타나여~ */}
@@ -122,7 +122,7 @@ const AccountMypageForm = ({ userInfo,handlerSmsSend,isCrtfy,seconds_Counter,han
-
+
diff --git a/src/components/map/naver/dron/DronHistory.js b/src/components/map/naver/dron/DronHistory.js
index ff70a3e..6083879 100644
--- a/src/components/map/naver/dron/DronHistory.js
+++ b/src/components/map/naver/dron/DronHistory.js
@@ -40,8 +40,11 @@ export const DronHistory = props => {
}, [controlGpList]);
useEffect(() => {
- setArrHistory(controlGpHistory);
- polylineInit(controlGpHistory);
+ polylineRemove();
+
+ setArrHistory(controlGpHistory);
+ polylineInit(controlGpHistory);
+
}, [controlGpHistory]);
useEffect(() => {
diff --git a/src/containers/account/mypage/AccountMypageContainer.js b/src/containers/account/mypage/AccountMypageContainer.js
index da21fa5..68d3cf2 100644
--- a/src/containers/account/mypage/AccountMypageContainer.js
+++ b/src/containers/account/mypage/AccountMypageContainer.js
@@ -78,13 +78,12 @@ const AccountMypageContainer = () => {
clearInterval(timer);
};
};
-
useEffect(() => {
if (userInfo) {
setOkcheck(!okinput ? userInfo.hpno : inputHpno)
- console.log("okcheck>>>>>", okcheck);
- }
- }, [okinput])
+ }
+ }, [userInfo])
+
//휴대폰 인증번호 보내기
const handlerSmsSend = async () => {
// const vData = getValues();
@@ -240,7 +239,6 @@ const AccountMypageContainer = () => {
}
//업데이트
const handlerUpdate = () => {
- debugger
const param = {
cstmrSno: user.cstmrSno,
email: userInfo.email,
diff --git a/test/pav-100-dron.js b/test/pav-100-dron.js
new file mode 100644
index 0000000..ff32795
--- /dev/null
+++ b/test/pav-100-dron.js
@@ -0,0 +1,93 @@
+const {getConnection, writeData} = require("./pav-client")
+const {dumyData} = require("./pav-utils")
+
+// const host = "192.168.0.24"
+// const host = "localhost"
+const host = "211.43.13.240"
+const port = 8082
+
+const prefix = 'TEST-DRON-'
+const severalDrones = (cnt) => {
+ // 클라이언트 정보 저장공간
+ const clients = [];
+
+
+ // 최초 좌표
+ // y - y' : 37.57 -> 35.36
+ // x - x' : 126.60 -> 128.94
+ const firstCoord = [37.57, 126.6];
+ const lastCoord = [35.36, 128.94];
+ // 좌표 차이 계산
+ const diffX = firstCoord[0] - lastCoord[0];
+ const diffY = lastCoord[1] - firstCoord[1];
+ // 구분점
+ const divCnt = Math.round(Math.sqrt(cnt));
+ const divDiifX = diffX / divCnt;
+ const divDiifY = diffY / divCnt;
+
+ // 초기값 저장
+ for (let i = 0; i < cnt; i++) {
+ const client = {};
+ const suffix = i.toString().padStart(3, '0')
+ const dronName = prefix + suffix;
+ // client
+ client.dronName = dronName;
+ client.socket = getConnection(dronName, host, port);
+
+ const divX = i % divCnt;
+ const divY = Math.floor(i / divCnt);
+ const x = Number((firstCoord[0] - (divX * divDiifX)).toFixed(5)) || 0;
+ const y = Number((firstCoord[1] + (divY * divDiifY)).toFixed(5)) || 0;
+
+ const initialData = {
+ ...dumyData,
+ terminalId: dronName,
+ body: [
+ {
+ ...dumyData.body[0],
+ objectId: dronName,
+ lat: x,
+ lon: y
+ }
+ ]
+ }
+ client.data = initialData;
+
+ console.log(dronName, x, y, JSON.stringify(initialData))
+ clients.push(client);
+ }
+ return clients;
+}
+//
+const clients = severalDrones(100);
+const dist = 0.01;
+const sendData = (cnt) => {
+ const direction = Math.floor(cnt/10) % 4;
+ clients.forEach((item) => {
+ // console.log(cnt, item.data.body[0].lat, item.data.body[0].lon)
+ switch (direction) {
+ case 1:
+ item.data.body[0].lat = Number((item.data.body[0].lat - dist).toFixed(5))
+ break;
+ case 2:
+ item.data.body[0].lon = Number((item.data.body[0].lon - dist).toFixed(5))
+ break;
+ case 3:
+ item.data.body[0].lat = Number((item.data.body[0].lat + dist).toFixed(5))
+ break;
+ default:
+ item.data.body[0].lon = Number((item.data.body[0].lon + dist).toFixed(5))
+ break;
+ }
+
+ writeData(item.socket, JSON.stringify(item.data));
+ })
+ if(cnt >= 39) cnt = null;
+ iteratorSendData(++cnt);
+}
+
+const iteratorSendData = (cnt = 0) => {
+ setTimeout(() => sendData(cnt), 1000);
+}
+
+iteratorSendData();
diff --git a/test/pav-client.js b/test/pav-client.js
new file mode 100644
index 0000000..9bde25b
--- /dev/null
+++ b/test/pav-client.js
@@ -0,0 +1,47 @@
+const net = require('net');
+
+
+const getConnection = (connName, host, port) => {
+ const client = net.connect({port: port, host: host}, function () {
+ console.log(connName + ' Connected: ');
+ console.log(' local = %s:%s', this.localAddress, this.localPort);
+ console.log(' remote = %s:%s', this.remoteAddress, this.remotePort);
+ this.setTimeout(500);
+ this.setEncoding('utf8');
+ this.on('data', function (data) {
+ console.log(connName + " From Server: " + data.toString());
+ // this.end();
+ });
+ this.on('end', function () {
+ console.log(connName + ' Client disconnected');
+ });
+ this.on('error', function (err) {
+ console.log('Socket Error: ', err, JSON.stringify(err));
+ });
+ this.on('timeout', function () {
+ console.log('Socket Timed Out');
+ });
+ this.on('close', function (e) {
+ console.log('Socket Closed', e);
+ });
+ });
+ return client;
+}
+
+const writeData = (socket, data) => {
+ const success = !!socket.write(data);
+ // if (success) {
+ // (function (socket, data) {
+ // socket.once('drain', function () {
+ // writeData(socket, data);
+ // });
+ // })(socket, data);
+ // }
+}
+
+// const Dwarves = getConnection("Dwarves");
+// writeData(Dwarves, JSON.stringify(sampleData));
+
+
+
+module.exports = {getConnection, writeData}
diff --git a/test/pav-utils.js b/test/pav-utils.js
new file mode 100644
index 0000000..78bb675
--- /dev/null
+++ b/test/pav-utils.js
@@ -0,0 +1,117 @@
+// degree -> radian 변환
+const deg2rad = (deg) => {
+ return deg * (Math.PI / 180);
+}
+const rad2deg = (rad) => {
+ return rad * (180 / Math.PI);
+}
+// 좌표간 거리계산
+const getDistanceFromCoordByMeter = (coord1, coord2) => {
+ const R = 6371; // Radius of the earth in km
+ const dLat = deg2rad(coord2[0] - coord1[0]); // deg2rad below
+ const dLon = deg2rad(coord2[1] - coord1[1]);
+ const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(deg2rad(coord1[0])) * Math.cos(deg2rad(coord2[0])) * Math.sin(dLon / 2) * Math.sin(dLon / 2);
+ const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
+ // var d = R * c; // Distance in km
+ const d = R * c * 1000; // Distance in m
+ return d;
+}
+// 두 좌표사이 특정 거리만큼의 좌표 추출
+const getCoordsFormBetweenCoord = (coord1, coord2, dist) => {
+ // console.log('init ===> ', {coord1, coord2, dist})
+ const r = [];
+ // 처음 좌표
+ r.push(coord1);
+ // 중간 좌표
+ const totalDist = getDistanceFromCoordByMeter(coord1, coord2);
+ const dx = coord2[0] - coord1[0];
+ const singX = dx < 0 ? -1 : 1;
+ const dy = coord2[1] - coord1[1];
+ const singY = dy < 0 ? -1 : 1;
+ const m = dy / dx;
+ const rad = Math.atan(m)
+
+ const currentTotalDist = Math.sqrt((dx ** 2) + (dy ** 2))
+ const currentDivDist = (dist * currentTotalDist) / totalDist;
+ const div = Math.floor(currentTotalDist / currentDivDist);
+
+ for (let i = 1; i <= div; i++) {
+ const currentDist = currentDivDist * i;
+ let x = coord1[0];
+ let y = coord1[1];
+ if (dx == 0) {
+ y += currentDist * singY;
+ } else if (dy == 0) {
+ x += currentDist * singX;
+ } else {
+ x += Math.cos(rad) * currentDist;
+ y += Math.sin(rad) * currentDist;
+ }
+ r.push([x, y])
+ }
+ // 마지막 좌표
+ r.push(coord2)
+ return r;
+}
+
+const dumyData = {
+ "authKey": "1cc2e08e-0c5c-43b2-8d4d-cddd3de558e3",
+ "terminalId": "SANDBOX-01",
+ "command": "SANDBOX",
+ "body": [
+ {
+ "objectId": "JAL497",
+ "lat": 37.52097,
+ "lon": 126.6146,
+ "elevType": "M",
+ "elev": 125.4,
+ "speedType": "KM",
+ "speed": 145.8,
+ "heading": 227.94,
+ "terminalRcvDt": "20210629173145",
+ "betteryLevel": 91,
+ "betteryVoltage": 50,
+ "dronStatus": "TAKEOFF",
+ "moveDistance": 120,
+ "moveDistanceType": "M",
+ "sensorCo": 100.11,
+ "sensorSo2": 200.22,
+ "sensorNo2": 300.33,
+ "sensorO3": 400.44,
+ "sensorDust": 500.55
+ }
+ ]
+}
+
+module.exports = {getDistanceFromCoordByMeter, deg2rad, getCoordsFormBetweenCoord, dumyData}
+
+
+const test = () => {
+ const coord1 = [37.5210, 126.6082];
+ // const coord2 = [37.5210, 126.6057]; // x 절편
+ const coord2 = [37.5200, 126.6082]; // y 절편
+ // const coord2 = [37.5220, 126.6057]; // 일반
+ const r = getCoordsFormBetweenCoord(coord1, coord2, 10)
+ console.log(r)
+ for (let i = 1; i < r.length; i++) {
+ const dist = getDistanceFromCoordByMeter(r[i-1], r[i]);
+ console.log(dist)
+ }
+}
+
+// test();
+
+const test2 = () => {
+ let m = 10.5 / 14
+ console.log(3 / 4, 13.5 / 18, (13.5 - 3) / (18 - 4))
+ let rad = Math.atan(m);
+ let tan = Math.tan(rad)
+ let cos = Math.cos(rad)
+ let sin = Math.sin(rad)
+ console.log({rad, tan, cos, sin})
+ let x = Math.cos(rad) * 15
+ let y = Math.sin(rad) * 15
+ console.log({x, y})
+
+}
+// test2();
diff --git a/test/pav-warning.js b/test/pav-warning.js
new file mode 100644
index 0000000..d98764b
--- /dev/null
+++ b/test/pav-warning.js
@@ -0,0 +1,78 @@
+const {getConnection, writeData} = require("./pav-client")
+const {getCoordsFormBetweenCoord, dumyData} = require("./pav-utils")
+
+// const host = "192.168.0.24"
+// const host = "localhost"
+const host = "211.43.13.240"
+const port = 8082
+
+// 기본정보
+const prefix = 'TEST-DRON-W-'
+
+const pathSampleCoord = [
+ [37.5215, 126.6050],
+ [37.5215, 126.6082],
+ [37.5210, 126.6082],
+ [37.5210, 126.6057],
+ [37.5205, 126.6057],
+ [37.5205, 126.6082],
+ [37.5200, 126.6082],
+ [37.5200, 126.6057],
+ [37.5195, 126.6057],
+ [37.5195, 126.6082],
+ [37.5190, 126.6082],
+ [37.5190, 126.6050]
+]
+
+const divDist = 10 // [m]
+
+// 특정거리에 따른 좌표 추출
+const getCoords = (coords) => {
+ if (!coords || coords.length < 1) return;
+ const totalCoords = [];
+ for (let i = 1; i < coords.length; i++) {
+ const divCoords = getCoordsFormBetweenCoord(coords[i - 1], coords[i], divDist);
+ totalCoords.push(...divCoords)
+ }
+ return totalCoords;
+}
+
+const getClient = () => {
+ const dronName = prefix + '001';
+
+ const client = {};
+ client.dronName = dronName
+ client.socket = getConnection(dronName, host, port);
+ client.data = getCoords(pathSampleCoord);
+ return client;
+}
+
+const sendData = (client, cnt) => {
+ const data = {
+ ...dumyData,
+ terminalId: client.dronName,
+ body: [
+ {
+ ...dumyData.body[0],
+ objectId: client.dronName,
+ lat: client.data[cnt][0],
+ lon: client.data[cnt][1]
+ }
+ ]
+ }
+ writeData(client.socket, JSON.stringify(data));
+ iteratorSendData(++cnt);
+}
+
+const client = getClient();
+
+const iteratorSendData = (cnt = 0) => {
+ if(cnt >= client.data.length) {
+ client.socket.destroy()
+ return;
+ }
+ setTimeout(() => sendData(client, cnt), 1000);
+}
+
+iteratorSendData()
+