Przegląd powiadomień

Pomoc do powiadomień

Wszystko, czego potrzeba, aby uruchomić Notifier obok twojego TeslaMate, i co sprawdzić, gdy zdarzenie nie dociera.

Zanim zaczniesz

Trzy rzeczy, a większość instalacji TeslaMate ma już dwie pierwsze.

  • TeslaMate z brokerem MQTT. Mosquitto jest częścią domyślnego pliku Compose TeslaMate.
  • Docker na tej samej maszynie co TeslaMate albo na dowolnym hoście, który dosięgnie brokera.
  • Wychodzący dostęp do internetu. Żadnego portu przychodzącego, a TeslaMate nie musi być publiczny.

Instalacja Notifiera

TeslaMate sam nie dosięgnie twojego telefonu, a powiadomienie na iOS może przyjść tylko przez Apple. Notifier to ten mały kontener, który obserwuje MQTT i przekazuje zdarzenia dalej. Działa obok TeslaMate i nie otwiera żadnego portu.

  1. Pobierz token w aplikacji

    Otwórz HedgieMate, przejdź do Ustawień, potem do Powiadomień push i włącz je. Aplikacja pokaże token łączący zaczynający się od hm_ oraz ID serwera TeslaMate, z którym jesteś połączony. Skopiuj oba.

    Token łączy aplikację z kontenerem. Traktuj go jak hasło.

  2. Dodaj kontener do pliku Compose

    Otwórz docker-compose.yml, z którego uruchamiasz TeslaMate, i dodaj poniższą usługę. W tym samym pliku dzieli sieć z brokerem, więc MQTT_HOST to po prostu nazwa usługi brokera.

    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:

    Wolumin jest opcjonalny. Zachowuje nazwy aut po restarcie, bez niego uzupełni je przekaźnik. Użyj woluminu nazwanego, a nie bind mount: kontener działa na użytkowniku bez uprawnień roota i nie zapisze do katalogu utworzonego przez Dockera jako root.

  3. Uruchom go

    Podnieś nową usługę. Reszta stosu nie musi się restartować.

    Terminal
    docker compose up -d hedgiemate-notifier

    Potem zajrzyj do logu. Poprawny start wypisuje połączenie z brokerem i ID obserwowanych aut.

    Terminal
    docker compose logs -f hedgiemate-notifier
  4. Potwierdź w aplikacji

    Aplikacja oznaczy serwer jako połączony w kilka sekund. Od tego momentu możesz włączać i wyłączać poszczególne zdarzenia dla każdego auta.

    Nic nie dotrze, dopóki auto faktycznie nie zmieni stanu. Podpięcie ładowarki to najszybszy sposób, by zobaczyć pierwsze zdarzenie.

Bez Compose

Jeśli TeslaMate nie działa przez Compose, docker run zrobi to samo. W MQTT_HOST wskaż hosta, do którego kontener ma dostęp.

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

Więcej niż jeden TeslaMate

Uruchom po jednym Notifierze przy każdym serwerze. Ten sam token łączący działa wszędzie. W aplikacji rozróżnia je ID serwera.

Konfiguracja

Wszystko ustawia się zmiennymi środowiskowymi. Trzy są wymagane, reszta ma działające wartości domyślne.

Zmienna Domyślnie Opis
HEDGIEMATE_USER_TOKEN wymagane brak Token łączący z aplikacji. Zaczyna się od hm_.
MQTT_HOST wymagane brak Nazwa hosta twojego brokera MQTT. Wewnątrz Compose to nazwa usługi, zwykle mosquitto.
SERVER_ID wymagane brak UUID serwera z aplikacji. Kontener wystartuje i bez niego, ale ustawienia dla poszczególnych serwerów i aut są wtedy ignorowane.
MQTT_PORT 1883 Port brokera.
MQTT_USERNAME brak Nazwa użytkownika brokera, jeśli wymaga uwierzytelnienia.
MQTT_PASSWORD brak Hasło do brokera.
MQTT_CLIENT_ID hedgiemate-notifier Client ID używane na brokerze. Zmień je, jeśli coś innego już się pod nim łączy.
MQTT_TLS false Ustaw true dla brokera po TLS. Domyślny port zmienia się wtedy na 8883.
MQTT_NAMESPACE brak Musi odpowiadać MQTT_NAMESPACE w twoim TeslaMate, jeśli je ustawiłeś. Tematy zmieniają się na teslamate<namespace>/cars/#.
CAR_IDS 1 ID aut do obserwowania, oddzielone przecinkami, na przykład 1,2. Każde auto ma własną maszynę stanów.
LOG_LEVEL info debug, info, warn albo error.
RELAY_URL https://push.hedgiemate.com Adres przekaźnika. Nie ma powodu go zmieniać.

Wszystkie zdarzenia

Każdy wiersz to osobny przełącznik dla każdego auta w aplikacji. Aktualizacje Live Activities nie są powiadomieniami i nie ma ich na liście.

Powiadomienie Wysyłane, gdy
Jazda
Rozpoczęto jazdę state → driving
Zakończono jazdę state leaves driving
Ładowanie
Rozpoczęto ładowanie charging_state → Charging
Zakończono ładowanie charging_state → Complete
Przerwano ładowanie charging_state leaves Charging without Complete
Ładowarka podłączona plugged_in → true
Ładowarka odłączona plugged_in → false
Bateria
Niski poziom baterii battery_level ≤ BATTERY_LOW_THRESHOLD
Osiągnięto docelowy poziom baterii battery_level ≥ BATTERY_HIGH_THRESHOLD
Lokalizacja
Wejście do geofence geofence set
Wyjście z geofence geofence cleared or changed
Bezpieczeństwo
Nagrywanie Sentry center_display_state = 7
Pojazd
Aktualizacja oprogramowania update_available → true
Przechodzi w tryb uśpienia state → asleep pending
Tryb uśpienia state → asleep
Wybudzono pojazd state leaves asleep

Nic nie dociera

Przejdź listę od góry. Większość przypadków to jeden z pierwszych trzech.

Aplikacja wciąż pisze, że serwer nie jest połączony

Sprawdź poleceniem docker compose ps, czy kontener naprawdę działa, i przeczytaj jego log. Najczęstsza przyczyna to zły MQTT_HOST: wewnątrz Compose to nazwa usługi brokera, czyli mosquitto, a nie localhost.

Kontener działa, ale żadne zdarzenie nie przychodzi

CAR_IDS musi odpowiadać ID auta używanemu przez TeslaMate. TeslaMate numeruje auta od 1, a przy kilku wypisujesz je: CAR_IDS=1,2.

MQTT się łączy, a w logu cisza

Jeśli ustawiłeś MQTT_NAMESPACE w TeslaMate, ustaw tę samą wartość w Notifierze. Bez niej nazwy tematów się nie zgadzają i kontener nie ma czego czytać.

Część zdarzeń przychodzi, inne nigdy

Każde zdarzenie to przełącznik dla danego auta w aplikacji. Otwórz serwer w Ustawieniach i sprawdź listę zdarzeń dla tego auta.

Powiadomienia o baterii nigdy nie przychodzą

BATTERY_LOW_THRESHOLD i BATTERY_HIGH_THRESHOLD mają domyślnie 20 i 90. Wysyłane są raz na sesję ładowania, więc auto, które od początku ładowania nie przekroczyło progu, żadnego nie wyśle.

Powiadomienia przestają przychodzić po kilku dniach

Upewnij się, że usługa ma restart: unless-stopped, żeby wracała razem z hostem. Potem sprawdź iOS: tryb skupienia albo ustawienia powiadomień aplikacji mogą je wyciszać.

Live Activities się nie pojawiają

Live Activities muszą być włączone dla HedgieMate w Ustawieniach iOS i musi trwać aktywna sesja. Dynamic Island wymaga iPhone'a 14 Pro lub nowszego.

Broker wymaga logowania albo TLS

Ustaw MQTT_USERNAME i MQTT_PASSWORD. Dla TLS ustaw MQTT_TLS na true, co zmienia domyślny port na 8883.

Chcesz zobaczyć, co się dzieje

Ustaw LOG_LEVEL na debug, powtórz sytuację i przywróć poprzednią wartość. Debug wypisuje każdą wiadomość MQTT i każdą podjętą na jej podstawie decyzję.

Pytania

Po co mi w ogóle Notifier?

TeslaMate działa na twoim serwerze i nie dosięgnie telefonu, a powiadomienie na iOS może dostarczyć tylko Apple. Notifier wypełnia tę lukę: obserwuje twoje topiki MQTT, wychwytuje zmianę stanu i wysyła zdarzenie do doręczenia.

Czy mój TeslaMate musi być dostępny z internetu?

Nie. Notifier nawiązuje wyłącznie połączenia wychodzące, więc dla powiadomień nie trzeba nic wystawiać ani przekierowywać portów.

Co faktycznie wychodzi z mojego serwera?

Typ zdarzenia, poziom baterii, stan ładowania i nazwa geofence, jeśli z nich korzystasz. Współrzędne i trasy zostają w twoim TeslaMate, a adres serwera nigdy nie jest wysyłany. Dane zdarzeń kasujemy po kilku godzinach.

Czy może działać na innej maszynie niż TeslaMate?

Tak, o ile dosięgnie twojego brokera MQTT. Ustaw MQTT_HOST na tego hosta i sprawdź, czy port brokera jest stamtąd osiągalny.

Czy działa z kilkoma autami?

Tak. Wypisz ID w CAR_IDS, a każde auto dostanie własne śledzenie stanu i własne przełączniki w aplikacji.

Co się stanie, gdy przekaźnik jest niedostępny?

Kontener ponawia kilka razy z rosnącą przerwą, a potem odrzuca to zdarzenie. Działa dalej i normalnie obsługuje kolejną zmianę stanu.

Czy coś zapisuje?

Tylko cache nazw aut, i tylko jeśli podepniesz opcjonalny wolumin. Reszta trzymana jest w pamięci przez czas działania kontenera.

Jak go zaktualizować?

Pobierz obraz ponownie i odtwórz usługę. Informacje o wydaniach są na stronie releases na GitHubie.

Jak wyłączyć powiadomienia?

Wyłącz je w aplikacji albo zatrzymaj kontener. Każda z tych rzeczy działa osobno, a nic innego w twoim stosie TeslaMate od niego nie zależy.

Kod źródłowy

Notifier to Go na licencji MIT. Przejrzyj kod albo zgłoś issue, jeśli coś nie działa.

LukStankovic/hedgiemate-notifier

Obraz Dockera hedgiemate/notifier:latest Docker Hub

Potrzebujesz pomocy?

Masz problem z konfiguracją? Jesteśmy tu, aby pomóc Ci zacząć.