Bildirim yardımı
Notifier'ı TeslaMate'inizin yanında çalıştırmak için gereken her şey ve bir olay gelmediğinde neye bakmanız gerektiği.
Başlamadan önce
Üç şey ve çoğu TeslaMate kurulumunda ilk ikisi zaten var.
- MQTT aracısı olan bir TeslaMate. Mosquitto, TeslaMate'in varsayılan Compose dosyasında gelir.
- TeslaMate ile aynı makinede Docker, ya da aracıya erişebilen herhangi bir sunucu.
- Giden internet erişimi. Gelen port gerekmez ve TeslaMate'inizin herkese açık olması gerekmez.
Notifier'ı kurun
TeslaMate'iniz telefonunuza kendi başına ulaşamaz ve bir iOS bildirimi yalnızca Apple üzerinden gelebilir. Notifier, MQTT'yi izleyip olayları aktaran küçük konteynerdir. TeslaMate'in yanında çalışır ve hiçbir port açmaz.
-
Uygulamadan token alın
HedgieMate'i açın, Ayarlar ve ardından Anlık bildirimler bölümüne gidip bildirimleri açın. Uygulama hm_ ile başlayan bir eşleştirme token'ı ve bağlı olduğunuz TeslaMate sunucusunun kimliğini gösterir. İkisini de kopyalayın.
Token uygulamayı konteyner ile eşleştirir. Ona bir parola gibi davranın.
-
Konteyneri Compose dosyanıza ekleyin
TeslaMate'i çalıştırdığınız docker-compose.yml dosyasını açıp aşağıdaki servisi ekleyin. Aynı dosyada kalınca aracınızla aynı ağı paylaşır, böylece MQTT_HOST doğrudan aracının servis adı olur.
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:Volume isteğe bağlıdır. Araç adlarını yeniden başlatmalar arasında saklar, olmadığında adları aktarıcı zaten doldurur. Bind mount yerine adlandırılmış volume kullanın: konteyner root olmayan bir kullanıcıyla çalışır ve Docker'ın root olarak oluşturduğu bir dizine yazamaz.
-
Başlatın
Yeni servisi ayağa kaldırın. Yığınınızdaki başka hiçbir şeyin yeniden başlaması gerekmez.
Terminaldocker compose up -d hedgiemate-notifier
Sonra günlüğü okuyun. Sağlıklı bir başlangıç aracı bağlantısını ve izlenen araç kimliklerini yazar.
Terminaldocker compose logs -f hedgiemate-notifier
-
Uygulamada doğrulayın
Uygulama sunucuyu birkaç saniye içinde bağlı olarak işaretler. Oradan her olayı araç araç açıp kapatabilirsiniz.
Araç gerçekten durum değiştirene kadar hiçbir şey gelmez. İlk olayı görmenin en hızlı yolu şarj kablosunu takmaktır.
Compose olmadan
TeslaMate Compose ile yönetilmiyorsa docker run da aynı işi görür. MQTT_HOST değerini konteynerin erişebileceği bir sunucuya ayarlayı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
Birden fazla TeslaMate
Her sunucunun yanında bir Notifier çalıştırın. Aynı eşleştirme token'ı hepsinde geçerlidir. Uygulamada onları ayıran şey sunucu kimliğidir.
Yapılandırma
Her şey ortam değişkenleriyle ayarlanır. Üçü zorunlu, geri kalanın çalışan varsayılanları var.
| Değişken | Varsayılan | Açıklama |
|---|---|---|
HEDGIEMATE_USER_TOKEN zorunlu | yok | Uygulamadan alınan eşleştirme token'ı. hm_ ile başlar. |
MQTT_HOST zorunlu | yok | MQTT aracınızın sunucu adı. Compose içinde bu servis adıdır, genellikle mosquitto. |
SERVER_ID zorunlu | yok | Uygulamadaki sunucu UUID'si. Konteyner bu olmadan da başlar, ancak uygulamada yapılan sunucu ve araç bazlı ayarlar o zaman yok sayılır. |
MQTT_PORT | 1883 | Aracının portu. |
MQTT_USERNAME | yok | Aracı kimlik doğrulama istiyorsa kullanıcı adı. |
MQTT_PASSWORD | yok | Aracı parolası. |
MQTT_CLIENT_ID | hedgiemate-notifier | Aracıda kullanılan istemci kimliği. Bu kimlikle başka bir şey bağlanıyorsa değiştirin. |
MQTT_TLS | false | TLS kullanan aracı için true yapın. Varsayılan port 8883 olur. |
MQTT_NAMESPACE | yok | Ayarladıysanız TeslaMate'teki MQTT_NAMESPACE ile aynı olmalı. Konular teslamate<namespace>/cars/# haline gelir. |
CAR_IDS | 1 | İzlenecek araç kimlikleri, virgülle ayrılır, örneğin 1,2. Her aracın kendi durum makinesi olur. |
LOG_LEVEL | info | debug, info, warn veya error. |
RELAY_URL | https://push.hedgiemate.com | Aktarıcı adresi. Değiştirmek için bir neden yok. |
Tüm olaylar
Her satır uygulamada araç bazında ayrı bir anahtardır. Live Activities güncellemeleri bildirim değildir ve bu listede yer almaz.
| Bildirim | Şu durumda gönderilir |
|---|---|
| Sürüş | |
| Sürüş başladı | state → driving |
| Sürüş bitti | state leaves driving |
| Şarj | |
| Şarj başladı | charging_state → Charging |
| Şarj tamamlandı | charging_state → Complete |
| Şarj kesildi | charging_state leaves Charging without Complete |
| Şarj kablosu takıldı | plugged_in → true |
| Şarj kablosu çıkarıldı | plugged_in → false |
| Batarya | |
| Düşük batarya | battery_level ≤ BATTERY_LOW_THRESHOLD |
| Hedef batarya seviyesine ulaşıldı | battery_level ≥ BATTERY_HIGH_THRESHOLD |
| Konum | |
| Coğrafi alana girildi | geofence set |
| Coğrafi alandan çıkıldı | geofence cleared or changed |
| Güvenlik | |
| Sentry Kaydı | center_display_state = 7 |
| Araç | |
| Yazılım güncellemesi | update_available → true |
| Uyku moduna geçiyor | state → asleep pending |
| Uyku modunda | state → asleep |
| Araç uyandı | state leaves asleep |
Hiçbir şey gelmiyor
Listeyi baştan aşağı izleyin. Vakaların çoğu ilk üçten biridir.
Uygulama hâlâ sunucunun bağlı olmadığını söylüyor
docker compose ps ile konteynerin gerçekten çalıştığını doğrulayın, sonra günlüğünü okuyun. En yaygın neden yanlış MQTT_HOST: Compose içinde bu, aracının servis adıdır, yani mosquitto, localhost değil.
Konteyner çalışıyor ama hiç olay tetiklenmiyor
CAR_IDS, TeslaMate'in kullandığı araç kimliğiyle eşleşmelidir. TeslaMate araçları 1'den başlatarak numaralandırır, birden fazla araçta hepsini yazarsınız: CAR_IDS=1,2.
MQTT bağlanıyor ama günlük sessiz
TeslaMate'te MQTT_NAMESPACE ayarladıysanız aynı değeri Notifier'a da verin. Aksi hâlde konu adları eşleşmez ve konteynerin okuyacak bir şeyi olmaz.
Bazı olaylar geliyor, bazıları hiç gelmiyor
Her olay uygulamada araç bazında bir anahtardır. Ayarlar içinde sunucuyu açıp o aracın olay listesini kontrol edin.
Batarya bildirimleri hiç gelmiyor
BATTERY_LOW_THRESHOLD ve BATTERY_HIGH_THRESHOLD varsayılan olarak 20 ve 90'dır. Şarj oturumu başına bir kez gönderilirler, yani şarja başladığından beri sınırı geçmemiş bir araç bildirim göndermez.
Bildirimler birkaç gün sonra kesiliyor
Servisin restart: unless-stopped ile tanımlandığından emin olun ki sunucuyla birlikte geri gelsin. Sonra iOS tarafına bakın: bir Odak modu veya uygulamanın bildirim ayarları bunları yutuyor olabilir.
Live Activities görünmüyor
Live Activities, iOS Ayarları'nda HedgieMate için izinli olmalı ve etkin bir oturum bulunmalı. Dynamic Island için iPhone 14 Pro veya üzeri gerekir.
Aracı giriş bilgisi veya TLS istiyor
MQTT_USERNAME ve MQTT_PASSWORD değerlerini ayarlayın. TLS için MQTT_TLS değerini true yapın, varsayılan port 8883 olur.
Ne yaptığını görmeniz gerekiyor
LOG_LEVEL değerini debug yapın, durumu tekrarlayın, sonra eski hâline döndürün. Debug her MQTT mesajını ve ondan çıkan her kararı yazar.
Sorular
Notifier'a neden ihtiyacım var?
TeslaMate kendi sunucunuzda çalışır ve telefonunuza ulaşamaz, iOS bildirimini de yalnızca Apple iletebilir. Notifier tam bu boşluğu kapatır: MQTT konularınızı izler, durum değişikliğini yakalar ve olayı iletilmek üzere dışarı gönderir.
TeslaMate'imin internetten erişilebilir olması gerekiyor mu?
Hayır. Notifier yalnızca dışa doğru bağlantı kurar, bu yüzden bildirimler için hiçbir şeyi dışarı açmanız veya port yönlendirmeniz gerekmez.
Sunucumdan gerçekte ne çıkıyor?
Olay türü, batarya seviyesi, şarj durumu ve geofence kullanıyorsanız geofence adı. Koordinatlar ve sürüş rotaları TeslaMate'inizde kalır, sunucunuzun adresi hiç gönderilmez. Olay verileri birkaç saat sonra silinir.
TeslaMate'ten farklı bir makinede çalışabilir mi?
Evet, MQTT aracınıza erişebildiği sürece. MQTT_HOST değerini o sunucuya ayarlayın ve aracının portuna oradan erişilebildiğinden emin olun.
Birden fazla araçla çalışır mı?
Evet. Kimlikleri CAR_IDS içinde listeleyin, her araç kendi durum takibini ve uygulamada kendi anahtarlarını alır.
Aktarıcıya ulaşılamazsa ne olur?
Konteyner artan aralıklarla birkaç kez yeniden dener, sonra o olayı düşürür. Çalışmaya devam eder ve sonraki durum değişimini normal şekilde işler.
Bir şey saklıyor mu?
Yalnızca araç adlarının önbelleğini, o da isteğe bağlı volume'ü bağlarsanız. Geri kalan her şey konteyner çalıştığı sürece bellekte durur.
Nasıl güncellerim?
İmajı yeniden çekip servisi yeniden oluşturun. Sürüm notları GitHub'daki releases sayfasındadır.
Bildirimleri nasıl kapatırım?
Uygulamadan kapatın ya da konteyneri durdurun. İkisi de tek başına yeter ve TeslaMate yığınınızdaki başka hiçbir şey ona bağlı değildir.
Kaynak kod
Notifier, MIT lisanslı Go kodudur. Kodu okuyun ya da bir şey ters giderse issue açın.
LukStankovic/hedgiemate-notifier
Yardıma mı İhtiyacınız Var?
Kurulumda sorun mu yaşıyorsunuz? Başlamanıza yardımcı olmak için buradayız.