klnodekb/routes/device.js

229 lines
5.7 KiB
JavaScript

var express = require('express');
var router = express.Router();
// Mongoose import
let Vehicle = require('../models/vehicle');
var getDate= new Date().toISOString().replace(/T/, ' ').replace(/\..+/, '');
var prev = {lat: null, lon: null};
const { v4: uuidv4 } = require('uuid');
Date.prototype.toUnixTime = function() { return this.getTime()/1000|0 };
gps.on('data', function() {
if (prev.lat !== null && prev.lon !== null) {
gps.state.bearing = GPS.Heading(prev.lat, prev.lon, gps.state.lat, gps.state.lon);
}
prev.lat = gps.state.lat;
prev.lon = gps.state.lon;
});
router.get('/gettrackbyid/:deviceid', function(req,res){
Vehicle.aggregate([
//{'$match':{'newTrack_id':'029febca-e05f-4f4e-b974-55b9ffd05b11'}},
{'$match':{'device_id':req.params.deviceid}},
{'$unwind':'$tracks'},
{'$match':{'tracks.track_id':'029febca-e05f-4f4e-b974-55b9ffd05b11'}},
{'$group':{'_id':'$vehicle_id','fasz':{'$first':'$name'},'trackx':{'$push':'$tracks'}}}
],
function(err,track){
if (err)
{
console.log("DB Error Track."+err);
res.send({"DB ERROR: ":err});
}
else
{
let coords=[];
if (track.length>0){
track[0].trackx.forEach(trk=>{
coords.push([trk.latitude,trk.longitude])
})
res.send({track:track,route:coords});
}
else
{
res.send({track:null});
}
}
}
)
})
// Leaflet kiszolgálás
router.get('/getdevicelist', function(req,res){
Vehicle.find({},function(err,dev){
if (err)
{
console.log("DB Error Vehiclelist."+err);
res.send({"DB ERROR: ":err});
}
else
{
let vh=[];
dev.forEach(element=>{
vh.push({device_id:element.device_id,vehicle_id:element.vehicle_id,device_name:element.name})
})
res.send(vh);
}
})
})
// Eszköz kiszolgálás
// Bejövő adatok rögzítése
function splitLines(t) { return t.split(/\r\n|\r|\n/); }
// Koordináták rögzítése deviceid alapján
router.post('/pushtelemetry', function (req,res) {
var response = {
status : 200,
data : 'null'
}
// gps koordináták feldolgozása
// var l=splitLines(req.body.nmea);
// l.forEach(nm => {
// gps.update(nm);
//});
console.log(req.body.nmea)
// if (gps.state.fix==="3D")
{
/*
track_id: String,
timestamp: String,
latitude: Number,
longitude: Number,
altitude: Number,
speed: Number
*/
let track={track_id:req.body.track_id,timestamp: getDate, latitude:gps.state.lat,longitude:gps.state.lon,altitude:gps.state.alt, speed:gps.state.speed };
Vehicle.updateOne({device_id:req.body.device_id,newTrack_id:req.body.track_id},{$push:{tracks:track}},function(err,upd){
if (err)
{
console.log("DB Err: "+err);
res.send("DB_ERR");
}else
{
if (upd.nModified===0)
{
console.log('device not Found: '+req.body.track_id);
res.send({err: 'device not Found'});
}
else
{
console.log('Track logged.');
res.send({result: 'ok'});
}
}
})
}
/*else
{
res.send({result: 'gpslow'});
}*/
});
// Új útvonal
router.get('/newtrack/:deviceId',function(req,res){
let trid=uuidv4();
Vehicle.updateOne({device_id:req.params.deviceId},{$set:{newTrack_id:trid}},function(err,upd){
if (err)
{
console.log("DB Err: "+err);
res.send("DB_ERR");
}else
{
if (upd.nModified===0)
{
console.log('Device Not Found: '+trid);
res.send({err: 'Not Found'});
}
else
{
console.log('New Track: '+trid);
res.send({newTrack_id: trid});
}
}
})
})
// Modal kiszolgálás
router.post('/newdevice', function(req,res){
req.checkBody('vehicle_name','Munkavállaló megnevezése kötelező!').notEmpty();
req.checkBody('vehicle_id','Rendszám megadása kötelező!').notEmpty();
req.checkBody('device_id','Eszköz azonosító megadása kötelező!').notEmpty();
// Get errors
let errors = req.validationErrors();
/*
name: {type: String, require: true},
vehicle_id: {type: String, require: true},
device_id: {type: String, require: true},
service: Number,
timestamp : {type: String, require: true},
newTrack_id: {type:mongoose.Schema.Types.ObjectId,default : null},
geodataStart: {type: String, default: 'unknown'},
geodataStop: {type: String, default: 'unknown'},
tracks:[ {
timestamp: String,
latitude: Number,
longitude: Number,
altitude: Number,
speed: Number
} ]
});
*/
if(errors)
{
res.render('sidebar', {
error:errors,
"jmap" : {},
lat : 47.5447583333333,
lng : 21.6656666666667
});
/* res.render('sidebar', {
title: 'Új eszköz',
error:errors,
// user:req.user,
})*/
} else {
let v=new Vehicle();
v.timestamp=getDate;
v.vehicle_id=req.body.vehicle_id;
v.device_id=req.body.device_id;
v.name=req.body.vehicle_name;
v.service=req.body.vehicle_service;
v.save(function(err){
if (err)
{
console.log("Hiba az eszköz hozzáadásánál: "+err);
}
else
{
req.flash('success','Új eszköz felvéve');
res.render('sidebar', {
error:errors,
"jmap" : {},
lat : 47.5447583333333,
lng : 21.6656666666667
});
// res.render('sidebar');
}
})
}
//Track tr={}
// res.send(uuidv4());
//res.send(docs);
})
module.exports = router;