This doesnt seem like a crc to me (at least not as presented in the above list)
Do you have the result from the above returned data? Maybe byte 3 is part data
Have you tried 'faking' the BMS with another serial output and sending the 3 bytes?
Also this doc https://github.com/jblance/mpp-solar/blob/master/docs/protocols/DALY-Daly_RS485_UART_Protocol.pdf
The below python seems to work from my testing
Generate 8 bit CRC of supplied string
CRC = 0
# for j in range(0, len(str),2):