204 lines
5.5 KiB
JavaScript
204 lines
5.5 KiB
JavaScript
|
|
// Mongoose import
|
|
|
|
var mongoose = require('mongoose');
|
|
let Vehicle = require('../models/vehicle');
|
|
var getDate= new Date().toISOString().replace(/T/, ' ').replace(/\..+/, '');
|
|
//var Parser = require("binary-parser").Parser;
|
|
const Net = require('net');
|
|
var prot=require('../js/bprotocolparser');
|
|
|
|
const { v4: uuidv4 } = require('uuid');
|
|
const { uint8array } = require('jszip/lib/support');
|
|
|
|
Date.prototype.toUnixTime = function() { return this.getTime()/1000|0 };
|
|
|
|
/*// Protocol parser
|
|
var trackParser=new Parser()
|
|
.int32("TID")
|
|
.int32("LAT")
|
|
.int32("LON")
|
|
.int32("ALT")
|
|
.int32("SPD")
|
|
.int32("HED")
|
|
|
|
|
|
// Protocol test
|
|
exports.testProt=function(buf)
|
|
{
|
|
console.log(trackParser.parse(buf));
|
|
}
|
|
*/
|
|
Date.prototype.toUnixTime = function() { return this.getTime()/1000|0 };
|
|
|
|
// 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
|
|
exports.pushtelemetry=function(data,callback) {
|
|
|
|
|
|
//console.log("Coords: "+data);
|
|
// callback(null,"OK");
|
|
// if (gps.state.fix==="3D")
|
|
|
|
/*
|
|
track_id: String,
|
|
timestamp: String,
|
|
latitude: Number,
|
|
longitude: Number,
|
|
altitude: Number,
|
|
speed: Number
|
|
*/
|
|
let lat=(data.lat/10000000);
|
|
let lon=(data.lon/10000000);
|
|
let track={track_id:data.tid,timestamp: getDate, latitude:lat,longitude:lon,altitude:data.alt, speed:data.spd,heading:data.hed };
|
|
Vehicle.updateOne({device_id:data.did,newTrack_id:data.tid},{$push:{tracks:track}},function(err,upd){
|
|
if (err)
|
|
{
|
|
console.log("DB Err: "+err);
|
|
callback('DBERR',null);
|
|
// res.send("DB_ERR");
|
|
}else
|
|
{
|
|
if (upd.nModified===0)
|
|
{
|
|
console.log('device not Found: '+data.did);
|
|
//res.send({err: 'device not Found'});
|
|
callback('Device Not Found',null)
|
|
}
|
|
else
|
|
{
|
|
console.log('Track logged.');
|
|
//res.send({result: 'ok'});
|
|
callback(null,"OK");
|
|
}
|
|
}
|
|
})
|
|
|
|
};
|
|
|
|
// Új útvonal
|
|
exports.newTrack=function(deviceId,callback){
|
|
let trid=uuidv4();
|
|
Vehicle.updateOne({device_id:deviceId},{$set:{newTrack_id:trid}},function(err,upd){
|
|
if (err)
|
|
{
|
|
console.log("DB Err: "+err);
|
|
//res.send("DB_ERR");
|
|
callback('DB ERR',null);
|
|
}else
|
|
{
|
|
if (upd.nModified===0)
|
|
{
|
|
console.log('Device Not Found: '+deviceId);
|
|
//res.send({err: 'Not Found'});
|
|
callback('Device not found',null);
|
|
}
|
|
else
|
|
{
|
|
console.log('New Track: '+trid);
|
|
//res.send({newTrack_id: trid});
|
|
callback(null,trid);
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
// **** TCP SERVER **** //
|
|
const port = 8081;
|
|
// Create a new TCP server.
|
|
const server = new Net.Server();
|
|
// The server listens to a socket for a client to make a connection request.
|
|
// Think of a socket as an end point.
|
|
server.listen(port, function() {
|
|
console.log(`Tracker Server listening on socket localhost:${port}`);
|
|
});
|
|
|
|
|
|
// When a client requests a connection with the server, the server creates a new
|
|
// socket dedicated to that client.
|
|
server.on('connection', function(socket) {
|
|
console.log('A new connection has been established.');
|
|
|
|
// Now that a TCP connection has been established, the server can send data to
|
|
// the client by writing to its socket.
|
|
//socket.write('Hello, client.');
|
|
//var ma=moment().format('DD.MM.YYYY');
|
|
// The server can also receive data from the client by reading from its socket.
|
|
socket.on('data', function(chunk) {
|
|
var data= new TextEncoder("utf-8").encode("Seggem a fenék");
|
|
|
|
// logging.logAppend("SOCKET_LOG.",'TCP_SERVER',socket.remoteAddress,'nodekb','SOCKET_LOG');
|
|
console.log(`BINARY: ${chunk}`);
|
|
|
|
var r=prot.parsePacket(chunk);
|
|
console.log('cmd:'+ r.cmd);
|
|
console.log('PAYLOAD:'+ Buffer.from(r.payload).toString("hex"));
|
|
var p=prot.newPacket(0xAA,data);
|
|
socket.write(p);
|
|
console.log('PACK='+p.toString(16));
|
|
|
|
/* switch(data.cmd)
|
|
{
|
|
case 'NTRK':
|
|
tracker.newTrack(data.id,function(err,result){
|
|
if (err)
|
|
{
|
|
socket.write(JSON.stringify({
|
|
status: 1,
|
|
data: err
|
|
}));
|
|
}
|
|
else
|
|
{
|
|
socket.write(JSON.stringify({
|
|
status: 200,
|
|
data: result
|
|
}));
|
|
}
|
|
})
|
|
break;
|
|
case 'PTM':
|
|
tracker.pushtelemetry(data.data,function(err,result){
|
|
if (err)
|
|
{
|
|
socket.write(JSON.stringify({
|
|
status: 1,
|
|
data: err
|
|
}));
|
|
}
|
|
else
|
|
{
|
|
socket.write(JSON.stringify({
|
|
status: 200,
|
|
data: result
|
|
}));
|
|
}
|
|
})
|
|
break;
|
|
default:
|
|
socket.write(JSON.stringify({
|
|
status: 200,
|
|
data: "Cmd error"
|
|
}));
|
|
break;
|
|
}*/
|
|
|
|
});
|
|
|
|
// When the client requests to end the TCP connection with the server, the server
|
|
// ends the connection.
|
|
socket.on('end', function() {
|
|
console.log('Closing connection with the client');
|
|
});
|
|
|
|
// Don't forget to catch error, for your own sake.
|
|
socket.on('error', function(err) {
|
|
console.log(`Error: ${err}`);
|
|
});
|
|
});
|
|
|
|
// **** END OF TCP SERVER **** //
|
|
|