031b9eaaec
Migrate from raw HTTPServer to FastAPI, add SQLite database with schema for known objects, embeddings, events, and settings. Add centralized config, Pydantic models, and 22 database integration tests. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
"""Centralized configuration for frigate-notify v2."""
|
|
|
|
import os
|
|
|
|
|
|
class Config:
|
|
"""Application configuration read from environment variables."""
|
|
|
|
# MQTT
|
|
MQTT_HOST: str = os.environ.get("MQTT_HOST", "192.168.86.192")
|
|
MQTT_PORT: int = int(os.environ.get("MQTT_PORT", "1883"))
|
|
|
|
# Frigate
|
|
FRIGATE_URL: str = os.environ.get("FRIGATE_URL", "http://192.168.86.192:5000")
|
|
|
|
# Matrix
|
|
MATRIX_HOMESERVER: str = os.environ.get(
|
|
"MATRIX_HOMESERVER", "http://192.168.86.192:8008"
|
|
)
|
|
MATRIX_ACCESS_TOKEN: str = os.environ.get("MATRIX_ACCESS_TOKEN", "")
|
|
MATRIX_ROOM_ID: str = os.environ.get("MATRIX_ROOM_ID", "")
|
|
|
|
# Vision - CLIP service
|
|
CLIP_SERVICE_URL: str = os.environ.get(
|
|
"CLIP_SERVICE_URL", "http://192.168.86.196:5200"
|
|
)
|
|
|
|
# Vision - Ollama
|
|
OLLAMA_URL: str = os.environ.get("OLLAMA_URL", "http://192.168.86.196:11434")
|
|
OLLAMA_MODEL: str = os.environ.get("OLLAMA_MODEL", "llava:13b")
|
|
|
|
# Recognition thresholds
|
|
RECOGNITION_THRESHOLD_HIGH: float = float(
|
|
os.environ.get("RECOGNITION_THRESHOLD_HIGH", "0.85")
|
|
)
|
|
RECOGNITION_THRESHOLD_LOW: float = float(
|
|
os.environ.get("RECOGNITION_THRESHOLD_LOW", "0.60")
|
|
)
|
|
|
|
# Filtering
|
|
ALLOWED_LABELS: set = set(
|
|
os.environ.get("ALLOWED_LABELS", "person,car,dog,cat,bird").split(",")
|
|
)
|
|
MIN_SCORE: float = float(os.environ.get("MIN_SCORE", "0.7"))
|
|
RATE_LIMIT_SECONDS: int = int(os.environ.get("RATE_LIMIT_SECONDS", "60"))
|
|
DEDUP_WINDOW_SECONDS: int = int(os.environ.get("DEDUP_WINDOW_SECONDS", "30"))
|
|
|
|
# Server
|
|
SERVER_HOST: str = os.environ.get("SERVER_HOST", "0.0.0.0")
|
|
SERVER_PORT: int = int(os.environ.get("SERVER_PORT", "5199"))
|
|
|
|
# Database
|
|
DB_PATH: str = os.environ.get("DB_PATH", "/data/frigate-notify.db")
|
|
|
|
|
|
config = Config()
|