Oversigt over notifikationer

Hjælp til notifikationer

Alt hvad du skal have for at få Notifier til at køre ved siden af din TeslaMate, og hvad du kontrollerer, når en hændelse ikke kommer frem.

Før du begynder

Tre ting, og de to første har de fleste TeslaMate-installationer allerede.

  • TeslaMate med en MQTT-broker. Mosquitto følger med TeslaMates standard-Compose-fil.
  • Docker på den samme maskine som TeslaMate, eller på en vært der kan nå brokeren.
  • Udgående internetforbindelse. Ingen indgående port, og din TeslaMate behøver ikke være offentlig.

Installer Notifier

Din TeslaMate kan ikke nå din telefon af sig selv, og en iOS-notifikation kan kun komme frem via Apple. Notifier er den lille container, der holder øje med MQTT og giver hændelser videre. Den står ved siden af TeslaMate og åbner aldrig en port.

  1. Hent dit token i appen

    Åbn HedgieMate, gå til Indstillinger, derefter Push-notifikationer, og slå notifikationer til. Appen viser et forbindelsestoken, der begynder med hm_, og et server-ID for den TeslaMate-server, du er forbundet til. Kopier dem begge.

    Tokenet forbinder appen med containeren. Behandl det som en adgangskode.

  2. Tilføj containeren til din Compose-fil

    Åbn den docker-compose.yml, du kører TeslaMate fra, og tilføj tjenesten nedenfor. Fordi den ligger i den samme fil, deler den netværk med din broker, og så er MQTT_HOST blot brokerens tjenestenavn.

    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:

    Volumen er valgfri. Den gemmer bilnavnene på tværs af en genstart; uden den udfylder relayet navnet alligevel. Brug en navngivet volumen frem for en bind mount: containeren kører som en ikke-root-bruger og kan ikke skrive til en værtsmappe, som Docker har oprettet som root.

  3. Start den

    Bring den nye tjeneste op. Intet andet i din stak skal genstartes.

    Terminal
    docker compose up -d hedgiemate-notifier

    Læs derefter loggene. Ved en god start vises forbindelsen til brokeren og de bil-ID'er, den holder øje med.

    Terminal
    docker compose logs -f hedgiemate-notifier
  4. Bekræft i appen

    Appen markerer serveren som forbundet inden for få sekunder. Derfra slår du enkelte hændelser til eller fra, pr. bil.

    Der kommer intet frem, før bilen faktisk skifter tilstand. At sætte stikket i er den hurtigste måde at se den første hændelse.

Uden Compose

Hvis din TeslaMate ikke styres med Compose, gør docker run det samme. Lad MQTT_HOST pege på en vært, containeren kan nå.

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

Mere end én TeslaMate

Kør én Notifier ved siden af hver server. Det samme forbindelsestoken virker overalt. Server-ID'et er det, der holder dem adskilt i appen.

Opsætning

Alt sættes op med miljøvariabler. Tre er påkrævede, resten har brugbare standardværdier.

Variabel Standard Beskrivelse
HEDGIEMATE_USER_TOKEN påkrævet ingen Forbindelsestoken fra appen. Begynder med hm_.
MQTT_HOST påkrævet ingen Værtsnavn på din MQTT-broker. Inde i Compose er det tjenestenavnet, oftest mosquitto.
SERVER_ID påkrævet ingen Server-UUID fra appen. Containeren starter også uden, men så ignoreres de indstillinger pr. server og pr. bil, du laver i appen.
MQTT_PORT 1883 Brokerens port.
MQTT_USERNAME ingen Brokerens brugernavn, hvis din kræver godkendelse.
MQTT_PASSWORD ingen Brokerens adgangskode.
MQTT_CLIENT_ID hedgiemate-notifier Klient-ID der bruges mod brokeren. Skift det, hvis noget andet allerede forbinder under det samme navn.
MQTT_TLS false Sæt til true for en broker med TLS. Standardporten flytter så til 8883.
MQTT_NAMESPACE ingen Skal passe med din TeslaMates MQTT_NAMESPACE, hvis du har sat en. Emnerne bliver så teslamate<namespace>/cars/#.
CAR_IDS 1 Bil-ID'er der skal holdes øje med, adskilt med komma, for eksempel 1,2. Hver bil får sin egen tilstandsmaskine.
LOG_LEVEL info debug, info, warn eller error.
RELAY_URL https://push.hedgiemate.com Relayets endpoint. Der er ingen grund til at ændre det.

Alle hændelser

Hver række er en selvstændig kontakt pr. bil i appen. Opdateringer af live-aktiviteter er ikke notifikationer og står ikke her.

Notifikation Sendes ved
Kørsel
Kørsel startet state → driving
Kørsel afsluttet state leaves driving
Opladning
Opladning startet charging_state → Charging
Opladning fuldført charging_state → Complete
Opladning afbrudt charging_state leaves Charging without Complete
Stikket i plugged_in → true
Stikket ud plugged_in → false
Batteri
Lavt batteri battery_level ≤ BATTERY_LOW_THRESHOLD
Opladningsmål nået battery_level ≥ BATTERY_HIGH_THRESHOLD
Position
Geofence betrådt geofence set
Geofence forladt geofence cleared or changed
Sikkerhed
Vagtfunktionen optager center_display_state = 7
Bil
Softwareopdatering update_available → true
Falder i søvn state → asleep pending
Sover state → asleep
Vågnede state leaves asleep

Der kommer intet frem

Arbejd dig ned gennem listen. Oftest er det en af de tre første.

Appen siger stadig, at serveren ikke er forbundet

Kontroller med docker compose ps, at containeren virkelig kører, og læs derefter loggene. En forkert MQTT_HOST er den sædvanlige årsag: inde i Compose er det brokerens tjenestenavn, mosquitto, ikke localhost.

Containeren kører, men ingen hændelse udløses

CAR_IDS skal passe med det bil-ID, TeslaMate bruger. TeslaMate nummererer biler fra 1, og med flere biler lister du dem: CAR_IDS=1,2.

MQTT forbinder, og loggen er tavs

Har du sat MQTT_NAMESPACE i TeslaMate, skal den samme værdi sættes på Notifier. Ellers passer emnenavnene ikke, og containeren sidder der uden noget at læse.

Nogle hændelser kommer frem, andre aldrig

Hver hændelse er en kontakt pr. bil i appen. Åbn serveren under Indstillinger og se hændelseslisten for den bil.

Batterinotifikationer udløses aldrig

BATTERY_LOW_THRESHOLD og BATTERY_HIGH_THRESHOLD står på 20 og 90 som standard. De udløses én gang pr. opladning, så en bil, der ikke har krydset grænsen siden den begyndte at lade op, sender ingen.

Notifikationerne holder op efter nogle dage

Sørg for, at tjenesten har restart: unless-stopped, så den kommer tilbage med værten. Se derefter på iOS: en fokustilstand eller appens notifikationsindstillinger kan sluge dem.

Live-aktiviteter vises ikke

Live-aktiviteter skal være tillladt for HedgieMate i iOS-indstillingerne, og der skal være en aktiv session. Dynamic Island kræver iPhone 14 Pro eller nyere.

Brokeren kræver login eller TLS

Sæt MQTT_USERNAME og MQTT_PASSWORD. Til TLS sætter du MQTT_TLS til true, hvilket flytter standardporten til 8883.

Du vil se, hvad den gør

Sæt LOG_LEVEL til debug, genskab tilfældet og sæt den derefter tilbage. På debug skrives hver MQTT-besked ud, og hver beslutning der træffes ud fra den.

Spørgsmål

Hvorfor skal jeg overhovedet have Notifier?

Din TeslaMate ligger på din egen server og kan ikke nå din telefon, og en iOS-notifikation kan kun leveres af Apple. Notifier dækker det hul: den holder øje med dine MQTT-emner, ser tilstandsændringen og sender hændelsen ud til levering.

Skal min TeslaMate kunne nås fra internettet?

Nej. Notifier laver kun udgående forbindelser, så intet skal åbnes, og ingen port skal videresendes for at notifikationer virker.

Hvad forlader egentlig min server?

Hændelsestypen, batteriniveauet, opladningsstatussen og geofence-navnet, hvis du bruger geofences. Koordinater og kørte ruter bliver på din TeslaMate, og din serveradresse sendes aldrig. Hændelsesdata slettes efter nogle timer.

Kan den køre på en anden maskine end TeslaMate?

Ja, så længe den kan nå din MQTT-broker. Sæt MQTT_HOST til den vært og sørg for, at brokerens port kan nås derfra.

Virker den med flere biler?

Ja. List ID'erne i CAR_IDS, og hver bil får sin egen tilstandsovervågning og sine egne kontakter i appen.

Hvad sker der, hvis relayet ikke kan nås?

Containeren prøver igen nogle gange med voksende pause og dropper derefter den hændelse. Den bliver ved med at køre og tager den næste tilstandsændring som normalt.

Gemmer den noget?

Kun bilnavnene, og kun hvis du monterer den valgfri volumen. Alt andet holdes i hukommelsen, så længe containeren kører.

Hvordan opdaterer jeg den?

Hent imaget igen og opret tjenesten på ny. Versionsnyhederne findes på releases-siden på GitHub.

Hvordan slår jeg notifikationer fra?

Slå dem fra i appen, eller stop containeren. Begge virker uafhængigt, og intet andet i din TeslaMate-stak afhænger af den.

Kildekode

Notifier er Go under MIT-licens. Læs den, eller opret et issue, hvis noget er galt.

LukStankovic/hedgiemate-notifier

Docker-image hedgiemate/notifier:latest Docker Hub

Brug for hjælp?

Går opsætningen ikke som forventet? Vi hjælper dig gerne i gang.