🎮 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 записей)

🔗 Связанные функции

📚 Ресурсы и ссылки

💬 Заметки

Фактическая реализация на Flask с MJPEG-стримингом, управлением камерой и визуализацией детекции в реальном времени. Необходима для полевой работы, где интернет ненадёжен.