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.
-
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.
-
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.
-
Container starten
Starten Sie den neuen Service. Der Rest Ihres Stacks muss nicht neu starten.
Terminaldocker compose up -d hedgiemate-notifier
Danach das Log lesen. Ein sauberer Start zeigt die Broker-Verbindung und die überwachten Fahrzeug-IDs.
Terminaldocker compose logs -f hedgiemate-notifier
-
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.
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
Benötigen Sie Hilfe?
Probleme bei der Einrichtung? Wir helfen Ihnen gerne beim Einstieg.