Kullanım Kılavuzu
APRS-Agent, bir APRS-IS istemcisidir. Telsiz istasyonunuzun konumunu ve mesajlarını İnternete bağlayan APRS-IS ağına bilgisayar üzerinden bağlanır.
Kısaca şunları yapabilir:
aprs-agent-web.exe veya python web_gui.py) önerilir.
python web_gui.py ya da aprs-agent-web.exe
(önerilen) — tarayıcınız otomatik olarak http://localhost:8080 adresini açar.
Masaüstü GUI'yi kullanmak isterseniz python gui.py ya da aprs-agent-gui.exe.| Alan | Açıklama | Durum |
|---|---|---|
| APRS-IS Sunucusu | Varsayılan değer (rotate.aprs2.net) genellikle en iyisidir.
Değiştirmenize gerek yok. |
İsteğe bağlı |
| Port | Standart filtreli bağlantı portu: 14580. Değiştirmeyin. |
İsteğe bağlı |
| Çağrı İşareti | Kendi çağrı işaretinizi girin. Örnek: TA1ABC |
Zorunlu |
| İstasyon Filtresi | Hangi istasyonlardan gelen paketleri görmek istediğinizi belirler.
Joker karakter kullanılabilir: TA* (TA ile başlayan herkes,
birden çok önek virgülle ayrılabilir: TA*, TB*, YM*). |
Zorunlu |
| Tüm Dünya Akışı | Açılırsa İstasyon Filtresi yok sayılır ve dünyadaki tüm APRS-IS trafiği alınır (port 10152, ~50-100 paket/sn). Sessizlik Haritası'nı tek bir bölgeyle sınırlamak istemiyorsanız (örn. tüm dünyayı izlemek için) kullanılır. Açıksanız aşağıdaki hız sınırını ayarlamanız önerilir. | İsteğe bağlı |
| Hız sınırı (pkt/sn) | Eklentilere (Logger, AI Gateway, Sessizlik tespiti vb.) saniyede en fazla
kaç paket iletileceği. Sadece Tüm Dünya Akışı ile birlikte önemlidir —
ham APRS-IS bağlantısının kendisi hiçbir zaman kısıtlanmaz.
0 = sınırsız. |
İsteğe bağlı |
| Otomatik Başlat | Program açılırken ▶ Başlat butonuna basmayı beklemeden APRS-IS'e otomatik bağlanır. Arka planda servis olarak çalıştırırken kullanışlıdır. | İsteğe bağlı |
Gelen APRS paketlerini ekranın alt kısmındaki log penceresinde gösterir.
| Alan | Açıklama | Durum |
|---|---|---|
| Logger'ı Etkinleştir | Log penceresini açar. Neyin geldiğini görmek için açık bırakın. | İsteğe bağlı |
| Paket türü filtresi | Sadece belirli tipteki paketleri göstermek için. Boş bırakırsanız her şey gösterilir. | İsteğe bağlı |
| Anahtar kelime filtresi | Sadece belirli bir kelime içeren paketleri göstermek için. Boş bırakırsanız her şey gösterilir. | İsteğe bağlı |
Bu sekme, istasyonunuzun konumunu APRS-IS ağına düzenli aralıklarla gönderir. Böylece aprs.fi gibi haritalar üzerinde görünürsünüz.
| Alan | Açıklama | Durum |
|---|---|---|
| Sabit Konum Yayınını Etkinleştir | Bu seçeneği işaretleyin. | Zorunlu |
| QTH Locator | Maidenhead grid karesi. Örnek: KM38nkGirdiğinizde Enlem/Boylam otomatik doldurulur. |
Kolay giriş |
| Enlem / Boylam | QTH Locator girmek yerine doğrudan da yazabilirsiniz. Format: 3826.25N / 02707.50E |
Zorunlu |
| İstasyon SSID | Çağrı işaretiniz + SSID. Örnek: TA1ABC-10SSID -1 ile -15 arasında herhangi bir sayı olabilir. |
Zorunlu |
| Sembol | Sembol Seç… butonuyla haritada görünmek istediğiniz
simgeyi seçin. Ev için -, araba için >,
hava istasyonu için _ kullanılır. |
Zorunlu |
| Beacon açıklaması | aprs.fi haritasında adınızın yanında görünecek kısa metin.
Örnek: TA1ABC Home Station |
İsteğe bağlı |
| Gönderim aralığı (dakika) | Kaç dakikada bir konum gönderileceği. Önerilen: 15 dakika. |
İsteğe bağlı |
APRS-IS'ten duyulan her istasyonu canlı bir tablo olarak listeler — tür, konum, kuruluş, frekans, çevrimiçi/çevrimdışı durumu ve son duyulma zamanı. Bir satıra tıklayarak koordinatlar, ton, EchoLink, hava durumu ve AI analiz sonuçlarını gösteren bir detay paneli açabilirsiniz. Tür/durum/arama filtreleri ile listeyi daraltabilirsiniz.
Duyulan tüm istasyonların canlı konumunu, gerçek APRS sembol setiyle (aprs.fi ile aynı sprite'lar) bir Leaflet haritasında gösterir. Kırmızı kareler bir bölgede çok sayıda istasyonun aynı anda susmasını (olası elektrik kesintisi), amber kareler ise sadece o bölgenin igate'inin düştüğünü işaret eder — bkz. aşağıdaki Sessizlik Haritası.
Kesikli çizgiler alışılmadık uzunlukta gerçekleşmiş telsiz linkleridir — olası bant açılması (bkz. aşağıdaki RF Propagasyon Takibi). Renk mesafeyle koyulaşır: yeşil < 600 km, mavi < 1200 km, mor üzeri.
Haritanın altındaki zaman çizelgesi son 14 günün anlık görüntülerinde geriye gidip önceki uyarıları tekrar oynatmanızı sağlar; ▶ ile otomatik oynatma yapabilirsiniz. Kayıtlı bir açılmanın yakınına gelindiğinde o açılmanın linkleri de haritada belirir.
Her istasyonun kendi beacon aralığına göre bir "normal" temposu öğrenilir.
Bir Maidenhead karesinde (4 karakter, örn. KM38) normalde aktif
istasyonların büyük kısmı (aynı operatörün birden çok telsizi tek
sayılır) aynı anda beklenenden çok daha uzun süre sessiz kalırsa, bu bölge olası elektrik kesintisi olarak işaretlenir.
Eğer sessiz kalan tüm istasyonlar tek bir igate üzerinden geliyorsa ve o
igate de sessizse, sebep igate arızası olarak ayırt edilir.
AI Gateway yapılandırılmışsa, her yeni uyarı için yapay zekadan kısa bir değerlendirme istenir (harita popup'larında ve Telegram/e-posta bildirimlerinde görünür). Aynı hücre 3 saat içinde tekrar susup tekrar alarm verirse (kararsız/"flapping" bölge), yeni bir AI çağrısı yapılmaz — önceki değerlendirme yeniden kullanılır; bu, geniş alan izlemede AI kullanımını gereksiz yere katlamaz. Olay/uyarı yayınları, hangi biçimde geldiklerine bakılmaksızın sessizlik sensörü olarak sayılmaz. APRS Object paketleri (örn. acil durum servislerinin yangın uyarıları) tasarım gereği süresi dolunca kaybolur; hava servisi uyarıları ise normal istasyon olarak gelir — uyarı yürürlükteyken yayın yapar, aradaki günlerde susar. Sessizlik tespiti tempoya dayanır, bu yayınların ise bir temposu yoktur.
| Alan | Açıklama | Durum |
|---|---|---|
| Sessizlik haritası bölgesi | Sessizlik tespitinin sınırlandığı Maidenhead alanları (ilk 2 karakter).
Bir önek filtresi (örn. TA*) yurt dışındaki çağrı işaretlerini
de yakalayabilir; bu ayar olmadan onların kesintileri de uyarı üretir.
Örnek: Türkiye için KM, KN, LM, LN. Boş bırakılırsa tüm dünya izlenir. |
İsteğe bağlı |
| Sessizlik uyarı özeti (dk) | Sessizlik uyarılarını N dakikada bir tek birleşik bildirim olarak
gönderir, her uyarı için ayrı mesaj atmak yerine. Bölge boş
(tüm dünya) bırakıldığında kanalın uyarıya boğulmaması için önerilir.
0 = her uyarı anında gönderilir. |
İsteğe bağlı |
Aşağıdaki Türkiye Röle Veritabanı'ndaki röleleri izler; bir röle
çevrimdışı olduğunda veya geri geldiğinde Telegram/e-posta ile bildirim
gönderir. Röle DB Dosyası ayarının yapılmış olması gerekir.
| Alan | Açıklama | Durum |
|---|---|---|
| Röle İzleyici | Bu özelliği etkinleştirir. | Zorunlu |
| Bildirim kanalı | telegram veya smtp. | Zorunlu |
| Kontrol aralığı (dk) | Röle durumu kaç dakikada bir kontrol edilsin. Varsayılan: 10. | İsteğe bağlı |
| İzlenecek çağrı işaretleri | Virgülle ayrılmış çağrı işaretleri. Boş bırakılırsa veritabanındaki tüm röleler izlenir. | İsteğe bağlı |
Bir igate'in RF üzerinden duyup APRS-IS'e aktardığı her paket
(qAR/qAO), uzunluğu tam olarak bilinen
gerçekleşmiş bir telsiz linkidir: gönderenin paketteki
konumu ile igate'in konumu arası mesafe. VHF/UHF'te normal menzil
~50–150 km'dir; aynı bölgede linkler topluca çok daha uzağa uzanmaya
başlarsa bu, troposferik kanal veya
Sporadik-E açılmasının doğrudan kanıtıdır.
Her gate için "normalde ne kadar uzaktan duyar" temposu otomatik öğrenilir — dağ tepesindeki bir LoRa gate'in rutin uzun linkleri alarm üretmez, ama aynı gate'in kendi normalinin çok üstüne çıkması üretir. Anormal linkler haritada kesikli çizgiler olarak görünür. Aynı Maidenhead alanında 30 dakika içinde en az iki FARKLI gönderenden anormal link gelirse bu bir açılma olayı olur: bildirim kanalına "📡 BAND OPENING" mesajı gider, AI Gateway ayarlıysa kısa bir değerlendirme eklenir (tropo / Sporadik-E / aurora — aynı bölge 3 saat içinde tekrar açılırsa yeni bir AI çağrısı yapılmadan önceki değerlendirme yeniden kullanılır) ve olay 14 gün boyunca zaman çizelgesinden tekrar oynatılabilir.
TCPIP), digipeat'li paketler,
Object'ler, 3000 m üzerindeki balonlar (görüş hattı geometrisi,
propagasyon değil) ve 5000 km üzeri veri hataları hiç sayılmaz. Ayrıca her seferinde
aynı mesafeyi ölçen bir gate'in tekrarlanan linki açılma kuralına
girmez — bu propagasyon değil, sabit bir konum hatasıdır.
Tespit her zaman açıktır ve haritada dünya çapında görünür. Ancak
bildirimi kendi bölgenizle sınırlamak isterseniz Monitor
bölümündeki Propagasyon bildirim bölgesi ayarını kullanın
(örn. Türkiye için KM, KN, LM, LN) — açılmadaki linklerin
herhangi bir ucu bu alanlara düşerse bildirim gelir, düşmezse harita
yine gösterir ama Telegram/e-posta sessiz kalır. Kıtalar arası bir
açılma (örn. Güney Afrika → Türkiye gate'i) bile, sizin bölgenizi
içerdiği için yine bildirilir.
İstasyonlar sekmesini şehir, ilçe, frekans, CTCSS tonu, bant ve mod bilgisiyle zenginleştirir — canlı bir paket gerekmeden, sadece çağrı işareti eşleşmesiyle çalışır. Güncel veritabanını Turkey Repeaters projesinden indirebilirsiniz. Röle İzleyici de bu dosyayı kullanır.
| Alan | Açıklama | Durum |
|---|---|---|
| Röle DB Dosyası | İndirdiğiniz JSON dosyasının tam yolu. | İsteğe bağlı |
Duyulan istasyonların beacon yorumlarını periyodik olarak yapay zekaya göndererek kulüp/kurum adını ve kısa bir açıklamayı otomatik çıkarır; sonuçlar İstasyonlar sekmesinin Organization sütununda ve detay panelinde görünür. AI Gateway'in yapılandırılmış olması gerekir (aynı sağlayıcı/API anahtarı tekrar kullanılır). Her istasyon oturum başına bir kez analiz edilir; tatil/bayram gibi geçici mesajlar token boşa harcamamak için otomatik atlanır.
| Alan | Açıklama | Durum |
|---|---|---|
| AI İstasyon Analizi | Bu özelliği etkinleştirir. | Zorunlu |
| Her (saat) çalış | Kaç saatte bir yeni bir tur çalışsın. Varsayılan: 24. | İsteğe bağlı |
| Her turda maksimum | Bir turda en fazla kaç istasyonun analiz edileceği. Varsayılan: 20. | İsteğe bağlı |
Size gelen bir APRS mesajı (belirli bir takma ada — örn. TWSEND — gönderilmiş)
otomatik olarak Twitter/X hesabınıza tweet atılır.
| Alan | Açıklama | Durum |
|---|---|---|
| API Key / Secret | Twitter uygulamanızın kimlik bilgileri. | Zorunlu |
| Access Token / Secret | Hesabınızın erişim jetonları. | Zorunlu |
| İzin verilen APRS alıcıları | Hangi APRS takma ada (addressee) gönderildiğinde tweet atılacak. Varsayılan: TWSEND | Zorunlu |
| İzin verilen APRS göndericileri | Hangi çağrı işaretlerinden gelen mesajları işleyeceği. Kendi çağrı işaretinizi yazın. | Zorunlu |
Size gelen bir APRS mesajı (belirli bir takma ada — örn. BSKYSEND — gönderilmiş)
otomatik olarak Bluesky hesabınıza post olarak atılır.
| Alan | Açıklama | Durum |
|---|---|---|
| Kullanıcı adı | Bluesky handle'ınız. Örnek: adiniz.bsky.social | Zorunlu |
| Uygulama Şifresi | App Password (ana şifreniz DEĞİL). bsky.app → Ayarlar → App Passwords'tan oluşturun. | Zorunlu |
| İzin verilen APRS alıcıları | Hangi APRS takma ada gönderildiğinde post atılacak. Varsayılan: BSKYSEND | Zorunlu |
| İzin verilen APRS göndericileri | Hangi çağrı işaretlerinden gelen mesajları işleyeceği. Kendi çağrı işaretinizi yazın. | Zorunlu |
Meta Cloud API üzerinden çift yönlü APRS ↔ WhatsApp mesajlaşması sağlar.
Size gelen bir APRS mesajı (belirli bir takma ada gönderilmiş) WhatsApp'a
iletilir; WhatsApp'tan ÇAĞRI-İŞARETİ Mesaj formatında yazılan
bir mesaj da APRS'e gönderilir.
https://SUNUCUNUZ/webhook/whatsapp) Meta'ya kaydetmeniz gerekir.
| Alan | Açıklama | Durum |
|---|---|---|
| Telefon Numarası ID | Meta Business panelinden. | Zorunlu |
| Erişim Token | Meta Business panelinden. | Zorunlu |
| Webhook Doğrulama Token | Kendi belirlediğiniz bir dize — Meta webhook ayarıyla eşleşmeli. | Zorunlu |
| Alıcı Telefon | Giden mesajlar için varsayılan WhatsApp numarası. | Zorunlu |
| İzin verilen APRS alıcıları / göndericileri | APRS → WhatsApp yönü için takma ad ve çağrı işareti filtreleri. | Zorunlu |
| Gönderen çağrı işareti | WhatsApp → APRS yönünde kullanılacak SSID. | İsteğe bağlı |
| İzin verilen telefon numaraları | Sadece bu numaralar APRS'i tetikleyebilir. Boş = herkes. | İsteğe bağlı |
Çift yönlü APRS ↔ Telegram mesajlaşması sağlar — tamamen ücretsiz, webhook gerekmez (Telegram'ın bot API'si yoklanarak/polling ile çalışır). Sessizlik Haritası uyarıları da bu kanaldan gönderilebilir (bkz. Monitor).
@BotFather ile konuşup /newbot komutunu
verin. Chat ID'nizi öğrenmek için @userinfobot ile konuşabilirsiniz.
| Alan | Açıklama | Durum |
|---|---|---|
| Bot Token | @BotFather'dan alınır. | Zorunlu |
| Chat ID | Telegram kullanıcı veya grup ID'niz. | Zorunlu |
| İzin verilen APRS alıcıları / göndericileri | APRS → Telegram yönü için takma ad ve çağrı işareti filtreleri. Varsayılan takma ad: TGSEND | Zorunlu |
| Telegram'ı yokla | Telegram → APRS yönünü açar: bot chat'ine ÇAĞRI-İŞARETİ Mesaj yazarak APRS'e gönderebilirsiniz. | İsteğe bağlı |
| Yoklama aralığı (sn) | Telegram'ın kaç saniyede bir kontrol edileceği. Varsayılan: 5. | İsteğe bağlı |
409 Conflict
hatası verir. Sadece birini polling modunda açık tutun.
Geçit, kendi kayıt defterinden cevap verebilir: en yakın igate, bir istasyonun son konumu, ne zaman duyulduğu ve sorana uzaklığı. APRS konumları görülmek üzere yayınlanır ve aprs.fi yıllardır aynı bilgiyi sunar; burada reddetmek kimseyi korumaz.
Cevabın sınırı şudur: tek bir gözlem. İsim yok, lisans kaydı yok, adres yok, geçmiş özeti yok. Çağrı işaretini bir kişiye çeviren adım atılmaz.
Çıkmak isteyen çıkar. Geçide NOLOOKUP
yazan istasyon, başkalarının sorularında yer almaz; LOOKUP
ile geri döner. Kendi konumunuzu sormanız her zaman çalışır ve
beacon'larınız aprs.fi'de zaten herkese açık kalır.
Geçit alıcı adı bir çağrı işareti değildir. Bir istasyonu değil, bir yazılımı tanımlar; hiçbir otorite tarafından verilmez ve verilmesi gerekmez. Çağrı işaretiyle karıştırılması da mümkün değildir: tahsisli bir çağrı işareti rakam içerir, bu servis adları içermez.
Ajan verici sürmez. APRS-IS ağına TCP üzerinden bağlanan
bir istemcidir; oturum operatörün kendi çağrı işareti ve erişim koduyla
kimliklendirilir, ürettiği paketler internet kaynağını belirten
TCPIP* yolunu taşır. Bir cevap RF'e ulaşıyorsa onu yayınlayan
istasyon bir igate'tir; kendi lisansı ve kendi çağrı
işaretiyle yayın yapar ve o yayından o operatör sorumludur. Bu, APRS
mesajlaşmasının olağan üçüncü taraf trafiği modelidir.
Geçidi işleten kişiye kalan üç şey:
status_text, hizmeti
kimin işlettiğini APRS durum paketi olarak duyurur.system_prompt onları
amatör telsiz kuralları içinde tutmanın yeridir.enabled = false
yeniden başlatmadan, yaklaşık beş saniyede etkili olur.Yapay zekâyı amatör telsizde çalıştırmak yeni bir uygulamadır, kuralsız bir alan değil. Mevcut kurallar içeriği kaynağından bağımsız olarak kapsar ve istasyondan operatör sorumludur. Hedefte deneysel, uyumda alışıldık olun.
Gelen APRS mesajlarına yapay zeka ile otomatik yanıt verir. Mesaj yapılandırılmış çağrı işaretine gönderildiğinde AI sağlayıcıya sorulur ve cevap APRS mesajı olarak geri gönderilir. Aynı sağlayıcı/API anahtarı AI İstasyon Analizi ve Sessizlik Haritası değerlendirmeleri tarafından da kullanılır.
| Alan | Açıklama | Durum |
|---|---|---|
| AI Çağrı İşareti | Bu çağrı işaretine gönderilen mesajlar AI yanıtı tetikler. SSID dikkate alınmadan eşleştirilir; TA1ABC olarak ayarlanmış bir geçide TA1ABC-1 adresine yazan da ulaşır. | Zorunlu |
| Tetikleme Takma Adları | Bu geçidin ayrıca cevapladığı ek alıcı adları, virgülle ayrılır. APRS alıcı alanı her hâlükârda sabit 9 karakterdir; kısa bir takma ad havada bayt kazandırmaz, el telsizi tuş takımında basış kazandırır — orada bir rakam dört basışa mal olur. Emin değilseniz boş bırakın: APRS-IS tek bir dünya akışıdır, alıcı adı kimseye tahsis edilmez, ilk yazan kullanır. Başkasının seçmeyeceği bir ad seçin ve başka yerde gördüğünüz bir adı asla kullanmayın — aynı alıcı adına cevap veren iki geçit, yabancı birine iki ayrı cevap gönderir ve iki operatör de bunun olduğunu fark edemez. | İsteğe bağlı |
| Sağlayıcı | AI sağlayıcı: ChatGPT (OpenAI), Claude (Anthropic), DeepSeek, Groq, OpenRouter, Puter (ücretsiz) veya özel endpoint. | Zorunlu |
| API Anahtarı | Her sağlayıcı için ayrı saklanır — sağlayıcı değiştirilince o sağlayıcının kendi anahtarı otomatik gelir, tek bir alanın üzerine yazılmaz. | Zorunlu |
| Ek SMS Parçası | 0 = tek 64 karakterlik yanıt. 1-5 = uzun yanıtlar için çok parçalı mesaj. | İsteğe bağlı |
| Whitelist | Etkinleştirilirse sadece listedeki çağrı işaretlerinden gelen mesajlar yanıtlanır. Liste boşken açık bırakılırsa hiç kimseye yanıt verilmez — listeyi boşaltmak kapıyı açmaz, kapatır. Değişiklik yeniden başlatma gerektirmez: Kaydet dedikten ~5 saniye sonra geçerli olur. | İsteğe bağlı |
| Art arda soru | Bir gönderenin beklemeden art arda sorabileceği soru sayısı (varsayılan 4). Hakkı biten kişiye ne kadar bekleyeceğini söyleyen tek bir mesaj gönderilir; ısrarla soranlara tekrar tekrar yazılmaz. 0 = sınır yok. | İsteğe bağlı |
| Dolum (saniye) | Bu kadar saniyede bir soru hakkı geri gelir (varsayılan 180). Boşta kalan gönderen hakkını tam sayıya kadar biriktirir. 0 = sınır yok. | İsteğe bağlı |
| Günlük tavan | Tüm gönderenler için günde yanıtlanan toplam soru (varsayılan 0 = tavan yok). Kişi başı sınır, çok sayıda yabancının birer soru sormasına karşı korumaz — sunucuyu kendi donanımında çalıştıran ve ücretli bir AI sağlayıcı kullananlar için önemlidir. | İsteğe bağlı |
E-posta gelen kutunuzu belirli aralıklarla yoklar ve yeni e-postaları APRS mesajı olarak telsize iletir. SMTP ile birlikte çift yönlü e-posta iletişimi sağlar.
TA1ABC-7 Merhaba, beacon calisiyor!| Alan | Açıklama | Durum |
|---|---|---|
| IMAP Sunucusu | IMAP sunucu adresi ve portu. Örnek: imap.gmail.com:993 | Zorunlu |
| Kullanıcı adı / Şifre | E-posta hesap bilgileri. Gmail için Uygulama Şifresi kullanın. | Zorunlu |
| Gönderen çağrı işareti | İletilen e-postaların APRS'deki gönderen adı. Örnek: EMAIL-5 | Zorunlu |
| Yoklama aralığı | Gelen kutusu kaç dakikada bir kontrol edilsin. Varsayılan: 5 dakika. | İsteğe bağlı |
| İzin verilen gönderenler | Sadece bu e-posta adreslerinden gelenler iletilir. Boş = hepsi kabul. | İsteğe bağlı |
Size gelen bir APRS mesajında (örn. EMAIL arkadas@mail.com Merhaba!
formatında) belirtilen adrese otomatik e-posta gönderir.
| Alan | Açıklama | Durum |
|---|---|---|
| SMTP Sunucusu | E-posta sunucusu adresi ve portu. Örnek: smtp.gmail.com:587 | Zorunlu |
| Kullanıcı adı / Şifre | E-posta hesabı bilgileri. Gmail kullanıyorsanız "Uygulama Şifresi" oluşturmanız gerekir. | Zorunlu |
| İzin verilen APRS göndericileri | Hangi çağrı işaretlerinden gelen isteği kabul edeceği. | Zorunlu |
| İzin verilen APRS alıcıları | Hangi APRS takma ada gönderilmiş mesajları işleyeceği. Varsayılan: EMAIL | Zorunlu |
| Gönderen adresi | E-postanın "Kimden" alanında görünecek adres. Örnek: APRS-Agent <aprs@gmail.com> | Zorunlu |
Ajanın duyduğu veya gönderdiği her APRS mesajını tek bir panelde listeler: saat, yön, gönderen, alıcı, metin ve mesajın ait olduğu köprü (AI / Telegram / WhatsApp / E-posta / …). Giden mesajlar gönderim döngüsünden yakalanır, çünkü APRS-IS kendi trafiğinizi size geri göstermez. Son 400 mesajlık kayan bir tampon tutulur; ack/telemetri trafiği otomatik filtrelenir. Sadece admin panelde görünür — Herkese Açık İzleme Sayfası'nda bulunmaz (özel köprü içeriklerini korumak için).
Admin panelinizi (ayarlar, API anahtarları, Başlat/Durdur) hiç açığa çıkarmadan, sadece Canlı Log / İstasyonlar / Harita görünümlerini internete güvenle açmanızı sağlar. Ayrı bir port üzerinde çalışır ve bu port dışarıya açılabilir; admin portu (varsayılan 8080) ise her zaman yerel ağınızda kalmalıdır.
Sekme çubuğunun altında, hangi özelliklerin şu an gerçekten aktif olduğunu gösteren küçük bir rozet satırı bulunur (AI Gateway, İstasyon AI, Röle İzleyici, Dünya Akışı, mesajlaşma eklentileri) — hem admin panelde hem bu sayfada görünür; Başlat/Durdur/Kaydet gibi komutları içermez, sadece salt-okunur bir durum özetidir.
| Alan | Açıklama | Durum |
|---|---|---|
| Halka Açık İzleme Portu | Bu portta salt-okunur sayfa sunulur. 0 = kapalı. | İsteğe bağlı |
| Başlık / Alt başlık | Sayfa üstünde çağrı işaretinizin yanında görünecek metin. Boş bırakılırsa "APRS-Agent · ÇAĞRI-İŞARETİNİZ" ve dile göre bir açıklama gösterilir. | İsteğe bağlı |
Bu sekme ileri düzey kullanıcılar içindir. Aynı bilgisayarda çalışan başka bir yazılımın (örn. kendi yazdığınız bir betik) canlı APRS paket akışına TCP üzerinden bağlanmasını sağlar.
Düz APRS kullanıyorsanız bu sekmeye dokunmanıza gerek yoktur.
Çağrı işareti alanında gerçek bir çağrı işareti girilmemiş demektir.
N0CALL varsayılan değerini silip kendi çağrı işaretinizi yazın.
Sabit Konum (Fixed Beacon) sekmesinin etkin olduğundan ve Enlem/Boylam değerlerinin doğru formatta girildiğinden emin olun. QTH Locator alanını kullanmak en kolay yoldur.
Yeni bir kurulum yapıyorsanız Web GUI'yi kullanın — Harita, Sessizlik Haritası, Mesajlar sekmesi ve Herkese Açık İzleme Sayfası sadece orada bulunur, ve Linux sunucular/telefonlar dahil her yerde çalışır. Masaüstü GUI hâlâ çalışır ama v2.8.0'dan itibaren yeni özellik almıyor (bkz. yukarıdaki not).
Bir Maidenhead karesindeki normalde aktif istasyonların çoğu aynı
anda, beklenenden çok daha uzun süre sessiz kaldı — bu genellikle
bölgesel bir elektrik kesintisine işaret eder. Tek bir igate'in
düşmesinden kaynaklanıyorsa "IGate arızası" olarak ayrı gösterilir.
Bölgeyi sınırlamak için Monitor ayarlarındaki
silence_grids'i kullanabilirsiniz.
Alışılmadık uzunlukta gerçekleşmiş bir telsiz linki — bir istasyonun sinyali, o bölgedeki igate'lerin normalde duyduğundan çok daha uzaktan duyuldu. Aynı bölgede birden fazla istasyondan gelirse bu bir bant açılmasıdır (tropo/Sporadik-E); "📡 BAND OPENING" bildirimi de gönderilir. Renk mesafeyle koyulaşır: yeşil < 600 km, mavi < 1200 km, mor üzeri.
Hayır. Bilgisayar açıldığında otomatik başlaması için
Windows Görev Zamanlayıcısı'na kaydetmeniz veya Linux'ta systemd
servisi olarak çalıştırmanız gerekir.
Ayrıntılı açıklama için README.md dosyasına bakın.
Varsayılan olarak programın yanındaki aprsconfig.toml
dosyasında saklanır. İstediğiniz bir konuma taşıyabilir ve
üst bardaki Gözat… butonu ile seçebilirsiniz.
APRS-Agent · MIT Lisansı · TA3HX & TA3PKS · aprsagent.com · github.com/TA3HRJ/aprs-agent
User Guide
APRS-Agent is an APRS-IS client. It connects your station to the worldwide APRS-IS network over the Internet — no radio hardware required.
What it can do:
aprs-agent-web.exe or python web_gui.py).
python web_gui.py or aprs-agent-web.exe
(recommended) — your browser opens automatically to http://localhost:8080.
For the Desktop GUI instead, use python gui.py or aprs-agent-gui.exe.| Field | Description | Status |
|---|---|---|
| APRS-IS Server | The default (rotate.aprs2.net) works worldwide. No need to change it. |
Optional |
| Port | Standard filtered port: 14580. Leave it as-is. |
Optional |
| Callsign | Your amateur radio callsign. Example: TA1ABC |
Required |
| Station Filter | Which stations' packets to receive. Wildcards are supported:
TA* = all callsigns starting with TA (multiple prefixes can
be comma-separated: TA*, TB*, YM*). |
Required |
| Full World Feed | When on, the Station Filter is ignored and all worldwide APRS-IS traffic is received (port 10152, ~50-100 packets/sec). Used to run the Silence Map worldwide instead of one region. Setting a rate limit below is strongly recommended when enabled. | Optional |
| Rate limit (pkt/s) | Maximum packets dispatched to extensions (Logger, AI Gateway,
silence detection, ...) per second. Only matters with the Full
World Feed — the raw APRS-IS connection itself is never
throttled. 0 = unlimited. |
Optional |
| Auto-start | Connects to APRS-IS automatically on launch, without waiting for you to click Start. Useful when running as a background service. | Optional |
Displays incoming APRS packets in the log panel at the bottom of the window.
| Field | Description | Status |
|---|---|---|
| Enable Logger | Turns on the log display. Recommended to keep enabled so you can see activity. | Optional |
| Filter by packet type | Show only specific packet types. Leave blank to see everything. | Optional |
| Keyword filter | Show only packets containing a keyword. Leave blank to see everything. | Optional |
This tab sends your station's position to the APRS network at regular intervals, making you visible on maps like aprs.fi.
| Field | Description | Status |
|---|---|---|
| Enable Fixed Beacon | Check this box to enable position beaconing. | Required |
| QTH Locator | Your Maidenhead grid square. Example: KM38nkEnter this and Latitude/Longitude fill in automatically. |
Easy entry |
| Latitude / Longitude | You can enter these directly instead of using QTH Locator. Format: 3826.25N / 02707.50E |
Required |
| Station SSID | Your callsign with SSID suffix. Example: TA1ABC-10Any number from -1 to -15 is valid. |
Required |
| Symbol | Click Choose Symbol… to pick an icon for the map.
Common choices: House (-), Car (>),
Weather Station (_). |
Required |
| Beacon comment | Short text shown next to your callsign on maps.
Example: TA1ABC Home Station |
Optional |
| Interval (minutes) | How often to transmit the beacon. Recommended: 15 minutes. |
Optional |
Lists every station heard from APRS-IS as a live table — type, location, organisation, frequency, online/offline status and last heard time. Click any row for a detail panel showing coordinates, tone, EchoLink, weather data and AI analysis results. Type/status/search filters let you narrow the list.
Shows the live position of every heard station on a Leaflet map, using the real APRS symbol set (same sprites as aprs.fi). Red squares mark a region where many stations fell silent together (possible power outage); amber squares mean only that region's igate itself went down — see Silence Map below.
Dashed lines are unusually long realised radio links — a possible band opening (see RF Propagation Tracking below). Colour deepens with distance: green < 600 km, blue < 1200 km, purple beyond.
The timeline below the map lets you scrub back through the last 14 days of recorded snapshots and replay past alerts; use ▶ for automatic playback. Scrubbing near a recorded opening also replays its links on the map.
Each station's "normal" beacon cadence is learned automatically. When
most of the normally-active stations (several radios of one
operator count once) in a Maidenhead cell (4
characters, e.g. KM38) fall silent for far longer than
expected at the same time, that cell is flagged as a possible
power outage. If every silent station in the cell shares one
igate and that igate is itself silent, the cause is reported as an
igate failure instead.
If the AI Gateway is configured, each new alert gets a short AI assessment (shown in map popups and in Telegram/email notifications). If the same cell clears and re-alerts again within 3 hours (a flapping region), no new AI call is made — the previous assessment is reused, so wide-area monitoring doesn't multiply AI usage unnecessarily. Event advisories are never counted as silence sensors, whichever form they arrive in. APRS Object packets (e.g. fire warnings from emergency services) expire by design when the event closes; weather-service warnings arrive as ordinary stations instead, transmitting while a warning is in force and silent for the days between. Silence detection rests on cadence, and neither has one.
| Field | Description | Status |
|---|---|---|
| Silence map region | Maidenhead fields (first 2 characters) that silence detection is
limited to. A prefix station filter (e.g. TA*) also
matches callsigns abroad, whose outages would otherwise raise
alerts too. Example: KM, KN, LM, LN for Turkey. Empty =
worldwide. |
Optional |
| Silence alert digest (min) | Batch silence alerts into one combined notification every N
minutes, instead of one message per alert. Recommended once the
region is left empty (worldwide), where individual alerts would
flood the channel. 0 = send each alert immediately. |
Optional |
Watches the repeaters listed in the Turkey Repeaters database below
and sends a Telegram/email notification when one goes offline or
comes back. Requires the Repeater DB Path setting.
| Field | Description | Status |
|---|---|---|
| Repeater Monitor | Enables this feature. | Required |
| Notify via | telegram or smtp. | Required |
| Check interval (min) | How often repeater status is checked. Default: 10. | Optional |
| Watch callsigns | Comma-separated base callsigns. Empty = watch every repeater in the database. | Optional |
Every packet an igate hears on RF and forwards to APRS-IS
(qAR/qAO) is a realised radio
link whose length is known exactly: the sender's in-packet
position to the igate's position. Normal VHF/UHF range is ~50–150 km;
when links in an area collectively start reaching much further, that
is direct evidence of a tropospheric duct or
sporadic-E opening.
Each gate's "how far does it normally hear" baseline is learned automatically — a mountain-top LoRa gate's routine long links never alert, but the same gate exceeding its own normal does. Anomalous links appear on the map as dashed lines. When anomalous links arrive from at least two DIFFERENT senders in the same Maidenhead field within 30 minutes, that becomes an opening event: a "📡 BAND OPENING" notification is sent, an AI assessment is attached when the AI Gateway is configured (tropo / sporadic-E / aurora — if the same region opens again within 3 hours, the previous assessment is reused instead of making a new AI call), and the event replays from the timeline for 14 days.
TCPIP), digipeated packets, Objects, balloons above
3000 m (line-of-sight geometry, not propagation) and links over
5000 km (data errors) are never counted at all. A link sitting on the
repeated distance of a gate that measures the same value every time is
kept out of the opening rule as well: that is a fixed coordinate error,
not propagation.
Detection is always on and the map always shows every opening
worldwide. To scope the notification to your own
region, use the Monitor section's Propagation notify region
setting (e.g. KM, KN, LM, LN for Turkey) — a notification
is sent if either end of any link in the opening falls in those
fields; otherwise the map still shows it, but Telegram/email stays
quiet. A cross-continent opening (e.g. South Africa reaching a
Turkish gate) still notifies, since it involves your region.
Enriches the Stations tab with city, district, frequency, CTCSS tone, band and mode — matched by callsign alone, no live packet needed. Download the latest database from the Turkey Repeaters project. The Repeater Monitor above also relies on this file.
| Field | Description | Status |
|---|---|---|
| Repeater DB Path | Full path to the downloaded JSON file. | Optional |
Periodically sends heard stations' beacon comments to AI to extract an organisation name and short description; results appear in the Stations tab's Organization column and detail panel. Requires the AI Gateway to be configured first (same provider/API key is reused). Each station is analysed once per session; transient comments (holiday greetings, seasonal messages) are skipped automatically to avoid wasting tokens.
| Field | Description | Status |
|---|---|---|
| AI Station Analysis | Enables this feature. | Required |
| Run every (hours) | How often a new pass runs. Default: 24. | Optional |
| Max per run | Maximum stations analysed per pass. Default: 20. | Optional |
When an APRS message is addressed to a configured alias (e.g. TWSEND)
from an allowed sender, it is automatically posted as a tweet.
| Field | Description | Status |
|---|---|---|
| API Key / Secret | Your Twitter app credentials. | Required |
| Access Token / Secret | Your account access tokens. | Required |
| Allowed APRS recipients | Which APRS addressee triggers a tweet. Default: TWSEND | Required |
| Allowed APRS senders | Only messages from these callsigns are processed. Enter your own callsign. | Required |
When an APRS message is addressed to a configured alias (e.g. BSKYSEND)
from an allowed sender, it is automatically posted to your Bluesky account.
| Field | Description | Status |
|---|---|---|
| Username | Your Bluesky handle. Example: yourname.bsky.social | Required |
| App Password | App Password (NOT your main password). Create at bsky.app → Settings → App Passwords. | Required |
| Allowed APRS recipients | Which APRS addressee triggers a post. Default: BSKYSEND | Required |
| Allowed APRS senders | Only messages from these callsigns are processed. Enter your own callsign. | Required |
Bidirectional APRS ↔ WhatsApp messaging via the Meta Cloud API. An
APRS message addressed to a configured alias is forwarded to
WhatsApp; a message typed as CALLSIGN Message text on
WhatsApp is forwarded to APRS.
https://YOUR_SERVER/webhook/whatsapp) with Meta
for incoming messages.
| Field | Description | Status |
|---|---|---|
| Phone Number ID | From the Meta Business dashboard. | Required |
| Access Token | From the Meta Business dashboard. | Required |
| Webhook Verify Token | A string you choose — must match your Meta webhook configuration. | Required |
| Recipient Phone | Default WhatsApp number for outgoing messages. | Required |
| Allowed APRS recipients / senders | Addressee and callsign filters for the APRS → WhatsApp direction. | Required |
| From callsign | SSID used for the WhatsApp → APRS direction. | Optional |
| Allowed phone numbers | Only these numbers can trigger APRS. Empty = anyone. | Optional |
Bidirectional APRS ↔ Telegram messaging — completely free, no webhook needed (the Telegram bot API is polled). Silence Map alerts can also be sent through this channel (see Monitor above).
@BotFather on Telegram and use /newbot.
To find your Chat ID, talk to @userinfobot.
| Field | Description | Status |
|---|---|---|
| Bot Token | From @BotFather. | Required |
| Chat ID | Your Telegram user or group ID. | Required |
| Allowed APRS recipients / senders | Addressee and callsign filters for the APRS → Telegram direction. Default addressee: TGSEND | Required |
| Poll Telegram | Enables the Telegram → APRS direction: type CALLSIGN Message in the bot chat to send to APRS. | Optional |
| Poll interval (sec) | How often Telegram is checked. Default: 5. | Optional |
409 Conflict error.
Keep polling enabled on only one of them.
The gateway answers these from its own registry: the nearest igate, a station's last position, when it was heard, and how far it is from the asker. APRS positions are broadcast to be seen and aprs.fi has served the same beacons for years, so refusing here protects nobody.
What an answer may contain is bounded: one observation. No name, no licence record, no address, no history. The step that turns a callsign into a person is not taken.
A station can opt out. Send NOLOOKUP to
the gateway and it will not appear in other people's answers;
LOOKUP undoes it. Asking about your own station always
works, and your beacons stay public on aprs.fi either way.
A gateway addressee is not a callsign. It identifies a piece of software, not a station: no authority issues it and none needs to. Nor can it be mistaken for one — an allocated callsign carries a digit, and these service addressees do not.
The agent operates no transmitter. It is an APRS-IS
client over TCP; the session is authenticated with the operator's own
callsign and passcode, and its packets carry the TCPIP* path
that marks internet origin. Where a reply reaches RF, the transmitting
station is an igate, keying up under its own licence and
its own callsign, and that operator is responsible for that emission —
the ordinary third-party model of APRS messaging.
What that leaves with the person running a gateway:
status_text announces who
operates the service as an APRS status packet.system_prompt is where you keep them inside
amateur rules.enabled = false takes
effect in about five seconds, without a restart.Running an AI over amateur radio is a new application, not an unregulated one. The existing rules cover content whatever composed it, and the operator is answerable for what the station emits. Experimental in ambition, conventional in compliance.
Auto-responds to incoming APRS messages using AI. When a message is addressed to the configured callsign, it is sent to the AI provider and the response is returned as an APRS message. The same provider/API key is also used by AI Station Analysis and Silence Map assessments.
| Field | Description | Status |
|---|---|---|
| AI Callsign | Messages addressed to this callsign trigger an AI response. Matched with the SSID ignored, so a message to TA1ABC-1 reaches a gateway configured as TA1ABC. | Required |
| Trigger Aliases | Extra addressees this gateway also answers to, comma-separated. The APRS addressee field is a fixed 9 characters either way, so a shorter alias saves nothing on air — it saves key presses on a handheld keypad, where a digit costs four presses. Leave empty unless you mean it: APRS-IS is one worldwide feed and an addressee is first-come and unenforced. Choose a name nobody else would plausibly pick, and never reuse one you saw somewhere else — two gateways answering the same addressee send a stranger two answers, and neither operator can tell it is happening. | Optional |
| Provider | AI provider: ChatGPT (OpenAI), Claude (Anthropic), DeepSeek, Groq, OpenRouter, Puter (free), or a custom endpoint. | Required |
| API Key | Stored separately per provider — switching providers recalls that provider's own key automatically instead of overwriting one shared field. | Required |
| Extra SMS Parts | 0 = single 64-char reply. 1-5 = multi-part messages for longer responses. | Optional |
| Whitelist | If enabled, only messages from listed callsigns are answered. Enabled with an empty list answers nobody — clearing the list closes the gate, it does not open it. Changes need no restart: they take effect about 5 seconds after Save. | Optional |
| Questions in a row | How many a sender may ask back to back before being asked to wait (default 4). Someone who runs out is told once, with the wait in minutes — not once per message, which would answer a hammering sender with hammering of our own. 0 = no limit. | Optional |
| Refill (seconds) | One more question per this many seconds (default 180), building back up to the full burst once idle. 0 = no limit. | Optional |
| Daily ceiling | Total questions answered per day across all senders (default 0 = no ceiling). Per-sender limits do nothing against many strangers asking once each, which matters most if you run this on your own hardware against a paid AI provider. | Optional |
Polls your email inbox at a configurable interval and forwards new emails as APRS messages to the radio. Together with SMTP, this enables bidirectional email communication.
TA1ABC-7 Hello, your beacon is working!| Field | Description | Status |
|---|---|---|
| IMAP Server | IMAP server address and port. Example: imap.gmail.com:993 | Required |
| Username / Password | Email account credentials. For Gmail, use an App Password. | Required |
| From callsign | APRS sender callsign for forwarded emails. Example: EMAIL-5 | Required |
| Poll interval | How often to check the inbox, in minutes. Default: 5. | Optional |
| Allowed senders | Only forward emails from these addresses. Empty = allow all. | Optional |
Automatically sends an email when an APRS message in the format
EMAIL recipient@example.com Message text here
is received and addressed to the configured alias (default: EMAIL).
| Field | Description | Status |
|---|---|---|
| SMTP Server | Your mail server address and port. Example: smtp.gmail.com:587 | Required |
| Username / Password | Email account credentials. For Gmail, generate an App Password. | Required |
| Allowed APRS senders | Only messages from these callsigns trigger emails. | Required |
| Allowed APRS recipients | Which APRS addressee triggers email forwarding. Default: EMAIL | Required |
| From address | The "From" field in the sent email. Example: APRS-Agent <aprs@gmail.com> | Required |
Lists every APRS message the agent hears or sends in one panel — time, direction, from, to, text, and which bridge it belongs to (AI / Telegram / WhatsApp / Email / …). Outgoing messages are captured from the send loop, since APRS-IS never echoes your own traffic back to you. A rolling buffer of the last 400 messages is kept; ack/telemetry chatter is filtered out automatically. Admin only — not exposed on the Public View, to keep bridge content private.
Lets you safely expose just the Live Log / Stations / Map views to the internet, without ever exposing your admin panel (settings, API keys, Start/Stop). It runs on a separate port that is safe to forward — the admin port (default 8080) must always stay on your local network.
Below the tab bar, a small badge row shows which features are actually active right now (AI Gateway, Station AI, Repeater Monitor, World Feed, messaging extensions) — shown on both the admin panel and this page; it carries no Start/Stop/Save commands, just a read-only status summary.
| Field | Description | Status |
|---|---|---|
| Public View Port | Read-only page served on this port. 0 = disabled. | Optional |
| Title / Subtitle | Text shown at the top of the page next to your callsign. Leave empty for the defaults: "APRS-Agent · YOUR_CALLSIGN" and a language-aware description. | Optional |
This is an advanced feature. It opens a local TCP port so that other programs on your computer can subscribe to the live APRS packet stream.
If you just want basic APRS operation, you don't need this tab.
Your callsign field contains the default placeholder N0CALL.
Replace it with your real amateur radio callsign.
Make sure the Fixed Beacon tab is enabled and that your Latitude/Longitude values are in the correct format. Using the QTH Locator field is the easiest way to set them.
For a new install, use the Web GUI — the Map, Silence Map, Messages tab and Public View exist only there, and it runs anywhere, including Linux servers and phones. The Desktop GUI still works but has received no new features since v2.8.0 (see the note above).
Most of the normally-active stations in a Maidenhead cell fell
silent at the same time, for far longer than expected — usually a
sign of a regional power outage. If it's caused by a single igate
going down, it's shown separately as an "IGate failure". You can
scope the region with silence_grids in the Monitor settings.
An unusually long realised radio link — a station was heard from far beyond what that area's igates normally reach. Multiple stations in the same area means a band opening (tropo/sporadic-E) and a "📡 BAND OPENING" notification is sent. Colour deepens with distance: green < 600 km, blue < 1200 km, purple beyond.
No. To start automatically at boot, add it to Windows Task Scheduler,
or run it as a systemd service on Linux.
See README.md for details.
By default in aprsconfig.toml next to the program.
You can move it anywhere and point to it with the Browse…
button in the top bar.
APRS-Agent · MIT License · TA3HX & TA3PKS · aprsagent.com · github.com/TA3HRJ/aprs-agent