Grid demand management control using Diesel Generators

Hi All,

I’ve often found myself asking questions on this forum, and today, I’m excited to share our recent success in implementing a load management solution using the OpenEMS platform. I want to take a moment to acknowledge and thank all the dedicated contributors here who have helped shape this incredible platform. Your collective expertise and efforts have been invaluable in making this project a reality. Learning how to best implement OpenEMS has been an amazing journey, and I want to give back by sharing our experience.

Background on the Project

Our project was commissioned in South Africa, a region plagued by persistent load shedding issues. For those not familiar with the term, “load shedding” refers to the deliberate shutdown of electrical power in certain areas to prevent grid overload or blackouts. This chronic problem has a significant impact on the daily lives of the people in our region, affecting everything from households to industrial operations.

Project Details

The core of this project lies in a grid tied industrial facility equipped with a bank of three generators, used for back-up in the case of loadshedding. The total generator bank capacity is 1.650 MVA. These generators are controlled using the DeepSea 8660 synchronization controller. Additionally, the plant also has 550 kWp of solar photovoltaic (PV) capacity, but controlling the PV system was beyond the scope of this project.

The primary objective was to address the load shedding issue by effectively managing our grid demand. In exchange for implementing this load management solution, the local utility provider made a concession to discontinue load shedding in our area. To achieve this, our approach was starting the generators according to the larger loadshedding area’s schedule, which is automatically pulled in via an API. The generators are then controlled to supply 30% of the site’s load, a percentage agreed upon with the utility. An example of this is shown in the graph below:

By implementing this solution, we contribute to reducing the strain on the grid during peak periods, which not only helps the broader community but also ensures uninterrupted operations at our industrial facility while significantly lowering operational costs.

Thanks again for all the help, specifically Stefan and the rest of the OpenEMS Team. Hoping to have some more topics for you in the future.




hi @hornbartho

Congratulations on your success.

Thanks for your success story! Truely impressive to read it. I’d love to report about this success to a wider audience e.g. via the OpenEMS Association channels. Would you be available for an “interview” and could you provide some more details on your company, the project site, photos, etc.?

Hi Stefan,

I am more than willing to give you some positive feedback with the Openems Project and share my experience with it.

I was only one of many sub-contractors on this project and commissioned my section of project remotely. So I actually don’t have any photos myself, but I will reach out to the engineering house if they are willing to make some pictures available.



1 Like

Hi Bartho,

Impressive! Thank you for sharing your project.
Currently, we have a (more or less) similar project in mind. One or more CHP units are to be switched on during phases of high consumption to provide both electricity and heat energy. Meanwhile, there are interesting machines in this sector. Gas-powered and with relatively small outputs (e.g., 20 kW electricity and 40 kW heat), it is possible to cascade several generators.
I would like to learn more about the technical implementation. It would be great if you had the time to delve into this further here in the forum.

I like Stefan’s suggestion of doing an interview. If that happens, count me in. :wink:


Hi Klinki,

Apologies for the late reply. Yes I am more that happy to share what I have done. You can see my repo here: GitHub - 92Macro/openems: OpenEMS - Open Source Energy Management System

You can have a look in the io.openems.edge.genset.deepsea8660 bundle for the actual implementation. This was all done in a fairly short period, so it could definitely be better named and structured. But it served as a POC project to better get to know openems and how to best implement it.

Let me know if you have any questions, I am more that happy to help where I can.