Servaki Monitor — Смартпанель

Единая панель мониторинга с опциональными модулями:

  • ⚡ Энергомониторинг — Sunways STH → Wiren Board → MQTT/InfluxDB; щитовые шкафы Navtelecom (FLEX/NTCB).
  • 🧩 Смартпанель (realty) — Wiren Board: реле WB-MR, диммеры WB-MDM3, сцены (MQTT).
  • 🧭 GPS-мониторинг — Navtelecom FLEX/NTCB → Traccar (REST/WebSocket); автопарк + стационарные объекты.

Продукт «продолжает» наработки Мониторинг ПО/NAvtelecom (FLEX-сервер, Wiren Board, Silero-«Рация») и эталоны UI (orbit-gps-panel.html, sunways-dashboard.html), собирая их в один React-фронт.

Стек

React 18 + Vite + TypeScript + Tailwind. Графики — Recharts, иконки — lucide-react. Дизайн-система (навык ui-ux-pro-max): тема Dark-OLED, акцент #22C55E, фон #0F172A, шрифты Fira Sans / Fira Code.

Архитектура (модульность)

src/
  core/types.ts          — типонезависимое ядро: MonitoredEntity, MonitorEvent (EventBus-контракт)
  config/modules.ts      — реестр модулей + флаги enabled (опциональность / мультиарендность)
  components/            — AppShell (сайдбар+топбар), ui-примитивы (Card/KPI/Badge/StatusDot)
  modules/
    energy/  smart/  gps/ — три модуля, каждый самодостаточен
  data/mock.ts           — демо-данные (заменяются адаптерами)

Источники нормализуются адаптерами в MonitoredEntity (energy→InfluxDB, realty→WB-MQTT, transport→Traccar). Модуль включается/выключается флагом enabled — далее флаги придут с бэкенда по clientId.

Запуск

npm install
npm run dev      # http://localhost:5180
npm run build    # dist/

Деплой

  • vm-mts1 (публично, за Caddy — как Heritage): docker compose up -d --build → :8096, Caddy reverse_proxy, поддомен через Beget API + LE-TLS.
  • Дубль на офис-Proxmox (внутренний/дев, рядом с реальным Wiren Board): тот же образ.
  • Тяжёлый слой данных (InfluxDB/Grafana/MQTT/FLEX-сервер) — отдельным compose на Proxmox.

Дорожная карта

  1. ✅ Каркас + 3 модуля на моках, дизайн-система.
  2. Бэкенд-шлюз (Node/Express + PG + Redis): мультиарендность clientId, нормализация, кэш, WS.
  3. Адаптеры: Traccar (REST/WS), Wiren Board (MQTT deviceBridge), InfluxDB (энерго).
  4. EventBus → лента + звук + голос (Silero «Рация»).
  5. Карта MapLibre в GPS-модуле; вход (OAuth/OTP).
S
Description
Подрядчик Егорин: рабочая копия проекта Servaki Monitor (энерго/GPS/сеть) + материалы. Боевой репозиторий — servaki-monitor.
Readme
400 KiB
Languages
TypeScript 76.1%
JavaScript 8.3%
Python 7%
HTML 6.9%
Shell 1.3%
Other 0.3%