Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
106 changes: 70 additions & 36 deletions carservice/api-node/api/controllers/event.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,24 @@ 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
};

//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) {
Expand All @@ -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);
Expand All @@ -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
Expand All @@ -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)
}
];

Expand All @@ -146,6 +180,6 @@ function postevent(req, res) {
});
res.json(result);
}

});
}
13 changes: 6 additions & 7 deletions carservice/api-node/api/swagger/swagger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand All @@ -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:
Expand All @@ -288,4 +288,3 @@ definitions:
location:
lat: 40.717000
lon: -74.006400

10 changes: 1 addition & 9 deletions carservice/api-node/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down