Files
can_sniffer/web/task_webui.md
2026-01-06 18:08:45 +03:00

3.2 KiB
Raw Blame History

1.1 Цель

Разработать web-интерфейс реального времени для отображения CAN-данных, собираемых edge-устройством и сохраняемых в InfluxDB.

Система должна:

отображать данные в реальном времени,

работать на одном хосте с InfluxDB,

использовать Python / Flask,

использовать WebSocket для push-обновлений,

быть расширяемой под future-аналитику.

1.2 Общая архитектура Edge (Raspberry Pi) → InfluxDB (write) → Flask Backend (read + stream) → Web UI (WebSocket)

InfluxDB — единый источник истины для UI (не читаем данные напрямую с Edge).

1.3 Компоненты системы 1.3.1 Backend (Flask)

Назначение

HTTP API

WebSocket сервер

агрегация данных из InfluxDB

доставка данных в UI

Технологии

Python 3.11+

Flask

Flask-SocketIO (или websockets + ASGI)

InfluxDB Python Client

1.3.2 InfluxDB

Роль

time-series storage

буфер между Edge и UI

исторические запросы

Типы данных

CAN frames (raw)

декодированные сигналы (future)

1.3.3 Frontend (Web UI)

Назначение

визуализация CAN-данных

real-time обновление

базовая аналитика

Минимальный стек

HTML + JS

WebSocket клиент

Chart.js / ECharts (на ваш выбор)

1.4 Функциональные требования (MVP) 1.4.1 Real-time отображение

Обновление ≤ 500 мс

Push-модель (WebSocket)

Без polling

Отображать:

timestamp

CAN interface (can0 / can1)

CAN ID

DLC

DATA (hex)

frequency (msg/sec)

1.4.2 Исторический просмотр

выбор временного окна:

last 1 min / 5 min / 1 h

график:

частота сообщений

значение байтов (raw)

1.4.3 Фильтрация (UI)

по CAN ID

по интерфейсу

включение / выключение ID

Фильтрация не влияет на ingestion, только на отображение.

1.5 Нефункциональные требования Производительность

≥ 510k msg/sec без деградации UI

batch-чтение из InfluxDB

Надёжность

UI не зависит от Edge availability

UI не ломается при временном отсутствии новых данных

Безопасность (минимум)

UI доступен только из доверенной сети

без write-доступа к InfluxDB

1.6 Поток данных (важно) Write path Edge → InfluxDB

Read / Stream path InfluxDB → Flask → WebSocket → Browser

Flask не принимает CAN напрямую WebSocket не ходит в InfluxDB

1.7 Ограничения (осознанные)

Flask — single logical service

Без auth (на MVP)

Без декодирования DBC (пока raw)