Obsah

Teslamate

Skvělý logger na vlastním server dat pro auta značky Tesla.

Instalace

Jako inspiraci lze použít video:

Instaluji pomocí dockeru a na začátek je potřeba dobře zabezpečit. Pomocí stránky https://randomkeygen.com/ jsem si vygeneroval token na zakryptování Tesla API tokenu.

Takto vypadá můj docker-compose.yml:

version: "3.3"  # Nastavení verze Docker Compose

services:
  teslamate:
    container_name: teslamate
    image: teslamate/teslamate:latest
    restart: always
    environment:
      - ENCRYPTION_KEY=****** #replace with a secure key to encrypt your Tesla API tokens f.ex. randomkeygen.com
      - DATABASE_USER=*******
      - DATABASE_PASS=******* #insert your secure database password!
      - DATABASE_NAME=*******
      - DATABASE_HOST=database
      - MQTT_HOST=*******
      - MQTT_PORT=8883
      - MQTT_USERNAME=*******
      - MQTT_PASSWORD=*******
      - MQTT_TLS=true
      - MQTT_TLS_ACCEPT_INVALID_CERTS=true
      - TZ=Europe/Prague
    ports:
      - 4000:4000
    volumes:
      - ./import:/opt/app/import
    cap_drop:
      - all

  database:
    container_name: postgres
    image: postgres:17
    restart: always
    environment:
      - POSTGRES_USER=*******
      - POSTGRES_PASSWORD=******* #insert your secure database password!
      - POSTGRES_DB=*******
      - TZ=Europe/Prague
    volumes:
      - teslamate-db:/var/lib/postgresql/data

  grafana:
    container_name: grafana-teslamate
    image: teslamate/grafana:latest
    restart: always
    environment:
      - DATABASE_USER=*******
      - DATABASE_PASS=******* #insert your secure database password!
      - DATABASE_NAME=*******
      - DATABASE_HOST=database
      - TZ=Europe/Prague
    ports:
      - 3001:3000
    volumes:
      - teslamate-grafana-data:/var/lib/grafana

volumes:
  teslamate-db:
  teslamate-grafana-data:

Samozřejmě je nutné nahradit hvězdičky vlastními hesly, uživatelskými jmény atp. Další možnosti nastavení Environment Variables pro Teslamate je v dokumentaci.

Jakmile budu řešit zabezpečení, tak bude dobré zprovoznit v dockeru traefik proxy dle návodu.

Ještě pro úplnost doplňuji, že databáze je uložena mimo kontejner v dockeru a je v cestě: /var/lib/docker/volumes

Získání Tesla tokenu

K získání Tesla tokenu jsem použil tento nástroj: https://github.com/fredli74/fetch-tesla-token

Nainstaloval jsem si ho lokálně a spustil ve složce pomocí příkazu:

npm run start

Postup je takový, že zadám url: http://localhost:15198

Tam běží stránka, kde je popsaný postup. Kliknu na URL, přihlásím se k Tesla účtu a zkopíruji URL zpátky do stránky Tesla token fetcher. Následně pak získám Access Token a Refresh Token potřebný pro přihlášení Teslamate.

Záloha a obnova databáze

Návod vychází z této dokumentace a je potřeba opět nastavit správná uživatelské jméno a databázi.

Záloha databáze:

docker compose exec -T database pg_dump -U teslamate teslamate > ./teslamate.bck 

Obnova databáze:

# Stop the teslamate container to avoid write conflicts
docker compose stop teslamate
 
# Drop existing data and reinitialize (Don't forget to replace first teslamate if using different TM_DB_USER)
docker compose exec -T database psql -U teslamate teslamate << .
DROP SCHEMA public CASCADE;
CREATE SCHEMA public;
CREATE EXTENSION cube WITH SCHEMA public;
CREATE EXTENSION earthdistance WITH SCHEMA public;
.
 
# Restore
docker compose exec -T database psql -U teslamate -d teslamate < teslamate.bck
 
# Restart the teslamate container
docker compose start teslamate

Upgrade na novou verzi

Předem určitě zálohovat databázi a poté spustit příkazy:

docker compose stop
docker compose pull
docker compose up -d