Sweden
Loading...
India
Loading...

Energy Management System Architecture

Unified Design for myems + openems

This document defines the combined architecture, data structures, and parameters of two Energy Management platforms:

  • myems β†’ microservice ETL + analytics + dashboard system
  • openems β†’ real-time device/channel control framework

It also proposes a unified architecture suitable for:

  • dashboards
  • analytics
  • real-time monitoring
  • edge control
  • scalable cloud deployment

1. Architecture Overview

myems – ETL & Analytics Pipeline

Image

Image

Image

Image

Flow

Meters β†’ Modbus β†’ Cleaning β†’ Normalization β†’ Aggregation β†’ DB β†’ API β†’ UI

Design Traits

  • Database first
  • Historical analytics
  • Batch processing
  • Microservices
  • Reporting/Billing focused

openems – Real-Time Component Framework

Image

Image

Image

Image

Flow

Devices β†’ Components β†’ Channels β†’ Controllers β†’ Edge β†’ Backend

Design Traits

  • Object oriented
  • Real-time telemetry
  • Device abstraction
  • Edge computing
  • Control & automation focused


2. Folder Structure Comparison

myems

database/
myems-modbus-tcp/
myems-cleaning/
myems-normalization/
myems-aggregation/
myems-api/
myems-web/
myems-admin/
Module Purpose
modbus-tcp device polling
cleaning bad data removal
normalization unit conversion
aggregation analytics
api REST gateway
web user dashboard
admin configuration
database schema/migrations

openems

edge/
  component/
  controller/
  meter/
  battery/
  inverter/
backend/
ui/
Module Purpose
component device abstraction
channel measurement signals
controller logic/control
edge real-time execution
backend sync/storage
ui monitoring


3. Core Data Structures


3.1 myems – Time-Series Model

RawReading

RawReading {
  meter_id: number
  timestamp: datetime
  register: number
  value: float
  quality: string
}

CleanReading

CleanReading {
  meter_id
  timestamp
  value
  status
}

NormalizedReading

NormalizedReading {
  meter_id
  timestamp
  value_kwh
  unit
}

AggregatedEnergy

AggregatedEnergy {
  meter_id
  period
  energy_kwh
  demand_kw
  peak_kw
  cost
  co2_kg
}

Pattern

(meter_id, timestamp, value)

3.2 openems – Component/Channel Model

Component

Component {
  id
  alias
  enabled
  channels[]
}

Channel

Channel {
  id
  type
  unit
  value
  timestamp
}

Pattern

component.channel.value


4. Energy Component Parameters (Complete)


Electrical Measurements

Parameter Unit Meaning
Voltage V line voltage
Current A phase current
ActivePower kW real power
ReactivePower kVAR reactive
ApparentPower kVA total
Frequency Hz grid freq
PowerFactor – efficiency

Energy Metrics

Parameter Unit
EnergyImport kWh
EnergyExport kWh
TotalEnergy kWh
Demand kW
PeakDemand kW
Cost currency
CO2 kg

Battery Metrics

Parameter Unit
SOC %
ChargePower kW
DischargePower kW
Voltage V
Current A
Temperature Β°C
Capacity kWh

Inverter Metrics

Parameter Unit
AC_Power kW
DC_Power kW
Efficiency %
State enum
Fault boolean


5. Conceptual Comparison

Feature myems openems
Core model DB rows objects
Data style batch real-time
Storage SQL memory/edge
Analytics strong moderate
Control weak strong
Best for dashboards automation


6. Mapping Between Systems

openems myems equivalent
Component.id meter_id
Channel.name register
Channel.value value
timestamp timestamp
ActivePower demand_kw
EnergyImport energy_kwh
SOC battery_soc


7. Unified Architecture (Recommended)

Hybrid Flow

Devices
   ↓
OpenEMS Edge (channels)
   ↓
Timeseries DB (myems style)
   ↓
API
   ↓
React Dashboard

Device

Device {
  id
  type
  location
  metadata
}

Channel

Channel {
  device_id
  name
  unit
}

Reading

Reading {
  device_id
  channel
  timestamp
  value
}

Aggregate

Aggregate {
  device_id
  period
  energy
  demand
  cost
}


8. Recommended API Format

{
  "deviceId": "meter-01",
  "channel": "ActivePower",
  "value": 3200,
  "unit": "W",
  "timestamp": 1734200000
}

Suitable for

  • charts
  • React Flow nodes
  • live dashboards
  • alerts
  • analytics


9. Recommended Tech Stack

Backend

  • FastAPI / Node
  • TimescaleDB / PostgreSQL
  • Redis
  • MQTT (optional)

Frontend

  • React
  • MUI / Chakra
  • Recharts / ECharts
  • Zustand

Edge

  • OpenEMS components


10. When to Use What

Use myems if:

  • reports
  • billing
  • analytics
  • historical queries

Use openems if:

  • device control
  • live telemetry
  • edge logic

Energy System Components β†’ Parameters Mapping Guide

Think physically first, not software first:

Grid β†’ Meter β†’ Inverter β†’ Battery β†’ Load β†’ Solar

Each device exposes different electrical/energy parameters.



1️. Energy Meter (Grid / Feeder / Load Meter)

Image

Image

Image

Purpose

Measures electrical quantities + energy consumption

Parameters

Electrical (instantaneous)

Parameter Unit Meaning Needed for
Voltage_L1/L2/L3 V phase voltages power calc
Current_L1/L2/L3 A phase currents load monitoring
Frequency Hz grid frequency stability
PowerFactor – efficiency billing/quality

Power

Parameter Unit Meaning
ActivePower kW real usable power
ReactivePower kVAR non-working power
ApparentPower kVA total demand

Energy

Parameter Unit Meaning
EnergyImport kWh consumed energy
EnergyExport kWh exported energy
TotalEnergy kWh cumulative

System Mapping

openems

meter0.ActivePower
meter0.EnergyImport

myems

meter_id, timestamp, energy_kwh


2️. Battery Storage System (BESS)

Image

Image

Image

Image

Purpose

Stores and supplies energy

Parameters

State

Parameter Unit Meaning
SOC % state of charge
SOH % state of health
Capacity kWh usable capacity

Electrical

Parameter Unit
Voltage V
Current A
Power kW

Flow

Parameter Unit Meaning
ChargePower kW charging
DischargePower kW discharging
EnergyCharged kWh stored
EnergyDischarged kWh used

Safety

Parameter Unit
Temperature Β°C
Alarm/Fault bool

System Mapping

openems

battery0.SOC
battery0.ChargePower

myems

battery_soc
battery_energy_kwh


3️. Solar / PV Inverter

Image

Image

Image

Image

Purpose

Converts DC β†’ AC

Parameters

DC side

Parameter Unit
DC_Voltage V
DC_Current A
DC_Power kW

AC side

Parameter Unit
AC_Voltage V
AC_Current A
AC_Power kW

Performance

Parameter Unit
Efficiency %
EnergyGenerated kWh
Status enum
Fault bool

System Mapping

openems

inverter0.AC_Power
inverter0.Efficiency

myems

generation_kwh


4️. Load / Equipment

Image

Image

Image

Image

Purpose

Consumes energy

Parameters

Parameter Unit
ActivePower kW
EnergyConsumed kWh
Runtime hrs
Demand kW
PeakDemand kW
Status on/off

Mapping

Same as meter, but logically tagged:

type = load


5️. Grid / Utility Connection

Image

Image

Image

Purpose

Tracks import/export with utility

Parameters

Parameter Unit
ImportPower kW
ExportPower kW
ImportEnergy kWh
ExportEnergy kWh
Tariff currency/kWh
Cost currency


Complete Parameter β†’ Component Table

Parameter Meter Battery Inverter Load Grid
Voltage βœ… βœ… βœ… – –
Current βœ… βœ… βœ… – –
ActivePower βœ… βœ… βœ… βœ… βœ…
ReactivePower βœ… – – – –
EnergyImport βœ… – – – βœ…
EnergyExport βœ… – – – βœ…
SOC – βœ… – – –
ChargePower – βœ… – – –
DischargePower – βœ… – – –
EnergyGenerated – – βœ… – –
Temperature – βœ… – – –
Demand/Peak βœ… – – βœ… –
Cost – – – – βœ…


Final Practical Rule

If it measures electricity β†’ Meter parameters

If it stores energy β†’ Battery parameters

If it converts energy β†’ Inverter parameters

If it consumes energy β†’ Load parameters

If it bills energy β†’ Grid parameters



For Your React Dashboard

Use this universal format:

{
  deviceId: "battery-1",
  component: "battery",
  parameter: "SOC",
  value: 76,
  unit: "%"
}

This directly maps to:

  • charts
  • React Flow nodes
  • alerts
  • analytics
  • live monitoring