// 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 **** //