gps-server

0.4.2 • Public • Published

About

Basically, gps-server is aimed to support various GPS hardware devices and different data protocols. Both binary and string-based protocols can be supported, including NMEA-like ones.

There is a map page available to see your GPS devices tracked in real-time. Just go to configured HTTP endpoint in your browser.

TBD: Also, some admin UI provided to get an idea what's going on under the hood, with some of logs out to see in real-time in your browser.

Main goals are to keep it:

  • lightweight
  • extensible
  • configurable
  • easy-to-use

...and that's it. Simple.

How to use

as standalone server

After cloning or downloading this repository, you can run it as standalone server:

npm install
node server.js

Usually, it's a good idea to use some helper packages, like forever. See server.js for some more info.

as npm package

gps-server can be used as npm package, in external app. In your app's folder, do:

npm install gps-server

To save dependency in your package.json: npm install gps-server --save

Then, in your app just add:

var gpsServer = require('gps-server');
//  start GPS server
gpsServer();

handling GPS data

After GPS data processed and parsed successfully, they are announced along with gps_data events and available for outside usage. It's kinda of "extension point" where custom data-manipulation logic can be placed, like saving into DB or custom UI rendering:

//  handle data processed and returned by gps-server
eventEmitter.on('gps_data', function(data) {
    //  preferably, handle data asynchronously, to not affect on gps-server
    setImmediate(function(data) {
        console.log('EVENT async "gps_data" : ' + data.length);
        //  save into DB logic goes here
    }, data);
});

See server.js for usage example.

Functionality and Features

@0.4.0

  • gps-server announces gps_data events to provide ability for outside data-handling

@0.3.0

  • tested against real GPS devices, workable with:
    • Bitrek binary protocol (which is similar to Teltonika binary protocol)
    • GlobalSat NMEA-like string protocol
  • can be used as npm package now, in external app

v2015

  • server listening for data
  • logging of received data -> into file under /log
  • parsing GPS data
  • UI: map.html, for real-time GPS position rendering
  • UI: chat.html (socket.io demo)
  • broadcasting socket.io message -> subscribed listeners on UI
  • saving data into MySQL DB
  • configuration support, limited
  • bower used for front-end dependencies
  • /libs used
  • custom unit tests used
  • custom demo.js for demoing / testing

TODO

  • add:
    • arrange universal parsing flow using adapters (parsers for specific formats ?)
      • binary:
        • BiTrek
        • Teltonika
      • string (NMEA ?) format:
        • GlobalSat:
          • reports: GSr
          • config and other packets
        • Elgato Ukr
        • Queclink ?
      • unclear:
        • RCS TeleTrack
    • support NMEA format, via existing js module ?
    • introduce 'extension point' to use parsed data
    • unit tests - karma ?
    • stress tests / highload ?
    • support for demo mobile app
    • support for OsmAnd mobile clients ?
    • cloud support / cloud demo (note: RH cloud HTTP+TCP ports config issue)
    • UI: parameter support for showing one device or group ?
    • admin UI:
      • page with current / active metrics (# of connected devices and/or UI users)
      • log page (events/usage listing), with e.g. ~1,000 lines max
  • remove:
    • remove: saving into DB
    • remove: chat.html (socket.io demo)
    • remove: bower usage, re-arrange dependencies
  • configuration:
    • setup project through the package.json
    • arrange npm "scripts"
    • extend configuration support

Package Sidebar

Install

npm i gps-server

Weekly Downloads

12

Version

0.4.2

License

none

Last publish

Collaborators

  • obarabanov