TeslaETA - Realtime position links zum teilen

TeslaETA erlaubt einem einen link zu generieren der fuer eine limitierte Zeit gueltig ist mit einem Ziel der es dem Empfaenger erlaubt zu sehen wie lange es noch dauert bis man am Ziel ankommt.

Dies ist ein kleines Hobby Projekt von mir da ich oft die Frage bekomme wann ich denn wohl ankommen wuerde. Jetzt muss ich nur einen Link schicken.

Achtung: TeslaETA benutzt TeslaLogger’s API. Daher ist es nur moeglich TeslaETA zu nutzen wenn TeslaLogger vorhanden ist.

Letzte version: 0.0.2

Alle details sind auf Github zu finden.
Eine Anleitung zum aufsetzen gibt es hier: Sharing your ETA with TeslaETA

Changelog

v0.0.2

Verbesserte unterstuetzung von BASE_URL fuer die static files (fontawesome icons) wenn man es hinter einem reverse proxy (i.e. traefik) nutzt.

v0.0.1

An initial release of TeslaETA.

8 „Gefällt mir“

Alternativ gibts Apps wie Glympse für solche Vorhaben. Nutze ich seit Jahren.

Projektbeschreibung nicht gelesen?

2 „Gefällt mir“

@phibs77 Doch klar. Ich hab nur eine Alternative aufgewiesen für alle die Teslalogger z.B. nicht haben aber so eine Funktion auch gut finden.
Falls nicht erwünscht gerne löschen.

Cooles Projekt!
Ich hab TeslaLogger aber kenne die Funktion da gar nicht. Wo finde ich die?

1 „Gefällt mir“

Dies ist nicht integriert in TeslaLogger, sondern ist ein separates Stueck Software. Man kann es in einem Docker container laufen lassen oder direkt mit python in einem virtualenv.

Das einzige was es braucht ist die URL / IP Adresse von TeslaLogger um die daten vom Wagen zu kriegen (Location, Batterie, …) da die Software nicht direkt mit dem Tesla API redet.

1 „Gefällt mir“

Pack das doch direkt mit in die teslalogger Version rein. Das wäre schön rund als SW Lösung wenn eh ein Teslalogger nötig ist damit es funktioniert und man muss nicht nochmal extra was installieren/aufsetzen als nicht Docker User

Aber sehr coole Sache.

4 „Gefällt mir“

Jede Software fängt so an :person_shrugging:t2:
Bei open source ist man ja auch ein stückweit auf Tester angewiesen.

1 „Gefällt mir“

Ich habe jetzt mal einen Guide geschrieben wie man TeslaETA neben TeslaLogger zum laufen kriegen kann: Sharing your ETA with TeslaETA

In dem post gibts auch ein bisschen mehr Infos zu den .env Variablen.

1 „Gefällt mir“

Es gibt inzwischen 2 neue Versionen, aber ich kann anscheinend nicht mehr den ersten Post updaten.

v0.0.3
Fix für ein Problem wo die live location des Wagens nicht angezeigt wurde.

v0.1
Die erste Version mit einer verbesserten UI fuer den Admin Panel.
Login wurde auch verbessert mit einer neuen „Remember Me“ Option.

Alle Infos weiterhin auf: GitHub - flosoft/TeslaETA: A Flask service allowing you to share links with ETAs on a map

1 „Gefällt mir“

So, die letzten paar Tage hatte ich bissl mehr Zeit um das ganze mal zu verbessern. Es gibt jetzt eine Karte wo man das Ziel suchen kann und den Pin auf der Karte dann anpassen kann.

Das neue Design ist jetzt auch auf allen seiten.

Also jetzt die letzte Version ist: v0.2.2

Das Changelog gibt es hier: Releases · flosoft/TeslaETA · GitHub


Ich war am ueberlegen auch ein Tutorial zu schreiben fuer den TeslaLogger Raspberry Pi, aber leider habe ich das image nicht / kein Zugang auf einen. Falls jemand damit helfen will, gerne per PM melden!

1 „Gefällt mir“

Interessantes Projekt!
Habs bei oracle mit Docker laufen, komme aber nur bis zum „Incorrect Login“.
Admin-Password in der .env mehrmals erzeugen lassen, mit und ohne doppelten „$“. Was könnte ich noch tun um einzuloggen ? Evtl. ist ein Musterhash (admin/admin) in der Beispiel-.env hilfreich ?

Hi,

Gerade mal gecheckt bei mir in der config, das Passwort ist nicht mit htpasswd encodiert, also einfach als plaintext.

Also, as Beispiel mit dem Passwort „password“, die .env Datei sollte dies haben:

ADMIN_PASSWORD=password

Ich werde mal die Dokumentation korrigieren.

Danke, so funktioniert es.

1 „Gefällt mir“

Es gab mittlerweile ne menge updates, aber jetzt mit version 0.5 kann man auch TeslaMate nutzen.
Bitte achtet drauf das man die .env datei updaten muss.
Mehr infos gibts hier: GitHub - flosoft/TeslaETA: A Flask service allowing you to share links with ETAs on a map

Mein TL funktioniert auf einem virtuellen Server als Docker-Container einwandfrei. TeslaETA krieg ich einfach nicht hin. Habe einen neuen Container erstellt mit dieser docker-compose.yml welche das Netzwerk „Tesla-network“ verwendet, welche auch die vier Container

0.0.0.0:5051->5051/tcp, :::5051->5051/tcp teslaeta
0.0.0.0:3000->3000/tcp, :::3000->3000/tcp teslalogger-grafana-1
0.0.0.0:5010->5000/tcp, [::]:5010->5000/tcp teslalogger-teslalogger-1
0.0.0.0:8888->80/tcp, [::]:8888->80/tcp teslalogger-webserver-1
0.0.0.0:3306->3306/tcp, :::3306->3306/tcp teslalogger-database-1

von TL nutzen. Dabei verweise ich auf die Backend-Provider url vom Teslalogger (siehe unten). Wenn ich den Server über http://111.1111.11.111:5051/map/ aufrufe, wird mir nur das ETA Logo angezeigt. Damit kann ich TeslaETA aber nicht nutzen. Ich vermute einen kleinen Konfigurationsfehler.

Beim starten des teslaETA Containers werden folgende Warnhinweise angezeigt. Muss hier etwas korrigiert werden?

/teslaeta# docker compose up -d
WARN[0000] The „apr1“ variable is not set. Defaulting to a blank string.
WARN[0000] The „gzf0RFtK“ variable is not set. Defaulting to a blank string.
WARN[0000] The „hM“ variable is not set. Defaulting to a blank string.
WARN[0000] The „apr1“ variable is not set. Defaulting to a blank string.
WARN[0000] The „gzf0RFtK“ variable is not set. Defaulting to a blank string.
WARN[0000] The „hM“ variable is not set. Defaulting to a blank string.
WARN[0000] The „apr1“ variable is not set. Defaulting to a blank string.
WARN[0000] The „gzf0RFtK“ variable is not set. Defaulting to a blank string.
WARN[0000] The „hM“ variable is not set. Defaulting to a blank string.
WARN[0000] The „apr1“ variable is not set. Defaulting to a blank string.
WARN[0000] The „gzf0RFtK“ variable is not set. Defaulting to a blank string.
WARN[0000] The „hM“ variable is not set. Defaulting to a blank string.
WARN[0000] The „apr1“ variable is not set. Defaulting to a blank string.
WARN[0000] The „gzf0RFtK“ variable is not set. Defaulting to a blank string.
WARN[0000] The „hM“ variable is not set. Defaulting to a blank string.

Ich bin für jeden Hinweis dankbar. Lösungsansätze erwünscht :slight_smile:

services:

  • teslaeta:*

  • image: ghcr.io/flosoft/teslaeta:latest*

  • container_name: teslaeta*

  • restart: always*

  • ports:*

  •  - "5051:5051"*
    
  • environment:*

  •  - TZ=Europe/Berlin*
    
  • env_file:*

  •  - .env*
    
  • volumes:*

  •  - ./data:/data*
    
  • networks:*

  •  - tesla-network*
    

networks:

  • tesla-network:*
  • external: true*

die .env sieht so aus:

TelsaETA configuration

PORT=5051
DATA_DIR=/data/
SECRET_KEY=passworT
ADMIN_PASSWORD=xxxxxxxx
BASE_URL=/map
MAPBOX_TOKEN=pk.exxxxxxxxxx

BACKEND_PROVIDER can be either „teslalogger“ or „teslamate“

BACKEND_PROVIDER=teslalogger
BACKEND_PROVIDER_BASE_URL=http://teslalogger-teslalogger-1:5010
BACKEND_PROVIDER_CAR_ID=1
BACKEND_PROVIDER_MULTICAR=True

TZ=Europe/Berlin

Kann es sein das deine Konfiguration falsch formattiert ist? Die Log messages machen irgendwie keinen sinn.

Probier es mit der config:

.env datei

PORT=5051
DATA_DIR=/data/
SECRET_KEY=EIN_LANGER_SECRET_KEY
ADMIN_PASSWORD=PASSWORTHIER
BASE_URL=/map
MAPBOX_TOKEN=pk.BLABLABLA

BACKEND_PROVIDER=teslalogger
BACKEND_PROVIDER_BASE_URL=http://teslalogger:5000/
BACKEND_PROVIDER_CAR_ID=1
TZ=Europe/Berlin

Die BASE_URL sollte den hostname von dem container haben, normalerweise teslalogger mit der standard docker-compose datei von Teslalogger.

und mit der folgenden docker-compose.yml datei:

services:
  teslaeta:
    container_name: teslaeta
    image: ghcr.io/flosoft/teslaeta:latest
    volumes:
    - ./data/:/data/
    env_file:
    - .env
    #ports:
    #- "5051:5051"
    networks:
    - teslalogger_network
 
networks:
  teslalogger_network:
    external: true

Bei dem Network, teslalogger_network ersetzen durch das Netzwerk von dem Teslalogger.

Zwei Fragen zu Deinem Vorschlag:
1: Warum hast Du die Ports entfernt?
2. Du schreibst " Bei dem Network, teslalogger_network ersetzen durch das Netzwerk von dem Teslalogger." Nach meinem Verständnis ist es optimal, wenn sich hier alle Container im selben Netzwerk befinden, dem teslalogger_network

1 - Stimmt, du solltest die Ports behalten. Ich brauche sie bei mir nicht da ich Traefik als reverse proxy nutze.

2 - Genau, alles im gleichen Netzwerk macht es einfacher. Falls das nicht geht, kannst du auch als backend port 5010 nutzen, da du den in deiner config freigegeben hast.

Ich habe nun diese config und es funktioniert trotzdem nicht. beim IP-Direktzugriff xxx.xxx.xxx.xxx:5051/map erscheint nur das Logo von teslaeta.

das Log-file von docker teslaeta sieht nach mir auch gut aus:
ocker logs teslaeta

  • flask db upgrade

/service/backendproviders/teslamate.py:12: SyntaxWarning: „is not“ with ‚str‘ literal. Did you mean „!=“?

self.is_driving = data[„driving_details“][„shift_state“] is not „P“

INFO [alembic.runtime.migration] Context impl SQLiteImpl.

INFO [alembic.runtime.migration] Will assume non-transactional DDL.

Starting provider. BASE_URL : http://172.20.0.2:5010/, CAR_ID : 1

Starting provider. BASE_URL : http://172.20.0.2:5010/, CAR_ID : 1

  • python -m app run --host=0.0.0.0

Starting provider. BASE_URL : http://172.20.0.2:5010/, CAR_ID : 1

Starting provider. BASE_URL : http://172.20.0.2:5010/, CAR_ID : 1

  • Serving Flask app ‚app‘

  • Debug mode: off

WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.

Press CTRL+C to quit

194.230.147.173 - - [07/Nov/2024 12:27:17] „GET /map/ HTTP/1.1“ 200 -

194.230.147.173 - - [07/Nov/2024 12:27:17] „GET /map/static/eta-logo.png HTTP/1.1“ 304 -

194.230.147.173 - - [07/Nov/2024 12:27:17] „GET /map/static/tailwind.css HTTP/1.1“ 304 -