Skip to content

Repository files navigation

Synchrowave Web

Open-source, web-based event analysis tool for protective relay oscillography.

Sponsors

Development and release of Synchrowave Web is sponsored by Best Energy Partners.

Quick Start

docker compose up --build

Open http://localhost:3000 in your browser.

Features

Feature Description
Waveform Plotting Plot relay oscillography with zoom, pan, and dual cursors
MHO Circle Diagram Visualize distance element characteristics and apparent impedance
Phasor Diagram Real-time voltage/current phasor visualization
Digital Elements Monitor TRIP, breaker status, and other digital signals
Custom Calculations Build equations using sin, cos, sqrt, RMS, and signal math
Time Alignment Compare signals from multiple events with time cursors
File Support COMTRADE (.cfg/.dat), EVE, CEV, CSV, and more

Supported File Formats

  • COMTRADE — IEEE C37.111 (.cfg + .dat pair)
  • ASCII — .EVE event reports
  • Compressed Event — .CEV compressed event reports
  • CSV — Comma-separated values
  • Demo Mode — Built-in 3-phase fault event for quick testing

View Preferences & Persistence

Synchrowave automatically saves your view preferences and remembers them across sessions.

What Gets Saved

Preference Scope Behavior
Active Tab Global Remembers last viewed tab (Waveform, MHO, Phasor, Settings) across all events
Channel Selection Per-Event Saves your selected channels for each event file—switch events and your channels are restored
Channel Defaults Global New events inherit your most recently used channels

How It Works

  1. When you load an event:

    • If you've opened that event before, your previously selected channels are restored
    • If it's a new event, the channels you used most recently are selected by default
    • Your active tab preference is always restored
  2. When you change channels:

    • Your selection is saved for the current event
    • It also becomes your new default for future events
    • This gives you the best of both worlds: per-event memory + global defaults
  3. When you refresh the page:

    • Your active tab is restored
    • Channel preferences are preserved
    • Cursor position resets to the beginning (intentional—start fresh with each session)

Resetting Preferences

To clear all saved preferences and start fresh:

  1. Go to Settings tab
  2. Scroll to View Preferences section
  3. Click Reset All View Preferences
  4. Confirm the dialog
  5. The page will reload with all defaults

Technical Details

  • Storage: Browser's localStorage (local to your computer)
  • Privacy: All data stays in your browser—nothing sent to server
  • Size: Typically < 10 KB per browser
  • Persistence: Data remains until you manually reset or clear browser storage

Architecture

synchrowave-web/
├── docker-compose.yml
├── backend/              Python FastAPI backend
│   ├── app/
│   │   ├── main.py       API endpoints
│   │   ├── parsers/       File format parsers
│   │   │   ├── comtrade.py   IEEE C37.111 parser
│   │   │   ├── eve.py        ASCII parser
│   │   │   ├── cev.py        compressed parser
│   │   │   └── csv.py CSV parser
│   │   └── calculations/
│   │       └── engine.py  Custom calculation engine
│   └── Dockerfile
├── frontend/             React + Vite frontend
│   ├── src/
│   │   ├── components/
│   │   │   ├── Header.jsx        App header with file open
│   │   │   ├── Sidebar.jsx       Signal selector panel
│   │   │   ├── MainContent.jsx   Tab container
│   │   │   ├── WaveformChart.jsx Oscillography plots
│   │   │   ├── DigitalChart.jsx  Digital element plots
│   │   │   ├── PhasorChart.jsx   Phasor diagram
│   │   │   ├── MhoChart.jsx      MHO circle diagram
│   │   │   ├── CalcBar.jsx       Calculation input bar
│   │   │   ├── StatusBar.jsx     Bottom status bar
│   │   │   └── WelcomeScreen.jsx Welcome / upload screen
│   │   └── styles/
│   │       └── global.css        Dark theme styles
│   └── Dockerfile
└── sample-data/          Place .eve/.cfg/.dat files here

API Endpoints

Method Path Description
GET /health Health check
POST /api/upload Upload an event file
GET /api/sample-files List available sample files
POST /api/load-sample/{filename} Load a sample file
POST /api/calculate Run a custom calculation expression
GET /api/mho-params/{file_id} Get MHO zone parameters

Adding Sample Data

Place event files in the sample-data/ directory:

cp /path/to/your/event.eve sample-data/
cp /path/to/your/event.cfg sample-data/
cp /path/to/your/event.dat sample-data/

Custom Calculation Examples

sqrt(VA**2 + VB**2 + VC**2)
abs(IA) * 1.732
rms(IA, 100)
(VA - VB) / sqrt(3)

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

Disclaimer of Liability and Operational Use

Not a Substitute for Human Review This software application is provided strictly for informational and visualization purposes. It is an unofficial utility and is absolutely not a substitute for professional engineering judgment, verified system analysis, or rigorous human review.

Operational Decisions & Verification The data parsed, interpreted, and displayed by this tool must never be used as the sole basis for operational decisions, switching procedures, fault clearing, or system modifications. All outputs and findings must be independently double-checked and verified against primary, manufacturer-approved commercial tools and native raw data before any physical or systematic action is taken.

Safety and Qualified Personnel Power system operations involve severe and inherent physical risks. Any field actions, hardware interactions, or system testing must be executed exclusively by qualified personnel. Proper safety protocols, including the use of appropriate Personal Protective Equipment (PPE), shall be strictly adhered to at all times.

Limitation of Liability The developers, creators, and contributors of this software assume absolutely no liability and cannot be held responsible for any equipment failure, property damage, system outages, injuries, or loss of life resulting from the use or misuse of this tool. This software is provided "as is," without warranty of any kind, express or implied, including but not limited to the warranties of accuracy, reliability, merchantability, or fitness for a particular purpose.

Development Context This software was developed independently in a platform vacuum. It is an independent, community-driven project. It has not been tested, vetted, or certified by any hardware manufacturer, and its underlying parsing logic is entirely unaffiliated with any official commercial analysis suites.

License

This project is licensed under the MIT License.

About

A web-based tool for analyzing protective relay event records. Supports COMTRADE, EVE, CEV, and CSV formats with interactive waveform, phasor, and impedance visualizations.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages