BinSmart-ESS
This project is about a low-cost, high-efficiency energy storage solution (ESS) for small photovoltaic installations (German: "Balkonkraftwerke").
Having used a small 435 Wp "Balkonkraftwerk" for a year, it showed that only a third of the energy was used by our household, two thirds were exported to the grid (without financial compensation). I came up with the idea of retrofitting an ESS solution, which should at least double our household consumption. However, in 2023 there was nothing on the market that met my following criteria:
- storage capacity: > 2 kWh
- total cost (including battery and energy meter): < €500
- charging/discharging power: > 300 W
- indoor "AC-coupled" solution, no additional wiring to outdoor PV installation
- zero export to grid (< 1% when battery not fully charged)
- silent operation (no fans)
- self-consumption of the entire system (including energy meter): < 5 W
- total efficiency (AC-to-AC): > 80%
Available AC-coupled solutions were either too expensive, inefficient, noisy or consumed a lot of energy themselves. I concluded that I had to build an ESS solution myself.
There were some "home-made" solutions around, but they had their drawbacks, too:
- OpenDTU-OnBattery, a zero export solution based on OpenDTU, didn't support Meanwell chargers, and buying a Victron would have violated my cost criteria.
- The Trucki Stick would have been able to control Meanwell chargers, but on the inverter side, only Sun or Lumentree were supported. With those inverters I wouldn't have fulfilled my efficiency & silence criteria.
- Other solutions found on various YouTube channels were not AC-coupled or didn't include controllable chargers and inverters, which would have violated my "zero export" criteria.
I must however give credit to Thomas Basler (and everybody who supported him) for their OpenDTU project, without their achievements I would never have managed to get the Hoymiles radio communication working. A big "thank you" also goes to Christian from Der Kanal and Thomas from MaInTec who demonstrated that Meanwell LED drivers can be used as controllable battery chargers.
My solution has been up and running for several years, it over-achieves my initial goal and over-fulfils all of my criteria. I called it "BinSmart ESS" (my surname is Binder). BinSmart ESS looks like this.
The ESP32 code was written with Arduino IDE. I have restrained from developing a frontend app for Windows, iOS or Android. The frontend functionality is very simple, popular telnet clients like Putty or Termius are sufficient to visualize BinSmart's status and handle user commands. If the font "Cascadia Code" is chosen, all special characters are displayed correctly - see screenshot.
Some parameters can be modified on the fly, via telnet client. The software config (e.g. IP addresses) needs to be changed in the file "BinSmart_cfg.h", which requires re-compilation and upload (via OTA) after every change.
Feel free to use any parts of my code for your own project. For larger installations with, say, 800 Wp (today's limit for a "Balkonkraftwerk") you would probably use a larger battery, BMS, charger and inverter, but the software config could be adapted accordingly.
Personal note: I learned programming in the 1980s, the days of BASIC and Pascal. ESP32's ancestor (Intel 8051) had to be programmed with assembler to achieve acceptable performance. Before internet, java and object-oriented programming became mainstream, I moved into project management and didn't do any programming for 30 years. My code is obviously not "state of the art", it's procedural and full of global variables, but it works beautifully. If anybody is willing to port my code to proper C++, please go ahead!