.око
DotEye
Одна камера или четыре, один Telegram-чат: бот сообщает о входе, выходе и тревоге только по событию.
суть
DotEye превращает камеру в локальный датчик присутствия. Он читает веб-камеру, RTSP или MJPEG, отслеживает вход и выход людей и отправляет в Telegram событие с кадром. В чате настраиваются режим охраны, тихие часы, зоны, эталоны лиц, голос и тревога. Remote-инференс вынесен в отдельный контур с AES-GCM и локальным fallback.
масштаб
размер и срок: что стоит за продуктом.
архитектура
Источники кадров, свой reader на камеру и reconnect backoff
- YOLO · YuNet · motion frames
Команды, уведомления, кадры и админ-панель
- aiogram panel commands
FSM-диалоги и per-camera настройки поверх Runtime
- YOLO · YuNet · motion settings
Детекция с auto-деградацией и опциональным remote
- remote inference optional
- IoU tracker
Ограниченный HTTP transport, AES-GCM, HMAC и локальный fallback
Состояния enter, active и exit вместо спама по кадрам
- presence · identity
- siren + TTS alarm
Кроп бокса, embeddings и сравнение с эталонами
- SQLite WAL + outbox event
Голосовой контур в отдельном потоке, не блокирует pipeline
Люди, embeddings, события, настройки и повторная доставка
- Telegram outbox
стек
- Язык 1
- Фреймворк 5
- Данные 3
- Инфраструктура 4
- Клиент 2
- AI / ML 4
Язык
- Python 3.12
Фреймворк
- aiogram 3
- OpenCV
- Ultralytics YOLO
- InsightFace
- pyttsx3
Данные
- SQLite WAL
- AES-256-GCM
- encrypted JPEG outbox
Инфраструктура
- Docker Compose
- systemd
- remote inference
- HTTPS / VPN
Клиент
- Telegram Bot API
- webcam / RTSP / MJPEG
AI / ML
- YOLO
- YuNet
- IoU tracker
- motion gate
что умеет
ключевые возможности продукта прямо сейчас.
Вход и выход становятся событиями
IoU-трекер хранит состояние объекта и отправляет уведомление, когда человек появляется или уходит, вместо сообщений на каждом кадре.
Кулдаун убирает дребезг. Для каждой камеры отдельно хранятся состояния входа, присутствия и выхода.
Детектор с безопасным fallback
Проект работает с YOLO, YuNet и motion. Режим auto выбирает доступный контур, а сбой remote не превращается в ложное отсутствие людей.
Модель и порог можно менять из панели, не перезапуская процесс.
Presence и identity
Presence отвечает на вопрос «кто-то вошёл?», а identity добавляет распознавание по кропу и галерее эталонов.
Кнопка «Это кто?» связывает неизвестное событие с человеком и сохраняет новый эталон. Для незнакомцев можно включить сирену и TTS.
Несколько камер и зоны
Для каждого источника работает свой reader-поток. До четырёх камер можно обрабатывать параллельно, зоны задаются в координатах 0..1, а детекторы изолированы друг от друга.
У каждой камеры свои имя, режим, кулдаун, тихие часы и уведомления. Сбой одной камеры не останавливает остальные.
Кадр с повторной доставкой
К событию добавляются бокс, имя и уверенность. Затем JPEG шифруется и попадает в SQLite outbox до отправки в Telegram.
Идемпотентность и повторная отправка переживают временный сбой Telegram, а retention ограничивает объём истории событий.
Remote без потери локального контура
Кадр отправляется на отдельную машину через AES-256-GCM, запрос подписывается HMAC-SHA256, а клиент при сбое возвращается к локальному детектору.
Allowlist хостов, лимиты ответа и HTTPS или VPN удерживают remote-контур в заданной сети.
Голос и тревога
Сирена, приветствие, прощание и TTS-фразы работают в отдельном звуковом контуре и настраиваются из панели.
Звуковой контур вынесен в отдельный поток, поэтому динамики не задерживают шаг pipeline и ручную озвучку из чата.
хронология
как продукт рос от первой версии.
-
12 Sep 2026
Пайплайн и Telegram
Собраны camera, detector, tracker, storage и бот с админ-панелью: enter/exit, identity, зоны, тихие часы и уведомления по событиям.
-
12 Sep 2026
Remote и доставка
Добавлены AES-GCM transport, HMAC, TLS, локальный fallback, WAL-prune, Docker, Compose и systemd для разных сценариев запуска.
-
13 Sep 2026
Privacy, голос и харднинг
Финальный проход добавил редактирование исходящих кадров, audit journal, per-event TTS, постоянную навигацию и remote-автодеплой с Caddy TLS.