GridPulse is a real-time power-grid monitoring dashboard that ingests telemetry from SCADA endpoints, runs anomaly detection models against the stream, and renders the results as an interactive D3.js topology map. Operators see voltage sags, frequency deviations, and line overloads the moment they emerge — not minutes later in a batch report.
The Problem
Traditional grid monitoring tools poll sensors on 15-second intervals and dump results into flat CSV exports. By the time an operator notices a cascading fault, the damage window has already closed. I built GridPulse to prove that sub-second visibility is achievable with commodity hardware and open-source tooling — no proprietary SCADA vendor lock-in required.

How It Works
A Python FastAPI service subscribes to MQTT topics from field sensors and writes every reading to TimescaleDB — a time-series extension on PostgreSQL. A second process runs a sliding-window anomaly detector (isolation forest trained on 90 days of baseline data) and pushes alerts through a WebSocket channel.
The front end connects to that WebSocket and renders a force-directed graph of the grid topology in D3.js. Nodes pulse teal when nominal, shift to amber on warning thresholds, and flash when the anomaly detector fires. Click any node to drill into its historical time series with pan-and-zoom.
Technical Highlights
- Handles 50,000+ data points per second on a single 4-core VM
- TimescaleDB continuous aggregates for 1s, 1m, and 1h rollups
- Configurable alert rules via YAML — no code changes for new thresholds
- D3.js canvas renderer for topology maps exceeding 10,000 nodes
- Docker Compose deployment with Grafana sidecar for supplemental dashboards
The grid doesn’t wait for your batch job to finish. Neither should your monitoring.
GridPulse is open-source under the Apache 2.0 license. The demo instance streams synthetic load data generated from public ISO demand curves so you can explore the interface without access to real SCADA infrastructure.
