Client
Victron Energy
Industry
Energy systems
Company size
100+ employees
Services we provided
• Data Science
• Software development
Technologies
• OR_Tools
• InfluxDB
• Redis
• Celery
Do you want to know more?
Why build a smarter battery?
The client
Victron energy is a dutch company specialised in design and manufacture of electric devices such as inverters, solar chargers and batteries. Users of these devices are able to connect these devices to an online platform called VRM (Victron Remote Management) developed and maintained by us at El Niño.
The platform
Through this platform the users are able to monitor and control the certain aspects of their electrical devices. The platform has more than 100.000 active users with electrical setups varying from boats using solar energy to households with electric vehicle charging stations. One of the more popular and clearly defined markets that Victron devices are present in are ESS’s (Energy Storage Systems).
The market
ESS are simply energy systems with a stable electrical grid connection and a battery solution. Households with a battery system and solar panels are popular examples of ESS present on the VRM platform. While a solution like this comes with its environmental and self-sustainability benefits, many ESS owners also noticed a unique opportunity in minimising their energy costs by cleverly using their battery systems.
The challenge
With the dynamic energy pricing gaining popularity all across Europe, ESS owners with these contracts constantly optimise their energy usage and battery charging cycles to spend the least amount of money. This also aligns with the monetary incentive set by dynamic pricing in order to stabilise the electrical grid. Thus the challenge was clear, users wanted an automated solution which minimises their energy costs of their ESS.
The solution
We created Dynamic ESS - a multi-layered system which incorporates energy and price forecasts together with system parameters to generate an optimal battery charging schedule.
Introducing: Dynamic ESS
Dynamic ESS is an algorithmic solution for the battery charging optimisation problem. By collecting, analysing and inferring from the historical data present on an ESS, it promises to mathematically calculate the most cost-efficient energy schedule.

System inputs
After carefully analysing the behaviour of ESSs and their users’s decision making, we quickly narrowed down the necessary elements to make an optimal battery schedule:
Energy Production Forecasts - the estimate of how much energy an ESS can produce using solar panels;
Energy Consumption Forecasts - the predictions for the energy usage present in the ESS;
Day-ahead Energy Prices - buy and sell prices of energy from the grid;
System parameters & User Preferences - energy flow limitations of the system, i.e. battery capacity or maximum grid export power.
With these set of inputs, we aimed to only use user action where necessary and calculate most of the parameters using the data available. While this approach makes the setup simpler, the critical parameters are still obtained from user input to maximise reliability.

Mathematical optimization
Using the parameters we mathematically model ESS. With the forecasts we describe the constraints and the state that the energy system is in and with the prices we define the cost function to incentivise the model to reduce energy costs. We used an Mixed Integer Linear Programming model developed using the Google’s OR-Tools library. Going with a mathematical model like this makes the system understandable, explainable and easily expandable.

Control mechanism
Once the optimal charging cycles of batteries are calculated, these get translated into a set of control mechanisms carefully crafted by Victron’s engineers and El Niño’s Data Scientists. These controls are later sent to the electrical devices via MQTT protocol. Each transmission of controls contains 12 hours of planned schedule. This ensures that the downtime on the software end doesn’t impact the devices for half a day, thus making the product more robust.

Deployment
While all of the above executes for a given user within milliseconds, the real challenge came in when we needed to scale these solutions deliver results to thousands of users every fifteen minutes. For this, we made use of advanced task queueing techniques attached with smart caching backend to ensure a speedy execution. In more detail, we made use of Celery task-runners with each task interfacing with a Redis instance. A deployment like this allowed us to scale the solution while not sacrificing reliability.
Results
Connect with the project team

Alex Imbrea
Technical Manager
Barbara Jansink
Product Owner