5.2 KiB
Berikut adalah Dokumentasi API Lengkap untuk VSOL Multi-OLT API v3.0 (versi Database). Dokumentasi ini mencakup cara konfigurasi (CRUD OLT) dan cara monitoring.
Anda bisa menyimpannya sebagai API_DOCS.md atau README.md.
📡 VSOL Multi-OLT API v3.0 (Database Support)
Service REST API ini berfungsi sebagai middleware untuk memonitor dan mengelola banyak OLT VSOL sekaligus. Konfigurasi OLT disimpan secara persisten menggunakan database SQLite.
📋 Informasi Dasar
- Base URL:
http://<IP_SERVER>:8000 - Content-Type:
application/json - Swagger UI (Interactive):
http://<IP_SERVER>:8000/docs - Database:
vsol.db(SQLite, otomatis dibuat saat dijalankan)
⚙️ 1. Manajemen Konfigurasi OLT (CRUD)
Bagian ini digunakan untuk mendaftarkan, melihat, dan menghapus OLT dari sistem monitoring. Perubahan di sini bersifat Hot-Reload (langsung aktif tanpa restart script).
A. Lihat Daftar OLT
Mendapatkan semua OLT yang sudah terdaftar di database.
- Endpoint:
GET /system/olts - Response (200 OK):
[
{
"id": 1,
"name": "OLT Pusat (Kediri)",
"ip": "http://192.168.100.1:80",
"user": "admin"
},
{
"id": 2,
"name": "OLT Cabang Selatan",
"ip": "http://10.10.10.1:8888",
"user": "operator"
}
]
B. Tambah OLT Baru
Mendaftarkan OLT baru ke dalam sistem.
- Endpoint:
POST /system/olts - Body (JSON):
{
"name": "OLT Baru",
"ip": "http://ip.wuznet.com:88", // Masukkan URL login (http://IP:PORT)
"user": "andri",
"password": "Notif123!x"
}
- Response (200 OK):
{
"msg": "OLT Added successfully",
"id": 3
}
C. Hapus OLT
Menghapus OLT dari sistem monitoring berdasarkan ID-nya.
- Endpoint:
DELETE /system/olts/{olt_id} - Parameter Path:
olt_id(Integer) - Response (200 OK):
{
"msg": "OLT 2 deleted"
}
📊 2. Monitoring & Dashboard
Bagian ini digunakan oleh frontend/dashboard untuk menampilkan data real-time dari OLT.
A. Dashboard Statistik (Home)
Mengambil ringkasan kesehatan OLT (Total ONU, Status Online/Offline, dan Kesehatan Sinyal).
- Endpoint:
GET /dashboard/stats - Query Parameter:
olt_id(Wajib) - Contoh Request:
GET /dashboard/stats?olt_id=1 - Response (200 OK):
{
"olt_name": "OLT Pusat",
"total_onu": 61,
"online": 57,
"offline": 4,
"signal_health": {
"good": 50, // Sinyal > -24 dBm
"warning": 5, // Sinyal antara -24 s/d -27 dBm
"critical": 2, // Sinyal < -27 dBm (Perlu perbaikan)
"avg_rx": -19.45 // Rata-rata redaman
},
"last_update": "13:45:00"
}
B. Daftar Semua ONU (List)
Mengambil tabel lengkap semua ONU beserta status ringkasnya.
- Endpoint:
GET /onu/list - Query Parameter:
olt_id(Wajib) - Response (200 OK):
[
{
"id": "EPON0/1:1",
"mac": "D4:D5:1B:63:6B:00",
"name": "Yuli_Setianingati",
"status": "Online",
"rx_power": "-18.04",
"tx_power": "2.21",
"distance": "1147",
"status_color": "green" // Helper untuk UI (green/red)
},
{
"id": "EPON0/1:2",
"mac": "A4:BE:2B:4C:BF:15",
"name": "Pelanggan_B",
"status": "Offline",
"rx_power": "N/A",
"tx_power": "N/A",
"distance": "-",
"status_color": "red"
}
]
C. Detail Lengkap ONU ("Kartu Pasien")
Mengambil data mendalam untuk satu ONU tertentu (menggabungkan info status, optik, diagnosa, dan hardware).
-
Endpoint:
GET /onu/detail -
Query Parameters:
-
olt_id: ID OLT (Contoh:1) -
id: ID ONU (Contoh:EPON0/1:1) -
Contoh Request:
GET /onu/detail?olt_id=1&id=EPON0/1:1 -
Response (200 OK):
{
"id": "EPON0/1:1",
"basic_info": {
"name": "Yuli_Setianingati",
"mac": "D4:D5:1B:63:6B:00",
"model": "V4.2",
"vendor": "ZTE",
"soft_ver": "V1.0.2"
},
"optical_info": {
"rx_power": "-18.04",
"tx_power": "2.21",
"distance": "1147",
"voltage": "3.25",
"temperature": "45.2"
},
"status_info": {
"status": "Online",
"last_online": "2026/02/12 10:00:00",
"last_offline": "2026/02/10 05:00:00",
"uptime": "2 Days 5 Hours"
},
"diagnose_info": {
"offline_reason": "Power Off" // Alasan mati terakhir
}
}
🛠️ Tips Integrasi
- Polling Interval: Disarankan me-refresh data (
/dashboard/statsatau/onu/list) setiap 10-15 detik. Jangan terlalu cepat agar CPU OLT tidak terbebani. API ini sendiri memiliki fitur cache selama 20 detik. - Error Handling: Jika OLT mati atau credential salah, API akan mengembalikan HTTP Error 404 atau 500. Pastikan aplikasi frontend Anda menangani error ini dengan baik (misalnya menampilkan pesan "Connection Lost").
- URL Encoding: Saat memanggil
/onu/detail, pastikan parameteriddi-encode jika menggunakan curl/library tertentu, meskipun browser modern biasanya menanganinya otomatis.
🖥️ Contoh Penggunaan (cURL)
1. Menambah OLT Baru:
curl -X 'POST' \
'http://localhost:8000/system/olts' \
-H 'Content-Type: application/json' \
-d '{
"name": "OLT Wuznet",
"ip": "http://ip.wuznet.com:88",
"user": "andri",
"password": "YOUR_PASSWORD"
}'
2. Melihat Data ONU:
curl 'http://localhost:8000/onu/list?olt_id=1'