Case Studies / BESS monitoring

Reference implementation

A BESS desk the shift
can dispatch against

This write-up describes the operations desk we ship for battery storage, PV inverters and the DC strings that have to sit on one picture. The live interface below is a deterministic simulator — not a named plant. Every number you see is a simulation parameter.

Six sections

What this case actually covers

Named client write-ups wait for approval. This page is the reference implementation: the same six sections, written against a desk you can click through.

Context and constraints

A hybrid plant the control room cannot see as one picture: three LFP banks (3000 + 3000 + 5000 kWh = 11 MWh), 18 inverters, 90 DC strings and four EVSE chargers on the same AC bus. The constraint is not “more charts” — it is one operator layer for energy flow, SOC/SOH and string health, with a 750 kW export limit and a 500 kW import limit.

What was actually built

A monitoring desk with the surfaces an operator actually uses: energy-flow topology, per-bank SOC/SOH, a peak-shave schedule, string-level diagnostics, alarms with source attribution, a 24-hour power chart, weather, and hourly grid exchange. Four EVSE units, seven CCS2 connectors, sit on the same bus.

Architecture decisions

The public page is a deterministic simulator so it is crawlable and clickable without a plant feed. Production would add Modbus, SunSpec and IEC 61850 polling, an EMS dispatch loop and a historian — we are not inventing protocol versions here. “Solterra Hybrid Park” is a simulator label only.

Technology stack

React 19, TypeScript and the same design-system primitives as the rest of the site: Card, Table, Tabs, Dialog, Badge, Progress. Production builds add a Node.js integration layer. The demo does not call those services.

Verified outcome

There is no named-client outcome on this page. What you can verify is the interface: three banks totalling 11 MWh, bank power 1500 + 1500 + 2500 kW, 18 inverters, 90 DC strings, clock at ~120× (2 s tick = 4 simulated minutes). If a later client write-up reuses this desk, it will say so and only publish numbers they confirm.

What we would change

The demo still has no live Modbus or OCPP session, no real EMS and no historian. In a delivery we would surface those as first-class screens — a protocol adapter log and a replayable dispatch tape — instead of leaving them in the architecture section.

Live demo

The desk, running

Simulator parameters: 11 MWh across three LFP banks, 18 inverters, 90 DC strings, four EVSE / seven CCS2 connectors, export 750 kW, import 500 kW, clock ~120×. No live plant, no Modbus, no OCPP, no historian.

Interactive demo. Values come from a deterministic plant simulator, not from a live installation.
Solterra Hybrid Park2.05 MW AC · 11 MWh BESS · 18 inverters · 90 strings
1 Critical4 WarningLive13:20
PV generation82 %
1.68 MWof 2.05 MW AC
Battery powerCharging
1.30 MWof 5.5 MW
State of charge
79.0 %8.69 / 11 MWh
Site load
226 kWSelf-sufficiency 75 %
EV charging75 % solar
158 kW2 / 7 connectors busy
Grid exchangeImport
0 kWof 500 kW Import
Grid import today
1.90 MWhPeak 500 / 500 kW
Yield today
7.7 MWh↑ 0.00 MWh Export
Weather & PV forecast

Conditions driving irradiance, panel derating and charging demand

23.8 °CPartly cloudy
Cloud cover
29 %
Wind
15 km/h
Humidity
69 %
PV potential
1681 kW
Next 8 hours
  • 14:0025°1.7M
  • 15:0025°1.5M
  • 16:0024°919
  • 17:0023°668
  • 18:0022°636
  • 19:0022°539
  • 20:0021°223
  • 21:0019°0
Energy flow topology

Single-line diagram with live power on every branch. Animation direction follows the actual direction of energy.

1.68 MW1.68 MWImport 0 kWExport 0 kW226 kW158 kWCharging 1.30 MW
PV array
1.68 MW
2.46 MWp DCIrradiance 884 W/m²
Inverters
16 / 18
2.05 MW AC · 90 stringsη 98.5 %
AC bus
50.01 Hz
33 kV · cos φ 0.99Curtailed 0 kW
Grid / POI
0 kW
↓ 500
↑ 750
Today ↓1.9 ↑0.0 MWh
Site load
226 kW
Self-sufficiency 75 %Today 7.7 MWh PV
EV charging hub
158 kW
780 kW · 4 stationsToday 3620 kWh
BESS-01Charging
360 kW78.4 %
3 MWh · 1.5 MWSOH 98.2 % · 26.0 °C
BESS-02Charging
234 kW74.5 %
3 MWh · 1.5 MWSOH 96.4 % · 28.1 °C
BESS-03Charging
703 kW82.1 %
5 MWh · 2.5 MWSOH 99.1 % · 29.7 °C
EVSE-01Idle
0 kW44 %
240 kW · 2 conn1132 kWh · 16
EVSE-02Idle
0 kW30 %
200 kW · 2 conn639 kWh · 13
EVSE-03Charging
87 kW49 %
180 kW · 2 conn1022 kWh · 9
EVSE-04Charging
71 kW44 %
160 kW · 1 conn826 kWh · 7
BESS-01

3 MWh · 1.5 MW · LFP 1P416S

Charging
78%SOC
Power
360 kW
Available
2.02 MWh
SOH
98.2 %
Cycles
412
Cell temp.
26.0 °C
C-rate
0.12 C
BESS-02

3 MWh · 1.5 MW · LFP 1P416S

Charging
74%SOC
Power
234 kW
Available
1.63 MWh
SOH
96.4 %
Cycles
688
Cell temp.
28.1 °C
C-rate
0.08 C
BESS-03

5 MWh · 2.5 MW · LFP 2P416S

Charging
82%SOC
Power
703 kW
Available
3.67 MWh
SOH
99.1 %
Cycles
214
Cell temp.
29.7 °C
C-rate
0.14 C
24-hour power and state of charge

Generation, load, battery power and grid exchange over the simulated day. The vertical marker shows the current moment.

-1750-1250-750-2502507501250175000:0003:0006:0009:0012:0015:0018:0021:0024:00kWSOC %1000
  • PV generation
  • Site load
  • EV charging
  • Battery (+ discharge / − charge)
  • Grid (+ import / − export)
  • State of charge
Grid exchange by hour

500 kW import connection and 750 kW export limit, metered hour by hour at the interconnection point

  • Import
  • Export
Hourly grid import and export10005000500100000:00 · Import 176 kWh0001:00 · Import 360 kWh02:00 · Import 448 kWh03:00 · Import 338 kWh0304:00 · Import 231 kWh05:00 · Import 256 kWh06:00 · Import 41 kWh0607:00 · Import 42 kWh08:00 · Export 3 kWh08:00 · Import 3 kWh09:00 · Export 0 kWh09:00 · Import 0 kWh0910:00 · Import 0 kWh11:00 · Export 0 kWh11:00 · Import 0 kWh12:00 · Export 0 kWh12:00 · Import 0 kWh1213:00 · Export 0 kWh13:00 · Import 0 kWh14:00 · Export 330 kWh14:00 · Import 0 kWh15:00 · Export 617 kWh1516:00 · Export 65 kWh16:00 · Import 12 kWh17:00 · Export 106 kWh17:00 · Import 11 kWh18:00 · Export 207 kWh1819:00 · Export 216 kWh20:00 · Export 227 kWh21:00 · Export 227 kWh2122:00 · Import 38 kWh23:00 · Import 172 kWhkWh
Imported today
1.90 MWh
Peak 500 kW · of 500 kW
Exported today
0.00 MWh
Peak 24 kW · of 750 kW
Net balance
-1.89 MWh
Busiest hour in 448 kWh · out 617 kWh
Peak shaved by BESS
4 kWh
Battery covers demand above the 500 kW import cap

18 string inverters rated 100–125 kW, grouped into three blocks. The bar under each card shows load against nameplate rating, the segments below show per-string health.

INV-01Online
120.1 kW
125 kW · Block Aη 98.6 %
6 strings54 °C
INV-02Online
119.2 kW
125 kW · Block Aη 98.6 %
6 strings51 °C
INV-03Online
113.8 kW
120 kW · Block Aη 98.6 %
5 strings48 °C
INV-04Online
115.9 kW
120 kW · Block Aη 98.6 %
5 strings48 °C
INV-05Online
102.9 kW
110 kW · Block Aη 98.6 %
4 strings49 °C
INV-06Online
104.7 kW
110 kW · Block Aη 98.6 %
5 strings53 °C
INV-07Derated
62.6 kW
110 kW · Block Bη 96.3 %
6 strings56 °C
INV-08Online
94.4 kW
100 kW · Block Bη 98.6 %
4 strings52 °C
INV-09Online
95.9 kW
100 kW · Block Bη 98.6 %
4 strings49 °C
INV-10Online
121.3 kW
125 kW · Block Bη 98.6 %
6 strings48 °C
INV-11Online
111.3 kW
120 kW · Block Bη 98.6 %
5 strings48 °C
INV-12Online
108.3 kW
115 kW · Block Bη 98.6 %
5 strings52 °C
INV-13Fault
0.0 kW
110 kW · Block Cη 0.0 %
4 strings17 °C
INV-14Online
100.4 kW
105 kW · Block Cη 98.6 %
6 strings53 °C
INV-15Online
93.8 kW
100 kW · Block Cη 98.6 %
4 strings50 °C
INV-16Standby
0.0 kW
125 kW · Block Cη 0.0 %
6 strings23 °C
INV-17Online
111.8 kW
120 kW · Block Cη 98.6 %
5 strings48 °C
INV-18Online
104.4 kW
110 kW · Block Cη 98.6 %
4 strings51 °C
FAQ

Reading this case

No. It is a reference implementation of the BESS operations desk. Named write-ups go live only after the client confirms every sentence.
No. They are simulation parameters: 11 MWh, three LFP banks, 18 inverters, 90 strings and a ~120× clock. The purpose is to show layout and update behaviour. Solterra Hybrid Park is a simulator label only.
Live Modbus, SunSpec and IEC 61850 polling, an EMS dispatch loop, a historian, and OCPP sessions for the chargers. This demo does not call those services.
Yes. The usual first deliverable is the operator layer you see here, wired to your banks and inverters rather than the simulator parameters.

Send the brief. Estimate in 24 hours.

Describe the banks, the inverters and the telemetry you already have. We map an operator layer within one business day.