Controllable Load API/Nature

Hello Community,

In our project we have a continous water heater which we want to operate to pre-heat incoming cold water of a building. The heater itself is (supposed to be) controlled by OpenEMS. The heater would be switched on when ever surplus PV is available.

As of now this is a one of kind usage (i guess). But then I was wondering if there are other similar applications?

In such a case of a “Controllable” Load, I wanted to build up a nature which I could use further in my controllers. As of now I was thinking of adding a “Target Power” channel to a new interface inheriting the meter API: Electricity Meter

Has anyone worked out something similar? Is there any other elegent way of implementing it?


Hi @Laksh,

it’s a good idea and something we are planning to implement in one way or the other. There are already certain “controllable loads” in OpenEMS, like control for electric vehicle charging station, electric heater, SG-Ready heat-pump, etc., but it is not standardized yet.

It will also become much more complicated than just having one “target power” but rather something like a “Hüllkurve” (Envelope (mathematics) - Wikipedia). But for the next big developments we will need something like this.

(I am talking about the AI-enabled energy optimizer (Energy Schedule by sfeilmeier · Pull Request #2367 · OpenEMS/openems · GitHub; the first actual implementation of this approach is already available in the new Time-of-Use Controllers → Mehr Freiheit in der Nutzung dynamischer Stromtarife – OpenEMS)

If I were you, for now I would just implement the device and controller in a straight forward way and not bother about the abstraction layers.


1 Like