Is there a way to control simulator ESS other than using the existing controllers?

I am planning to use OpenEMS to display ESS value (%,charge/discharge power) based my optimization value which is Python code so Is there a way that i can send these value to OpenEMS ?

Hi @pat and welcome to the OpenEMS Community,

well, there are multiple ways to achieve what you want to do. But from experience I would not recommend to start that way, mix programming languages and add an additional communication layer.

  • What is your actual use-case?
  • What optimization does your Python code calculate?
  • What is the result of the optimization? Is it a charge/discharge command? (then you could use the Modbus or REST/JSON APIs to send that command to OpenEMS)

I would recommend you to setup a simulated OpenEMS environment as described in OpenEMS Edge. Then you can start adjusting an existing ESS Controller and see how your simulation reacts. This will give you a good feeling of the control behaviour and workflow in OpenEMS.


I want to simulate the battery load and solar but based on different objective than existing controller such as minimizing expense while retain the comfort of users.
The optimization code has TOU,load and pv profile as input and battery charge/discharge power(kW) ,SoC(%) as output. Only active power is considered. I want to know how to send charge/ discharge power command to simulator ess, exactly? What are channels of rest api that I need to send it to. Is it also possible to send load and solar profile through Rest api?

Did you have a look at “ESS Time-of-Use Tariff”-Controller. It should already fulful what you require.

It might be complex to understand the behaviour, but it might be worth it, because this is a field where a lot of active research among experienced OpenEMS developers is happening right now.

There is also a little German article here:

You can send a Set-Point via API following this documentation:

It’s not out-of-the-box possible to set the load/solar profile with REST Api.