Open clowrey opened 5 months ago
I made a simple change to get the request accepted by the BMS!
In the seplos_modbus.cpp line 158
data.push_back(0x46); // CID1
data.push_back(0xD5); // CID1 was 0x46
Then I started hacking up the seplos_modbus.cpp file to get the last bits of data.. This BMS does not output a SOC - you have to calculate it based on the residual_capacity / rated_capacity - But its now working!!
You can see the changes I have made in my fork here: https://github.com/clowrey/esphome-seplos-bms/blob/main/components/seplos_bms/seplos_bms.cpp
I need to clean it up and update the comments which are still from the old data types.. not sure how or if these changes would be pushed back to origin. I am open to suggestions, just trying to get mine working currently, obviously current method breaks things for the other batteries.
This BMS seems to use a very similar protocol to the Seplos, as this project is able to decode some of the data already when I connect it in parallel with the other batteries RS485 (it needs a different read command which this code does not send by default) But it can decode most of the data when it is received.
Battery not connected currently so current showing zero is fine. The battery SOC did not display yet.
I tried updating the protocol to 80 which shows it outputting "~80004642E00200FD31\r" which is farily close to the command coming from the master battery that produces the mostly decodable data "~8000D542E00201FD21\r"
That is the data for the battery 1 the slave battery. The master battery is probably just not requesting data of itself I suppose..
I will try to hack on it more later ran out of time. Any hints appreciated.