From 5f6bbc16239c844a0fdc9d0f0d37c4fc0eddb9cd Mon Sep 17 00:00:00 2001 From: Tini8000 Date: Sun, 22 Jul 2018 13:53:57 +0200 Subject: [PATCH 1/2] changed team name --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 754341a..8e53691 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ # MESHUP * MESHUP Motorized Emergency Safety Helper Utilizing P2P -* MESHAPP Motorized Emergency Safety Helper Achievable Prototype Presentation ## Platform ![IOTA](https://upload.wikimedia.org/wikipedia/commons/thumb/a/ad/Iota_logo.png/320px-Iota_logo.png) From 56d11ef75031122bf0746085409620f0de2ac707 Mon Sep 17 00:00:00 2001 From: Tini8000 Date: Sun, 22 Jul 2018 15:06:41 +0200 Subject: [PATCH 2/2] integrating parsed the object as Mark wants but the swagger parameters are missing --- carservice/api-node/api/controllers/event.js | 106 ++++++++++++------- carservice/api-node/api/swagger/swagger.yaml | 13 ++- carservice/api-node/package.json | 10 +- 3 files changed, 77 insertions(+), 52 deletions(-) diff --git a/carservice/api-node/api/controllers/event.js b/carservice/api-node/api/controllers/event.js index 9f3a58e..45bc178 100644 --- a/carservice/api-node/api/controllers/event.js +++ b/carservice/api-node/api/controllers/event.js @@ -7,6 +7,13 @@ const IOTA = require("iota.lib.js"); // Use 'provider' variable to specify which Full Node to talk to const iota = new IOTA({provider: "https://nodes.testnet.iota.org:443"}); +var vehicles = ['ONE', 'TWO', 'THREE', 'FOUR']; +var seeds = ['VEHICLEONEVEHICLEONEVEHICLEONEVEHICLEONEVEHICLEONEVEHICLEONEVEHICLEONEVEHICLEONEV', + 'VEHICLETWOVEHICLETWOVEHICLETWOVEHICLETWOVEHICLETWOVEHICLETWOVEHICLETWOVEHICLETWOV', + 'VEHILCETHRVEHILCETHRVEHILCETHRVEHILCETHRVEHILCETHRVEHILCETHRVEHILCETHRVEHILCETHRV', + 'VEHILCEFOUVEHILCEFOUVEHILCEFOUVEHILCEFOUVEHILCEFOUVEHILCEFOUVEHILCEFOUVEHILCEFOUV']; + + module.exports = { getevents:getevents, postevent:postevent @@ -14,10 +21,10 @@ module.exports = { //find transaction function getevents(req, res) { - + var msg = []; //var searchValues = {'tags': ['MESHUP']}; - var searchValues = {'tags': ['YAUASAABWARAABYASAUAVA99999']}; + var searchValues = {'tags': ['ZAUASABBWARAABYASAUAVA99999']}; iota.api.findTransactionObjects( searchValues, function( error, txObjects ) { if(!error) { @@ -39,32 +46,21 @@ function getevents(req, res) { txObjects.forEach(function(txObject) { let trytes = iota.utils.transactionTrytes(txObject); + // let transactionMessage = convertFromTrytes(txObject.signatureMessageFragment).replace("'", "\"").replace("'", "\""); + // let transactionMessageObject = JSON.parse(transactionMessage); + let transactionMessage = JSON.parse(convertFromTrytes(txObject.signatureMessageFragment)); + console.log(transactionMessage); msg.push({ 'origin': txObject.address, - 'time': txObject.timestamp, - 'id_sender': txObject.address, - 'message': txObject.signatureMessageFragment + 'time': timeConverter(txObject.timestamp), + 'id_sender': vehicles[seeds.indexOf(txObject.address)], + //'message': convertFromTrytes(txObject.signatureMessageFragment) + 'message':transactionMessage.message, + 'latitude':transactionMessage.latitude, + 'longitute':transactionMessage.longitude }); - - // msg += 'Transaction object: \n'; - // msg += JSON.stringify(txObject, null, "\t"); - // msg += '\n\n'; - // msg += 'Transaction object converted into trytes: \n'; - // msg += trytes; - // msg += '\n'; - // msg += 'Transaction object trytes length: '+trytes.length; - // msg += '\n'; -// msg += 'Transaction object timestamp: '+timeConverter(txObject.timestamp); -// msg += '\n\n'; - // msg += '-------------------------------------------------------------------------'; - // msg += '\n\n'; }); - // } - // msg += '<'+'/pre>'; - // msg += '<'+'/div>'; - // msg += "<"+"/br><"+"/br>"; - //document.getElementById(outputLoc).innerHTML = msg; res.json(msg); } // resolve(txObjects); @@ -81,6 +77,40 @@ function getevents(req, res) { }); } +function timeConverter(UNIX_timestamp){ + var a = new Date(UNIX_timestamp * 1000); + var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; + var year = a.getUTCFullYear(); + var month = months[a.getUTCMonth()]; + var date = a.getUTCDate(); + var hour = a.getUTCHours() < 10 ? '0' + a.getUTCHours() : a.getUTCHours(); + var min = a.getUTCMinutes() < 10 ? '0' + a.getUTCMinutes() : a.getUTCMinutes(); + var sec = a.getUTCSeconds() < 10 ? '0' + a.getUTCSeconds() : a.getUTCSeconds(); + var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ; + return time; +} + + +function convertFromTrytes(trytes){ + // Remove spaces + trytes = trytes.trim(); + // Remove the '9' padding. The result should have an even number of trytes + let message = trytes.replace(/(99)+$/, ''); + if(message.length % 2 != 0) { + // Remove last character from string + message = message.slice(0, -1); + } + return iota.utils.fromTrytes(message); +} + +function calculateTag (lat, lon) { + var roundedLat = parseFloat(lat).toFixed(2); + var roundedLon = parseFloat(lon).toFixed(2); + + var tag = roundedLat.concat(roundedLon); + return iota.utils.toTrytes(tag); +} + //send transaction function postevent(req, res) { // Call the 'getNodeInfo call to check that the node is working @@ -93,36 +123,40 @@ function postevent(req, res) { })*/ // const trytes = 'HELLOXXXXXHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDHELLOWORLDD' // 81 characters - let vehicleAddress = 'VEHICLE' + req.swagger.params.body.value.vehicle; - vehicleAddress += "9".repeat(81-vehicleAddress.length); + //let vehicleAddress = 'VEHICLE' + req.swagger.params.body.value.vehicle; + //vehicleAddress += "9".repeat(81-vehicleAddress.length); + //const message = iota.utils.toTrytes('Airbag: OMG, I just released!') - // sendMessage (vehicle1, 40.717000, -74.006400, 'Airbag: OMG, I just released!'); - // sendMessage (vehicle2,40.717000, -74.006400, 'Breaks: Nailed it!! From 100 to 0 in 3s'); - // sendMessage (vehicle3,40.717000, -74.006400, 'Cruise Control: Why is everyone slowing down'); - // sendMessage (vehicle4,40.717000, -74.006400, 'Meshup: Detected Accident ahead'); + //sendMessage (seeds[1], 40.717000, -74.006400, 'Airbag: OMG, I just released!'); + //sendMessage (seeds[2],40.717000, -74.006400, 'Breaks: Nailed it!! From 100 to 0 in 3s'); + //sendMessage (seeds[3],40.717000, -74.006400, 'Cruise Control: Why is everyone slowing down'); + //sendMessage (seeds[4],40.717000, -74.006400, 'Meshup: Detected Accident ahead'); let lat = req.swagger.params.body.value.lat; let lon = req.swagger.params.body.value.lon; let message = req.swagger.params.body.value.msg; + let vehicle = req.swagger.params.body.value.vehicle; + let vehicleAddress = seeds[vehicles.indexOf(vehicle)]; const messageTryte = iota.utils.toTrytes(message); - var roundedLat = parseFloat(lat).toFixed(2); - var roundedLon = parseFloat(lon).toFixed(2); + //var roundedLat = parseFloat(lat).toFixed(2); + //var roundedLon = parseFloat(lon).toFixed(2); - var tag = roundedLat.concat(roundedLon); //.replace(".", "D").replace(".", "D").replace("-", "M") + //var tag = roundedLat.concat(roundedLon); //.replace(".", "D").replace(".", "D").replace("-", "M") var transactionMessage = '{ "message": "' + message + '", "latitude":' + lat + ', "longitude":' + lon + ' }'; - console.log('tag: ' + tag + ' ? ' + iota.utils.toTrytes(tag)); + //console.log('tag: ' + tag + ' ? ' + iota.utils.toTrytes(tag)); console.log('message: ' + transactionMessage); - console.log('address: ' + vehicleAddress); + //console.log('address: ' + vehicleAddress); const transfers = [ { value: 0, address: vehicleAddress, message: iota.utils.toTrytes(transactionMessage), - tag: iota.utils.toTrytes(tag) + //tag: iota.utils.toTrytes(tag) + tag: calculateTag(lat,lon) } ]; @@ -146,6 +180,6 @@ function postevent(req, res) { }); res.json(result); } - + }); } diff --git a/carservice/api-node/api/swagger/swagger.yaml b/carservice/api-node/api/swagger/swagger.yaml index 09042c7..54bfcd8 100644 --- a/carservice/api-node/api/swagger/swagger.yaml +++ b/carservice/api-node/api/swagger/swagger.yaml @@ -4,9 +4,9 @@ info: title: Mesh Up # during dev, should point to your local machine host: localhost:10010 -# basePath prefixes all resource paths +# basePath prefixes all resource paths basePath: / -# +# schemes: # tip: remove http to make production-grade - http @@ -237,7 +237,7 @@ definitions: type: string example: vehicle: ONE - lat: 40.717000 + lat: 50.817000 lon: -74.006400 msg: 'Airbag: OMG, I just released!' Suggestion: @@ -257,16 +257,16 @@ definitions: type: string content: description: message - type: string + type: string location: description: location - type: object + type: object example: vehicle: car_1 content: "Breaks: Nailed it!! From 100 to 0 in 3s" location: lat: 40.717000 - lon: -74.006400 + lon: -74.006400 Location: type: object properties: @@ -288,4 +288,3 @@ definitions: location: lat: 40.717000 lon: -74.006400 - diff --git a/carservice/api-node/package.json b/carservice/api-node/package.json index 55761a5..989d590 100644 --- a/carservice/api-node/package.json +++ b/carservice/api-node/package.json @@ -11,15 +11,7 @@ "express": "^4.12.3", "swagger-express-mw": "^0.1.0", "swagger-ui-express": "latest", - "yamljs": "^0.3.0", - "@iota": "latest", - "async": "latest", - "bignumber": "latest", - "crypto-js": "latest", - "iota.lib.js": "latest", - "lodash": "latest", - "node-fetch": "latest", - "xmlhttprequest": "latest" + "yamljs": "^0.3.0" }, "devDependencies": { "should": "^7.1.0",