Files
vixy-vision/server
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
..
2025-12-16 16:15:30 -06:00

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