diff --git a/RPi_Client/CoAPthon3/coapclient.py b/RPi_Client/CoAPthon3/coapclient.py index 18c68fdf55fd8134999cd75ad1f31931cee87bbf..eab472ef606ab2434eb8c23414437b7ce3370b6a 100644 --- a/RPi_Client/CoAPthon3/coapclient.py +++ b/RPi_Client/CoAPthon3/coapclient.py @@ -165,7 +165,6 @@ class CoapClient(): response = client.put(path, json.dumps(payload)) print((response.pretty_print())) - time.sleep(0.05) except KeyboardInterrupt: print("PutBLEInfo Stop") @@ -209,7 +208,6 @@ class CoapClient(): def mkJsonRpgraphInfo(self, info): # complete n = 2.2 - print(info) distance = math.pow(10, ((float(info[4]) - float(info[5])) / (10 * n))) payload = { 'v1' : self.myuuid, diff --git a/Server_CoAP/CoAPthon3.code-workspace b/Server_CoAP/CoAPthon3.code-workspace new file mode 100644 index 0000000000000000000000000000000000000000..6860b32b40ca191f2c02b440974acb5173f2f1d0 --- /dev/null +++ b/Server_CoAP/CoAPthon3.code-workspace @@ -0,0 +1,7 @@ +{ + "folders": [ + { + "path": "/home/iotuser/iot_team_project" + } + ] +} \ No newline at end of file diff --git a/Server_CoAP/CoAPthon3/coapserver.py b/Server_CoAP/CoAPthon3/coapserver.py index b46d53cd31ba8bbded5144ba1479ec9de4d485fd..9807f64047e0f1f6cac35662a6a440f65c0903f1 100644 --- a/Server_CoAP/CoAPthon3/coapserver.py +++ b/Server_CoAP/CoAPthon3/coapserver.py @@ -28,7 +28,7 @@ class CoAPServer(CoAP): self.userNodeCollection = self.db.UserNodeData self.trackingCollection = self.db.TrackingData self.usersCollection = self.db.users - self.updatePeriod = 1.5 + self.updatePeriod = 5 self.limitDistance = 40 except: print("Could not connect to MongoDB") @@ -42,7 +42,7 @@ class CoAPServer(CoAP): positionCalculationThread.start() time.sleep(self.updatePeriod + 0.1) currentTime = time.time() - trackingCursor = self.trackingCollection.remove({'updateTime': {'$lte' : currentTime - self.updatePeriod}}) + #trackingCursor = self.trackingCollection.remove({'updateTime': {'$lte' : currentTime - self.updatePeriod}}) except KeyboardInterrupt: print("existing updateUserLocation") @@ -75,38 +75,62 @@ class CoAPServer(CoAP): userLocationData = sorted(userLocationData, key=lambda k: k['distance'], reverse = False) for u in userLocationData: print(userLocationData) + + rp1uuid = userLocationData[0]['rpuuid'] + rp1 = self.rpNodeInfoPath.find({'rpuuid' : rp1}) if len(userLocationData) < 3: print("userLoicationData < 3") + dd = datetime.datetime.now() + dd = dd.replace(hour=dd.hour + 9) + userNodeData = { + 'rp1': {'rpuuid' : userLocationData[0]['rpuuid'], 'distance': userLocationData[0]['distance']}, + 'useruuid': useruuid, + 'x' : rp1[0]['x'], + 'y' : rp1[0]['y'] + 'updateTime': str(dd) + } + print(userNodeData) return - nodeList = [] - for i in range(3): - nodeList.append({ - 'x': self.piNodeCollection.find({'rpuuid': userLocationData[i]['rpuuid']})[0]['x'], - 'y': self.piNodeCollection.find({'rpuuid': userLocationData[i]['rpuuid']})[0]['y'], - 'distance': userLocationData[i]['distance'] - }) - - triangulationInst = triangulation.Triangulation(nodeList[:3]) - x, y = triangulationInst.doTriangulation() - - if x == None: - print("no solution") - return + else : + nodeList = [] + for i in range(3): + nodeList.append({ + 'x': self.piNodeCollection.find({'rpuuid': userLocationData[i]['rpuuid']})[0]['x'], + 'y': self.piNodeCollection.find({'rpuuid': userLocationData[i]['rpuuid']})[0]['y'], + 'distance': userLocationData[i]['distance'] + }) - dd = datetime.datetime.now() - dd = dd.replace(hour=dd.hour + 9) - userNodeData = { - 'rp1': {'rpuuid' : userLocationData[0]['rpuuid'], 'distance': userLocationData[0]['distance']}, - 'rp2': {'rpuuid' : userLocationData[1]['rpuuid'], 'distance' : userLocationData[1]['distance']}, - 'rp3': {'rpuuid' : userLocationData[2]['rpuuid'], 'distance' : userLocationData[2]['distance']}, - 'useruuid': useruuid, - 'x': x, - 'y': y, - 'updateTime': str(dd) - } - print(userNodeData) + triangulationInst = triangulation.Triangulation(nodeList[:3]) + x, y = triangulationInst.doTriangulation() + + if x == None: + print("no solution") + dd = datetime.datetime.now() + dd = dd.replace(hour=dd.hour + 9) + userNodeData = { + 'rp1': {'rpuuid' : userLocationData[0]['rpuuid'], 'distance': userLocationData[0]['distance']}, + 'useruuid': useruuid, + 'x': rp1[0]['x'], + 'y': rp1[0]['y'], + 'updateTime': str(dd) + } + print(userNodeData) + return + + dd = datetime.datetime.now() + dd = dd.replace(hour=dd.hour + 9) + userNodeData = { + 'rp1': {'rpuuid' : userLocationData[0]['rpuuid'], 'distance': userLocationData[0]['distance']}, + 'rp2': {'rpuuid' : userLocationData[1]['rpuuid'], 'distance' : userLocationData[1]['distance']}, + 'rp3': {'rpuuid' : userLocationData[2]['rpuuid'], 'distance' : userLocationData[2]['distance']}, + 'useruuid': useruuid, + 'x': x, + 'y': y, + 'updateTime': str(dd) + } + print(userNodeData) self.userNodeCollection.insert_one(userNodeData) def usage(): # pragma: no cover diff --git a/Server_CoAP/CoAPthon3/exampleresources.py b/Server_CoAP/CoAPthon3/exampleresources.py index c86b61489ae0cf8b58477a64642dda65f65359d1..3d4d5ab56ffe7e7d1059af91e89a8f8d92ac231f 100644 --- a/Server_CoAP/CoAPthon3/exampleresources.py +++ b/Server_CoAP/CoAPthon3/exampleresources.py @@ -114,15 +114,15 @@ class RpNodeInfoResource(Resource): } if ((dis['a'] + dis['b']) <= dis['c']) or dis['a'] == 0 or dis['b'] == 0 or dis['c'] == 0: # 3번째 rpNode를 만들 수 없는 경우 - print("3번째 rpNode를 만들 수 없습니다.") - response['operate'] = 0 + print("3번째 rpNode를 만들 수 없습니다.(no triangle)") + response['operate'] = 1 return json.dumps(response) cosA = (math.pow(dis['b'], 2) + math.pow(dis['c'], 2) - math.pow(dis['a'], 2)) / (2 * dis['b'] * dis['c']) if cosA >= 1 or cosA <= 0 : # 3번째 rpNode를 만들 수 없는 경우 - print("3번째 rpNode를 만들 수 없습니다.") - response['operate'] = 0 + print("3번째 rpNode를 만들 수 없습니다.(impossible cosA)") + response['operate'] = 1 return json.dumps(response) sinA = math.sqrt((1 - math.pow(cosA,2))) @@ -150,10 +150,10 @@ class RpNodeInfoResource(Resource): nodeList = [] for i in range(3): - print(self.piNodeCollection.find({'rpuuid': nodeLocationData[i]['rpuuid']})[0]) + print(self.collection.find({'rpuuid': nodeLocationData[i]['rpuuid']})[0]) nodeList.append({ - 'x': self.piNodeCollection.find({'rpuuid': nodeLocationData[i]['rpuuid']})[0]['x'], - 'y': self.piNodeCollection.find({'rpuuid': nodeLocationData[i]['rpuuid']})[0]['y'], + 'x': self.collection.find({'rpuuid': nodeLocationData[i]['rpuuid']})[0]['x'], + 'y': self.collection.find({'rpuuid': nodeLocationData[i]['rpuuid']})[0]['y'], 'distance': nodeLocationData[i]['distance'] }) diff --git a/Server_Vue_Express/backend/routes/api.js b/Server_Vue_Express/backend/routes/api.js index 27b11072f6bac0240fe85da40a0981e343b8d25c..74be2d4cc312d10df9a2a2453a167552de5d2315 100644 --- a/Server_Vue_Express/backend/routes/api.js +++ b/Server_Vue_Express/backend/routes/api.js @@ -71,13 +71,14 @@ router.post('/findByUUID', function(req, res) { }); router.get('/findUserByUUID/:id', function(req, res, next) { + console.log("kkkk") var userData=new Array(); var data =new Array(); var UserName = ""; var UserLocation =[]; var temp; var rpNodeData=[]; - //console.log("kkkk") + (async () => { try{ await User.find({uuid:req.params.id}, (err,output)=>{ @@ -95,10 +96,10 @@ router.get('/findUserByUUID/:id', function(req, res, next) { //console.log("tt,",output[0].rp1) try{ - temp =[output[0].rp1,output[0].rp2,output[0].rp3]; + temp =[output[output.length-1].rp1,output[output.length-1].rp2,output[output.length-1].rp3]; UserLocation ={ - x:output[0].x, - y:output[0].y, + x:output[output.length-1].x, + y:output[output.length-1].y, r:10 } }catch(exception){} @@ -112,14 +113,13 @@ router.get('/findUserByUUID/:id', function(req, res, next) { console.log(i, temp[i].rpuuid) await rpNode.find({'rpuuid': temp[i].rpuuid},(err,output)=>{ console.log(output) - if(output.length == 0) - break; - rpNodeData.push({ - rpuuid : temp[i].rpuuid, - x: output[0].x, - y: output[0].y, - r: temp[i].distance * 20 - }) + if(output.length != 0) + rpNodeData.push({ + rpuuid : temp[i].rpuuid, + x: output[0].x, + y: output[0].y, + r: temp[i].distance * 20 + }) }) //console.log(rpNodeData,i) } diff --git a/Server_Vue_Express/backend/views/index.pug b/Server_Vue_Express/backend/views/index.pug index 952ffcf754e027bc20650a8f1b4c1cbd84bca45c..5f97ba7249f5236c62a6faa7337755ccd4707bb0 100644 --- a/Server_Vue_Express/backend/views/index.pug +++ b/Server_Vue_Express/backend/views/index.pug @@ -33,7 +33,7 @@ block content t.push({ x: nodeData[i].x, y: nodeData[i].y, - r: nodeData[i].r + r: 10 }) }