Files
GermanandClaude Opus 4.8 b1c52ab748 Железный Егорин — форк Орбиты: тёплый стиль (amber), логин с odyssey WebGL-молнией справа, энергомониторинг+панель
Ребренд Мониторинг Орбита -> Железный Егорин; accent green->amber #F59E0B; LoginScreen правая половина = Lightning (WebGL, hue 35 тёплый) под стеклянной формой; левая панель — тёплый градиент.
Доступ агентам: репо публичный, push german-токеном.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 23:57:16 +03:00

5.9 KiB
Raw Permalink Blame History

Servaki Monitor — ТЗ и архитектура (сводно по разделам)

Единая смартпанель мониторинга: Энергетика + GPS + Сеть с авторизацией, RBAC и приёмом реальных данных Navtelecom (FLEX/NTCB). Продолжает наработки Мониторинг ПО/NAvtelecom (FLEX-сервер, Wiren Board, Silero-«Рация»).

Архитектура

Устройства Navtelecom ──FLEX/NTCB :2000──▶ flex-server ──MQTT──▶ Node-шлюз ──REST /api + WS /socket──▶ React-фронт
   (gps.servaki.online)                    (mosquitto)        (адаптеры WB/Traccar/Influx)        (за Caddy, TLS)
  • Фронт: React 18 + Vite + TypeScript + Tailwind (Dark-OLED/Light), Recharts, Leaflet, lucide. Дизайн-система навыка ui-ux-pro-max.
  • Шлюз (server/): Node + Express + ws. Адаптеры Wiren Board (MQTT) / Traccar (REST/WS) / InfluxDB — активны по env, иначе демо-данные. RBAC + мультиарендность (clientId), треки.
  • Приём (deploy/ingest/): flex-server (FLEX/NTCB TCP :2000, DB off) + mosquitto. В трекере: домен gps.servaki.online, порт 2000, протокол FLEX.
  • Размещение: фронт+шлюз на vm-mts1 (МТС) за Caddy; дубль/тяжёлые данные — офис-Proxmox.

Разделы (ТЗ)

Авторизация

  • Экран входа: Яндекс ID (OAuth: authorize→token→login.yandex.ru/info) + Демо-доступ (роль только-просмотр).
  • Сессия в localStorage. Маппинг email→роль (allowlist админов). Самрегистрация → демо (план: свой арендатор, см. roadmap).

RBAC / Доступ

  • Права: на разделы (energy/smart/gps/netinfra) и на объекты внутри + уровни view / edit / reports.
  • Матрица доступа (админ выдаёт чекбоксами), «Войти как», мультиарендность по clientId.

Энергомониторинг

  • Источники: Sunways STH (Modbus→WB→InfluxDB) + щитовые шкафы Navtelecom (FLEX, питание AIN3).
  • KPI (PV/SOC/U-АКБ/I-АКБ/темп BMS/выработка). Графики PV и SOC — многовекторные (линия на объект).
  • Аварии: пиктограмма с раскрытием контекста по клику; «Аварий нет» в сером поле.

GPS-мониторинг

  • Источники: Navtelecom FLEX/NTCB → Traccar (REST/WS). Объекты: транспорт + стационарные.
  • Карта Leaflet, слои Тёмная/Светлая/OSM/2ГИС/Яндекс, треки (полилинии), фуллскрин.
  • Слежение (чекбокс), журнал поездок + маршрут по клику, контекстное меню (статистика/свойства), отчёты CSV/PDF.

Сетевая инфраструктура (mesh2)

  • Узлы Keenetic/Mikrotik/камеры/контроллеры; техинфо (IP/модель/роль/задержка/канал/клиенты/CPU).
  • Связанность узлов на карте (линия/пунктир/анимированный поток по состоянию). Кадры с камер/приборов (3×/сутки).

Приёмная часть / ingest

  • flex-server декодирует NTCB-рукопожатие + FLEX 1.03.0 (params.py), публикует navtelecom/<imei>/state в MQTT.
  • Шлюз нормализует в MonitoredEntity + строит треки. Проверено эмулятором (tools/emulator.py).

API (шлюз)

POST /api/login · GET /api/me · GET /api/entities[?type=] · GET /api/tracks/:id · GET /api/trips[?entityId=] · GET /api/events · GET /api/channels · GET /api/energy/series · GET /api/health · GET /api/auth/yandex/start|callback · WS /socket (snapshot + position/entity/event/channel).

Демо-сущности и локации (КМВ, клиент «tempelhoff»)

  • Транспорт: veh-123 ГАЗель-123, veh-204 МТЗ-82 (двигаются → треки).
  • Энерго: cab-07 Щит КТП-7. Инверторы: Склад/Ферма/Цех (PV+SOC).
  • Сеть mesh2: finik-хаб (10.200.0.1), Keenetic Склад/Ферма, Mikrotik Поля, Камера Въезд, Контроллер Солн.
  • WB-каналы: реле (Освещение/Ворота/Насос), диммер (Свет офис), вход (Датчик двери — тикает по WS).
  • Поездки с маршрутами (полилинии), события (питание/дверь/топливо/геозона).

Roadmap / бэклог

  • Самрегистрация → собственный арендатор (clientId) + привязка устройств по IMEI (свои сущности).
  • Смарт: датчик двери — пиктограмма замок-открыто/закрыто, мини-журнал, кросс-раздельные события.
  • Выбор цвета трека объекта; редактирование объекта + выбор пиктограммы сущности.
  • Реальные адаптеры (развернуть Traccar + InfluxDB-стек); EventBus → «Рация» (Silero).

Безопасность

Секреты (JWT, Яндекс client_secret, токены) — только в .env на ноде (chmod 600) и на Я.Диске; в репозитории только плейсхолдеры (.env.example). .env, node_modules, dist — в .gitignore.