All Projects → bencevans → tracksix

bencevans / tracksix

Licence: other
Track your [⛵|🚂|🚙|🚜|🛵|🛷|🚶] with a Raspberry Pi and a GPS.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to tracksix

LocationShare
A simple Android application to share your location
Stars: ✭ 75 (+368.75%)
Mutual labels:  location
oso-backend
Heart of the oso project.
Stars: ✭ 12 (-25%)
Mutual labels:  location
GeoLite2-Country
GeoLite2-Country.mmdb.gz CDN files based on Free Open Source CDN jsDelivr!
Stars: ✭ 69 (+331.25%)
Mutual labels:  location
zx-ip-address
Deprecated
Stars: ✭ 96 (+500%)
Mutual labels:  location
ktor-API-examples
Examples with ktor to create an API REST
Stars: ✭ 23 (+43.75%)
Mutual labels:  location
GPSd4Java
GPSd client library written in Java
Stars: ✭ 40 (+150%)
Mutual labels:  location
XamarinForms.LocationService
Xamarin Background Services, Background Location Updates, Location Updates, BroadCastReceiver
Stars: ✭ 61 (+281.25%)
Mutual labels:  location
location-api-sl
This API can be use to all developers to get location details of Sri Lanka 🇱🇰 including major cities, sub areas, districts and Provinces. ⛳️
Stars: ✭ 35 (+118.75%)
Mutual labels:  location
Generation
⭐ A Private, Secure, End-to-End Encrypted Messaging app made in Flutter(With Firebase and SQLite) that helps you to connect with your connections without any Ads, promotion. No other third-party person, organization, or even Generation Team can't read your messages. 💝
Stars: ✭ 18 (+12.5%)
Mutual labels:  location
GoogleMap Demo
GoogleMap一些常用API总结库
Stars: ✭ 24 (+50%)
Mutual labels:  location
WeChatSendLocation
仿微信发送位置模块 包括位置的选取 位置的查看 导航街景路线等
Stars: ✭ 19 (+18.75%)
Mutual labels:  location
frontend
🌍 Web interface for OwnTracks built with Vue.js
Stars: ✭ 180 (+1025%)
Mutual labels:  owntracks
locus-android
An Awesome Kotlin Location library to retrieve location merely in 3 lines of code
Stars: ✭ 280 (+1650%)
Mutual labels:  location
SimpleLocationGetter
No description or website provided.
Stars: ✭ 21 (+31.25%)
Mutual labels:  location
Atlas
🌎 Atlas is a set of APIs for looking up information about locations
Stars: ✭ 21 (+31.25%)
Mutual labels:  location
CarAnimation
A project for the implementation of the car animation feature in most ride-sharing/ food delivery apps
Stars: ✭ 45 (+181.25%)
Mutual labels:  location
Yakhont
The high-level Android components library for data loading, location, lifecycle callbacks and more.
Stars: ✭ 13 (-18.75%)
Mutual labels:  location
sy flutter amap
高德地图flutter插件
Stars: ✭ 13 (-18.75%)
Mutual labels:  location
pinpoint
🌎 A python script for finding your Mac.
Stars: ✭ 56 (+250%)
Mutual labels:  location
android
Where you can find everything Android from Mapzen
Stars: ✭ 106 (+562.5%)
Mutual labels:  location

Tracksix

Track your [|🚂|🚙|🚜|🛵|🛷|🚶] with a Raspberry Pi and a GPS.

Features

  • OwnTracks Compatable Config & Reporting Format
  • MQTT(S) Reporting
  • MQTT over WebSocket Reporting
  • Programmatic usage or executable use
  • Compatable with a huge array of GPS devices through GPSd
  • Replays reports when an internet connection arrises

Install

To communicate with your GPS device, tracksix utilises GPSd (Global Positioning System daemon) which standardises the format from different GPS devices.

On OSX:

$ brew install gpsd

On Debian/Ubuntu:

$ sudo apt install gpsd

Ensure you have Node.js installed on your device, then install tracksix:

$ npm install --global tracksix

Usage

$ tracksix [path to config file]

Tracksix uses the same configuration format as OwnTracks, this can be exported from your OwnTracks mobile app or copy the config.example.json and edit the contents appropriately.

Programmatic Usage

First follow the above steps for installing GPSd. Then install the tracksix library into your nodejs project:

 $ npm install tracksix

Import the library:

const tracksix = require('tracksix')

Load your configuration file:

const path = require('path')
const config = tracksix.readConfigSync(
    path.resolve(__dirname, './config.json')
)

Start tracking:

const tracker = tracksix(config)

To listen for errors, tracksix() returns an EventEmitter which emits 'error' events.

tracker.on('error', (err) => {
    console.error(err)
})

To listen for updates sent to the MQTT server, subscribe to 'location' events. A location event contains the same elements as specified in the OwnTracks location object.

tracker.on('location', (report) => {
    console.log(report)
})

Run as a service

Write the following to /etc/systemd/system/tracksix.service and update the path to node which node and tracksix which tracksix.

[Unit]
Description=Tracksix Service
After=network.target

[Service]
Type=simple
# Another Type: forking
User=pi
WorkingDirectory=/home/pi
ExecStart=/home/pi/.nvm/versions/node/v10.13.0/bin/node /home/pi/.nvm/versions/node/v10.13.0/bin/tracksix
Restart=on-failure
# Other restart options: always, on-abort, etc

# The install section is needed to use
# `systemctl enable` to start on boot
# For a user service that you want to enable
# and start automatically, use `default.target`
# For system level services, use `multi-user.target`
[Install]
WantedBy=multi-user.targe

Afterwards you need to enable the service:

$ sudo systemctl enable tracksix.service

Then start the service with:

$ sudo systemctl start tracksix

You can check the status / logs with:

$ systemctl status tracksix.service

Development

To start a mock GPSd server use gpsd-fake: npm install -g gpsd-fake && gpsd-fake.

Licence

MIT © Ben Evans

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].