Übersicht Mitteilungen

Hilfe zu Mitteilungen

Alles, was Sie brauchen, um den Notifier neben Ihrem TeslaMate zu betreiben, und was Sie prüfen, wenn ein Ereignis ausbleibt.

Bevor Sie starten

Drei Dinge, und die meisten TeslaMate-Installationen haben die ersten beiden bereits.

  • TeslaMate mit MQTT-Broker. Mosquitto ist Teil der Standard-Compose-Datei von TeslaMate.
  • Docker auf demselben Rechner wie TeslaMate oder auf jedem Host, der den Broker erreicht.
  • Ausgehender Internetzugang. Kein eingehender Port, und Ihr TeslaMate muss nicht öffentlich erreichbar sein.

Notifier installieren

Ihr TeslaMate kann Ihr iPhone von sich aus nicht erreichen, und eine iOS-Mitteilung kann nur über Apple ankommen. Der Notifier ist der kleine Container, der MQTT beobachtet und Ereignisse weitergibt. Er läuft neben TeslaMate und öffnet nie einen Port.

  1. Token in der App holen

    Öffnen Sie HedgieMate, gehen Sie zu Einstellungen und dann zu Push-Mitteilungen und schalten Sie sie ein. Die App zeigt einen Verknüpfungs-Token, der mit hm_ beginnt, und die Server-ID des verbundenen TeslaMate-Servers. Kopieren Sie beides.

    Der Token verbindet App und Container. Behandeln Sie ihn wie ein Passwort.

  2. Container in die Compose-Datei eintragen

    Öffnen Sie die docker-compose.yml, aus der Sie TeslaMate starten, und ergänzen Sie den folgenden Service. In derselben Datei teilt er sich das Netzwerk mit Ihrem Broker, MQTT_HOST ist dann einfach der Servicename des Brokers.

    docker-compose.yml
    # add under services: in the docker-compose.yml you run TeslaMate from
      hedgiemate-notifier:
        image: hedgiemate/notifier:latest
        restart: unless-stopped
        depends_on:
          - mosquitto
        environment:
          HEDGIEMATE_USER_TOKEN: "hm_your_token_here"
          SERVER_ID: "your-server-uuid"
          MQTT_HOST: "mosquitto"
          MQTT_PORT: "1883"
          CAR_IDS: "1"
          LOG_LEVEL: "info"
        volumes:
          - hedgiemate-notifier-data:/data
    
    # and under the top-level volumes: key, adding it if the file has none
      hedgiemate-notifier-data:

    Das Volume ist optional. Es behält Fahrzeugnamen über einen Neustart hinweg, ohne Volume ergänzt sie das Relay. Nutzen Sie ein benanntes Volume statt eines Bind Mounts: der Container läuft als nicht privilegierter Benutzer und kann in ein von Docker als root angelegtes Hostverzeichnis nicht schreiben.

  3. Container starten

    Starten Sie den neuen Service. Der Rest Ihres Stacks muss nicht neu starten.

    Terminal
    docker compose up -d hedgiemate-notifier

    Danach das Log lesen. Ein sauberer Start zeigt die Broker-Verbindung und die überwachten Fahrzeug-IDs.

    Terminal
    docker compose logs -f hedgiemate-notifier
  4. In der App prüfen

    Die App markiert den Server innerhalb weniger Sekunden als verbunden. Ab da schalten Sie einzelne Ereignisse pro Fahrzeug ein oder aus.

    Es kommt nichts an, bis das Fahrzeug tatsächlich seinen Zustand ändert. Am schnellsten sehen Sie das erste Ereignis beim Anstecken des Ladekabels.

Ohne Compose

Läuft TeslaMate nicht über Compose, erledigt docker run dasselbe. Setzen Sie MQTT_HOST auf einen Host, den der Container erreicht.

Terminal
docker run -d \
  --name hedgiemate-notifier \
  --restart unless-stopped \
  -e HEDGIEMATE_USER_TOKEN="hm_your_token_here" \
  -e SERVER_ID="your-server-uuid" \
  -e MQTT_HOST="your-mqtt-host" \
  -e CAR_IDS="1" \
  hedgiemate/notifier:latest

Mehrere TeslaMate-Server

Betreiben Sie je einen Notifier pro Server. Derselbe Verknüpfungs-Token gilt überall. Auseinandergehalten werden die Server in der App über die Server-ID.

Konfiguration

Alles wird über Umgebungsvariablen gesetzt. Drei sind Pflicht, der Rest hat brauchbare Standardwerte.

Variable Standard Beschreibung
HEDGIEMATE_USER_TOKEN Pflicht keiner Verknüpfungs-Token aus der App. Beginnt mit hm_.
MQTT_HOST Pflicht keiner Hostname Ihres MQTT-Brokers. Innerhalb von Compose ist das der Servicename, meist mosquitto.
SERVER_ID Pflicht keiner Server-UUID aus der App. Der Container startet auch ohne, dann werden Einstellungen pro Server und pro Fahrzeug aber ignoriert.
MQTT_PORT 1883 Port des Brokers.
MQTT_USERNAME keiner Benutzername für den Broker, falls er eine Anmeldung verlangt.
MQTT_PASSWORD keiner Passwort für den Broker.
MQTT_CLIENT_ID hedgiemate-notifier Client-ID am Broker. Ändern Sie sie, falls sich damit schon etwas anderes verbindet.
MQTT_TLS false Auf true setzen für einen Broker mit TLS. Der Standardport wechselt dann auf 8883.
MQTT_NAMESPACE keiner Muss dem MQTT_NAMESPACE Ihres TeslaMate entsprechen, falls gesetzt. Die Topics lauten dann teslamate<namespace>/cars/#.
CAR_IDS 1 Fahrzeug-IDs zur Überwachung, mit Komma getrennt, etwa 1,2. Jedes Fahrzeug bekommt seine eigene Zustandsmaschine.
LOG_LEVEL info debug, info, warn oder error.
RELAY_URL https://push.hedgiemate.com Adresse des Relays. Es gibt keinen Grund, sie zu ändern.

Alle Ereignisse

Jede Zeile ist ein eigener Schalter pro Fahrzeug in der App. Aktualisierungen von Live-Aktivitäten sind keine Mitteilungen und stehen nicht in der Liste.

Mitteilung Wird gesendet, wenn
Fahrt
Fahrt gestartet state → driving
Fahrt beendet state leaves driving
Laden
Ladevorgang gestartet charging_state → Charging
Ladevorgang abgeschlossen charging_state → Complete
Ladevorgang unterbrochen charging_state leaves Charging without Complete
Ladekabel angeschlossen plugged_in → true
Ladekabel getrennt plugged_in → false
Batterie
Batterie niedrig battery_level ≤ BATTERY_LOW_THRESHOLD
Ziel-Ladestand erreicht battery_level ≥ BATTERY_HIGH_THRESHOLD
Standort
Geofence betreten geofence set
Geofence verlassen geofence cleared or changed
Sicherheit
Sentry-Aufnahme center_display_state = 7
Fahrzeug
Software-Update update_available → true
Schläft ein state → asleep pending
Schläft state → asleep
Fahrzeug aufgewacht state leaves asleep

Es kommt nichts an

Arbeiten Sie die Liste von oben ab. Die meisten Fälle sind einer der ersten drei.

Die App sagt weiterhin, der Server sei nicht verbunden

Prüfen Sie mit docker compose ps, ob der Container wirklich läuft, und lesen Sie sein Log. Häufigste Ursache ist ein falscher MQTT_HOST: innerhalb von Compose ist das der Servicename des Brokers, also mosquitto, nicht localhost.

Der Container läuft, aber es wird nie ein Ereignis ausgelöst

CAR_IDS muss zur Fahrzeug-ID passen, die TeslaMate verwendet. TeslaMate nummeriert Fahrzeuge ab 1, bei mehreren listen Sie sie auf: CAR_IDS=1,2.

MQTT verbindet sich und das Log bleibt still

Wenn Sie in TeslaMate MQTT_NAMESPACE gesetzt haben, setzen Sie denselben Wert auch beim Notifier. Sonst passen die Topic-Namen nicht und der Container hat nichts zu lesen.

Manche Ereignisse kommen an, andere nie

Jedes Ereignis ist ein Schalter pro Fahrzeug in der App. Öffnen Sie den Server in den Einstellungen und prüfen Sie die Ereignisliste dieses Fahrzeugs.

Batteriemitteilungen kommen nie

BATTERY_LOW_THRESHOLD und BATTERY_HIGH_THRESHOLD stehen standardmäßig auf 20 und 90. Sie werden einmal pro Ladevorgang gesendet, ein Fahrzeug, das die Grenze seit Ladebeginn nie überschritten hat, sendet also nichts.

Nach ein paar Tagen kommen keine Mitteilungen mehr

Stellen Sie sicher, dass der Service restart: unless-stopped hat und mit dem Host wieder hochkommt. Prüfen Sie dann iOS: ein Fokus oder die Mitteilungseinstellungen der App können sie schlucken.

Live-Aktivitäten erscheinen nicht

Live Activities müssen für HedgieMate in den iOS-Einstellungen erlaubt sein, und es muss eine aktive Sitzung geben. Die Dynamic Island braucht ein iPhone 14 Pro oder neuer.

Der Broker verlangt Anmeldung oder TLS

Setzen Sie MQTT_USERNAME und MQTT_PASSWORD. Für TLS setzen Sie MQTT_TLS auf true, wodurch der Standardport auf 8883 wechselt.

Sie wollen sehen, was passiert

Setzen Sie LOG_LEVEL auf debug, reproduzieren Sie den Fall und setzen Sie es zurück. Debug protokolliert jede MQTT-Nachricht und jede daraus getroffene Entscheidung.

Fragen

Warum brauche ich den Notifier überhaupt?

Ihr TeslaMate läuft auf Ihrem eigenen Server und kann Ihr iPhone nicht erreichen, und eine iOS-Mitteilung kann nur Apple zustellen. Der Notifier schließt genau diese Lücke: Er beobachtet Ihre MQTT-Topics, erkennt die Zustandsänderung und schickt das Ereignis zur Zustellung hinaus.

Muss mein TeslaMate aus dem Internet erreichbar sein?

Nein. Der Notifier baut nur ausgehende Verbindungen auf, für Mitteilungen muss also nichts freigegeben und kein Port weitergeleitet werden.

Was verlässt meinen Server tatsächlich?

Der Ereignistyp, der Batteriestand, der Ladezustand und der Name des Geofence, falls Sie Geofences nutzen. Koordinaten und Fahrtrouten bleiben auf Ihrem TeslaMate, die Adresse Ihres Servers wird nie gesendet. Ereignisdaten werden nach wenigen Stunden gelöscht.

Kann er auf einem anderen Rechner als TeslaMate laufen?

Ja, solange er Ihren MQTT-Broker erreicht. Setzen Sie MQTT_HOST auf diesen Host und stellen Sie sicher, dass der Broker-Port von dort erreichbar ist.

Funktioniert das mit mehreren Fahrzeugen?

Ja. Listen Sie die IDs in CAR_IDS auf, jedes Fahrzeug bekommt eigene Zustandsverfolgung und eigene Schalter in der App.

Was passiert, wenn das Relay nicht erreichbar ist?

Der Container versucht es einige Male mit wachsendem Abstand erneut und verwirft das Ereignis dann. Er läuft weiter und verarbeitet den nächsten Zustandswechsel normal.

Speichert er etwas?

Nur einen Cache der Fahrzeugnamen, und auch das nur mit dem optionalen Volume. Alles andere liegt im Arbeitsspeicher, solange der Container läuft.

Wie aktualisiere ich ihn?

Image erneut ziehen und den Service neu erstellen. Die Release-Notes stehen auf der Releases-Seite auf GitHub.

Wie schalte ich Mitteilungen aus?

In der App ausschalten oder den Container stoppen. Beides wirkt für sich, und nichts anderes in Ihrem TeslaMate-Stack hängt davon ab.

Quellcode

Der Notifier ist Go unter MIT-Lizenz. Lesen Sie den Code, oder melden Sie ein Issue, wenn etwas nicht stimmt.

LukStankovic/hedgiemate-notifier

Docker-Image hedgiemate/notifier:latest Docker Hub

Benötigen Sie Hilfe?

Probleme bei der Einrichtung? Wir helfen Ihnen gerne beim Einstieg.