IntroductionΒΆ
balanz originates from an specific need to control power allocation across a set of chargers sharing the same electrical supply. It is critical that the combined power consumption of all chargers never exceeds the available supply - otherwise fuses may blow or other issues arise.
Allocation of maximum power that chargers may deliver to connected Electric Vechiles (EVs) may be controlled programmatically via the Open Charge Point Protocol (OCPP) standard.
The goal of balanz is to provide a simple and efficient way to manage charging sessions, ensuring that each charger receives its fair share of power while not overloading the electrical supply. Such functionality is known as Smart Charging.
As per OCPP standard Smart Charging may be embedded in the Charging Station Management System (CSMS), also sometimes referred to simply as the Central System (CS) or, alternatively, as a separate Local Controller (LC) component. balanz supports both CS and LC modes of operation.
OCPP defines an LC as follows:
Optional device in a smart charging infrastructure. Located on the premises with a number of Charge Points connected to it. Sits between the Charge Points and Central System. Understands and speaks OCPP messages. Controls the Power or Current in other Charge Point by using OCPP smart charging messages. Can be a Charge Point itself.
If deployed as a LC, balanz will rely on a CSMS/CS for all charger operations not related to Smart Charging, including things like session authorization, reporting, firmware upgrades, etc. The CSMS/CS in this case will likely be supplied by the manufacturer of the chargers, but could even be a third-party provider.
While not the primary focus, it is possible to deploy balanz without enabling Smart Charging. In this case, balanz would either work as an OCPP-proxy (LC mode), or as a full (simple) - CSMS/CS.
Below diagram shows different balanz deployment options.
![graph G {
rankdir="LR";
ev1 [label="EV", shape="box"];
charger1 [label="Charger", shape="box"];
bz1 [label="balanz CSMS/CS (w/Smart Charging)", shape="box"];
ev1 -- charger1 [dir="both"];
charger1 -- bz1 [label="OCPP", dir="both"];
ev3 [label="EV", shape="box"];
charger3 [label="Charger", shape="box"];
bz3 [label="balanz CSMS/CS (wo/Smart Charging)", shape="box"];
ev3 -- charger3 [dir="both"];
charger3 -- bz3 [label="OCPP", dir="both"];
ev2 [label="EV", shape="box"];
charger2 [label="Charger", shape="box"];
bz2 [label="balanz LC (wo/Smart Charging)", shape="box"];
csms2 [label="CSMS", shape="box"];
ev2 -- charger2 [dir="both"];
charger2 -- bz2 [label="OCPP", dir="both"];
bz2 -- csms2 [label="OCPP", dir="both"];
ev0 [label="EV", shape="box"];
charger0 [label="Charger", shape="box"];
bz0 [label="balanz LC (w/Smart Charging)", shape="box"];
csms0 [label="CSMS", shape="box"];
ev0 -- charger0 [dir="both"];
charger0 -- bz0 [label="OCPP", dir="both"];
bz0 -- csms0 [label="OCPP", dir="both"];
}](_images/graphviz-bb1ca57f0caf83a53737ceebb84416693c3e477a.png)
balanz is a python application based on the brilliant occp library kindly provided using an MIT license by MobilityHouse.
The balanz project is hosted at GitHub and is covered by an MIT license.