Proyek ini menyediakan sistem deteksi manusia real-time untuk ESP32-CAM dengan buffer pradeteksi, perekaman otomatis, dan antarmuka HTTP opsional.
.
|-- esp32_cam/
| |-- __init__.py # Ekspor Config dan class deteksi
| |-- config.py # Konfigurasi terpusat & override lewat environment
| |-- detection/
| | |-- __init__.py
| | |-- system.py # Sistem deteksi utama + recording & display
| | `-- optimized.py # Varian dengan dukungan ONNX
| `-- api/
| |-- __init__.py
| `-- server.py # FastAPI server untuk kontrol via HTTP
|-- esp32_human_detection.py # Entry point CLI (wrapper system.py)
|-- optimized_detector.py # Entry point CLI varian optimized
|-- api_server.py # Entry point CLI FastAPI
|-- requirements.txt
|-- setup.py
|-- README.md
|-- yolo8n.pt # Model YOLO (opsional, dapat diganti)
|-- recordings/ # Output rekaman (digunakan runtime)
|-- dugaan/ # Rekaman eksperimen (ignored)
`-- sementara/ # Rekaman sementara (ignored)
Direktori dugaan/ dan sementara/ menyimpan file uji coba; keduanya diabaikan oleh Git melalui .gitignore.
- Pastikan Python >= 3.10 terpasang.
- Pasang dependensi:
pip install -r requirements.txt
- Letakkan model YOLO (default
yolo8n.pt) di root project atau sesuaikanMODEL_PATHpada konfigurasi.
Semua konfigurasi berada pada esp32_cam.config.Config. Nilai default bisa dioverride via environment variable berikut (contoh penting):
ESP32_URL- URL stream ESP32-CAM (defaulthttp://192.168.145.152:81/stream)ESP32_CONTROL_PORT,ESP32_CONTROL_PATH- pengaturan endpoint kontrol kameraESP32_CAMERA_SETTINGS- JSON untuk pengaturan kamera (mis.{"vflip": 1, "framesize": 10})MODEL_PATH,OUTPUT_DIR,CONFIDENCE_THRESHOLD,SKIP_FRAMES,RECORDING_DELAY, dll.
Contoh override (Windows PowerShell):
$env:ESP32_URL = "http://192.168.1.50:81/stream"
$env:OUTPUT_DIR = "C:/data/rekaman"
python esp32_human_detection.pyJalankan entry point CLI standar:
python esp32_human_detection.pyAplikasi akan mencoba terhubung ke stream, menerapkan pengaturan kamera dari Config, menampilkan feed dengan bounding box, dan otomatis merekam ketika manusia terdeteksi.
Untuk memakai pipeline optimized:
python optimized_detector.pyTambahkan argumen baris perintah sesuai kebutuhan (lihat bantuan pada file).
Aktifkan REST API (FastAPI + Uvicorn):
python api_server.py
# atau
uvicorn esp32_cam.api.server:app --host 0.0.0.0 --port 8000Endpoint penting:
POST /api/start- Mulai deteksiPOST /api/stop- HentikanGET /api/status- Status sistem & rekamanGET /api/snapshot- Ambil frame terbaru (JPEG)GET /api/recordings- Daftar rekaman terbaru
Rekaman video disimpan di folder recordings/ dengan nama record_YYYYmmdd_HHMMSS.mp4. Snapshot manual (s) juga disimpan di folder yang sama.
- Pengaturan kamera (mis.
vflip,hmirror,framesize) dikirim ulang setiap kali koneksi stream berhasil dibuat. - Pastikan
ESP32_URLmengarah ke stream MJPEG yang aktif. - Jika koneksi terputus, sistem akan mencoba reconnect berdasarkan
Config.RECONNECT_DELAY.
Selamat menggunakan! Jika ada masalah, periksa log dan pastikan alamat IP serta kredensial kamera benar.