Jose Gibson
← All Projects

Fleet DMS/ODS Dashboard

Packaged Flask dashboard that aggregates a Driver Monitoring System over WebSocket/API and an ODS/APC object-detection feed over HTTP stats plus SSE video events.

Flask dashboard serverJinja-rendered HTML/CSS/JavaScriptWebSocket DMS feedHTTP REST controls and status endpointsSSE event stream for ODS/APC video frames
Aggregating multiple devices with different protocols: DMS uKeeping UI responsive while rendering video frames, segmentaMaking device addresses configurable for local lab setups, SPackaging a Python/Flask dashboard for non-developer usage w

Outcomes

  • Unified dashboard shell for DMS and ODS/APC edge devices.
  • Operator-facing controls for DMS calibration, buzzer, camera placement, and visualization.
  • Real-time ODS/APC canvas overlays for segmentation and detections.
  • Packaged dashboard distribution suitable for demos or handoff.

Portfolio Highlights

  • Built a packaged fleet dashboard that unifies DMS telemetry, driver-state alerts, head-pose visualization, and ODS/APC detection feeds in one operator UI.
  • Implemented browser-side canvas overlays for face landmarks, iris tracking, head pose, segmentation masks, and object detections.
  • Integrated heterogeneous device protocols including WebSocket, REST, SSE, and MJPEG-style image payloads with configurable device routing.

Snapshot

  • Period: April 2026
  • Source: `/Users/jose/Developer/work/sparshiq/railtrack-od-dmp-di1/fleet-dashboard`
  • Domain: Fleet safety monitoring, driver monitoring UI, object detection dashboard
  • Status: Packaged dashboard with DMS and ODS/APC device integration

Portfolio Summary

This dashboard turns multiple edge-AI devices into a single operator-facing fleet monitor. The UI includes a DMS panel for driver state, alerts, face/iris/pose overlays, calibration, camera placement, visualization toggles, and buzzer control. It also includes an ODS panel backed by the `apc` integration path, showing live detection/segmentation overlays, FPS, inference latency, accelerator status, and system logs. The visible UI labels the second panel as `ODS · Object Detection`; the code/config uses `apc` naming and includes a count reset control, so portfolio wording should be careful: "ODS/APC integration" or "object detection/APC feed" is safer than claiming a finished standalone passenger-counting system unless the upstream APC service is found.

Stack

  • Flask dashboard server
  • Jinja-rendered HTML/CSS/JavaScript
  • WebSocket DMS feed
  • HTTP REST controls and status endpoints
  • SSE event stream for ODS/APC video frames
  • Canvas overlays for landmarks, pose, segmentation masks, and detections
  • YAML device config
  • Waitress and PyInstaller packaging
  • Pystray/Pillow tray integration

What I Built

  • Aggregator server that injects DMS and ODS/APC device URLs into one dashboard.
  • DMS panel with:
  • - live video canvas
  • - facial landmark, iris, detection, and head-pose overlays
  • - EAR, MAR, PERCLOS, KSS, pitch/yaw/roll, gaze zone, FPS, RAM
  • - drowsy, yawning, distracted, phone/smoking alert states
  • - reset, calibrate, visualization toggle, buzzer toggle, camera placement controls
  • ODS/APC panel with:
  • - live video canvas fed by SSE
  • - segmentation mask overlay
  • - YOLO-style detection boxes and labels
  • - FPS, inference latency, accelerator status
  • - system log stream and visualization toggles
  • Packaged builds including `fleet-DMS-ODS-dashboard-v1.0`.

Key Decisions

  • Used a thin Flask server as the aggregator, while the browser connects directly to device streams.
  • Used WebSocket for DMS because the DMS device emits rich frame/telemetry messages.
  • Used SSE for ODS/APC frame events, with HTTP polling for stats and logs.
  • Rendered overlays client-side on canvas to keep the dashboard flexible and avoid baking every visualization into server-side video.
  • Kept DMS and ODS/APC as separate panels/tabs so operators can focus on one safety stream at a time.

Development Timeline

  1. Added initial fleet dashboard, config, packaging scripts, and Windows distribution artifacts.
  2. Updated dashboard UI and produced `fleet-DMS-ODS-dashboard-v1.0`.
  3. Added Linux build support for dashboard packaging.
  4. Refactored dashboard streaming to use SSE and client-side overlay rendering.