.eye
DotEye
One camera or four, one Telegram chat: the bot reports entries, exits, and alarms only when an event occurs.
the essence
DotEye turns a camera into a local presence sensor. It reads webcam, RTSP, or MJPEG input, tracks people entering and leaving, and sends an event with a frame to Telegram. The chat controls arming, quiet hours, zones, face references, voice, and alarms. Remote inference runs in a separate AES-GCM-protected path with a local fallback.
scale
size and timeframe: what stands behind the product.
architecture
Frame sources, one reader per camera, and reconnect backoff
- YOLO · YuNet · motion frames
Commands, notifications, frames, and the admin panel
- aiogram panel commands
FSM dialogs and per-camera settings over Runtime
- YOLO · YuNet · motion settings
Detection with auto-degradation and optional remote inference
- remote inference optional
- IoU tracker
Bounded HTTP transport, AES-GCM, HMAC, and local fallback
Enter, active, and exit states instead of per-frame spam
- presence · identity
- siren + TTS alarm
Box crops, embeddings, and comparison with references
- SQLite WAL + outbox event
Voice loop in a separate thread, without blocking the pipeline
People, embeddings, events, settings, and retry delivery
- Telegram outbox
stack
- Language 1
- Framework 5
- Data 3
- Infrastructure 4
- Client 2
- AI / ML 4
Language
- Python 3.12
Framework
- aiogram 3
- OpenCV
- Ultralytics YOLO
- InsightFace
- pyttsx3
Data
- SQLite WAL
- AES-256-GCM
- encrypted JPEG outbox
Infrastructure
- Docker Compose
- systemd
- remote inference
- HTTPS / VPN
Client
- Telegram Bot API
- webcam / RTSP / MJPEG
AI / ML
- YOLO
- YuNet
- IoU tracker
- motion gate
what it does
the product's key capabilities right now.
Entry and exit become events
The IoU tracker keeps each object's state and notifies when a person appears or leaves instead of sending a message for every frame.
A cooldown removes jitter, while entry, active presence, and exit remain separate states for each camera.
A detector with safe fallback
The project supports YOLO, YuNet, and motion. Auto mode selects an available path, so a remote failure does not become a false absence of people.
The panel can change the model and threshold without restarting the process.
Presence and identity
Presence answers «did someone enter?», while identity adds crop-based recognition against an enrolled reference gallery.
The "Who is this?" button links an unknown event to a person and saves a new reference. A siren and TTS can be enabled for unknown people.
Multiple cameras and zones
Each source has its own reader thread. Up to four cameras can run in parallel, frame zones use 0..1 coordinates, and the detectors stay isolated.
Each camera has its own name, mode, cooldown, quiet hours, and notifications. One camera failing does not take down the others.
Frames with retry delivery
Each event gets a box, name, and confidence. The JPEG is then encrypted and placed in SQLite outbox before it is sent to Telegram.
Idempotency and retries survive a temporary Telegram failure, while retention keeps the event history bounded.
Remote inference without losing the local path
A frame can go to another machine through AES-256-GCM, the request is signed with HMAC-SHA256, and the client can fall back to local detection.
A host allowlist, response limits, and HTTPS or VPN keep the remote path inside the intended network.
Voice and alarm
A siren, greetings, goodbyes, and TTS phrases run alongside Telegram and are configured from the panel.
The audio loop runs in a separate thread, so speakers do not delay the pipeline step or manual speech from chat.
timeline
how the product grew from its first version.
-
12 Sep 2026
Pipeline and Telegram
Camera, detector, tracker, storage, and the bot panel came together with enter/exit, identity, zones, quiet hours, and event notifications.
-
12 Sep 2026
Remote and delivery
AES-GCM transport, HMAC, TLS, local fallback, WAL pruning, Docker, Compose, and systemd were added for different deployment paths.
-
13 Sep 2026
Privacy, voice, and hardening
The final pass added outbound frame redaction, an audit journal, per-event TTS, persistent navigation, and remote autodeploy with Caddy TLS.