HomeAssistant Bluetooth BMS Monitoring Server Guide

This is a guide for all those out there that are a bit crazy and need to know their cell voltages at all times, even when not at home. This is also helpful because we typically bypass our BMS for discharge, making it easy to miss a warning.

The guide will show you how you can set up a raspberry pi, old laptop or NUC (needs to have a BLE card!) as a server that will pull data from xiaoxiang/JBD/LTT bmses and make history graphs from them. You can set up alarms and thresholds to trigger other actions based on the state of your pack.

This is an automation example. Will remind you everyday to charge your pack if its below 80%!

Step 1 install home assistant on a device:

If you get stuck on this, this might not be for you.
I could prepare a preflashed sd image for PIs for people who have difficulties.

Step 2 install the batmon addon in home assistant
(If you don’t have a BLE chip onboard you can install jdb-esp on an esp32 instead)
First install the MQTT addon then install the batmon addon:
Get a way to connect to the BMS systems through batmon:

Install this in HomeAssistant

Step 3 set up

Lmk if there are questions :wink:


Yoooo! This is an idea I had like a month ago, awesome to see someone not only do it, but make a guide for others! Thank you! :smiley:


I will improve on this guide. It is in a very rough state atm.

1 Like

I use this for my Home lifepo battery, never thought about my Boards but might try for the bt active balancer :thinking:

1 Like

I got some serious whiplash because this was my desk when I opened the topic

1 Like

Any homeassistant related questions feel free to ask.

I have been with the project from the beginning.

1 Like

guide updated and cleaned

@xsynatic did i post this in the right place?

1 Like

Iam currently working on a project that Will display your battery stats on a small OLED.

This way you can have a small device (esp32) connected through Bluetooth or even straight to UART and monitor the pack. Handy if you want to have a display on the wall


Will be using this project:

any chance this works with a docker installation (without “addons”) but hacs?

You can use esphome on an esp32 and then relay the data this way to your Hass server.

That would imo be the easiest way in your case.
Also gives you more options, because with the batmon addon you are assuming your battery is stored next to your Hass server.

Using an esp32 and esphome gives you the option to put your battery anywhere where you have wifi coverage.

1 Like


Nice, that’s awesome.


Damn, I’m getting:
14:15:29 ERROR [sampling] Bigboi-12s8p error: <class 'TimeoutError'>
on both batteries after they claim they connected. Both are Xiaoxiang bms
Here’s my config:

- address: a4:c1:38:46:7e:19
  type: jbd
  alias: mountainboard-12s8p
- address: A4:C1:38:66:BC:2E
  type: jbd
  alias: Bigboi-12s8p

Anyone know what I’m missing?

This is through the batmon addon I assume?
Please post full log

This might be an issue with the MQTT broker

I commented out one of the boards before running it again and turned on verbose mode:

Have you tried rebooting? The bluez stack can be a bit wonky.

I did several times. I have some esp32’s coming tomorrow or the day after I’ll try again with those.

Gonna take a better look at those logs tomorrow

Do you have “power cycle BT” enabled ?