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.
-
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.
-
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.
-
Start den
Bring den nye tjeneste op. Intet andet i din stak skal genstartes.
Terminaldocker 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.
Terminaldocker compose logs -f hedgiemate-notifier
-
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å.
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
Brug for hjælp?
Går opsætningen ikke som forventet? Vi hjælper dig gerne i gang.