Files

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