- 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.
vixy-vision Server
Camera snapshot server with motion detection for Raspberry Pi.
Quick Start
./setup.sh
sudo systemctl start vixy-vision
Features
- 📷 USB camera snapshots via HTTPS API
- 🔐 API key authentication
- 🔍 Motion detection with frame differencing
- 📤 Event reporting to central collector
- 🔄 Auto-reconnect on camera failure
Configuration
Copy env.example to .env and customize:
cp env.example .env
nano .env
Key settings:
| Variable | Description | Default |
|---|---|---|
API_KEY |
Auth key for API | (required) |
CAMERA_ID |
Identifier for this camera | camera |
MOTION_ENABLED |
Enable motion detection | false |
MOTION_THRESHOLD |
Sensitivity (lower = more) | 25 |
MOTION_COOLDOWN |
Seconds between events | 5.0 |
COLLECTOR_URL |
Where to POST events | (optional) |
API Endpoints
| Endpoint | Auth | Description |
|---|---|---|
GET / |
No | Service info |
GET /health |
No | Health check |
GET /snapshot |
Yes | JPEG snapshot |
GET /motion/stats |
Yes | Detection stats |
POST /motion/enable |
Yes | Start detection |
POST /motion/disable |
Yes | Stop detection |
Motion Events
When motion is detected, the server POSTs to COLLECTOR_URL:
{
"event": {
"timestamp": "2024-12-16T14:23:01Z",
"camera_id": "basement",
"event_type": "motion",
"confidence": 0.75,
"area_percent": 7.5
},
"snapshot": "<base64 JPEG>"
}