A simple simulation of the Daly Smart BMS for ESP32 via bluetooth BLE (with Arduino). Its purpose is to use this for retrieving current values from Smart BMS without having one running. Only same sample values are sent as response, not all things works (especially no write actions).
Following data is sent within this simulation:
The number of batteries, min/max values can be apated in the "#define" section.
I used Arduino IDE for development and installed "esp32" board using board manager.
To test this simulation, you can use the "Smart BMS App" and connect via bluetooth to "DL-40D63C3223A2" (bluetooth and location must be activated): https://play.google.com/store/apps/details?id=com.inuker.bluetooth.daliy&hl=de&gl=US
This section does not contain the full data format for Daly Smart BMS (there seems to be different Smart BMS that uses another data format, anyway), because I found no official documentation on this and therefore I analyzed the data packets. The results of my analysis are documented in this section. It seems to be the case that Smart BMS is waiting for some data (because Android App does send commands to my simulation while connected to it), but I do not know how to interpret these data yet. This section will be updated if I get new insights on the data format.
Daly Smart BMS expects following commands (data from client to Smart BMS):
Daly Smart BMS uses the following format to send data (data from Smart BMS to a client):
<HEADER_READ><CONTENT_LENGTH><CONTENT><CRC>
<-----------CRC relevant------------->
The content lengths are in bytes:
All positions needs 2 bytes:
<App Version: 16 bytes as String> (reversed), <MCU Version: 16 bytes as String>, <Machine Version: 32 bytes as String>
16 values (each 2 byte): Battery volt (in mV)