(Nota: Trobareu la versió en anglès d’aquest tutorial al final de l’article / You will find the English version of this tutorial at the end of the post).
Quan Tesla et deixa un cotxe de substitució o de cortesia, TeslaMate el detecta i el crea automàticament a la base de dades com a un vehicle nou. Això fa que la interfície es quedi amb dades residuals d’un cotxe que ja no utilitzes. Com que la interfície web de TeslaMate no inclou una opció directament per gestionar o esborrar vehicles secundaris, cal accedir a la base de dades PostgreSQL.
En aquest tutorial veurem com eliminar completament el vehicle de substitució o, alternativament, com fusionar les seves dades de trajectes i càrregues amb el teu cotxe principal.
Entorn: Aquest exemple està basat en una instal·lació de TeslaMate corrent dins d’un contenidor Docker en un NAS Synology. Si utilitzes un altre entorn (un servidor Linux dedicat, un Raspberry Pi o un altre hypervisor), el procediment SQL serà exactament el mateix, però hauràs d’adaptar el mètode per connectar-te per SSH o accedir a la terminal del teu sistema.
Avís de seguretat: Abans de fer qualsevol modificació a la base de dades, és altament recomanable fer una còpia de seguretat (backup) de TeslaMate.
Pas 1: Connectar-se al servidor per SSH
Accedeix a la terminal del teu NAS Synology o servidor via SSH utilitzant el port que tinguis configurat (si utilitzes un port personalitzat com el 50022, recorda utilitzar el paràmetre -p):
Bash
ssh -p 50022 usuari@IP_DEL_TEU_NAS
Pas 2: Accedir a la base de dades PostgreSQL de TeslaMate
Utilitza la comanda docker exec indicant el nom del contenidor de la teva base de dades (habitualment teslamate-database-1 o teslamate_database_1) per obrir la consola interactiva de PostgreSQL:
Bash
docker exec -it teslamate-database-1 psql -U teslamate teslamate
Pas 3: Identificar els IDs dels vehicles
Un cop a dins del prompt de PostgreSQL (teslamate=#), consulta la llista de vehicles registrats:
SQL
SELECT id, vin, model FROM cars;
Preneu nota dels id:
- Cotxe Principal (ex.
id = 1) - Cotxe de Substitució (ex.
id = 2)
Pas 4: Triar entre opció A (Eliminar) o opció B (Fusionar)
Opció A: Eliminar completament el vehicle de substitució
Aquesta opció esborra tot el registre, trajectes, posicions i càrregues del cotxe de cortesia sense deixar cap rastre.
SQL
DELETE FROM cars WHERE id = 2;
DELETE FROM car_settings WHERE id = 2;
DELETE FROM charges WHERE charging_process_id IN (SELECT id FROM charging_processes WHERE car_id = 2);
DELETE FROM charging_processes WHERE car_id = 2;
DELETE FROM drives WHERE car_id = 2;
DELETE FROM positions WHERE car_id = 2;
DELETE FROM states WHERE car_id = 2;
DELETE FROM updates WHERE car_id = 2;
Opció B: Fusionar les dades amb el vehicle principal
Si vols conservar els quilòmetres i el consum d’energia realitzat durant aquelles setmanes, pots reassignar tot l’historial del cotxe de substitució (ID 2) al teu cotxe principal (ID 1) abans d’eliminar el vehicle secundari.
- Pros: Conservador de quilòmetres totals recorreguts, consums d’energia generals i despeses de càrrega d’aquell període als teus panells de Grafana.
- Contres: Si el cotxe de cortesia tenia un model/bateria diferent (ex. bateria NCA vs LFP) o una mida de rodes diferent, pot distorsionar lleugerament les estadístiques d’eficiència i estimació de degradació. També pot generar un petit salt en la gràfica d’odòmetre si el cotxe deixat tenia un quilometratge total diferent.
SQL
-- 1. Reassignar historial de dades al cotxe principal (ID 1)
UPDATE charging_processes SET car_id = 1 WHERE car_id = 2;
UPDATE drives SET car_id = 1 WHERE car_id = 2;
UPDATE positions SET car_id = 1 WHERE car_id = 2;
UPDATE states SET car_id = 1 WHERE car_id = 2;
UPDATE updates SET car_id = 1 WHERE car_id = 2;
-- 2. Eliminar l'entrada del cotxe secundari
DELETE FROM car_settings WHERE id = 2;
DELETE FROM cars WHERE id = 2;
Pas 5: Optimitzar la base de dades i sortir
Per assegurar-te que els índexs de la base de dades queden actualitzats i l’espai s’allibera correctament, executa:
SQL
REINDEX DATABASE teslamate;
Finalment, surt de la consola SQL:
SQL
\q
Un cop finalitzat el procés, quan tornis a carregar la interfície de TeslaMate o Grafana, les canvis es reflectiran immediatament.
How to Remove or Merge a Loaner Vehicle in TeslaMate
When Tesla assigns you a loaner or service vehicle, TeslaMate automatically detects it and creates a new entry in your database. This leaves residual data in your dashboard for a car you no longer drive. Since the TeslaMate web UI does not currently feature a direct option to delete or manage secondary vehicles, you need to manually access the underlying PostgreSQL database.
This guide covers two methods: completely purging the loaner vehicle, or merging its driving and charging data into your main vehicle.
Environment Note: This tutorial is based on a setup running TeslaMate inside Docker containers on a Synology NAS. If your setup runs on a different environment (such as a dedicated Linux server, a Raspberry Pi, or another hypervisor), the SQL queries remain identical, but you will need to adjust your method for accessing your system’s SSH terminal or container environment.
Warning: Before performing any manual modifications to your database, it is strongly recommended to create a full backup of your TeslaMate instance.
Step 1: Connect to your server via SSH
Open your terminal and connect to your Synology NAS or server via SSH using your configured port (if using a custom SSH port like 50022, use the -p flag):
Bash
ssh -p 50022 username@YOUR_NAS_IP
Step 2: Access the TeslaMate PostgreSQL Database
Use the docker exec command along with your database container name (commonly teslamate-database-1 or teslamate_database_1) to open the interactive PostgreSQL shell:
Bash
docker exec -it teslamate-database-1 psql -U teslamate teslamate
Step 3: Identify Vehicle IDs
Once inside the PostgreSQL prompt (teslamate=#), list all registered vehicles:
SQL
SELECT id, vin, model FROM cars;
Take note of the IDs:
- Main Vehicle (e.g.,
id = 1) - Loaner Vehicle (e.g.,
id = 2)
Step 4: Choose Option A (Delete) or Option B (Merge)
Option A: Completely delete the loaner vehicle
This completely purges all drives, charging sessions, and telemetry associated with the temporary car.
SQL
DELETE FROM cars WHERE id = 2;
DELETE FROM car_settings WHERE id = 2;
DELETE FROM charges WHERE charging_process_id IN (SELECT id FROM charging_processes WHERE car_id = 2);
DELETE FROM charging_processes WHERE car_id = 2;
DELETE FROM drives WHERE car_id = 2;
DELETE FROM positions WHERE car_id = 2;
DELETE FROM states WHERE car_id = 2;
DELETE FROM updates WHERE car_id = 2;
Option B: Merge data into your main vehicle
If you want to keep track of the distance driven and energy consumed during the loaner period, you can reassign all history from the loaner car (ID 2) to your primary car (ID 1) before removing the loaner entry.
- Pros: Retains overall distance driven, total energy consumption, and charging costs from that period in your main Grafana dashboards.
- Cons: If the loaner car had a different battery chemistry or wheel size, it might slightly distort your efficiency and degradation calculations. It could also cause a jump in your odometer graph if the loaner car had a significantly different total odometer reading.
SQL
-- 1. Reassign telemetry and history to the primary car (ID 1)
UPDATE charging_processes SET car_id = 1 WHERE car_id = 2;
UPDATE drives SET car_id = 1 WHERE car_id = 2;
UPDATE positions SET car_id = 1 WHERE car_id = 2;
UPDATE states SET car_id = 1 WHERE car_id = 2;
UPDATE updates SET car_id = 1 WHERE car_id = 2;
-- 2. Delete the secondary car entry
DELETE FROM car_settings WHERE id = 2;
DELETE FROM cars WHERE id = 2;
Step 5: Reindex the Database and Exit
To rebuild database indexes and clean up cleanly, run:
SQL
REINDEX DATABASE teslamate;
Then exit the PostgreSQL shell:
SQL
\q
Upon refreshing your TeslaMate and Grafana dashboards, the changes will take effect immediately.