Nice work! And as @HateGrid already mentioned, if you change the board number on your DALY BMS, you can address them separately using a single RS485 bus (or CAN, but I did not verify that). I have four 16S batteries in parallel reporting to one single RasPi on a RS485 bus. I had to flash the DALY BMS first though (check out my post in the resource section).I am also running three 16S packs in parallel with each a Daly Smart BMS 250A - without any parallel module from Daly.
I wrote a tool to read out the data from the BMSes with a 10-second time interval and "merge" the data together to a single "virtual battery". The data is then pushed via MQTT to the inverter system (Victron), which only sees 1 single battery. More info on my setup here: https://community.victronenergy.com...services-creates-dbus-services-from-mqtt.html
When SoC reaches near 100%, some cells typically "run away" and quickly rise above 3.45V - while others still are at 3.35V-ish. With this setup, it is possible to detect those "runners" and tell the inverter to stop/decrease charging - to prevent overload those cells. If I only looked at the total voltage, this would not be possible to detect and some cells would probably get damanged (or the BMS cuts-off).
See attached graphs of all cell voltages as SoC reached 99%
Regarding SoC: The DALY SoC numbers are virtually useless if you draw small currents. It seems there is no plausibility check with cell voltage. It seems to be a mere in/out-counter for current values and as known, DALY seems not to be able to detect anything below 0,3A (my experience with 100A-type BMS for 4S, 8S and 16S batteries). Hence I have batteries reporting 99.1% SoC but a cell voltage of 3.1V ...
So I will take your idea and extend my Python script with the surveillance of single cell voltages as I check right now only overall voltage. Thanks for the inspiration!