Hulp bij meldingen
Alles wat je nodig hebt om de Notifier naast je TeslaMate te laten draaien, en wat je nakijkt als een gebeurtenis niet aankomt.
Voordat je begint
Drie dingen, en de eerste twee heeft de meeste TeslaMate-installatie al.
- TeslaMate met een MQTT-broker. Mosquitto zit standaard in het Compose-bestand van TeslaMate.
- Docker op dezelfde machine als TeslaMate, of op elke host die de broker kan bereiken.
- Uitgaande internetverbinding. Geen inkomende poort, en je TeslaMate hoeft niet openbaar te zijn.
De Notifier installeren
Je TeslaMate kan je telefoon zelf niet bereiken, en een iOS-melding kan alleen via Apple aankomen. De Notifier is de kleine container die MQTT in de gaten houdt en gebeurtenissen doorgeeft. Hij staat naast TeslaMate en zet nooit een poort open.
-
Haal je token op in de app
Open HedgieMate, ga naar Instellingen, dan Pushmeldingen, en zet meldingen aan. De app laat een koppeltoken zien dat met hm_ begint, en een server-ID van de TeslaMate-server waarmee je verbonden bent. Kopieer ze beide.
Het token koppelt de app aan de container. Behandel het als een wachtwoord.
-
Voeg de container toe aan je Compose-bestand
Open de docker-compose.yml waarmee je TeslaMate draait en voeg de service hieronder toe. Doordat hij in hetzelfde bestand staat, zit hij op hetzelfde netwerk als je broker, en is MQTT_HOST simpelweg de servicenaam van de broker.
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:Het volume is optioneel. Het bewaart de namen van je auto's over een herstart heen; zonder volume vult de relay de naam alsnog in. Gebruik een named volume in plaats van een bind mount: de container draait als niet-rootgebruiker en kan niet schrijven naar een hostmap die Docker als root heeft aangemaakt.
-
Start hem
Breng de nieuwe service omhoog. De rest van je stack hoeft niet te herstarten.
Terminaldocker compose up -d hedgiemate-notifier
Lees daarna de logs. Bij een goede start verschijnt de verbinding met de broker en de auto-ID's die hij volgt.
Terminaldocker compose logs -f hedgiemate-notifier
-
Bevestig het in de app
De app markeert de server binnen een paar seconden als verbonden. Vanaf dat moment zet je losse gebeurtenissen per auto aan of uit.
Er komt niets binnen totdat de auto echt van toestand verandert. De stekker erin doen is de snelste manier om de eerste gebeurtenis te zien.
Zonder Compose
Beheer je TeslaMate niet met Compose, dan doet docker run hetzelfde. Laat MQTT_HOST naar een host wijzen die de container kan bereiken.
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
Meer dan één TeslaMate
Zet één Notifier naast elke server. Hetzelfde koppeltoken werkt overal. Het server-ID houdt ze in de app van elkaar gescheiden.
Configuratie
Alles stel je in met omgevingsvariabelen. Drie zijn verplicht, de rest heeft een werkende standaardwaarde.
| Variabele | Standaard | Omschrijving |
|---|---|---|
HEDGIEMATE_USER_TOKEN verplicht | geen | Koppeltoken uit de app. Begint met hm_. |
MQTT_HOST verplicht | geen | Hostnaam van je MQTT-broker. Binnen Compose is dat de servicenaam, meestal mosquitto. |
SERVER_ID verplicht | geen | Server-UUID uit de app. De container start ook zonder, maar de instellingen per server en per auto die je in de app maakt, worden dan genegeerd. |
MQTT_PORT | 1883 | Poort van de broker. |
MQTT_USERNAME | geen | Gebruikersnaam van de broker, als die authenticatie vereist. |
MQTT_PASSWORD | geen | Wachtwoord van de broker. |
MQTT_CLIENT_ID | hedgiemate-notifier | Client-ID waarmee verbinding wordt gemaakt met de broker. Wijzig het als er al iets anders onder deze naam verbindt. |
MQTT_TLS | false | Zet op true voor een broker met TLS. De standaardpoort wordt dan 8883. |
MQTT_NAMESPACE | geen | Laat overeenkomen met de MQTT_NAMESPACE van je TeslaMate, als je die hebt ingesteld. De topics worden dan teslamate<namespace>/cars/#. |
CAR_IDS | 1 | Auto-ID's om te volgen, gescheiden door komma's, bijvoorbeeld 1,2. Elke auto krijgt zijn eigen toestandsmachine. |
LOG_LEVEL | info | debug, info, warn of error. |
RELAY_URL | https://push.hedgiemate.com | Endpoint van de relay. Er is geen reden om dit te wijzigen. |
Alle gebeurtenissen
Elke rij is in de app een losse schakelaar per auto. Updates van live activiteiten zijn geen meldingen en staan hier niet bij.
| Melding | Verstuurd bij |
|---|---|
| Rijden | |
| Rit gestart | state → driving |
| Rit beëindigd | state leaves driving |
| Laden | |
| Laden gestart | charging_state → Charging |
| Laden voltooid | charging_state → Complete |
| Laden onderbroken | charging_state leaves Charging without Complete |
| Stekker erin | plugged_in → true |
| Stekker eruit | plugged_in → false |
| Accu | |
| Accu bijna leeg | battery_level ≤ BATTERY_LOW_THRESHOLD |
| Laaddoel bereikt | battery_level ≥ BATTERY_HIGH_THRESHOLD |
| Locatie | |
| Geofence binnengekomen | geofence set |
| Geofence verlaten | geofence cleared or changed |
| Beveiliging | |
| Bewakingsmodus neemt op | center_display_state = 7 |
| Auto | |
| Software-update | update_available → true |
| Valt in slaap | state → asleep pending |
| In slaap | state → asleep |
| Wakker geworden | state leaves asleep |
Er komt niets aan
Werk de lijst van boven naar beneden af. Meestal is het een van de eerste drie.
De app zegt nog steeds dat de server niet verbonden is
Controleer met docker compose ps of de container echt draait en lees dan de logs. Een verkeerde MQTT_HOST is de gebruikelijke oorzaak: binnen Compose is dat de servicenaam van de broker, mosquitto, niet localhost.
De container draait, maar er gaat nooit een gebeurtenis af
CAR_IDS moet overeenkomen met het auto-ID dat TeslaMate gebruikt. TeslaMate nummert auto's vanaf 1, en bij meerdere auto's som je ze op: CAR_IDS=1,2.
MQTT verbindt en het log blijft stil
Heb je MQTT_NAMESPACE in TeslaMate ingesteld, zet dan dezelfde waarde op de Notifier. Anders komen de namen van de topics niet overeen en zit de container er zonder iets te lezen.
Sommige gebeurtenissen komen aan, andere nooit
Elke gebeurtenis is in de app een schakelaar per auto. Open de server bij Instellingen en bekijk de lijst met gebeurtenissen voor die auto.
Accumeldingen gaan nooit af
BATTERY_LOW_THRESHOLD en BATTERY_HIGH_THRESHOLD staan standaard op 20 en 90. Ze gaan één keer per laadsessie af, dus een auto die de grens niet is overgegaan sinds hij begon te laden, stuurt er geen.
Meldingen stoppen na een paar dagen
Zorg dat de service restart: unless-stopped heeft, zodat hij met de host terugkomt. Kijk daarna naar iOS: een focus of de meldingsinstellingen van de app kunnen ze opslokken.
Live activiteiten verschijnen niet
Live activiteiten moeten in de iOS-instellingen voor HedgieMate zijn toegestaan, en er moet een actieve sessie zijn. Voor het Dynamic Island heb je een iPhone 14 Pro of nieuwer nodig.
De broker vraagt een login of TLS
Stel MQTT_USERNAME en MQTT_PASSWORD in. Voor TLS zet je MQTT_TLS op true, waarmee de standaardpoort naar 8883 verschuift.
Je wilt zien wat hij doet
Zet LOG_LEVEL op debug, roep het geval opnieuw op en zet het daarna terug. Op debug wordt elk MQTT-bericht en elke beslissing daaruit afgedrukt.
Vragen
Waarom heb ik de Notifier eigenlijk nodig?
Je TeslaMate staat op je eigen server en kan je telefoon niet bereiken, en een iOS-melding kan alleen door Apple worden bezorgd. De Notifier overbrugt dat gat: hij kijkt mee op je MQTT-topics, ziet de verandering en stuurt de gebeurtenis naar buiten om bezorgd te worden.
Moet mijn TeslaMate van buitenaf bereikbaar zijn?
Nee. De Notifier maakt alleen uitgaande verbindingen, dus er hoeft niets open te staan en er hoeft geen poort doorgestuurd te worden om meldingen te laten werken.
Wat gaat er precies van mijn server weg?
Het soort gebeurtenis, het accuniveau, de laadstatus en de naam van de geofence als je geofences gebruikt. Coördinaten en gereden routes blijven op je TeslaMate, en het adres van je server wordt nooit verstuurd. De gegevens over gebeurtenissen worden na een paar uur verwijderd.
Kan hij op een andere machine draaien dan TeslaMate?
Ja, zolang hij je MQTT-broker kan bereiken. Zet MQTT_HOST op die host en zorg dat de poort van de broker daarvandaan bereikbaar is.
Werkt hij met meerdere auto's?
Ja. Som de ID's op in CAR_IDS en elke auto krijgt zijn eigen toestandsbewaking en zijn eigen schakelaars in de app.
Wat gebeurt er als de relay onbereikbaar is?
De container probeert het een paar keer opnieuw met een groeiende pauze en laat die gebeurtenis dan vallen. Hij blijft draaien en pikt de volgende verandering gewoon op.
Bewaart hij iets?
Alleen de namen van je auto's, en alleen als je het optionele volume aankoppelt. Al het andere blijft in het geheugen zolang de container draait.
Hoe werk ik hem bij?
Haal de image opnieuw op en maak de service opnieuw aan. De release notes staan op de releases-pagina op GitHub.
Hoe zet ik meldingen uit?
Zet ze uit in de app, of stop de container. Beide werken los van elkaar, en niets anders in je TeslaMate-stack heeft hem nodig.
Broncode
De Notifier is Go onder de MIT-licentie. Lees hem door, of open een issue als er iets niet klopt.
LukStankovic/hedgiemate-notifier
Hulp nodig?
Loopt het instellen niet zoals verwacht? We helpen je graag op weg.