|
|
|
const {getConnection, writeData} = require("./pav-client")
|
|
|
|
const {dumyData} = require("./pav-utils")
|
|
|
|
|
|
|
|
// const host = "192.168.0.24"
|
|
|
|
// const host = "localhost"
|
|
|
|
const host = "211.253.38.218"
|
|
|
|
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();
|