Track your vehicle's live location offline by using little more than a Raspberry Pi & a gps dongle (aka "Tiny Telematics"), without expensive subscription services.
Tiny Telematics is an application stack consisting of a Raspberry Pi client and a Apache Flink based backend that communicate via Kafka and cache data via redis.
Once running, Tiny Telematics can track your vehicle's location with reasonable accuracy, and doesn't require expensive subscription services or in-vehicle WiFi.
More details can be found in architecture.md.
The client runs best on a prepared Raspbian image. You can find the steps to build this image here.
This image contains -
- All
gpsddependencies Python 3.8.13w/poetryredisw/ asystemdservicedocker
This does not work on armv6! This is the easiest route to deploy.
Make sure you expose your host network & the appropriate device in /dev.
# For local development, start a local kafka and redis instance
#docker-compose up -d
docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latest
# Build and run
docker build -t tiny-telematics .
docker run -v $(pwd)/config:/config --device=/dev/ttyACM0 --net=host --restart=on-failure:5 tiny-telematics --config /config/default.yamlIf you want to build a multi-arch image for a Raspi (armv7 or arm64):
❯ docker buildx create --name cross
❯ docker buildx use cross
❯ docker buildx build --platform linux/amd64,linux/arm/v7 -t tiny-telematics:latest .See flink/README.md
See flink/README.md
See docker-compose
Please see development_setup.md for details. tl;dr: gpsd, poetry, python 3.8.13.
poetry shell
poetry run pytest tests -v poetry shell
python3 tiny_telematics/main.py --config config/dev.yaml
# or sbin/run_client.sh - will ask for sudo to setup gpsdI built this over the years in three different iterations - Hadoop, AWS IoT Greengrass, and what you're looking at now - for my blog. The most recent iteration is what I consider stable and usable and what I daily drive in my truck. The older git tags are mostly to accompany the older blog articles.
This project is licensed under the GNU GPLv3 License - see the LICENSE file for details.

