🎮 Client side app with UI
🎮 Клиентское приложение с UI
🎯 Назначение
Предоставляет локальный веб-интерфейс для мониторинга метрик Entrance Observer и видеопотоков, когда интернет недоступен.
🎭 Пользовательская история
- Как пчеловод, работающий в удалённых местах,
- я хочу получать данные мониторинга и видеопотоки локально на своём устройстве,
- чтобы следить за ульями без интернета и сразу видеть критически важную информацию.
🚀 Ключевые преимущества
- Доступ офлайн: работает без интернета через локальную сеть
- Мониторинг в реальном времени: просмотр метрик летка и видеопотоков
- Привычный интерфейс: веб-UI, доступный с любого устройства с браузером
- Экстренный доступ: важно для диагностики и управления устройством в полевых условиях
🔧 Технический обзор
Flask веб-сервер (src/main.py) отдаёт адаптивный HTML-интерфейс с MJPEG-стримингом в реальном времени. Есть управление камерой, настройка линии детекции и отображение счётчика пчёл. Используются потоки для захвата кадров и стриминг в стиле WebSocket поверх HTTP с multipart response.
📋 Критерии приёмки
- Flask-сервер доступен в локальной сети (порт по умолчанию настраивается)
- Живой MJPEG-поток с оверлеями детекции и визуализацией трекинга пчёл
- Счётчик пчёл в реальном времени с историей (буфер deque на 3600 записей)
- Управление параметрами камеры: яркость, контраст, насыщенность, gain, экспозиция, баланс белого
- Настройка линии детекции через веб-интерфейс (коэффициент DETECTION_LINE)
- Адаптивный CSS на системных шрифтах
- Автообновление кадров без перезагрузки страницы через streaming response
🚫 Вне области
- Удалённый доступ через интернет (основное веб-приложение)
- Долгосрочное хранение истории (только локальный кэш)
- Синхронизация между устройствами
- Продвинутая аналитика и отчёты
🏗️ Подход к реализации
- Backend: Flask с потоками для параллельной обработки кадров
- Frontend: HTML с встроенным CSS на системных шрифтах (-apple-system, BlinkMacSystemFont)
- Видеостриминг: MJPEG по HTTP с content type multipart/x-mixed-replace
- Данные в реальном времени: потокобезопасный frame_lock для доступа к кадрам
- Интерфейс камеры: управление OpenCV с настраиваемым словарём свойств
- Оверлей детекции: визуализация YOLO-детекций и путей трекинга в реальном времени
📊 Метрики успеха
- Запуск Flask-сервера и доступность в рамках загрузки устройства
- Задержка MJPEG-потока, оптимизированная для просмотра в реальном времени
- Потокобезопасный доступ к кадрам с корректной блокировкой
- Отзывчивость настройки параметров камеры через веб-управление
- История счётчика пчёл с хранением 10 часов данных (3600 записей)
🔗 Связанные функции
- 📈 Подсчёт пчёл на входе и выходе - на edge
- 🎥 Видеостриминг через API
- 🎮 Управление устройством - удалённый рабочий стол
📚 Ресурсы и ссылки
💬 Заметки
Фактическая реализация на Flask с MJPEG-стримингом, управлением камерой и визуализацией детекции в реальном времени. Необходима для полевой работы, где интернет ненадёжен.