The Battery Safety Controller (BSC) is a freely configurable controller that can be used for a wide range of control and monitoring tasks for DIY batteries. The BSC can take over the central control of the Energy-Sorange system and can be used to implement a second safety level in addition to the BMS.
The BSC consists of two components. The BSC hardware and the corresponding software.
-
The BSC Hardware, which is used as middleware between the BMS and the inverter. One advantage of the BSC hardware is its secure operation. The components and design are such that all physical interfaces are galvanically isolated.
-
The BSC software, which makes the Battery Safety Controller hardware a freely configurable controller that can be used for a wide range of control and monitoring tasks in DIY battery systems.
Battery Management Systems (BMS) are connected via the three available serial interfaces, while the inverter is integrated through the CAN bus.
An optional status display is available as an extension, providing real-time information about the status of all connected devices.
The BSC software can also be used independently of the BSC hardware on ESP32 DevKit modules. However, due to stability, it is recommended to use the original BSC hardware.
The firmware is open source and available in German, English, and Dutch. You can download the latest public version here.
In addition to the freely available version, there is an Insider version exclusively for sponsors. This version includes the newest features before they are gradually released to the public.
You can learn more about sponsorship on the Github Sponsor page and in the documentation.
The new dashboard is only available to insiders. All other users have a simple WebUI.
- Discord Forum
The Discord is in German, but you can also write in English. We are also happy to welcome members from other countries. - Documentation (German)
The documentation is in German, but it can be translated using your browser. Alternatively, you can view it via Google Translate.- System overview
- BMS connection examples
- Supported Devices: BMS, Inverter, External Shunt
- First steps:
- Discussions
- Layout BSC board, Circuit diagram
- Sources of supply
Many thanks to all the sponsors who support the project.
You can find out more about sponsoring on the Github Sponsor page and in the documentation.
Gold
Bronze
Supporter
For this purpose, the BSC can send the data from the connected devices (BMS, balancer, temperature sensors) via MQTT to a broker to display them graphically with Grafana, for example, or to further process the data from an automation system (ioBroker, NodRed, Home Assistant, ...).
For this, the BSC takes the data from the connected devices to control the inverter (Victron, Solis, DEYE, ...) connected via the CAN bus. Here are several functions available to adapt the charge control to your own DIY battery.
- Cell voltage dependent throttling of the charge current
- Reduce charge current in case of cell drift
- SoC dependent charge current reduction
- Charge current cut-off: prevents continuous recharging when the battery is full
- Combining data from the individual physical battery packs into an overall virtual battery pack, with consideration of many parameters, such as can/does the battery pack charge/discharge at all.
The BSC can monitor various configurable parameters on connected devices (serial, Bluetooth) to create a second level of security.
Parameters that can be monitored include:
- Does the connected BMS respond regularly
- Cell voltages (min/max)
- Total voltage (min/max)
- Temperatures
This can be used, for example, to control the relay outputs to trigger a load break switch.
Up to 64 OneWire temperature sensors (DS18B20) can be connected and monitored. There are different regulations for monitoring the temperature:
- Maximum value monitoring
- Maximum value monitoring with one sensor as reference value
- Differential value monitoring
All settings can be freely parameterized via a web interface.
For more information see the documentation in the section Supported BMS.
- JBD (Jiabaida)
- JK
- JK Inverter [1]
- Seplos
- Seplos V3 [1]
- DALY
- Sylcin [1]
- PACE RN150
- PCAE PC200 [1]
[1]: With these BMS you can connect up to 16 to one serial port.
For more information see the documentation in the section Supported external Shunts.
- Victron SmartShunt
For more information see the documentation in the section Supported Inverter.
- Victron
- Pylontech protocol (Solis, DEYE, ...)
- BYD protocol (only tested with SolarEdge RWS)
- 6x Relay outputs
- 4x Digital inputs (isolated)
- 3x Serial interface (isolated) [3]
- Onewire (64x DS18B20)
- CAN (isolated)
- WLAN
[3]: With the Serial Extension the BSC can be extended by 8 additional physical and galvanically isolated serial ports.
A lot of further information about commissioning, supported devices, information about the WebUI can be found in the Documentation.
Interface | RX | TX |
---|---|---|
Serial 0 | GPIO 16 | GPIO 17 |
Serial 1 | GPIO 23 | GPIO 25 |
Serial 2 | GPIO 35 | GPIO 33 |
CAN | GPIO 5 | GPIO 4 |
Further description can be found here.
To show the status of the BSC and the connected BMSes there is a status display for the BSC.
More details are in the Github project of the display and in the documenatation.
GitHub project Display
Documentation - Display

To display more data in VenusOS (Victron) like the cell voltages of the connected BMS or the temperatures of the OneWire sensors, there is a dbus driver. Here the data is not transmitted via WLAN to the VenusOS, but via the CAN bus.
For more info see the github project: dbus-bsc-can