Open-source energy monitoring · Dissertation project

ENERVIGIL

A local-first platform for acquiring, processing and visualizing industrial energy data.

ENERVIGIL was developed to provide an accessible alternative to proprietary and cloud-dependent energy monitoring platforms. It integrates industrial meters, stores measurements locally and exposes the data through a secure web interface and MQTT.

ENERVIGIL energy monitoring dashboard
Local time-series storage for historical energy analysis
MQTT publishing layer for external system integration
~380 MB average RAM usage on Raspberry Pi 4
MIT open-source license

Energy monitoring without vendor lock-in.

Small and medium-sized industrial installations often need practical energy visibility, but commercial platforms can involve high licensing costs, proprietary ecosystems, external cloud infrastructure or difficult integration with existing industrial meters.

ENERVIGIL addresses this by focusing on local deployment, manufacturer independence and extensibility. The system is designed to run on low-cost edge hardware while keeping configuration and measurement data under the organization’s control.

Devices, nodes and protocol adapters.

Each meter is represented as a device, and each measured or calculated variable is represented as a node. Communication details are isolated inside protocol adapters, allowing the rest of the application to process values using a uniform internal model.

Core monitoring features already implemented.

Real-time energy monitoring from industrial measurement devices

Single-phase and three-phase device modelling

Configurable device and node setup through a web interface

Historical time-series storage using InfluxDB

Local-first deployment with Docker Compose

MQTT publishing for integration with external systems

Secure access with HTTPS, JWT sessions and brute-force protection

Extensible architecture for future protocols and processors

Backend

FastAPI service responsible for acquisition cycles, device management, node processing, REST endpoints and authentication.

Frontend

SvelteKit interface for configuring devices, viewing current values, managing variables and analyzing historical charts.

Persistence

SQLite stores configuration and user data, while InfluxDB stores timestamped measurements for efficient historical queries.

Integration

Nginx provides HTTPS access and Mosquitto publishes device and node state through MQTT for external consumers.

Tested with real industrial hardware.

The validation platform reproduced a representative energy monitoring setup using two different communication paths. The results showed stable acquisition, consistent historical logging and low computational resource usage.

  • Executed on a Raspberry Pi 4 with Alpine Linux and Docker.
  • Integrated an Orno OR-WE-516 energy meter through Modbus RTU over RS-485.
  • Integrated a Siemens S7-1200 with SM 1238 energy module through OPC UA.
  • Confirmed acquisition, processing, logging, UI visualization and MQTT publication.

Configuration and analysis in the browser.

The UI lets the administrator configure devices and nodes, inspect live values organized by electrical phase, review alarm states and analyze historical measurements with automatic temporal aggregation.

Industrial protocols meet modern web software.

PythonFastAPISvelteKitTypeScriptInfluxDBSQLiteDockerNginxMosquittoMQTTModbus RTUOPC UA

Roadmap and next steps.

The project already provides the basic monitoring workflow, but it is still evolving. Future work is focused on improving scalability, data management and operational features.

Decoupling protocol clients from energy meters so each meter can combine data from multiple sources.
Advanced analytics, trends and predictive energy insights.
CSV/JSON export and stronger data retention management.
External MQTT bridge support for distributed architectures.
User roles, alerts, notifications and expanded internationalization.