I am using a Daly Smart BMS for my DIY battery build. I chose it because it has the best reputation among the cheaper BMSs available. Unfortunately, it is designed primarily for electric vehicles, so can not communicate directly with an inverter.
To get around this, I am using an Arduino (pro-mini in this case, but just about any 3.3v board should work). It is connected to a MCP2515 (using the reference design from the datasheet in my case, but any MCP2515 shield should work) to communicate with the inverter, and a MAX3485 shield for RS485 comms with the BMS.
Basic connections are documented in the source code. Largely it just relays the BMS outputs to Pylontech compatible CAN messages.
The trickiest bit (which would probably require some tuning per installation) is in derate.h, which is responsible for reducing the charge current/voltage if an imbalance occurs when cells are nearly full. These algorithms are developed experimentally to the requirements of my Deye 8kW inverter. Basically, then inverter is a lot better at controlling charge voltage than charge current, and the inverter HATES rapidly changing targets, so there is a lot of hand tuning involved to make sure that the outputs work well with the inverter, without risking overcharging any cells.
It is not really directly usable as-is, but can serve as a starting point for someone developing a similar protocol translator.