Could Someone Give me Advice on Integrating a Custom Battery Management System (BMS) with OpenEMS?

Hi Dom5,

I am unsure on your actual questions. I assume your OpenEMS Edge configuration will eventually look similar to this: (sorry, German)

The image shows:

  • An Ess.Generic.ManagedSymmetric that logically combines a battery inverter and a battery
  • A Battery Inverter (in the image its a KACO blueplanet gridsave 92)
  • A Battery (in the image its a BYD Commercial Battery Box)
  • On the other end, there is a Grid-Meter measuring grid-buy-power and grid-sell-power
  • That information is used as an input for a Balancing-Controller, i.e. a control algorithm that tries to charge the battery on grid-feed-in and discharges the battery when otherwise buying from grid.

Communication via CAN bus and Modbus.

If you can, I would recommend to start with Modbus, because it is very well supported in OpenEMS. You can roughly follow the Implementing a Device tutorial, but instead of a Meter, implement a Battery by providing the modbus register table and mapping the registers to the required datapoints.

And of course I’d appreciate if you could publish the code of your BMS as well as the OpenEMS code. That’s the open source spirit! :slight_smile:

Regards,
Stefan

2 Likes