Panduan Penggunaan — CCTV DISKOMINFO GOWA (Sentinel)

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.


1. Masuk & Kunci Operator

Sebagian besar tindakan (tambah/ubah/hapus, jalankan AI, ubah pengaturan)

membutuhkan Kunci Operator (Admin Key).

  1. Buka /admin.html (atau klik ⚙ Admin di dinding video).
  2. Masukkan Kunci Operator.
  3. Kunci disimpan di browser untuk sesi berikutnya.
Kunci diatur lewat variabel lingkungan ADMIN_KEY di server.

2. Dinding Video (Live View)

Halaman utama / menampilkan grid "signal room" seluruh kamera.

koordinat opsional, dan RTSP URL. Klik Uji Sinyal sebelum menyimpan,

lalu Pasang Feed.

dengan hitungan online. Filter POP menyaring ke satu POP.

Kredensial RTSP disimpan di server dan tidak pernah dikirim ke browser.


3. Panel Admin

Menu (sidebar): Dashboard · Monitor · Asisten AI · Log Peristiwa · Laporan (SLA) · Peta · Pengaturan.

3.1 Dashboard Statistik

Ringkasan kesehatan: jumlah perangkat Normal/Peringatan/Gagal, tren, dan KPI.

3.2 Monitor Perangkat (11 tipe)

Pantau perangkat CCTV/jaringan. Tiap monitor punya interval, status live, grafik

mini, dan tombol cek sekarang. Transisi status memicu kejadian + notifikasi.

# Tipe Fungsi
1Ping ICMPKetersediaan kamera/DVR/NVR via ping
2Parameter SNMPSNMP GET satu OID + ambang atas/bawah
3SNMP TrapTerima trap UDP dari perangkat
4Antarmuka WebCek HTTP(S) (status + waktu respons)
5Kotak Masuk (IMAP)Pantau DVR/NVR via email yang dikirimnya
6Log PeristiwaPindai berkas log sesuai pola
7Jumlah Berkas DirPantau perubahan jumlah berkas rekaman
8Rekaman FTPHitung rekaman di server FTP
9Bandwidth SNMPifInOctets/ifOutOctets → Mbps
10Bitrate RTSPUkur bitrate stream via ffmpeg
11Peta Kamera LangsungPin kamera + pratinjau RTSP

Menambah monitor: klik Tambah Monitor, pilih tipe, isi target &

ambang, atur interval, aktifkan notifikasi bila perlu, simpan.

3.3 Log Peristiwa (Kejadian)

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.

3.4 Laporan Ketersediaan (SLA)

Rekap uptime/ketersediaan perangkat per periode.

3.5 Peta Kamera

Peta (Leaflet) pin kamera per POP; klik pin → pratinjau RTSP; seret pin

untuk menetapkan koordinat.

3.6 Pengaturan


4. Asisten AI & Analitik

Menu Asisten AI. Berjalan lokal (YOLOv8 ONNX + ffmpeg), tanpa GPU/cloud.

Badge status menunjukkan model aktif (mis. yolov8s.onnx) & kapabilitas.

4.1 Insight & Chat

OPENAI_API_KEY diset).

4.2 Kesehatan Feed (per kamera)

Tombol Kesehatan: analisis feed RTSP (gelap, beku/freeze, indikasi

tamper/lensa tertutup, tingkat gerak).

4.3 Deteksi Objek & Kendaraan

Tombol Deteksi objek: jalankan YOLO pada 1 frame, tampilkan snapshot +

kotak deteksi dan ringkasan:

4.4 Kemacetan & Panjang Antrian

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).

4.5 Keramaian & Kerusuhan

padat + gerak intens. Bersifat peringatan dini heuristik untuk

ditinjau operator (bukan pengenalan aksi/senjata).

4.6 Sapuan Otomatis (Sweep) & Timeline

Sistem menyapu kamera berkala (default tiap 90 detik). Saat ada gerakan/objek:

atau terindikasi *Kerusuhan*).


5. Notifikasi Telegram & Email untuk Kejadian

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.

Mengaktifkan Telegram

  1. Buat bot via @BotFather di Telegram → dapatkan Bot Token.
  2. Dapatkan Chat ID tujuan (chat pribadi atau grup):

https://api.telegram.org/bot<TOKEN>/getUpdates dan lihat chat.id.

  1. Di Admin → Pengaturan → Telegram: isi Bot Token & Chat ID,

centang aktif, simpan.

  1. Klik Uji Telegram untuk memastikan pesan masuk.

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).

6. Variabel Lingkungan Penting

Variabel Default Keterangan
PORT8901Port HTTP aplikasi
ADMIN_KEYKunci operator
AI_YOLO_MODEL(auto)Path model; default pilih yolov8s > yolov8m > yolov8n. Untuk akurasi tertinggi: /opt/sentinel/models/yolov8m.onnx
AI_YOLO_THREADS1Thread inferensi YOLO
AI_SWEEP10 untuk mematikan sapuan otomatis
AI_SWEEP_SEC90Interval sapuan (detik)
AI_MOTION_MIN8Ambang gerak dianggap "ada gerakan"
Kemacetan
AI_JAM_PCU_PADAT / AI_JAM_PCU_MACET6 / 14Ambang PCU padat/macet
AI_JAM_OCC_PADAT / AI_JAM_OCC_MACET0.18 / 0.35Ambang okupansi padat/macet
AI_VEH_LEN_BESAR / _KECIL / _MOTOR10 / 4.5 / 2Panjang kendaraan (m) untuk antrian
AI_VEH_GAP1.5Celah antar kendaraan saat antre (m)
Keramaian/Kerusuhan
AI_CROWD_RAMAI / AI_CROWD_PADAT4 / 12Ambang jumlah orang ramai/padat
AI_CROWD_OCC0.30Ambang okupansi orang untuk padat
AI_RIOT_MOTION18Ambang gerak intens untuk kerusuhan
OPENAI_API_KEY(opsional) memperkaya chat/insight AI

Terapkan lewat drop-in systemd, lalu systemctl restart sentinel.


7. Operasional Server

dengan SSL Let's Encrypt.

Ganti model ke akurasi tertinggi (yolov8m)


# tambahkan env pada service, mis. lewat drop-in:
#   Environment=AI_YOLO_MODEL=/opt/sentinel/models/yolov8m.onnx
systemctl restart sentinel

8. Ringkasan API (butuh header X-Admin-Key untuk yang ber-auth)

Method Endpoint Keterangan
GET/api/camerasDaftar kamera (tanpa URL RTSP)
POST/PUT/DELETE/api/cameras[/:id]Kelola kamera
POST/api/probeUji jangkauan RTSP
GET/stream/:id/index.m3u8Playlist HLS (memulai transcode)
GET/POST/api/admin/monitorsKelola monitor
POST/api/admin/monitors/:id/runJalankan cek sekarang
GET/DELETE/api/admin/eventsLog kejadian / bersihkan
GET/PUT/api/admin/settingsPengaturan (SMTP, Telegram, trap)
POST/api/admin/test-emailKirim email uji
POST/api/admin/test-telegramKirim Telegram uji
GET/api/ai/statusStatus & kapabilitas AI
GET/api/ai/insightsInsight AI
POST/api/ai/chatChat operator
POST/api/ai/analyze/:idKesehatan feed kamera
POST/api/ai/detect/:idDeteksi objek + kendaraan + kemacetan + keramaian
GET/api/ai/snapshot/:idSnapshot JPEG
GET/api/ai/motionTimeline gerak/kejadian AI

9. Pemecahan Masalah

Kesehatan dan Uji Sinyal. Pastikan ffmpeg di PATH.

paket onnxruntime-node terpasang.

Uji Telegram; periksa Log Peristiwa untuk pesan "Gagal kirim Telegram".

AI_JAM_*, AI_CROWD_*, AI_RIOT_MOTION sesuai lokasi kamera.

(bukan m), atau naikkan AI_YOLO_THREADS bila core memadai.