User toolkit for power quality data from EQ Wave sensors
Project description
equser
User toolkit for power quality data from EQ Wave sensors.
Overview
equser is a Python library for loading, analyzing, and visualizing continuous waveform (CPOW) and power monitoring (PMon) data from EQ Wave hardware. It provides:
- Data loading (
data): Load CPOW and PMon Parquet files with automatic scaling - Waveform analysis (
analysis): Zero-crossing detection, cycle extraction - Visualization (
plotting): Static plots for power quality data (requires[analysis]) - API client (
api): REST and WebSocket clients for EQ Synapse gateways (requires[analysis]) - Live acquisition (
pmon): Real-time sensor data acquisition (requires[daq]) - CLI tools: Command-line interface for monitoring and conversion
Installation
Base installation (data loading + analysis)
pip install equser
With plotting and API support
pip install equser[analysis]
With JupyterLab notebook environment
pip install equser[jupyter]
With live sensor acquisition
pip install equser[daq]
Full installation (all features)
pip install equser[full]
Quick Start
Load and explore CPOW data
from equser.data import load_cpow_scaled
result = load_cpow_scaled('20250623_075056.parquet')
print(f"Voltage A peak: {result['VA'].max():.1f} V")
print(f"Start time: {result['start_time']}")
print(f"Sample rate: {result['sample_rate']} Hz")
Load PMon summary data
from equser.data import load_pmon
table = load_pmon('20250623_0750.parquet')
print(table.column_names)
Analyze waveform zero crossings
import numpy as np
from equser.data import load_cpow_scaled, SAMPLE_RATE_HZ
from equser.analysis import find_zero_crossings
result = load_cpow_scaled('cpow_data.parquet')
time = np.arange(len(result['VA'])) / SAMPLE_RATE_HZ
crossings, indices = find_zero_crossings(result['VA'], time)
print(f"Found {len(crossings)} zero crossings")
Plot data (requires [analysis])
from equser.plotting import PowerMonitorPlotter, WaveformPlotter
# Plot power monitor data
plotter = PowerMonitorPlotter()
plotter.plot_file('pmon_data.parquet')
# Plot waveform data
wf_plotter = WaveformPlotter()
wf_plotter.plot_file('cpow_data.parquet')
Query a gateway (requires [analysis])
from equser.api import SynapseClient
client = SynapseClient('http://gateway:8080')
devices = client.list_devices()
table = client.get_pmon_data(devices[0]['id'])
Command Line
# Start power monitoring (requires EQ Wave sensor + [daq])
equser pmon acquire -c config.yaml
# Convert Avro files to Parquet (requires [daq])
equser pmon convert data/*.avro --remove
# Plot data file (requires [analysis])
equser plot data.parquet
Configuration
equser looks for configuration in the following locations (in order):
EQUSER_CONFIGenvironment variable./equser.yaml(current directory)~/.config/equser/config.yaml(XDG config)/etc/equser/config.yaml(system-wide)
Example configuration:
sensor:
address: "192.168.10.10"
port: 1535
pmon:
connection:
retry_delay: 3
parquet:
interval: 86400
compression:
method: ZSTD
level: 4
Dependency Tiers
| Extra | Description | Key Packages |
|---|---|---|
| (base) | Data loading, analysis, CLI | numpy, pyarrow, pyyaml, argcomplete, colorlog |
[daq] |
Live sensor acquisition | avro, fastavro |
[analysis] |
Plotting + API client | matplotlib, requests, websocket-client |
[jupyter] |
Full notebook environment | [analysis] + jupyterlab, duckdb, ipywidgets |
[dev] |
Development tools | pytest, ruff, mypy |
[full] |
All of the above (except dev) | - |
Requirements
- Python 3.10 or later
- Linux (for hardware integration features)
Documentation
License
MIT License — © 2026 EQ Systems Inc.
About
equser is developed by Energy Quotient as part of the EQ Synapse platform for continuous waveform intelligence in power systems.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file equser-0.0.2-py3-none-any.whl.
File metadata
- Download URL: equser-0.0.2-py3-none-any.whl
- Upload date:
- Size: 79.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ceb3fafdc285e4756ba825d03aa35d7f7153d38bbc4a3d0abf7165dd62a959b
|
|
| MD5 |
16a8351e69c2fa1c20dcc4360bfdaa1e
|
|
| BLAKE2b-256 |
0bb428755abd437f948c0124c9af3bc751d644bdd6e2fb28afc86a1e2f2f2721
|