127 lines
3.1 KiB
Plaintext
127 lines
3.1 KiB
Plaintext
# =============================================================================
|
|
# ZenAI KTC — sack feeder zone counter (ByteTrack + N named zones)
|
|
# Shared config for: counter_live_rknn.py + counter_dashboard.py
|
|
# Copy to .env on device: cp env.example .env && nano .env
|
|
# =============================================================================
|
|
|
|
# --- Core paths ---
|
|
OUTPUT_DIR=/opt/zenai-ktc-counter
|
|
DB_PATH=/opt/zenai-ktc-counter/counter.db
|
|
STATE_FILE=/opt/zenai-ktc-counter/current_counter.json
|
|
|
|
# --- Input source ---
|
|
#SOURCE=rtsp://user:pass@192.168.0.100:554/stream1
|
|
SOURCE=rtsp://10.38.30.64:8554/my_stream
|
|
OPENCV_FFMPEG_CAPTURE_OPTIONS=rtsp_transport;tcp|fflags;nobuffer|flags;low_delay
|
|
|
|
# --- RKNN model ---
|
|
MODEL_PATH=/opt/models/zenai_kac_sukawarna_20260716.rknn
|
|
IMGSZ=320
|
|
HALF=false
|
|
CORE_MASK=1
|
|
DEVICE=0
|
|
|
|
# --- YOLO decoder ---
|
|
NUM_CLASSES=4
|
|
SCORE_SIGMOID=false
|
|
|
|
# --- Detection ---
|
|
CONF=0.5
|
|
|
|
# --- ByteTrack tracking ---
|
|
TRACK_HIGH_THRESH=0.5
|
|
TRACK_LOW_THRESH=0.3
|
|
TRACK_MATCH_THRESH=0.7
|
|
TRACK_BUFFER=60
|
|
TRACK_MIN_HITS=3
|
|
|
|
# --- Display ---
|
|
SITE_NAME=ZenAi
|
|
|
|
# --- Object class names ---
|
|
CAMERA_NAME=ZenAi
|
|
OBJECT_LABEL=karung
|
|
CLASS_OBJECT=karung
|
|
OBJECT_CLASS_ID=0
|
|
|
|
# Verbose tracking debug (inherit / dup / cooldown / per-frame dets)
|
|
DEBUG_TRACKING=false
|
|
|
|
# --- Counting zones (1…N) ---
|
|
# ZONE_COUNT=1 uses only ZONE_1_*. Add ZONE_2_* (etc.) when ZONE_COUNT>=2.
|
|
# Absolute pixels (ZONE_i_X1…) win over fractions when set.
|
|
# A sack is counted once after dwelling in a zone.
|
|
ZONE_COUNT=1
|
|
ZONE_1_NAME=kandang_bawah_feeder
|
|
ZONE_1_X1_FRAC=0.10
|
|
ZONE_1_Y1_FRAC=0.10
|
|
ZONE_1_X2_FRAC=0.90
|
|
ZONE_1_Y2_FRAC=1.00
|
|
ZONE_1_COOLDOWN_SEC=15
|
|
ZONE_1_DWELL_SEC=2
|
|
|
|
# Example two-zone setup:
|
|
# ZONE_COUNT=2
|
|
# ZONE_1_NAME=kandang_bawah_feeder_kiri
|
|
# ZONE_1_X1_FRAC=0.02
|
|
# ZONE_1_Y1_FRAC=0.10
|
|
# ZONE_1_X2_FRAC=0.440
|
|
# ZONE_1_Y2_FRAC=1.00
|
|
# ZONE_1_COOLDOWN_SEC=15
|
|
# ZONE_1_DWELL_SEC=2
|
|
# ZONE_2_NAME=kandang_bawah_feeder_kanan
|
|
# ZONE_2_X1_FRAC=0.490
|
|
# ZONE_2_Y1_FRAC=0.10
|
|
# ZONE_2_X2_FRAC=0.98
|
|
# ZONE_2_Y2_FRAC=1.00
|
|
# ZONE_2_COOLDOWN_SEC=15
|
|
# ZONE_2_DWELL_SEC=2
|
|
|
|
# --- Counting day management ---
|
|
DAILY_CUTOFF_TIME=17:00
|
|
CUTOFF_TIME=17:00
|
|
|
|
# --- CSV export ---
|
|
EXPORT_CSV=false
|
|
CROSS_CSV=/tmp/ktc_crossings.csv
|
|
|
|
# --- Rate / performance ---
|
|
MOTION_DETECTION_ENABLED=true
|
|
MOTION_THRESHOLD=5.0
|
|
RATE_WINDOW_SEC=60
|
|
WARMUP_FRAMES=30
|
|
RECONNECT_DELAY_SEC=3
|
|
MAX_RECONNECT_ATTEMPTS=0
|
|
# Max stream-error logs per outage; resets when stream recovers. 0 = unlimited.
|
|
STREAM_ERROR_LOG_MAX=3
|
|
TRACKED_PRUNE_SEC=300
|
|
|
|
# --- ID-switch counting guards ---
|
|
DEDUP_FRAMES=15
|
|
DEDUP_PX=60
|
|
INHERIT_SEC=1.0
|
|
INHERIT_PX=60
|
|
|
|
# --- Video recording ---
|
|
RECORD_VIDEO=false
|
|
VIDEO_SEGMENT_SEC=3600
|
|
OUTPUT_FPS=15
|
|
|
|
# --- Live stream snapshot ---
|
|
LIVE_STREAM_ENABLED=true
|
|
LIVE_STREAM_FRAME_PATH=/dev/shm/zenai-ktc-counter/live_frame.jpg
|
|
LIVE_STREAM_QUALITY=75
|
|
LIVE_STREAM_EVERY_N=2
|
|
|
|
# --- Dashboard ---
|
|
SECRET_KEY=change-me-in-production
|
|
DASHBOARD_HOST=0.0.0.0
|
|
DASHBOARD_PORT=5000
|
|
FLASK_DEBUG=false
|
|
CURRENT_COUNTER_PATH=/tmp/ktc_current_counter.json
|
|
|
|
SAVE_CROSS_SNAPSHOT=true
|
|
CROSS_SNAPSHOT_DIR=/opt/zenai-ktc-snaps/snapshots
|
|
CROSS_SNAPSHOT_CLEANUP_SEC=3600
|
|
CROSS_SNAPSHOT_MAX_AGE_DAYS=7
|