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.
-
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.
-
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.
-
Uruchom go
Podnieś nową usługę. Reszta stosu nie musi się restartować.
Terminaldocker compose up -d hedgiemate-notifier
Potem zajrzyj do logu. Poprawny start wypisuje połączenie z brokerem i ID obserwowanych aut.
Terminaldocker compose logs -f hedgiemate-notifier
-
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.
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
Potrzebujesz pomocy?
Masz problem z konfiguracją? Jesteśmy tu, aby pomóc Ci zacząć.