Hjälp med notiser
Allt du behöver för att få Notifier att köra vid sidan av din TeslaMate, och vad du kontrollerar när en händelse inte kommer fram.
Innan du börjar
Tre saker, och de två första har de flesta TeslaMate-installationer redan.
- TeslaMate med en MQTT-broker. Mosquitto ingår i TeslaMates standard-Compose-fil.
- Docker på samma maskin som TeslaMate, eller på någon värd som kan nå brokern.
- Utgående internetanslutning. Ingen inkommande port, och din TeslaMate behöver inte vara publik.
Installera Notifier
Din TeslaMate kan inte nå din telefon på egen hand, och en iOS-notis kan bara komma fram via Apple. Notifier är den lilla containern som bevakar MQTT och lämnar över händelser. Den står vid sidan av TeslaMate och öppnar aldrig någon port.
-
Hämta din token i appen
Öppna HedgieMate, gå till Inställningar, sedan Pushnotiser, och slå på notiser. Appen visar en länkningstoken som börjar med hm_ och ett server-ID för den TeslaMate-server du är ansluten till. Kopiera båda.
Token kopplar appen till containern. Behandla den som ett lösenord.
-
Lägg till containern i din Compose-fil
Öppna den docker-compose.yml du kör TeslaMate från och lägg till tjänsten nedan. Eftersom den ligger i samma fil delar den nätverk med din broker, och då är MQTT_HOST bara brokerns tjänstenamn.
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:Volymen är valfri. Den sparar bilnamnen över en omstart; utan den fyller relayn i namnet ändå. Använd en namngiven volym i stället för en bind mount: containern körs som en icke-rootanvändare och kan inte skriva till en värdkatalog som Docker skapat som root.
-
Starta den
Dra upp den nya tjänsten. Inget annat i din stack behöver startas om.
Terminaldocker compose up -d hedgiemate-notifier
Läs sedan loggarna. Vid en lyckad start syns anslutningen till brokern och de bil-ID:n den bevakar.
Terminaldocker compose logs -f hedgiemate-notifier
-
Bekräfta i appen
Appen markerar servern som ansluten inom några sekunder. Därifrån slår du på eller av enskilda händelser, per bil.
Inget kommer fram förrän bilen faktiskt byter tillstånd. Att sätta i sladden är snabbaste sättet att se den första händelsen.
Utan Compose
Om din TeslaMate inte sköts med Compose gör docker run samma sak. Låt MQTT_HOST peka på en värd som containern 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
Fler än en TeslaMate
Kör en Notifier vid sidan av varje server. Samma länkningstoken fungerar överallt. Server-ID:t är det som håller dem åtskilda i appen.
Konfiguration
Allt ställs in med miljövariabler. Tre är obligatoriska, resten har fungerande standardvärden.
| Variabel | Standard | Beskrivning |
|---|---|---|
HEDGIEMATE_USER_TOKEN obligatorisk | ingen | Länkningstoken från appen. Börjar med hm_. |
MQTT_HOST obligatorisk | ingen | Värdnamn för din MQTT-broker. Inuti Compose är det tjänstenamnet, oftast mosquitto. |
SERVER_ID obligatorisk | ingen | Server-UUID från appen. Containern startar även utan, men då ignoreras de inställningar per server och per bil du gör i appen. |
MQTT_PORT | 1883 | Brokerns port. |
MQTT_USERNAME | ingen | Brokerns användarnamn, om din kräver autentisering. |
MQTT_PASSWORD | ingen | Brokerns lösenord. |
MQTT_CLIENT_ID | hedgiemate-notifier | Klient-ID som används mot brokern. Ändra det om något annat redan ansluter under samma namn. |
MQTT_TLS | false | Sätt till true för en broker med TLS. Standardporten flyttas då till 8883. |
MQTT_NAMESPACE | ingen | Matcha din TeslaMates MQTT_NAMESPACE om du satt en. Topics blir då teslamate<namespace>/cars/#. |
CAR_IDS | 1 | Bil-ID:n att bevaka, separerade med kommatecken, till exempel 1,2. Varje bil får sin egen tillståndsmaskin. |
LOG_LEVEL | info | debug, info, warn eller error. |
RELAY_URL | https://push.hedgiemate.com | Relayns endpoint. Det finns ingen anledning att ändra den. |
Alla händelser
Varje rad är en egen brytare per bil i appen. Uppdateringar av live-aktiviteter är inte notiser och står inte med här.
| Notis | Skickas vid |
|---|---|
| Körning | |
| Körning startad | state → driving |
| Körning avslutad | state leaves driving |
| Laddning | |
| Laddning startad | charging_state → Charging |
| Laddning klar | charging_state → Complete |
| Laddning avbruten | charging_state leaves Charging without Complete |
| Sladden i | plugged_in → true |
| Sladden ur | plugged_in → false |
| Batteri | |
| Lågt batteri | battery_level ≤ BATTERY_LOW_THRESHOLD |
| Laddmål nått | battery_level ≥ BATTERY_HIGH_THRESHOLD |
| Position | |
| Geofence beträdd | geofence set |
| Geofence lämnad | geofence cleared or changed |
| Säkerhet | |
| Vaktläget spelar in | center_display_state = 7 |
| Bil | |
| Programuppdatering | update_available → true |
| Somnar | state → asleep pending |
| Sover | state → asleep |
| Vaknade | state leaves asleep |
Inget kommer fram
Arbeta dig nedåt i listan. Oftast är det något av de tre första.
Appen säger fortfarande att servern inte är ansluten
Kontrollera med docker compose ps att containern verkligen körs och läs sedan loggarna. Ett fel MQTT_HOST är den vanliga orsaken: inuti Compose är det brokerns tjänstenamn, mosquitto, inte localhost.
Containern körs men ingen händelse går av
CAR_IDS måste stämma med det bil-ID TeslaMate använder. TeslaMate numrerar bilar från 1, och med flera bilar räknar du upp dem: CAR_IDS=1,2.
MQTT ansluter och loggen är tyst
Har du satt MQTT_NAMESPACE i TeslaMate ska samma värde sättas på Notifier. Annars stämmer inte topic-namnen och containern sitter där utan något att läsa.
Vissa händelser kommer fram, andra aldrig
Varje händelse är en brytare per bil i appen. Öppna servern under Inställningar och titta på händelselistan för den bilen.
Batterinotiser går aldrig av
BATTERY_LOW_THRESHOLD och BATTERY_HIGH_THRESHOLD står på 20 och 90 som standard. De går av en gång per laddning, så en bil som inte passerat gränsen sedan den började ladda skickar ingen.
Notiserna slutar komma efter några dagar
Se till att tjänsten har restart: unless-stopped så att den kommer tillbaka med värden. Titta sedan på iOS: ett fokusläge eller appens notisinställningar kan svälja dem.
Live-aktiviteter syns inte
Live-aktiviteter måste vara tillåtna för HedgieMate i iOS-inställningarna, och det måste finnas en aktiv session. Dynamic Island kräver iPhone 14 Pro eller senare.
Brokern kräver inloggning eller TLS
Sätt MQTT_USERNAME och MQTT_PASSWORD. För TLS sätter du MQTT_TLS till true, vilket flyttar standardporten till 8883.
Du vill se vad den gör
Sätt LOG_LEVEL till debug, återskapa fallet och sätt sedan tillbaka. På debug skrivs varje MQTT-meddelande ut, och varje beslut som fattas utifrån det.
Frågor
Varför behöver jag Notifier alls?
Din TeslaMate ligger på din egen server och kan inte nå din telefon, och en iOS-notis kan bara levereras av Apple. Notifier täcker det glappet: den bevakar dina MQTT-topics, ser tillståndsändringen och skickar händelsen utåt för leverans.
Måste min TeslaMate vara nåbar från internet?
Nej. Notifier gör bara utgående anslutningar, så inget behöver öppnas och ingen port vidarebefordras för att notiser ska fungera.
Vad lämnar egentligen min server?
Händelsetypen, batterinivån, laddstatusen och geofence-namnet om du använder geofences. Koordinater och kördata stannar på din TeslaMate, och din serveradress skickas aldrig. Händelsedata raderas efter några timmar.
Kan den köras på en annan maskin än TeslaMate?
Ja, så länge den kan nå din MQTT-broker. Sätt MQTT_HOST till den värden och se till att brokerns port är nåbar därifrån.
Fungerar den med flera bilar?
Ja. Räkna upp ID:na i CAR_IDS och varje bil får egen tillståndsbevakning och egna brytare i appen.
Vad händer om relayn inte går att nå?
Containern försöker igen några gånger med växande fördröjning och släpper sedan händelsen. Den fortsätter köra och tar nästa tillståndsändring som vanligt.
Sparar den något?
Bara bilnamnen, och bara om du monterar den valfria volymen. Allt annat hålls i minnet så länge containern körs.
Hur uppdaterar jag den?
Hämta avbildningen igen och skapa om tjänsten. Versionsnyheterna finns på releases-sidan på GitHub.
Hur stänger jag av notiser?
Stäng av dem i appen, eller stoppa containern. Båda fungerar var för sig, och inget annat i din TeslaMate-stack är beroende av den.
Källkod
Notifier är Go under MIT-licens. Läs den, eller öppna ett issue om något är fel.
LukStankovic/hedgiemate-notifier
Behöver du hjälp?
Går installationen inte som väntat? Vi hjälper dig gärna igång.