- 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 🦊
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>"
}