Skip to content
View gotrackery's full-sized avatar

Block or report gotrackery

Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
gotrackery/README.md

GoTrackery

LintAndTest

  • 🔭 I’m currently working on ...
  • 👯 I’m looking to collaborate on ...

GoTrackery provides a server for obtaining geo-location from GPS trackers of their various protocols. The extracted geo-location data is converted into a single format and allows subscribers to process them in a single way. GoTrackery is CLI application made with Cobra.

GoTrackery has next features:

  • Decode various telematic protocols;
  • Handling various implementations of protocols (some vendors has not accurate implementation);
  • Converting decoded data to unified data structure;
  • Passing unified data structure to event subscrivers to support use for any purpose (i.e. saving into database, send message into message broker, calculate geofence events);
  • Providing simple interfaces to implement new protocols.

Now implemented:

  • Universal TCP server for tcp protocols;
  • Universal TCP data replayer;
  • Storing data into postgres example db;
  • WialonsIPS protocol (partially - not all message types, no encoder);
  • EGTS protocol (partially - not all message types);

How to

Build

Use make command to build executable:

  • Linux: make linux
  • Windows: make win
  • MacOs Intel: make mac

Run

Use go run ./ --help to get info about flags and features.

  • Run server with wialonips protocol: go run ./ tcp -p wialonips -a <address:port>
  • Run player with previously recorded data. See how to do it here.

Store data

For now implemented only posgtresql storage.

  • Run make db-up POSTGRES=<connection string> to create tables and stored proc in target postgre database;
  • Create yaml config:
logging:
  level: debug
  console: true
tcp:
  address: :5000
  proto: egts
  socket-reuse-port: true
consumers:
  sample-db:
    uri:  <postgre connection string>
  • Run server go run ./ tcp --config <path to config file>

Docker

It is possible to use prebuild docker image.

Also you can find docker-compose.yml example in examples folder to run along with Consul.

The Future

Shorterm Roadmap

  • open telemetry (for server)
  • replace generic message with protobuf message
  • add mqtt event consumer with protobuf message
  • protocol - wialon retranslator
  • protocol - h02

Future plans for the implementation of other protocols see https://github.com/gotrackery/protocol

Midterm Roadmap

  • move database store to mqtt subscriber
  • more protocols (udp, mqtt, http)
  • implement encoders (wialon ips)
  • retranslators as mqtt subscriber

Longterm Roadmap

Pinned Loading

  1. protocol protocol Public

    Library of telematic data protocols

    Go 7 3