UNPKG

octopus-gps-tracking

Version:

Let you work with some GPS trackers that connects through tcp.

116 lines (91 loc) 2.95 kB
/* */ f = require("../functions"); var nmea = require("nmea-0183"); exports.protocol="GPS103"; exports.model_name="TK103-2"; exports.compatible_hardware=["TK103-2/supplier"]; var adapter = function(device){ if(!(this instanceof adapter)) return new adapter(device); this.device = device; /******************************************* PARSE THE INCOMING STRING FROM THE DECIVE You must return an object with a least: device_id, cmd and type. return device_id: The device_id return cmd: command from the device. return type: login_request, ping, etc. *******************************************/ this.parse_data = function(data){ data = data.toString(); if ( this.isCommandResponse(data) ) { var responseData = data.split(" "); return { action: 'command_response', cmd: 'response', imei: this.device.uid, message: responseData[0] }; } var separatedDataWithComma = data.split(",", 28); if (separatedDataWithComma.length !== 28) { console.log("\n========= Missing data for TK103-2 =========="); console.log(data); console.log("=============================================\n"); return false; }; /**************************** parts.cmd moved komutu çıkarımsal olarak belirlendi. ***************************/ var splitIMEI = separatedDataWithComma[17].split(":"); var imei = splitIMEI[1]; var parts={ "start" : 0, "device_id" : imei, "imei" : imei, "cmd" : "moved", "message" : separatedDataWithComma[16], "data" : "$"+separatedDataWithComma.slice(2, 16).join(','), "finish" : 0 }; switch(parts.cmd){ case "BP05": parts.action="login_request"; break; case "moved": parts.action="ping"; break; case "BO01": parts.action="alarm"; break; default: parts.action="other"; } return parts; } this.get_ping_data = function(msg_parts){ var str = msg_parts.data; var data = nmea.parse(str); var date = "20"+data.date.substr(4,2)+"/"+data.date.substr(2,2)+"/"+data.date.substr(0,2); var time = data.time.substr(0,2)+":"+data.time.substr(2,2)+":"+data.time.substr(4,2); var res = { latitude : Number(data.latitude), longitude : Number(data.longitude), time : new Date(date+" "+time), speed : data.speed, valid : data.valid, imei : msg_parts.imei, message : msg_parts.message } return res; } this.authorize =function(){ //send command device } this.isCommandResponse = function(data) { if (!data) { return false; } var response = data.split(" "); return response[1] === 'ok!'; } } exports.adapter = adapter;