diy solar

diy solar

My experience with Batrium BMS

thoriumjoe

New Member
Joined
Jan 25, 2021
Messages
16
At the genesis of my solar indoctrination I started with JK and Daly BMS, for my smaller battery packs, they worked ok, but I didn't feel comfortable with using them on my main battery storage. So I started my research, I looked at Orion and others, but Batrium came out on top, both on features and versatility. As such, decided to get the WatchMon Core and two Cellmates K9s. Yes, the price stings a bit but much like my inverter and panels, I wanted the best equipment.

So, how is it going thus far? After receiving the parts, I scheduled a support call with the land down under. This was 30min engagement, and let me tell you, their service is amazing. They helped me adjust charge and discharge curves so that my Solark 15K could manage the battery charge/discharge. I also wanted to use Batrium relay to shutdown battery power, using breaker (see pic) if anything bad happened. All the features I wanted, this BMS can do a lot more things, all in a nice package. Recently they have added cloud access, I can now monitor, even upgrade, the BMS from the cloud.
But, I still desire more features, and this is where Batrium is still lagging behind. I am very anti cloud services, I prefer self hosted. I run Home Assistant and MQTT, I wish Batrium had at least MQTT capability. This would be a fantastic feature!!

In summary, I recommend Batrium to anyone who want peace of mind and appreciates good engineering.

DIY battery boxes from AliExpress (with 304AH cells from Sunfun Kits).
DIY battery case.jpg
Breaker, connected to Batrium as fail safe.
batrium cabinet.jpg
 
I've been running Batrium for 7 years and it's been a good solution for me. In particular, I like 1) expanding my battery but maintaining a single fixed core for data/reporting where all I have to do is change the number of packs/cells and 2) clear data on each pack/cell to give me assurance my 121kwh home powerwall is not going to go crazy!
1719880987206.png
Like you, I do not do anything in the cloud, everything is local.


>I wish Batrium had at least MQTT capability.
There are a couple of approaches to extract data locally and I think you can also write changes to the Watchmon but cannot confirm.

1) There is a pre-done github - https://github.com/batrium - with listener software that "WatchMon UDP Binary Listener translates to JSON and stores to influxdb". In cooperation with Batrium published Watchmon UDP spec ("Watchmon WiFi UDP Protocol" PDF on this page - https://wiki.batrium.com/en/faq/native-canbus-protocols ).

2) One can parse the Snapshot Report - it's a readable text file with Watchmon data dump. Early on I went with dumping and parsing the Snapshot report every 5 mins / loading this into my own DB automatically.
1719880028781.png
for history and dashboard display info like this ....
1719880127312.png
I will admit, as a retired software dev engineer this was straight forward for me but then I've had a lot of practice parsing text files and loading values into DBs.


3) One can write you're own code from scratch using the Watchmon UPD Protocol mentioned above. Here's a prototype (proof of concept) PHP program to extract the "Minimum Cell Voltage" of a particular Watchmon (SYS8560) to show what's involved.
1719880283889.png
Here's the output from the code above - I have 2 x active Watchmons. You have to cycle thru the bits several times till the data you're after is available - e.g. the reason for the looping till data found. In practice, a custom piece of software would loop endlessly and pick off data as the Watchmon publishes it. NOTE: Batrium security warning - the UPD data is not encrypted and plain bytes on you're local WiFi
1719880617257.png
This run reported 3.630v as the minimum pack voltage.

It's not conceptually difficult so much as a lot of detailed spec reading / byte parsing till you get what you want. There are hundreds of data points available and it helps to understand Batrium concepts.
 
Last edited:
Amazing setup and fantastic skills!!
I have looked at and tried WatchMonUDPListener but found, maybe it's just me, that being dependent on Node Red for the pushing data into Home Assistant was a bit messy. I like to reduce software dependencies as much as possible. Although my Proxmox servers can handle it, I just get a bit OCD about it... MQTT would be so much easier. Also, as you stated, the is a huge set of data points to keep track of and update when a new software version comes out.
I hope Batrium as it on their roadmap. Not a show stopper at all for me, the BMS has abundant features, I just think it's a great opportunity and community for Batrium to get into.

PS. man, that's a lot of cells. Someday I'll get more cells and grow my available power.

Screenshot 2024-07-01 at 7.56.45 PM.png
 
Last edited:
BatriumLog ?


looks to be a less complicated solution
Looks interesting but.... all I see are a couple of .md files (text files) and screen shots (graphic files) but could not find any code. Maybe I'm missing something but interested and will follow any comments/more-detail. Even if there's code, it's limited to 16cells at present per comment and missing a lot of values - would need some work.
 
Last edited:
Thanks Kommando.
The project has not had any updates since 2020 😞 Im hoping Batrium builds this natively on their software.
 
I downloaded batriumlog_102.zip , from the releases page. Once extracted I got batriumlog file, Unix executable file.
View attachment 226121
But I haven't placed it on my raspberrypi to test.
Interesting - this is what I got. Where did you find the executable?
1719941883084.png

However, a single executable is not source and you won't be able to expand beyond 16 cells? Can this be edited to expand the number of cells and/or other fields or is it fixed in the exe?
--------------------------------
mqttvalues.md
## Values sent over MQTT

- solpiplog//batrium/volt
- solpiplog/batrium/ampere
- solpiplog/batrium/soc
- solpiplog/batrium/status
- solpiplog/batrium/cell1minv
- solpiplog/batrium/cell1maxv
- solpiplog/batrium/cell2minv
- solpiplog/batrium/cell2maxv
- solpiplog/batrium/cell3minv
- solpiplog/batrium/cell3maxv
- solpiplog/batrium/cell4minv
- solpiplog/batrium/cell4maxv
- solpiplog/batrium/cell5minv
- solpiplog/batrium/cell5maxv
- solpiplog/batrium/cell6minv
- solpiplog/batrium/cell6maxv
- solpiplog/batrium/cell7minv
- solpiplog/batrium/cell7maxv
- solpiplog/batrium/cell8minv
- solpiplog/batrium/cell8maxv
- solpiplog/batrium/chargeva
- solpiplog/batrium/dischargeva
- solpiplog/batrium/relais1
- solpiplog/batrium/relais2
- solpiplog/batrium/relais3
- solpiplog/batrium/relais4
- solpiplog/batrium/output5
- solpiplog/batrium/output6
- solpiplog/batrium/output7
- solpiplog/batrium/output8
 
Last edited:
Unless you can decompile the executable back to code then it are stuck with it as is, but Unix executables can be decompiled.
 

diy solar

diy solar
Back
Top