Aplikasi pemantauan CCTV & jaringan berbasis web untuk feed RTSP, dilengkapi
analitik AI (deteksi objek, kendaraan, kemacetan, antrian, keramaian, kerusuhan),
pemantauan perangkat (ping/SNMP/HTTP/dll), log kejadian, laporan SLA, peta lokasi,
serta notifikasi Email & Telegram.
https://paccini.gowakab.go.id/ atau /index.html/admin.htmlSebagian besar tindakan (tambah/ubah/hapus, jalankan AI, ubah pengaturan)
membutuhkan Kunci Operator (Admin Key).
/admin.html (atau klik ⚙ Admin di dinding video).Kunci diatur lewat variabel lingkungan ADMIN_KEY di server.
Halaman utama / menampilkan grid "signal room" seluruh kamera.
koordinat opsional, dan RTSP URL. Klik Uji Sinyal sebelum menyimpan,
lalu Pasang Feed.
⤢ perbesar (fullscreen + audio), ✕ hapus kamera.Esc menutup dialog/viewer.dengan hitungan online. Filter POP menyaring ke satu POP.
#map / #peta langsung membuka peta.Kredensial RTSP disimpan di server dan tidak pernah dikirim ke browser.
Menu (sidebar): Dashboard · Monitor · Asisten AI · Log Peristiwa · Laporan (SLA) · Peta · Pengaturan.
Ringkasan kesehatan: jumlah perangkat Normal/Peringatan/Gagal, tren, dan KPI.
Pantau perangkat CCTV/jaringan. Tiap monitor punya interval, status live, grafik
mini, dan tombol cek sekarang. Transisi status memicu kejadian + notifikasi.
| # | Tipe | Fungsi |
|---|---|---|
| 1 | Ping ICMP | Ketersediaan kamera/DVR/NVR via ping |
| 2 | Parameter SNMP | SNMP GET satu OID + ambang atas/bawah |
| 3 | SNMP Trap | Terima trap UDP dari perangkat |
| 4 | Antarmuka Web | Cek HTTP(S) (status + waktu respons) |
| 5 | Kotak Masuk (IMAP) | Pantau DVR/NVR via email yang dikirimnya |
| 6 | Log Peristiwa | Pindai berkas log sesuai pola |
| 7 | Jumlah Berkas Dir | Pantau perubahan jumlah berkas rekaman |
| 8 | Rekaman FTP | Hitung rekaman di server FTP |
| 9 | Bandwidth SNMP | ifInOctets/ifOutOctets → Mbps |
| 10 | Bitrate RTSP | Ukur bitrate stream via ffmpeg |
| 11 | Peta Kamera Langsung | Pin kamera + pratinjau RTSP |
Menambah monitor: klik Tambah Monitor, pilih tipe, isi target &
ambang, atur interval, aktifkan notifikasi bila perlu, simpan.
Semua kejadian tercatat: transisi monitor, anomali feed AI, kemacetan,
keramaian/kerusuhan, kegagalan kirim notifikasi, dll. Bisa acknowledge &
bersihkan. Kejadian level Peringatan/Kritis memicu notifikasi keluar.
Rekap uptime/ketersediaan perangkat per periode.
Peta (Leaflet) pin kamera per POP; klik pin → pratinjau RTSP; seret pin
untuk menetapkan koordinat.
1620 (port < 1024 butuh root).Menu Asisten AI. Berjalan lokal (YOLOv8 ONNX + ffmpeg), tanpa GPU/cloud.
Badge status menunjukkan model aktif (mis. yolov8s.onnx) & kapabilitas.
OPENAI_API_KEY diset).
Tombol Kesehatan: analisis feed RTSP (gelap, beku/freeze, indikasi
tamper/lensa tertutup, tingkat gerak).
Tombol Deteksi objek: jalankan YOLO pada 1 frame, tampilkan snapshot +
kotak deteksi dan ringkasan:
Dihitung otomatis saat deteksi:
(bobot: besar 2.5, kecil 1, motor 0.35) dan okupansi area.
+ celah antre. Contoh tampilan: Padat · 2.5 PCU · antrian ~10 m (1 kendaraan).
padat + gerak intens. Bersifat peringatan dini heuristik untuk
ditinjau operator (bukan pengenalan aksi/senjata).
Sistem menyapu kamera berkala (default tiap 90 detik). Saat ada gerakan/objek:
atau terindikasi *Kerusuhan*).
Kejadian level Peringatan dan Kritis dikirim otomatis ke Email dan
Telegram (bila diaktifkan). Contoh kejadian: perangkat gagal, feed
freeze/tamper, kemacetan, keramaian padat, indikasi kerusuhan.
https://api.telegram.org/bot<TOKEN>/getUpdates dan lihat chat.id.
getUpdates.centang aktif, simpan.
Alternatif via lingkungan/berkas: konfigurasi tersimpan di
data/settings.json pada objek telegram { enabled, botToken, chatId }.
Quiet Hours: bila diaktifkan, hanya kejadian Kritis yang tetap dikirim di luar jam kerja; Peringatan diredam (tetap tercatat di log).
| Variabel | Default | Keterangan |
|---|---|---|
PORT | 8901 | Port HTTP aplikasi |
ADMIN_KEY | — | Kunci operator |
AI_YOLO_MODEL | (auto) | Path model; default pilih yolov8s > yolov8m > yolov8n. Untuk akurasi tertinggi: /opt/sentinel/models/yolov8m.onnx |
AI_YOLO_THREADS | 1 | Thread inferensi YOLO |
AI_SWEEP | 1 | 0 untuk mematikan sapuan otomatis |
AI_SWEEP_SEC | 90 | Interval sapuan (detik) |
AI_MOTION_MIN | 8 | Ambang gerak dianggap "ada gerakan" |
| Kemacetan | ||
AI_JAM_PCU_PADAT / AI_JAM_PCU_MACET | 6 / 14 | Ambang PCU padat/macet |
AI_JAM_OCC_PADAT / AI_JAM_OCC_MACET | 0.18 / 0.35 | Ambang okupansi padat/macet |
AI_VEH_LEN_BESAR / _KECIL / _MOTOR | 10 / 4.5 / 2 | Panjang kendaraan (m) untuk antrian |
AI_VEH_GAP | 1.5 | Celah antar kendaraan saat antre (m) |
| Keramaian/Kerusuhan | ||
AI_CROWD_RAMAI / AI_CROWD_PADAT | 4 / 12 | Ambang jumlah orang ramai/padat |
AI_CROWD_OCC | 0.30 | Ambang okupansi orang untuk padat |
AI_RIOT_MOTION | 18 | Ambang gerak intens untuk kerusuhan |
OPENAI_API_KEY | — | (opsional) memperkaya chat/insight AI |
Terapkan lewat drop-in systemd, lalu systemctl restart sentinel.
sentinel.service.systemctl restart sentinel · Status: systemctl status sentineljournalctl -u sentinel -fpaccini.gowakab.go.id → 127.0.0.1:8901dengan SSL Let's Encrypt.
/opt/sentinel/models/ (yolov8n/s/m.onnx).
# tambahkan env pada service, mis. lewat drop-in:
# Environment=AI_YOLO_MODEL=/opt/sentinel/models/yolov8m.onnx
systemctl restart sentinel
X-Admin-Key untuk yang ber-auth)| Method | Endpoint | Keterangan |
|---|---|---|
| GET | /api/cameras | Daftar kamera (tanpa URL RTSP) |
| POST/PUT/DELETE | /api/cameras[/:id] | Kelola kamera |
| POST | /api/probe | Uji jangkauan RTSP |
| GET | /stream/:id/index.m3u8 | Playlist HLS (memulai transcode) |
| GET/POST | /api/admin/monitors | Kelola monitor |
| POST | /api/admin/monitors/:id/run | Jalankan cek sekarang |
| GET/DELETE | /api/admin/events | Log kejadian / bersihkan |
| GET/PUT | /api/admin/settings | Pengaturan (SMTP, Telegram, trap) |
| POST | /api/admin/test-email | Kirim email uji |
| POST | /api/admin/test-telegram | Kirim Telegram uji |
| GET | /api/ai/status | Status & kapabilitas AI |
| GET | /api/ai/insights | Insight AI |
| POST | /api/ai/chat | Chat operator |
| POST | /api/ai/analyze/:id | Kesehatan feed kamera |
| POST | /api/ai/detect/:id | Deteksi objek + kendaraan + kemacetan + keramaian |
| GET | /api/ai/snapshot/:id | Snapshot JPEG |
| GET | /api/ai/motion | Timeline gerak/kejadian AI |
Kesehatan dan Uji Sinyal. Pastikan ffmpeg di PATH.
models/ danpaket onnxruntime-node terpasang.
Uji Telegram; periksa Log Peristiwa untuk pesan "Gagal kirim Telegram".
AI_JAM_*, AI_CROWD_*, AI_RIOT_MOTION sesuai lokasi kamera.
AI_SWEEP_SEC), gunakan yolov8s(bukan m), atau naikkan AI_YOLO_THREADS bila core memadai.