Skip to content
View gotrackery's full-sized avatar

Block or report gotrackery

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
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