All apps · 0 apps
TeslaMate-ABRP
Docker app from ssickle's Repository
Overview
Readme
View on GitHubTeslaMate: MQTT to ABRP
A bridge to send your Tesla vehicle data from TeslaMate to A Better Route Planner (ABRP).
Features
- Automatically sends MQTT TeslaMate data to A Better Route Planner
- Variable (and configurable) update rates based on vehicle state (driving, charging, parked)
- Secure MQTT options for authentication and (MQTT)TLS encryption
- Support for Docker secrets management
- Optional location anonymization
- Alpha (bleeding-edge) image is available at fetzu/teslamate-abrp:alpha
- Beta (pre-release) image is available at fetzu/teslamate-abrp:beta
Setup Guide
Prerequisites
- A working TeslaMate instance with MQTT enabled
- An ABRP user token
- Docker (recommended) or Python 3.x environment
Getting an ABRP User Token
- Log in to the ABRP web app or mobile app
- Navigate to Settings (burger menu)
- Under "Plan settings" tap/click the cog wheel of your car
- Select "Edit connection"
- Select "Link" in the "Generic" box under In-car live data
- Token will be displayed
- Save this token securely - you'll need it to configure teslamate-abrp
Option 1: Docker Setup (Recommended)
Add the teslamate-abrp service to your existing TeslaMate docker-compose.yml:
ABRP:
container_name: TeslaMate_ABRP
image: fetzu/teslamate-abrp:latest
restart: always
environment:
- MQTT_SERVER=mosquitto
- USER_TOKEN=your-abrp-user-token
- CAR_NUMBER=1
# Optional parameters (see Configuration section)
# - CAR_MODEL=tesla:m3:20:bt37:heatpump
# - MQTT_USERNAME=username
# - MQTT_PASSWORD=password
# - MQTT_PORT=1883
# - MQTT_TLS=True
# - STATUS_TOPIC=teslamate-abrp
# - SKIP_LOCATION=True
# - TM2ABRP_DEBUG=True
# - REFRESH_RATE_DRIVING=2.5
# - REFRESH_RATE_CHARGING=6
# - REFRESH_RATE_PARKED=30
Deploy the service:
docker-compose pull ABRP
docker-compose up -d ABRP
Option 2: Using Docker with Secrets (More Secure)
For improved security, use Docker secrets to manage sensitive information:
version: '3'
services:
ABRP:
container_name: TeslaMate_ABRP
image: fetzu/teslamate-abrp:latest
restart: always
environment:
- MQTT_SERVER=mosquitto
- CAR_NUMBER=1
- MQTT_USERNAME=username
- MQTT_TLS=True
- MQTT_PORT=8883
secrets:
- USER_TOKEN
- MQTT_PASSWORD
secrets:
USER_TOKEN:
file: ./path/to/abrp-token.txt
MQTT_PASSWORD:
file: ./path/to/mqtt-password.txt
Option 3: Running as a Python Script
Clone the repository:
git clone https://github.com/fetzu/teslamate-abrp.git cd teslamate-abrpInstall dependencies:
pip install -r requirements.txtRun the script:
python teslamate_mqtt2abrp.py USER_TOKEN 1 mqtt-server-address
Configuration
Essential Parameters
| Parameter | Description | Default | Required |
|---|---|---|---|
| USER_TOKEN | Your ABRP user token | - | Yes |
| CAR_NUMBER | TeslaMate car number | 1 | No |
| MQTT_SERVER | MQTT server address | - | Yes |
Optional Parameters
| Parameter | Description | Default | Required |
|---|---|---|---|
| CAR_MODEL | ABRP car model identifier | Auto-detected | No |
| MQTT_PORT | MQTT server port | 1883 | No |
| MQTT_USERNAME | MQTT username | - | No |
| MQTT_PASSWORD | MQTT password | - | No |
| MQTT_TLS | Use TLS for MQTT connection | False | No |
| MQTT_VERIFY_CERT | Verify the broker's TLS certificate (only applies with MQTT_TLS). CLI: --verify-cert/--no-verify-cert. Invalid values fall back to enabled |
True | No |
| STATUS_TOPIC | Topic to publish status messages | - | No |
| SKIP_LOCATION | Don't send location data to ABRP | False | No |
| TM2ABRP_DEBUG | Enable debug logging | False | No |
| REFRESH_RATE_DRIVING | Update interval (seconds) while driving; fractional values allowed, min 1 | 2.5 | No |
| REFRESH_RATE_CHARGING | Update interval (seconds) while charging | 6 | No |
| REFRESH_RATE_PARKED | Update interval (seconds) while parked/asleep | 30 | No |
| ABRP_API_KEY | Override the shared ABRP application key (env var or Docker secret). Not a per-user secret | Built-in | No |
Car Model Identification
For optimal route planning, it's recommended to manually specify your car model using the CAR_MODEL parameter. Get the correct identifier from:
https://api.iternio.com/1/tlm/get_carmodels_list
Examples:
- Tesla Model 3 Long Range with Heat Pump:
tesla:m3:20:bt37:heatpump - Tesla Model Y Performance:
tesla:my:19:bt37:perf - Tesla Model S 100D:
s100d
Troubleshooting
Check logs for connection issues:
docker-compose logs ABRPVerify MQTT connectivity:
docker-compose exec ABRP python -c "import paho.mqtt.client as mqtt; client = mqtt.Client(); client.connect('mosquitto', 1883); print('Connected successfully')"Common issues:
- MQTT server not reachable
- Incorrect MQTT credentials
- Invalid ABRP token
- Wrong TeslaMate car number
Advanced Usage
Customizing Update Frequencies
The application uses different update rates (in seconds) based on car state, with these defaults:
- Driving: every 2.5 seconds (
REFRESH_RATE_DRIVING) - Charging: every 6 seconds (
REFRESH_RATE_CHARGING) - Parked/Asleep: every 30 seconds (
REFRESH_RATE_PARKED)
ABRP recommends a telemetry point roughly every 5 seconds and advises against
intervals longer than 30 seconds, so the defaults stay within that window. Faster
driving updates (e.g. REFRESH_RATE_DRIVING=1) are supported but, per ABRP, don't
materially improve its predictions. Rates may be fractional (e.g. 2.5) but must
be at least 1 second; out-of-range or invalid values fall back to the default.
These can be customized via environment variables or the equivalent CLI options
(--refresh-driving, --refresh-charging, --refresh-parked). Any value left
unset falls back to the default above. Values must be whole positive seconds;
invalid values are ignored (with a warning) and the default is used instead.
For example, to make driving updates less aggressive:
environment:
- REFRESH_RATE_DRIVING=5
Credits
Based on letienne's original code, with improvements by various contributors (see commit history).
License
Licensed under the MIT license.
Install TeslaMate-ABRP on Unraid in a few clicks.
Find TeslaMate-ABRP in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Requirements
Categories
Download Statistics
Total Downloads Over Time
Related apps
Explore more like this
Explore allDetails
fetzu/teslamate-abrp:latestRuntime arguments
- Network
bridge- Shell
sh- Privileged
- false
- Extra Params
--restart unless-stopped
Template configuration
- Target
- MQTT_SERVER
Username if you are running MQTT in secure mode. Empty is no user
- Target
- MQTT_USERNAME
MQTT password if running in secure mode. Empty if not
- Target
- MQTT_PASSWORD
This is the token provided by ABRP
- Target
- USER_TOKEN
This is your car number, if you only have one vehicle then this will be 1
- Target
- CAR_NUMBER
- Default
- 1
Your car model. When this value is not set, the script will try to determine your car model automatically (this should work for Models S, X, 3 and Y with standard configs). The detection is very bare-bones and will not take into account factors such as wheel type, heat pump, LFP battery. It is recommended you take a moment to find your car model on https://api.iternio.com/1/tlm/get_carmodels_list and use the corresponding key as a value for CAR_MODEL (e.g.
- Target
- CAR_MODEL