OwnTracks, telefonunuzun konumunu doğrudan bir MQTT broker'a yayınlayabilen, Android ve iOS için açık kaynaklı bir konum uygulamasıdır. Kendi broker'ınızla verileri kimin göreceğine, ne kadar süre saklanacağına ve hangi sistemlerin (Home Assistant, Node-RED, bir veritabanı) kullanacağına siz karar verirsiniz. Kurulum için uygulamada dört değer (host, port, kullanıcı adı, parola), broker tarafında da TLS ve bir ACL gerekir.
Bu rehber uygulama ayarlarını, OwnTracks'in kullandığı topic'leri ve payload'ları, arkadaşlarla paylaşım için broker ACL'lerini, OwnTracks Recorder'ı ve her adımı terminalden nasıl doğrulayacağınızı anlatıyor.
Neye ihtiyacınız var
| Öğe | Neden | Notlar |
|---|---|---|
| İnternetten erişilebilen bir MQTT broker | Telefonlar mobil ağlardan yayın yapar | Self-hosted veya yönetilen, MQTT 3.1.1 yeterli |
| 8883 portunda TLS | Konumlar kişisel veridir | Herkese açık güvenilir bir sertifika en kolayıdır |
| Kişi başına bir kullanıcı adı | Topic ve ACL'ler buna göre belirlenir | Bir girişi asla aile üyeleri arasında paylaşmayın |
| OwnTracks uygulaması | Konumu yayınlar | Android (Google Play / F-Droid) veya iOS |
| İsteğe bağlı: OwnTracks Recorder | Geçmişi saklar, web haritası sunar | Docker imajı owntracks/recorder |
Herkese açık bir test broker'ı, uygulamanın bağlanıp bağlanmadığını kontrol etmek için yeterlidir; ancak gerçek bir konum akışını paylaşılan bir endpoint'te bırakmayın: orada owntracks/# topic'ine abone olan herkes onu görür.
Uygulamayı yapılandırın
Uygulamada Preferences → Connection (Android) veya Settings (iOS) bölümünü açın ve modu HTTP'den MQTT'ye çevirin. Alan adları platforma ve sürüme göre biraz farklıdır, ancak değerler aynıdır:
| Ayar | Değer |
|---|---|
| Mode | MQTT |
| Host | broker.connectmq.com (broker'ınızın hostname'i) |
| Port | 8883 |
| TLS | Açık |
| Username / Password | Bu kişinin broker'ınızdaki kimlik bilgileri |
| Device ID | Telefon için kısa bir ad, ör. pixel veya iphone |
| Tracker ID | Haritada gösterilen iki karakter, ör. AL |
| Client ID | Varsayılanı bırakın; cihaz başına benzersiz olmalıdır |
Kaydedin, ardından haritayı aşağı çekin veya yükleme düğmesine dokunarak elle bir konum yayınlayın. Durum ekranı bağlantının kurulduğunu göstermelidir. Broker'ın kimlik bilgilerini kabul ettiğinden emin değilseniz önce dizüstü bilgisayarınızdan online MQTT istemcisi ile test edin; böylece broker sorunlarını uygulama sorunlarından ayırırsınız.
Topic'ler ve payload'lar
Kullanıcı adı alice ve device ID pixel olduğunda uygulama şunları kullanır:
owntracks/alice/pixel location messages (_type: location), retained by default
owntracks/alice/pixel/event region enter/leave events (_type: transition)
owntracks/alice/pixel/info card with name and avatar (_type: card)
owntracks/alice/pixel/cmd commands TO the phone (_type: cmd)Bir konum mesajı şöyle görünür (alanlar kısaltılmıştır; kesin alanlar platforma ve sürüme bağlıdır):
{
"_type": "location",
"tid": "AL",
"lat": 48.856613,
"lon": 2.352222,
"acc": 12,
"alt": 35,
"batt": 78,
"conn": "m",
"t": "u",
"tst": 1792236000
}tst konumun UTC zamanı, acc metre cinsinden doğruluk, batt pil seviyesi, conn bağlantı türü (w Wi-Fi, m mobil) ve t tetikleyicidir (u kullanıcı, p ping, c bölge ve diğerleri). Uygulama ayrıca ana topic'e bir Last Will mesajı (_type: lwt) kaydeder; böylece telefon beklenmedik şekilde koptuğunda aboneler bundan haberdar olur.
İzleme modu telefonun ne sıklıkla bildirim yapacağını belirler: Significant (varsayılan, pil dostu, önemli konum değişikliklerine dayalı), Move (hareket halinde sık güncelleme, daha fazla pil tüketir), Manual ve Quiet. Significant ile başlayın.
Kendi donanım takip cihazınızı yaparsanız aynı JSON'u aynı topic düzeniyle yayınlayın; telefonların yanında görünür. GPS takip cihazı eğitimi bir ESP32 ile bunu yapıyor.
Terminalden doğrulayın
Alice'in topic'lerini okuyabilen bir kullanıcının kimlik bilgileriyle abone olun:
mosquitto_sub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs \
-u "$MQTT_USER" -P "$MQTT_PASS" -t 'owntracks/#' -vUygulamada publish'e dokunun; JSON bir iki saniye içinde görünür. Ters yönü test etmek için uzak bir komutla telefondan konum isteyin. Uzak komutların uygulamanın gelişmiş ayarlarında açık olması gerekir ve iOS'ta arka planda teslim garanti edilmez:
mosquitto_pub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs \
-u "$MQTT_USER" -P "$MQTT_PASS" \
-t 'owntracks/alice/pixel/cmd' -q 1 \
-m '{"_type":"cmd","action":"reportLocation"}'Ortalıkta dolaşmadan Recorder'ı veya bir dashboard'u test etmek için bir telefonu taklit de edebilirsiniz:
mosquitto_pub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs \
-u "$MQTT_USER" -P "$MQTT_PASS" -t 'owntracks/alice/pixel' -q 1 -r \
-m "{\"_type\":\"location\",\"tid\":\"AL\",\"lat\":48.8584,\"lon\":2.2945,\"acc\":10,\"tst\":$(date +%s)}"ACL'ler: kim kimi görür
Uygulama varsayılan olarak owntracks/+/+ topic'ine abone olur ve aldığı her konumu bir arkadaş olarak çizer. Bu da broker'ın ACL'ini gizlilik kontrolüne dönüştürür: bir kullanıcı tam olarak okumaya yetkili olduğu topic'leri görür. Mosquitto söz diziminde:
# every user may publish and read under its own username
pattern readwrite owntracks/%u/#
# alice and bob share locations with each other
user alice
topic read owntracks/bob/#
user bob
topic read owntracks/alice/#
# the recorder reads everyone, publishes nothing
user recorder
topic read owntracks/#Yönetilen bir broker'da aynı kuralları kullanıcı başına topic izinleri olarak tanımlarsınız. Unutulmaması gereken iki ayrıntı:
- Uygulamadaki kullanıcı adı topic'in ikinci seviyesiyle aynı olmalıdır; aksi halde her yayın reddedilir. Birçok broker reddedilen bir yayını istemcinin bağlantısını kesmeden düşürür; telefon bağlı görünür ama hiçbir şey gelmez. Bkz. ACL'nin sessizce reddetmesi.
- Kuralları dışarıdan test edin: Bob olarak giriş yapın ve onunla paylaşım yapmayan birini okumayı deneyin. Bunun için kısa bir script MQTT ACL izinlerini test etme yazısında var.
Recorder ile geçmişi saklayın
OwnTracks Recorder broker'a abone olur, her konumu diske kaydeder ve bir web haritası ile HTTP API sunar. Docker imajı ortam değişkenleriyle yapılandırılır:
docker run -d --name ot-recorder -p 8083:8083 \
-e OTR_HOST=broker.connectmq.com \
-e OTR_PORT=8883 \
-e OTR_USER=recorder \
-e OTR_PASS="$MQTT_PASS" \
-e OTR_CAFILE=/etc/ssl/certs/ca-certificates.crt \
-v ot-store:/store \
owntracks/recorderRecorder'ın kendi web arayüzü için http://localhost:8083 adresini açın. Recorder'a yukarıdaki ACL'deki gibi salt okunur ayrı bir kullanıcı verin ve geçmişi ne kadar süre tutacağınıza karar verin. Buradaki 8083 portu Recorder'ın makinenizdeki HTTP portudur; broker'ın WebSocket portuyla ilgisi yoktur.
Uçtan uca şifreleme (isteğe bağlı)
OwnTracks payload'ları paylaşılan gizli bir anahtarla (libsodium) şifreleyebilir. Bu durumda broker yalnızca {"_type":"encrypted","data":"…"} görür ve Recorder dahil her okuyucunun anahtara ihtiyacı olur. Bu, verileri broker operatörüne karşı korur, ancak mesajları olağan araçlarla inceleme imkânını kaybedersiniz. Çoğu kurulum için TLS ve sıkı ACL'ler yeterlidir; artı ve eksiler için MQTT payload şifreleme yazısına bakın.
Sorun giderme
| Belirti | Olası neden | Çözüm |
|---|---|---|
| Uygulama bağlanır bağlanmaz hata gösteriyor | Yanlış kullanıcı adı veya parola ya da CONNACK "Not authorized" | Aynı kimlik bilgilerini online istemcide test edin; kodu reason code aracıyla arayın |
| TLS veya sertifika hatası | Kendinden imzalı sertifika veya eksik zincir | Herkese açık güvenilir bir sertifika kullanın ya da CA'nızı uygulamaya yükleyin |
Bağlı ama mosquitto_sub'da hiçbir şey yok | ACL yayını reddediyor ya da username ≠ topic kullanıcısı | Broker loglarını ve ACL desenini kontrol edin |
| Haritada arkadaşlar görünmüyor | Onların topic'leri için okuma izni yok | read kuralları ekleyin, ardından uygulamayı yeniden bağlayın |
| Android'de güncellemeler bir süre sonra duruyor | Pil optimizasyonu arka plan servisini sonlandırıyor | OwnTracks'i pil optimizasyonundan hariç tutun; bkz. Android arka plan bağlantı kopmaları |
Kendi broker'ınızda OwnTracks, en basit ve işe yarar MQTT kurulumlarından biridir: bir telefon, cihaz başına bir topic ve bir avuç ACL kuralı. Önce TLS'i ve kullanıcı bazlı izinleri doğru kurun, her iki yönü mosquitto_sub ve mosquitto_pub ile doğrulayın ve ancak ondan sonra Recorder'ı veya ev otomasyonu entegrasyonlarını ekleyin.
Sıkça sorulan sorular
OwnTracks hangi topic'e yayın yapar?
Varsayılan olarak uygulama konumları owntracks/<username>/<deviceID> topic'ine yayınlar; username MQTT kullanıcı adı, device ID ise uygulamada ayarlanan değerdir. Olaylar, bilgi kartları ve komutlar /event, /info ve /cmd gibi alt topic'leri kullanır.
OwnTracks kendinden imzalı sertifika kullanabilir mi?
Evet, ancak telefonun ona güvenmesi gerekir: CA sertifikanızı uygulamanın TLS ayarlarına (Android) veya cihaza (iOS) yükleyin. Let's Encrypt gibi herkese açık bir CA'dan alınan sertifika bu adımı gereksiz kılar ve 8883 portunda doğrudan çalışır.
OwnTracks'te arkadaşlar birbirini nasıl görür?
Uygulama varsayılan olarak owntracks/+/+ topic'ine abone olur ve aldığı her konumu gösterir. Dolayısıyla hangi arkadaşların görüneceğine broker'ın ACL'leri karar verir: her kullanıcıya yalnızca onu görmesi gereken kişiler üzerinde okuma izni verin.


