Hjelp med varsler
Alt du trenger for å få Notifier til å kjøre ved siden av TeslaMate-en din, og hva du sjekker når en hendelse ikke kommer fram.
Før du begynner
Tre ting, og de to første har de fleste TeslaMate-installasjonene alt.
- TeslaMate med en MQTT-broker. Mosquitto følger med standard-Compose-filen til TeslaMate.
- Docker på den samme maskinen som TeslaMate, eller på en vert som kan nå brokeren.
- Utgående internettilkobling. Ingen inngående port, og TeslaMate-en din behøver ikke være offentlig.
Installer Notifier
TeslaMate-en din kan ikke nå telefonen din på egen hånd, og et iOS-varsel kan bare komme fram via Apple. Notifier er den lille containeren som følger MQTT og gir hendelser videre. Den står ved siden av TeslaMate og åpner aldri en port.
-
Hent tokenet ditt i appen
Åpne HedgieMate, gå til Innstillinger, så Push-varsler, og slå på varsler. Appen viser et koblingstoken som begynner med hm_, og en server-ID for den TeslaMate-serveren du er koblet til. Kopier begge.
Tokenet kobler appen til containeren. Behandle det som et passord.
-
Legg containeren til i Compose-filen din
Åpne den docker-compose.yml du kjører TeslaMate fra, og legg til tjenesten nedenfor. Fordi den ligger i den samme filen, deler den nettverk med brokeren din, og da er MQTT_HOST bare tjenestenavnet til brokeren.
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:Volumet er valgfritt. Det tar vare på bilnavnene over en omstart; uten det fyller relayet inn navnet likevel. Bruk et navngitt volum framfor en bind mount: containeren kjører som en ikke-root-bruker og kan ikke skrive til en vertsmappe Docker har opprettet som root.
-
Start den
Ta opp den nye tjenesten. Ingenting annet i stacken din må startes på nytt.
Terminaldocker compose up -d hedgiemate-notifier
Les så loggene. Ved en god start vises tilkoblingen til brokeren og de bil-ID-ene den følger.
Terminaldocker compose logs -f hedgiemate-notifier
-
Bekreft i appen
Appen merker serveren som tilkoblet i løpet av noen sekunder. Derfra slår du enkelte hendelser på eller av, per bil.
Ingenting kommer fram før bilen faktisk endrer tilstand. Å sette i kontakten er den raskeste måten å se den første hendelsen.
Uten Compose
Hvis TeslaMate ikke styres med Compose, gjør docker run det samme. La MQTT_HOST peke på en vert containeren kan nå.
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
Mer enn én TeslaMate
Kjør én Notifier ved siden av hver server. Det samme koblingstokenet virker overalt. Server-ID-en er det som holder dem atskilt i appen.
Oppsett
Alt settes opp med miljøvariabler. Tre er påkrevd, resten har fungerende standardverdier.
| Variabel | Standard | Beskrivelse |
|---|---|---|
HEDGIEMATE_USER_TOKEN påkrevd | ingen | Koblingstoken fra appen. Begynner med hm_. |
MQTT_HOST påkrevd | ingen | Vertsnavnet til MQTT-brokeren din. Inne i Compose er det tjenestenavnet, oftest mosquitto. |
SERVER_ID påkrevd | ingen | Server-UUID fra appen. Containeren starter også uten, men da ignoreres innstillingene per server og per bil du gjør i appen. |
MQTT_PORT | 1883 | Porten til brokeren. |
MQTT_USERNAME | ingen | Brukernavnet til brokeren, hvis din krever autentisering. |
MQTT_PASSWORD | ingen | Passordet til brokeren. |
MQTT_CLIENT_ID | hedgiemate-notifier | Klient-ID som brukes mot brokeren. Endre den hvis noe annet alt kobler seg til under samme navn. |
MQTT_TLS | false | Sett til true for en broker med TLS. Standardporten flyttes da til 8883. |
MQTT_NAMESPACE | ingen | Må stemme med MQTT_NAMESPACE i TeslaMate, hvis du har satt en. Emnene blir da teslamate<namespace>/cars/#. |
CAR_IDS | 1 | Bil-ID-er som skal følges, skilt med komma, for eksempel 1,2. Hver bil får sin egen tilstandsmaskin. |
LOG_LEVEL | info | debug, info, warn eller error. |
RELAY_URL | https://push.hedgiemate.com | Endpointet til relayet. Det er ingen grunn til å endre dette. |
Alle hendelser
Hver rad er en egen bryter per bil i appen. Oppdateringer av live-aktiviteter er ikke varsler og står ikke her.
| Varsel | Sendes ved |
|---|---|
| Kjøring | |
| Kjøretur startet | state → driving |
| Kjøretur avsluttet | state leaves driving |
| Lading | |
| Lading startet | charging_state → Charging |
| Lading fullført | charging_state → Complete |
| Lading avbrutt | charging_state leaves Charging without Complete |
| Kontakten i | plugged_in → true |
| Kontakten ut | plugged_in → false |
| Batteri | |
| Lavt batteri | battery_level ≤ BATTERY_LOW_THRESHOLD |
| Lademål nådd | battery_level ≥ BATTERY_HIGH_THRESHOLD |
| Posisjon | |
| Geogjerde inn | geofence set |
| Geogjerde ut | geofence cleared or changed |
| Sikkerhet | |
| Vaktmodus tar opp | center_display_state = 7 |
| Bil | |
| Programvareoppdatering | update_available → true |
| Sovner | state → asleep pending |
| Sover | state → asleep |
| Våknet | state leaves asleep |
Ingenting kommer fram
Jobb deg nedover lista. Oftest er det ett av de tre første.
Appen sier fortsatt at serveren ikke er tilkoblet
Sjekk med docker compose ps at containeren faktisk kjører, og les så loggene. En feil MQTT_HOST er den vanlige årsaken: inne i Compose er det tjenestenavnet til brokeren, mosquitto, ikke localhost.
Containeren kjører, men ingen hendelse utløses
CAR_IDS må stemme med bil-ID-en TeslaMate bruker. TeslaMate nummererer biler fra 1, og med flere biler lister du dem: CAR_IDS=1,2.
MQTT kobler seg til og loggen er stille
Har du satt MQTT_NAMESPACE i TeslaMate, må den samme verdien settes på Notifier. Ellers stemmer ikke emnenavnene og containeren sitter der uten noe å lese.
Noen hendelser kommer fram, andre aldri
Hver hendelse er en bryter per bil i appen. Åpne serveren under Innstillinger og se hendelseslista for den bilen.
Batterivarsler utløses aldri
BATTERY_LOW_THRESHOLD og BATTERY_HIGH_THRESHOLD står på 20 og 90 som standard. De utløses én gang per lading, så en bil som ikke har krysset grensa siden den begynte å lade, sender ingen.
Varslene slutter etter noen dager
Sørg for at tjenesten har restart: unless-stopped, så den kommer tilbake med verten. Se så på iOS: en fokusmodus eller varselinnstillingene til appen kan svelge dem.
Live-aktiviteter vises ikke
Live-aktiviteter må være tillatt for HedgieMate i iOS-innstillingene, og det må finnes en aktiv sesjon. Dynamic Island krever iPhone 14 Pro eller nyere.
Brokeren krever innlogging eller TLS
Sett MQTT_USERNAME og MQTT_PASSWORD. For TLS setter du MQTT_TLS til true, som flytter standardporten til 8883.
Du vil se hva den gjør
Sett LOG_LEVEL til debug, gjenskap tilfellet og sett den så tilbake. På debug skrives hver MQTT-melding ut, og hver avgjørelse som tas ut fra den.
Spørsmål
Hvorfor trenger jeg Notifier i det hele tatt?
TeslaMate-en din ligger på din egen server og kan ikke nå telefonen din, og et iOS-varsel kan bare leveres av Apple. Notifier dekker gapet: den følger MQTT-emnene dine, ser tilstandsendringen og sender hendelsen ut for levering.
Må TeslaMate-en min være tilgjengelig fra internett?
Nei. Notifier gjør bare utgående tilkoblinger, så ingenting må åpnes og ingen port videresendes for at varsler skal virke.
Hva forlater egentlig serveren min?
Hendelsestypen, batterinivået, ladestatusen og geogjerdenavnet hvis du bruker geogjerder. Koordinater og kjørte ruter blir på TeslaMate-en din, og serveradressen din sendes aldri. Hendelsesdata slettes etter noen timer.
Kan den kjøre på en annen maskin enn TeslaMate?
Ja, så lenge den kan nå MQTT-brokeren din. Sett MQTT_HOST til den verten og sørg for at porten til brokeren er tilgjengelig derfra.
Virker den med flere biler?
Ja. List ID-ene i CAR_IDS, og hver bil får sin egen tilstandsfølging og sine egne brytere i appen.
Hva skjer hvis relayet ikke er tilgjengelig?
Containeren prøver igjen noen ganger med økende pause og slipper så den hendelsen. Den fortsetter å kjøre og tar neste tilstandsendring som normalt.
Lagrer den noe?
Bare bilnavnene, og bare hvis du monterer det valgfrie volumet. Alt annet holdes i minnet så lenge containeren kjører.
Hvordan oppdaterer jeg den?
Hent imaget på nytt og opprett tjenesten igjen. Versjonsnyhetene finnes på releases-siden på GitHub.
Hvordan slår jeg av varsler?
Slå dem av i appen, eller stopp containeren. Begge virker hver for seg, og ingenting annet i TeslaMate-stacken din er avhengig av den.
Kildekode
Notifier er Go under MIT-lisens. Les den, eller opprett et issue hvis noe skurrer.
LukStankovic/hedgiemate-notifier
Trenger du hjelp?
Går ikke oppsettet som forventet? Vi hjelper deg gjerne i gang.