# EMS and BESS Software Development

Source: https://ordergroup.co/energy-hub/energy-management-system-software/
Last updated: 2026-10-11

> Energy management system software for batteries, solar and grid connections. We build custom EMS and BESS control that runs on site, offline included.

# Energy management system software for batteries and solar

A battery vendor's EMS stops being enough once you mix brands, run offline or follow grid operator commands. The EMS we built for Zeronest controlled more than 3,000 prosumer storage installations in April 2026, and the one we built for Skyfri went live in June 2024 on 7 plants.

[Book a free consultation](https://ordergroup.co/contact-us/)

Tell us about your sites.

The batteries, inverters and markets you work with tell us which engineers to bring to the first call.

- [![Kyoto Group](https://ordergroup.co/media/images/kyoto-group-mono_hlqECHG.max-208x64.format-webp.webp)](https://ordergroup.co/case-studies/kyoto-digital-twin-software/)
- [![Enerace](https://ordergroup.co/media/images/enerace-mono_FKuME1X_Fp3WF4B.max-208x64.format-webp.webp)](https://ordergroup.co/case-studies/enerace-energy-trading-software/)
- [![Zeronest](https://ordergroup.co/media/images/zeronest-mono_BqSPQJQ_2nGxsSc.max-208x64.format-webp.webp)](https://ordergroup.co/case-studies/zeronest-solar-panel-monitoring-app/)
- [![Skyfri](https://ordergroup.co/media/images/skyfri-mono_KGicBgp.max-208x64.format-webp.webp)](https://ordergroup.co/case-studies/skyfri-solar-asset-management-platform/)

## Energy management system software for batteries, solar and grid connections

Energy management system software reads the meters, inverters and batteries on a site and sends them setpoints: when to charge, when to discharge, when to curtail production and when to trade, within the limits set by the grid, the contracts and safety. The [EMS glossary entry](https://ordergroup.co/glossary/ems/) explains the term in more detail.

We build this software for companies that run batteries and solar, or sell a platform that does. More of our energy work is on the [energy software development](https://ordergroup.co/energy-hub/) page. Since January 2024 we have been building the EMS of the Zeronest platform. As of April 2026 it controlled more than 3,000 prosumer storage installations, and the prosumer batteries under it add up to 30 MWh. The EMS we built for [Skyfri](https://ordergroup.co/case-studies/skyfri-solar-asset-management-platform/) went into production in June 2024 on 7 plants with more than 4 MW of battery power and more than 5 MWh of battery capacity. Since December 2025 we have been building an EMS for Global Green, an operator of solar and battery sites in Germany and Canada, for its 15 MWh of battery storage (BESS).

## Where the EMS layer sits in a BESS

A battery energy storage system has four control layers, and the EMS is the one that decides. (For the full picture, see [BESS](https://ordergroup.co/glossary/bess/) and our article on [battery energy storage systems](https://ordergroup.co/blog/battery-energy-storage-system/).)

- **BMS.** The [battery management system](https://ordergroup.co/glossary/bms/) protects the cells: voltages, temperatures, [state of charge](https://ordergroup.co/glossary/state-of-charge/), balancing and disconnection. It usually comes from the battery supplier.
- **PCS.** The power conversion system converts between AC and DC and carries out the power setpoint.
- **EMS.** The energy management system decides when to charge and discharge, and at what power.
- **SCADA.** [SCADA](https://ordergroup.co/glossary/scada/) collects data and passes commands on.

The EMS treats every limit reported by the BMS as a hard constraint.

![BESS control stack: BMS, PCS, EMS, SCADA](https://ordergroup.co/media/images/bess-control-stack.format-webp.width-2880.webp)

## What we build into an EMS

### Controllers with priorities

In the EMS we are building for Global Green, each function is a separate controller with its own priority: export limits imposed by the grid operator, direct battery commands, caps on PV output and grid export, a safety limit and trading. The system warns when no fallback controller has been set.

[Device integration

At Zeronest every installation gets its own device, connected to the inverter over RS485/Modbus and reporting over LTE, so it does not depend on the manufacturer's cloud or the home Wi-Fi. Data reaches the cloud over MQTT with TLS through AWS IoT Core. For Global Green we handle the Modbus register maps of batteries from two manufacturers and MQTT communication.](https://ordergroup.co/glossary/modbus/)

### Local control, cloud for the rest

The control loop and the safety limits run on site. The cloud keeps history, forecasts and configuration. That split is why the Skyfri EMS runs fully offline.

### Your models, our control layer

You can use your own forecasting models or strategies when they are your advantage. We build the control layer around them, and the battery and grid limits are enforced underneath.

### Testing controller order

Two bugs found in testing show why controller order needs its own tests. Once, adding the trading controller removed the settings that protect the battery from deep discharge. In another case, the safety controller throttled the battery no matter what had triggered it. Both were fixed.

## BESS energy management system: one battery, several jobs

One battery can trade, shave peaks and provide balancing services at the same time, just not with the same kilowatt-hours. A BESS energy management system reserves state of charge and power for each commitment. When two commitments conflict, it applies the priority written down for that case, and it corrects for losses so the commitment is met at the grid connection point.

On European balancing markets, FCR, [aFRR](https://ordergroup.co/glossary/afrr/) and mFRR require the response times and telemetry defined by the grid operator.

For Global Green we are building an orchestrator that combines setpoints from trading, aFRR and direct control, resolves conflicts and only then splits the result across batteries. By July 2026 it could compensate for losses, so the declared power reaches the connection point, and the simulator had manual battery control. The orchestrator is still being built and is not in production.

For Zeronest we also built a demand-side response (DSR) module that splits an aggregator's call across metering points. Aggregation, [demand response](https://ordergroup.co/glossary/demand-response/) calls and [virtual power plants](https://ordergroup.co/glossary/vpp/) belong to the portfolio and market layer above the site EMS.

![Zeronest inverter control dashboard – manual charging mode and storage charge level settings on laptop](https://ordergroup.co/media/images/zeronest-on-macbook_13.format-webp.width-2880.webp)

## Home battery EMS for a prosumer fleet

Zeronest's platform serves homes with solar and a battery, and the installers who fit them.

In production since June 2024

A decision for each battery once a minute

more than 3,000 prosumer storage installations (as of April 2026)

16 inverter brands supported

Once a minute, the [Zeronest](https://ordergroup.co/case-studies/zeronest-solar-panel-monitoring-app/) engine decides whether each battery charges, discharges or sells energy to the grid. It bases the decision on live readings, day-ahead and intraday prices, tariffs, consumption history and the weather forecast. It works with dynamic and time-of-use tariffs and chooses how the battery cycles so that battery life is protected. Zeronest advertises savings of up to 34%.

The platform supports 16 inverter brands, including Deye, GoodWe, Hoymiles and Sungrow. A storage system can be switched off, run in manual mode or run in automatic mode. Manual mode has five behaviors: charge, discharge, [antireflux](https://ordergroup.co/glossary/energy-curtailment/) (no export to the grid), self-consumption and hold, set permanently or on an hourly schedule. Automatic mode has three strategies: defensive, neutral and aggressive.

A team of 7 people works on Zeronest. In the platform's first two years it logged about 11,220 hours of work.

![Skyfri mobile app on a phone showing battery charge and HZLF peak reduction targets for a site](https://ordergroup.co/media/images/skyfri_mobile_app_battery_overvi.format-webp.width-2880.webp)

## EMS software for PV and battery plants

For Skyfri we designed the architecture and built the EMS under its platform for solar and battery plants.

In production since June 2024

7 plants, more than 5 MWh

Fully offline operation

Validated in Socomec's battery lab

The Skyfri EMS handles several batteries and inverters on one site. It schedules charging, discharging, [peak shaving](https://ordergroup.co/glossary/peak-shaving/) and energy trading. It also carries out requests from the distribution system operator (DSO) and enforces the site's maximum load and export limits. Among the starting requirements were high-load time windows from the network tariff (Hochlastzeitfenster, HLZF) and trading through a trading partner. The edge code is Python asyncio on Azure IoT Edge, with Azure IoT Hub in the cloud.

Work began with a Technical Feasibility Study in November 2023. We validated the EMS in Socomec's battery laboratory in Strasbourg and rolled it out in Germany and Sweden.

For Global Green the EMS runs on an industrial computer on site and sends data to the cloud. We test new logic on a device simulator in AWS, and in September 2026 we deployed a new version of the EMS on the industrial computer at one of the sites.

Installations

**3,000+**

Prosumer storage installations on the Zeronest EMS (April 2026)

Inverter brands

**16**

Integrated in the Zeronest EMS

Plants

**7**

Solar and battery plants under the Skyfri EMS (June 2024)

Battery power

**4+ MW**

At Skyfri's plants

Battery capacity

**5+ MWh**

At Skyfri's plants (June 2024)

When the battery supplier's software is enough, and when it is not

## Vendor EMS or custom EMS?

A battery vendor's EMS is usually enough with one brand, standard modes and a stable connection.

A custom EMS pays off when you mix brands, run offline, trade, follow grid operator commands or run your own platform.

![Vendor EMS or custom EMS?](https://ordergroup.co/media/images/photo-1676337167752.2e16d0ba.fill-2000x1200.format-webp.webp)

### Vendor EMS vs custom EMS

Which situation points to which kind of EMS.

| Situation | Vendor EMS | Custom or extended EMS |
|---|---|---|
| Battery and inverter brands | One brand | Several brands mixed on one site or across a fleet |
| Operating modes | Standard modes are enough | Your own strategies or models |
| Connection | Stable link | The site has to keep working offline |
| Markets | No trading | Energy trading or balancing markets |
| Grid operator | No commands to follow | Grid operator commands and export limits |
| Customers | No platform of your own | Your own platform for your customers |

## Choosing an energy management software company: what to put in the spec

Before you compare energy management software companies, put these requirements in the specification:

- The control loop runs locally, on an edge device on site.
- Every setpoint is read back from the device.
- Each cycle logs its inputs, the active rule and the setpoint.
- New logic is tested on a simulator with the same interfaces as the site before it touches a production battery.

Then check what you get after delivery. Code, designs and documentation we create for a client belong to the client by default. Support runs under an SLA, and incidents go to named engineers. We build the software layer and validation prototypes; hardware comes from your partners or ours.

Ask a vendor for real-time control it has built outside batteries, too. For [KYOTO Group](https://ordergroup.co/case-studies/kyoto-digital-twin-software/) we spent three and a half years building industrial IoT and [digital twin software](https://ordergroup.co/glossary/digital-twin/) for a molten-salt thermal energy store, finishing with a SCADA-based system that monitors and controls the flow of energy in real time.

## Energy management software development: how a project runs

A free discovery workshop, fixed-scope releases, rollout with monitoring and support under an SLA.

### Discovery

A free discovery workshop maps your assets and market constraints into a priced roadmap.

### Build

Fixed-scope releases, each priced on outcome rather than hours worked.

### Deploy

Rollout to your sites with monitoring in place, plus documentation, runbooks and infrastructure-as-code.

### Support

Maintenance under SLA: 15 minutes to first response and 30 minutes to active work on a critical incident, 24/7.

## Why teams build their EMS with us

The full stories behind the Zeronest and Skyfri EMS

[Show all Case Studies](https://ordergroup.co/case-studies/)

- [Zeronest - Solar Panel Monitoring App with Automated Battery Management](https://ordergroup.co/case-studies/zeronest-solar-panel-monitoring-app/)

[![Zeronest - Solar Panel Monitoring App with Automated Battery Management](https://ordergroup.co/media/images/zeronest_mockup_dashboardu_hero_.format-webp.width-1280.webp)](https://ordergroup.co/case-studies/zeronest-solar-panel-monitoring-app/)
- [Skyfri - Solar & Battery Asset Management Platform](https://ordergroup.co/case-studies/skyfri-solar-asset-management-platform/)

[![Skyfri - Solar & Battery Asset Management Platform](https://ordergroup.co/media/images/skyfri_peak_shaving_dashboard_la.format-webp.width-1280.webp)](https://ordergroup.co/case-studies/skyfri-solar-asset-management-platform/)

## Questions about EMS software

Vendor or custom, offline operation, integration, ownership and support.

![Paweł Zieliński](https://ordergroup.co/media/images/Pawel_p3bY6z4.format-webp.webp)

Paweł Zieliński

Co-founder & Business Owner

[Book a free consultation](https://ordergroup.co/contact-us/)

### Should we use the battery vendor's EMS or a custom one?

Use the vendor's EMS if you run one brand, standard modes and a stable connection. Build or extend your own when you mix battery and inverter brands, need the site to work offline, trade on energy markets, follow grid operator commands or run your own platform for customers.

### Can an EMS keep running without an internet connection?

Yes, if the control loop and the safety limits run locally on site. The Skyfri EMS runs fully offline; the cloud is used for history, forecasts and configuration.

### Which inverters and batteries can you integrate?

The Zeronest EMS works with 16 inverter brands over RS485/Modbus, with each device reporting over LTE and sending data over MQTT with TLS. For Global Green we handle the Modbus register maps of batteries from two manufacturers, plus MQTT. We start by checking which interfaces your devices expose.

### Can one battery do trading, peak shaving and balancing at the same time?

Yes, but not with the same kilowatt-hours. The EMS reserves state of charge and power for each commitment, applies a written priority when they conflict and corrects for losses. The Global Green orchestrator that combines trading, aFRR and direct control is still being built.

### Do you build battery management system (BMS) firmware?

No. The BMS protects the cells and usually comes from the battery manufacturer. We build the software above it, plus validation prototypes, and the EMS treats the limits reported by the BMS as hard constraints.

### Can the EMS follow grid operator requests and export limits?

Yes. The Skyfri EMS carries out DSO requests and limits the site's maximum load and export. In the Global Green EMS, export limits from the grid operator are a separate controller with its own priority.

### Can we plug in our own optimization models?

Yes. We build the control layer around your models, with the battery and grid limits enforced underneath.

### What should we put in an EMS software specification?

Local control on site, read-back of every setpoint, a log of every cycle, and tests of new logic on a simulator with the same interfaces as the site before it reaches a production battery.

### How do you price an EMS project?

It starts with a discovery workshop, which is free. After that we build in fixed-scope releases, each priced on outcome, so you know what a release costs before it starts.

### Who owns the code?

You do. Code, designs and documentation we create for you belong to you by default.

### What does support look like after launch?

An SLA, 24/7: 15 minutes to first response on a critical incident, 30 minutes to active work, and named engineers on every incident.

![Wind turbines on snowy hills under a cloudy sky](https://ordergroup.co/media/images/div_iJqFNR8.contact__image.format-webp.width-2880.webp)

## Book a free consultation with an engineer

Your message goes to

![Filip Szamborski](https://ordergroup.co/media/images/Filip_dTWHyBo.2e16d0ba.fill-432x432.format-webp.webp)

Filip Szamborski

Co-founder & CEO

[](https://www.linkedin.com/in/filip-szamborski/)

SO FAR WE HAVE WORKED WITH BRANDS LIKE:

- [![Kyoto Group](https://ordergroup.co/media/images/kyoto-group-mono_hlqECHG.max-208x64.format-webp.webp)](https://ordergroup.co/case-studies/kyoto-digital-twin-software/)
- [![Enerace](https://ordergroup.co/media/images/enerace-mono_FKuME1X_Fp3WF4B.max-208x64.format-webp.webp)](https://ordergroup.co/case-studies/enerace-energy-trading-software/)
- [![Zeronest](https://ordergroup.co/media/images/zeronest-mono_BqSPQJQ_2nGxsSc.max-208x64.format-webp.webp)](https://ordergroup.co/case-studies/zeronest-solar-panel-monitoring-app/)
- [![Skyfri](https://ordergroup.co/media/images/skyfri-mono_KGicBgp.max-208x64.format-webp.webp)](https://ordergroup.co/case-studies/skyfri-solar-asset-management-platform/)

Thank you for your message.

We read every message ourselves and get back to you within 48 hrs on business days.

Something urgent?
[hello@ordergroup.co](mailto:hello@ordergroup.co)
