Översikt över notiser

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.

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

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

  3. Starta den

    Dra upp den nya tjänsten. Inget annat i din stack behöver startas om.

    Terminal
    docker compose up -d hedgiemate-notifier

    Läs sedan loggarna. Vid en lyckad start syns anslutningen till brokern och de bil-ID:n den bevakar.

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

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

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

Docker-avbildning hedgiemate/notifier:latest Docker Hub

Behöver du hjälp?

Går installationen inte som väntat? Vi hjälper dig gärna igång.