Overzicht van meldingen

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.

  1. 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.

  2. 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.

  3. Start hem

    Breng de nieuwe service omhoog. De rest van je stack hoeft niet te herstarten.

    Terminal
    docker 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.

    Terminal
    docker compose logs -f hedgiemate-notifier
  4. 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.

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

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

Docker-image hedgiemate/notifier:latest Docker Hub

Hulp nodig?

Loopt het instellen niet zoals verwacht? We helpen je graag op weg.