Halaman ini mendokumentasikan cara membaca data instans ini secara terprogram: oleh skrip, oleh agen, maupun oleh model bahasa. Seluruh data pengamatan tersedia di bawah lisensi CC BY 4.0, tanpa kunci API dan tanpa pendaftaran. Silakan gunakan, termasuk untuk analisis maupun pelatihan model, dengan mencantumkan meshview.meshnode.id sebagai sumber.
Angka berikut dihitung langsung dari basis data pada saat halaman ini dimuat, bukan ditulis manual:
mqtt.meshnode.id, topik msh/ID/#
Gateway berbeda dan node pengirim berbeda yang tercatat pada broker publik ini, dihitung
langsung dari packet_seen untuk setiap hari UTC. Baris bertanda
(hari berjalan) belum genap 24 jam saat halaman ini dimuat, jadi jangan
dibandingkan langsung dengan baris lain yang sudah penuh sehari.
| Tanggal (UTC) | Gateway berbeda | Node pengirim berbeda |
|---|---|---|
| 2026-09-02 | 75 | 122 |
| 2026-09-03 (hari berjalan) | 71 | 119 |
Dari 95 node yang pernah mengirim laporan posisi: 55 melaporkan posisi yang dimasukkan manual -- wajar untuk base station tanpa modul GPS, 29 memakai GPS internal perangkatnya sendiri, 11 memakai GPS eksternal, dan 0 tidak menyertakan info sumber posisinya sama sekali.
Dari 132 node yang pernah tercatat, 56 pernah melaporkan versi firmwarenya -- field ini hanya terisi bila node itu sendiri mengaktifkan pelaporan peta (Map Report) ke MQTT, jadi node yang absen di sini belum tentu memakai firmware lama. Versi terbanyak (dirangkum ke major.minor.patch, tanpa hash commit): 2.7.26 (30 node) dan 2.7.15 (12 node).
| Versi (major.minor.patch) | Node |
|---|---|
| 2.7.26 | 30 |
| 2.7.15 | 12 |
| 2.8.0 | 7 |
| 2.8.1 | 2 |
| 2.6.11 | 2 |
| 2.7.24 | 1 |
| 2.7.23 | 1 |
| 2.7.6 | 1 |
Kepadatan kanal LongFast yang terpantau, dari telemetri perangkat: channel_utilization rata-rata 9.3% (rentang 0.0-39.2%) dari 708 laporan yang dikirim 55 node; air_util_tx rata-rata 3.5% (rentang 0.0-16.2%) dari 708 laporan yang dikirim 55 node. Ini rata-rata per-laporan dan agregat jaringan, bukan klaim tentang satu node tertentu.
| Titik akhir | Format | Isi |
|---|---|---|
/api/nodes |
JSON | Satu objek per node: identitas, perangkat, peran, kanal, posisi terakhir, waktu pertama dan terakhir terlihat. |
/api/stats |
JSON | Jumlah paket per periode. Mendukung parameter period_type, length, channel, dan portnum. |
/api/edges |
JSON | Pasangan node yang terbukti saling mendengar, beserta jumlah pengamatannya. |
/api/kandidat |
JSON | Kandidat penilaian beserta bukti, dugaan tandingan, tingkat kemungkinan, dan tingkat keyakinannya. Parameter jenis menyaring node atau jawaban. |
/api/cari?q= |
JSON | Pencarian makna atas kandidat, memakai basis data vektor dan model embedding lokal. Mengembalikan skor kemiripan 0–1. |
/api/peta |
JSON |
Lapisan analitik yang digambar peta: satu catatan per node
berposisi (termasuk kotak sel presisinya), tautan RF yang kedua ujungnya
berposisi, lintasan pergerakan, dan kandidat penilaian per node. Kunci
ringkas memuat jumlah tiap lapisan.
|
/api/valhalla/{layanan} |
JSON |
Jawaban mentah Valhalla untuk halaman /gis, tanpa diringkas.
{layanan} salah satu dari status, route,
isochrone, sources_to_targets, locate,
optimized_route, centroid, trace_route,
height, expansion. Titik ujinya diambil dari node nyata
instans ini, bukan koordinat yang ditulis manual.
|
/api/peta/gis/{layanan} |
JSON |
Valhalla tetapi dibatasi pada apa yang boleh digambar peta, lengkap dengan
alasan penolakan. {layanan} salah satu dari status,
rute, isokron, matriks, akses,
kunjungan, temu, jejak,
tinggi, ekspansi. Batasnya ada di tabel berikutnya.
|
/sitemap.xml |
XML | Seluruh halaman yang dapat diindeks, termasuk satu halaman per node. |
/llms.txt |
Teks | Ringkasan situs beserta tautan ke data mentah. |
Bagian ini ada karena tanpanya Anda akan menemui null tanpa penjelasan.
Valhalla menolak permintaan yang melampaui batasnya dengan HTTP 400 dan
error_code di dalam badan jawaban — bukan dengan pesan yang terbaca oleh
manusia. Karena itu /api/peta/gis/ menyaring lebih dulu di sisi peladen ini
dan mengembalikan alasannya dalam bahasa Indonesia, sedangkan
/api/valhalla/ meneruskan jawaban Valhalla apa adanya.
Setiap jawaban /api/peta/gis/ memakai amplop yang sama:
{"layanan", "tersedia", "alasan", "peringatan", "hasil", "ms"}.
Bila tersedia bernilai false, alasan selalu
berisi kalimat yang menjelaskan sebabnya; hasil tidak pernah berisi
jawaban setengah jadi.
| Layanan | Batas Valhalla | Yang dilakukan instans ini |
|---|---|---|
matriks (sources_to_targets) |
Jarak lintasan berhenti di sekitar 400 km
(error_code=154, “Path distance exceeds the max distance limit”). |
Calon disaring lebih dulu dalam radius 150 km dan paling banyak
12 node, sehingga permintaan selalu berada di dalam batas.
Terukur: memilih Malang dan Jakarta yang berjarak 671 km membuat empat layanan
mengembalikan null dan tampak rusak padahal berfungsi normal. |
kunjungan (optimized_route) |
Batas jarak lintasan yang sama, sekitar 400 km. | Radius 100 km dan paling banyak 6 perhentian. Lebih ketat daripada matriks karena ini perjalanan pulang-pergi, sehingga jaraknya terhitung dua kali. |
temu (centroid) |
Berhenti di sekitar 200 km, dan menolak lebih dari 5 lokasi (“Exceeded max locations: 5”). | Rentang 150 km dan paling banyak 5 node. Delapan node dicoba lebih dulu dan setiap permintaan dijawab HTTP 400, yang terbaca persis seperti layanan mati padahal batasnya yang terlampaui. |
jejak (trace_route) |
Dua titik berurutan yang berjarak lebih dari 2000 m ditolak
seluruhnya (error_code=172, “Exceeded breakage distance for all
pairs: 2000 meters”). Panjang lintasannya juga tunduk pada batas ~200 km. |
Jejak yang Anda gambar dirapatkan menjadi titik tiap ±300 m sebelum dikirim, dan jejak yang lebih panjang dari 150 km ditolak di sini dengan alasan, bukan diteruskan untuk gagal di Valhalla. Posisi node tidak pernah boleh dicocokkan ke jalan: posisi node adalah titik tengah sel presisi berukuran 1,5–5,8 km, dan mencocokkannya akan mengarang perjalanan yang tidak pernah terjadi. Permintaan seperti itu ditolak. |
isokron, ekspansi |
Tanpa graf jalan yang termuat, Valhalla tetap menjawab HTTP 200 dengan poligon sah berukuran ±200 m yang melingkupi 0,04 km². | Ditolak sebagai jawaban kosong bila seluruh konturnya membentang kurang dari
500 m. luas_km2 dan rentang_m selalu
disertakan supaya Anda dapat memeriksanya sendiri. Paling banyak
4 kontur per permintaan, masing-masing 1–120 menit. |
tinggi (height) |
Tidak memerlukan graf jalan sama sekali; dilayani langsung dari data elevasi. | Selalu disertai peringatan: SRTM adalah model
permukaan — ia mengukur tajuk pohon dan atap, bukan tanah — angkanya
bersifat indikatif, bukan perhitungan zona Fresnel, dan tidak dipakai oleh satu
pun aturan Candidates. |
Seluruh titik akhir di atas ikut mati dengan tenang: bila Valhalla, Postgres, atau model
embedding lokal berhenti, jawabannya tetap HTTP 200 dengan tersedia: false
beserta alasannya, dan halaman peta tetap menggambar node seperti biasa. Titik akhir
/api/cari menyertakan objek sebab pada setiap hasil kosong,
supaya “tidak ada yang cocok” dapat dibedakan dari “tidak ada yang berjalan”.
/api/nodesnode_idid (misalnya !02eb00e4).long_name, short_namehw_modelroleCLIENT atau ROUTER.channellast_lat, last_longnull bila node belum pernah melaporkan posisi. Sebagian node sengaja mengurangi presisinya.is_mqtt_gatewaytrue bila node terpantau meneruskan paket ke MQTT. Nilai null berarti belum pernah teramati, bukan berarti tidak.first_seen_us, last_seen_usBagian ini ada supaya angka dari situs ini tidak dikutip di luar konteksnya:
mqtt.meshnode.id yang memerlukan kredensial. Sebagian besar jaringan
Indonesia melakukan uplink ke sana, sehingga angka mereka lebih besar dan keduanya
dapat benar pada waktu yang sama.
Halaman Candidates menyajikan penilaian analitik atas jaringan ini. Semuanya dihasilkan oleh aturan deterministik atas data terukur — nama aturannya dicantumkan pada setiap kandidat — bukan ditulis oleh model bahasa.
Model bahasa lokal hanya dipakai untuk satu hal: menghitung embedding agar kandidat yang bermiripan dapat ditemukan dan dicari. Model tidak pernah mengarang klaim, angka, maupun nama node. Batasan itu disengaja: satu angka keliru yang diterbitkan sebagai penilaian akan merusak satu-satunya hal yang membuat situs ini layak dikutip.
Tingkat kemungkinan memakai kosakata standar analitik ICD 203, dan tingkat keyakinan dinyatakan terpisah karena keduanya menjawab pertanyaan yang berbeda: seberapa besar peluang klaim itu benar, versus seberapa kuat bukti di baliknya.
Pertanyaan yang wajar diajukan: mengapa belum ada prediksi, skor, atau model di situs ini? Jawabannya adalah volume data. Saat halaman ini dimuat, instans ini memegang 9.342 paket dari 132 node selama 24.4 jam. Model apa pun yang dilatih pada data sesingkat itu akan mempelajari derau, bukan pola — dan menerbitkan angka yang terdengar yakin padahal tidak berdasar justru menghancurkan satu-satunya hal yang membuat situs ini layak dikutip: ketepatan yang cakupannya dinyatakan jujur.
Karena itu kami menyatakan ambang batasnya secara terbuka. Analitik turunan akan diterbitkan setelah datanya memadai, bukan sebelumnya:
| Analitik | Ambang data | Alasan |
|---|---|---|
| Pola aktivitas harian per jam | ≥ 30 hari berturut-turut | Siklus harian butuh puluhan pengulangan sebelum polanya terpisah dari derau. |
| Skor keandalan tautan antar node | ≥ 30 hari, dan ≥ 100 pengamatan per pasangan | Saat ini pasangan node yang terbukti saling mendengar masih dihitung dalam satuan pengamatan, bukan ratusan. |
| Perkiraan cakupan wilayah | ≥ 90 hari, dengan laporan posisi dan kualitas sinyal yang memadai | Interpolasi cakupan membutuhkan sebaran pengukuran, bukan satu potret sesaat. |
| Deteksi anomali (node turun atau melemah) | ≥ 30 hari sebagai garis dasar | Anomali hanya bermakna bila ada perilaku normal yang sudah terukur. |
Sampai ambang itu terlampaui, yang disajikan situs ini adalah hitungan langsung dan statistik deskriptif yang dapat diperiksa ulang oleh siapa pun terhadap titik akhir di atas. Itu memang lebih sederhana daripada sebuah model, tetapi benar — dan dapat diverifikasi.