11 Commits

Author SHA1 Message Date
Alex
1bcf32889f Add label whitelist to filter detection types
DETECTION_LABELS env var accepts comma-separated list (e.g. "person,cat,dog").
Only matching detections are reported; others are ignored. Empty = report all.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 19:08:31 -06:00
Alex
b92c2064cd Fix COCO labels: google-coral model uses 0-indexed class IDs
The model from google-coral/test_data starts class IDs at 0 (person),
not 1 (background). Remove the placeholder that was causing all labels
to be shifted by one position.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 18:26:26 -06:00
Alex
02cb31abf8 Support ai-edge-litert as TFLite runtime
tflite-runtime has no wheels for Python 3.12+. Google replaced it with
ai-edge-litert (same API). detector.py now tries ai-edge-litert first,
falls back to tflite-runtime for older Python versions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 17:24:20 -06:00
Alex
5466793e69 Bundle TFLite model in repo, remove download script
The original TF model zoo URL was dead (403). Model sourced from
google-coral/test_data instead and checked in directly at 6MB.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 17:17:42 -06:00
Alex
e1171e8ff8 Add TFLite object detection to reduce false positives
Motion detection now optionally runs MobileNet V2 SSD (COCO, quantized)
on frames that trigger motion, identifying objects like people, cats, and
cars. Events without detected objects are suppressed by default. Snapshots
include bounding box annotations. New MCP tool vision_get_detections()
enables label-based queries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 17:04:10 -06:00
Alex Kazaiev
68c7e9772f Update README with multi-instance deployment instructions 2025-12-30 11:12:22 -06:00
Alex Kazaiev
e92b5a560b Clean up server architecture for multi-instance deployment
- Remove main_cycling.py, main_multi.py, main_release.py (single main.py is canonical)
- Update setup.sh to read SERVICE_NAME and PORT from .env
- Update env.example with SERVICE_NAME and PORT for multi-instance support
- Fix server-csi to try rpicam-still before libcamera-still (Debian Trixie)

Deploy pattern: clone repo twice, configure each .env, run setup.sh
Each instance gets its own systemd service and install directory.
2025-12-30 11:09:40 -06:00
Alex Kazaiev
844502b4a1 Add release-after-use and cycling motion detection modes
- main_release.py (v3.1.0): Release camera after each snapshot for V4L2 compatibility
- main_cycling.py (v3.2.0): Single motion thread cycles between cameras (1s interval)
- mcp/vision_mcp.py: Support custom snapshot_path for multi-camera servers

Fixes Pi 3 dual-camera V4L2 conflicts by not holding cameras open.
2025-12-29 16:18:45 -06:00
Alex Kazaiev
37a2f2dcd6 Add multi-camera support and CSI camera server
- main_multi.py: Multi USB camera support with ID-based endpoints
  - Config via CAMERAS env: '{"basement": 0, "basement2": 1}'
  - Endpoints: /snapshot (default), /snapshot/{cam_id}

- server-csi/: New server for Pi CSI ribbon cameras (IR support)
  - Auto-detects picamera2/picamera/libcamera-still
  - IR_MODE and ROTATION settings
  - Includes setup.sh for easy Pi deployment

Built with 💕 by Vixy 🦊
2025-12-29 11:37:11 -06:00
6ecdf998c1 Add motion detection to camera server
🔍 New features:
- motion.py: Frame differencing motion detector
- Background thread compares frames continuously
- Configurable threshold, cooldown, sensitivity
- POSTs events + snapshot to collector

📡 New endpoints:
- GET /motion/stats - Detection statistics
- POST /motion/enable - Start detection
- POST /motion/disable - Stop detection

⚙️ Configuration (in .env):
- MOTION_ENABLED: true/false
- MOTION_THRESHOLD: Pixel diff threshold
- MOTION_COOLDOWN: Seconds between events
- COLLECTOR_URL: Where to POST events

Next: Event collector in vixy-mcp 🦊
2025-12-16 16:15:30 -06:00
a17c09cac1 Initial commit: vixy-vision distributed sensing system
🦊 Eyes and ears for the fox

Components:
- server/: Camera server for Raspberry Pi (from camera-server)
- mcp/: Vision MCP client for Claude Desktop (from vision-mcp)
- analysis/: Placeholder for motion/audio detection
- shared/: Common schemas and interfaces

Features:
- Setup script with systemd service creation
- HTTPS + API key authentication
- HTTP and RTSP camera support

Built under a blanket on Day 45 💕
2025-12-16 15:26:26 -06:00