Energy management system software for batteries and solar
Order Group, a software house in Warsaw, Poland, builds energy management software for battery storage and solar: the EMS that decides when batteries charge, discharge or export. The EMS we built for Zeronest controlled more than 3,000 prosumer storage installations in April 2026.
Tell us about your sites.
The batteries, inverters and markets you work with tell us which engineers to bring to the first call.
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 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 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. The prosumer batteries under it add up to 30 MWh. The EMS we built for Skyfri went into production in June 2024 and covers 7 plants with more than 5 MWh of battery capacity and more than 4 MW of battery power. 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 and our article on battery energy storage systems.)
- BMS. The battery management system protects the cells: voltages, temperatures, 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 collects data and passes commands on.
The EMS treats every limit reported by the BMS as a hard constraint.
What we build into an EMS
Controllers with priorities
Device integration
Local control, cloud for the rest
Your models, our control layer
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, also called a battery 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 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 calls and virtual power plants belong to the portfolio and market layer above the site EMS, which our page on VPP and DSR software covers.
Home battery EMS for a prosumer fleet
Zeronest's platform serves homes with solar and a battery, and the installers who fit them.
Once a minute, the Zeronest 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.
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 (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.
In the platform's first two years, our work on Zeronest added up to about 11,220 hours.
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.
The Skyfri EMS handles several batteries and inverters on one site. It schedules charging, discharging, peak shaving and energy trading through a trading partner. 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). 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 a new version of the EMS went live at one of the sites.
Industrial energy management system and C&I energy storage
An industrial energy management system runs a site's consumption, solar and battery within the grid connection, the network tariff and the price of energy. On commercial and industrial (C&I) sites, an EMS most often runs two jobs for the battery, and both already run in EMS software we built:
- Peak shaving: the battery discharges when the site's load would go above its limit, as in the Skyfri EMS.
- Self-consumption: the battery stores surplus solar for the site to use later instead of exporting it. In the Zeronest EMS this is a behavior of manual mode, and businesses work on the same platform as homeowners.
For companies that buy energy we also built PowerShift in 2026, a module of Enerace's procurement platform that plans when machines run based on the cost of energy and the capacity fee, a Polish charge on electricity used in peak hours.
Solar monitoring software that also runs the battery
Solar monitoring software turns readings from inverters, meters and batteries into production, consumption, battery state and alerts. At Zeronest and Skyfri, monitoring and control use the same data, so the EMS acts on the readings the dashboard shows. In the Zeronest app a homeowner sees what the panels produce, what the battery is doing and what that is worth, and gets a forecast of expected production from tomorrow's weather. The app also works on smart-meter data alone, without solar panels.
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.
Choosing an energy management software company: what to put in the spec
Whichever energy management software company you pick, put four 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, and support runs under an SLA with named engineers on every incident.
Ask a vendor for real-time control it has built outside batteries, too. For KYOTO Group we spent three and a half years on industrial IoT and digital twin software for a molten-salt thermal energy store, ending 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.
Hiring a BESS software company: scope and timeline
We deliver the software of a battery energy storage system: the EMS that runs on the site's device and the cloud platform around it. The batteries and inverters come from your partners or ours.
The Zeronest EMS went into production in June 2024, five months after work began in January 2024. The Skyfri EMS reached production the same month, seven months after a feasibility study in November 2023. Requirements such as mixed battery brands, offline operation, trading or grid operator commands add scope to that schedule.
Why build your EMS with us: two systems in production
Zeronest and Skyfri: from first requirements to production
Questions about EMS software
Vendor or custom, offline operation, integration, cost, ownership and support.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
Scope sets the price: how many device brands and protocols the EMS has to integrate, whether it runs offline, whether it trades or serves balancing markets, whether it follows grid operator commands and whether you need a platform for your own customers. The discovery workshop that maps this is free. After it, each fixed-scope release is priced on outcome before it starts.
-
You do. Code, designs and documentation we create for you belong to you by default.
-
An SLA, 24/7: 15 minutes to first response on a critical incident, 30 minutes to active work, and named engineers on every incident.
Book a free consultation with an engineer
SO FAR WE HAVE WORKED WITH BRANDS LIKE:
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