Issue integrating 100balance BMS with ESPHome via RS-485

@Footz355, Now there is BLE implementation for the same and works great. You can try daly bms smart support ( blue version ) · Issue #145 · patman15/BMS_BLE-HA · GitHub

This is still in testing and will be released soon.

1 Like

Hi everyone,

I’m using an ESPHome configuration I found on the Home Assistant community forum to integrate my BMS. Everything is working as expected, except for the balancer current.

In my case, the balancer current (id: balancecurrent) shows as 30mA, but the BMS itself indicates it should be 0mA. This discrepancy makes me wonder if there’s an issue with the Modbus configuration, scaling, or interpretation of the values.

  • Hardware: ESP32 (ESP32-S2-Saola-1)
  • BMS Model: [Specify your BMS model here]
  • Firmware: ESPHome with Modbus integration
  • Configuration for the Balancer Current:
- platform: template
  id: balancecurrent
  name: "Balance Current" # 0x4E register
  filters:
    - multiply: 0.001
  accuracy_decimals: 0
  unit_of_measurement: "mA" # guessing
  device_class: battery
  state_class: measurement
  icon: mdi:scale-unbalanced

The value seems to be read from register 0x4E using Modbus.

My Questions:

  1. Has anyone experienced this discrepancy with the balancer current?
  2. Could the scaling factor (multiply: 0.001) or register assignment be incorrect for this specific BMS?
  3. Is there a better way to verify or debug the raw Modbus data to ensure accuracy?

Any guidance or suggestions would be greatly appreciated! If additional details are needed, let me know.

According to the register sheet unit is 0.1A, so the correct conversion to mA should be multiply 100, which doesn’t make sense?
Reading modbus serial data one way or another doesn’t affect accuracy anyhow.
Only thing missing here is CRC check. So data could be corrupted giving totally non-sense values.

Hi. I can not understand why it takes 5-10 minutes… So it happens every time you reboot esp32? I try to assemble the same but I do not use the RS485 yet (I use UART) and it worked some how 1 day but now it reads data partially

Does your solution work stable? I mean does it reboot itself periodycally?

My solution was ok some time

but after 8 hours it stopeed work as it was before.

Now it works again - weird.

Wow, thanks for the tip. Just managed to get it to work after understanding ESPHome bluetooth proxy. Thank you!

1 Like

@Working really well for me. Only issue is esp32 gets disconnected sometimes then need to reboot esp32.

very nice… wish they would incorporate the individual cell voltage sensors. Took me a while to create all 16 of them.

Have any one figure out how to get the total charge and discharge WH numbers? I want to add the default power dashboard to record the wh that’s used to charge and discharge the 100balance bms batteries.

If you are talking about default HA energy dashboard I have firstly power entity of my BMS converted to absolute values:

- sensor:
       - name: "Battery Power Input"
         unit_of_measurement: "W"
         device_class: power
         unique_id: Battery Input Power
        
         state: >
           {% if states('sensor.jhb_501806010289_moc')|float >= 0 %}
             {{ states('sensor.jhb_501806010289_moc') }}
           {% else %}
             0
           {% endif %}
       - name: "Battery Power Output"
         unit_of_measurement: "W"
         device_class: power
         unique_id: Battery Output Power
        
         state: >
           {% if states('sensor.jhb_501806010289_moc')|float < 0 %}
             {{ -1* states('sensor.jhb_501806010289_moc')|float }}
           {% else %}
             0
           {% endif %}

And later use integral helper to change this into energy. Mind you this is an example of old config I have where my power came from my inverter. Now the BMS_BLE integration provides me with energy in Wh so probably that could be used directly after a bit of mathematical processing.

FYI because I just stumbled upon this thread:

I wrote a custom component for this new DALY protocol (used by H/K/M/S-Series and 100Balance BMS), which supports most registers (if any important are missing, you can tell me and I can add them) and can request data from multiple BMS on one RS485 bus:

Yes, it’s for default HA Energy Dashboard. I’m also using the BMS_BLE integration but can’t figure out a way to track “used” watt. There’s only 1 field that shows WH (stored energy)

. I don’t see a way to track “used” watt over time… Feel like it has to be provided by BMS to keep track and gets reset daily just like JK BMS.

hello i would like to connect esp32 to 100 balance bms uart-uart communication. Can you give me an example configuration?

There is a full example in the readme of the github repo.

What address should I enter to connect to bms 100balance bms?
daly_hkms_bms:

  • modbus_id: bms_modbus
    id: bms_1
    address: 1
    update_interval: 10s

the default address is 1, so your example is correct.