TeslaMate-ABRP

TeslaMate-ABRP

Docker app from ssickle's Repository

Overview

Sync TeslaMate data to A Better Route Planner to avoid issues with your Tesla sleeping

TeslaMate: MQTT to ABRP

codecov Test and Build Test and Build Test and Build GitHub release Docker Image Size Docker Pulls GitHub license

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

  1. Log in to the ABRP web app or mobile app
  2. Navigate to Settings (burger menu)
  3. Under "Plan settings" tap/click the cog wheel of your car
  4. Select "Edit connection"
  5. Select "Link" in the "Generic" box under In-car live data
  6. Token will be displayed
  7. 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

  1. Clone the repository:

    git clone https://github.com/fetzu/teslamate-abrp.git
    cd teslamate-abrp
    
  2. Install dependencies:

    pip install -r requirements.txt
    
  3. Run 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

  1. Check logs for connection issues:

    docker-compose logs ABRP
    
  2. Verify MQTT connectivity:

    docker-compose exec ABRP python -c "import paho.mqtt.client as mqtt; client = mqtt.Client(); client.connect('mosquitto', 1883); print('Connected successfully')"
    
  3. 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.

Open the Apps tab on your Unraid server Search Community Apps for TeslaMate-ABRP Review the template variables and paths Click Install

Requirements

//teslamate\\ and //mosquitto\\

Download Statistics

275,573
Total Downloads
6,913
This Month
9,155
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Explore more like this

Explore all

Details

Repository
fetzu/teslamate-abrp:latest
Last Updated2026-06-30
First Seen2022-08-07

Runtime arguments

Network
bridge
Shell
sh
Privileged
false
Extra Params
--restart unless-stopped

Template configuration

MQTT BrokerVariable
Target
MQTT_SERVER
MQTT UsernameVariable

Username if you are running MQTT in secure mode. Empty is no user

Target
MQTT_USERNAME
MQTT PasswordVariable

MQTT password if running in secure mode. Empty if not

Target
MQTT_PASSWORD
ABRP User TokenVariable

This is the token provided by ABRP

Target
USER_TOKEN
Car NumberVariable

This is your car number, if you only have one vehicle then this will be 1

Target
CAR_NUMBER
Default
1
Car ModelVariable

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