Bildirimlere genel bakış

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.

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

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

  3. Başlatın

    Yeni servisi ayağa kaldırın. Yığınınızdaki başka hiçbir şeyin yeniden başlaması gerekmez.

    Terminal
    docker 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.

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

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

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

Docker imajı hedgiemate/notifier:latest Docker Hub

Yardıma mı İhtiyacınız Var?

Kurulumda sorun mu yaşıyorsunuz? Başlamanıza yardımcı olmak için buradayız.