Initial commit: Xiaoxiang Smart BMS Home Assistant integration

- BLE GATT communication via bleak (UART-over-GATT, service 0xff00)
- Parses 0x03 (general info) and 0x04 (cell voltages) frames
- Protocol verified against official RS485/UART spec V4
- DataUpdateCoordinator with 5s poll interval (configurable 2-60s)
- Auto-reconnect on BLE disconnect
- Config flow: BT auto-discovery + manual MAC entry + options flow
- Sensors: voltage, current, power, SoC, capacity, cycles, temps, cells, cell delta
- HACS-ready (hacs.json, manifest.json)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-11 19:07:18 +02:00
commit 4a769bf50f
14 changed files with 1333 additions and 0 deletions
@@ -0,0 +1,40 @@
{
"config": {
"step": {
"user": {
"title": "Xiaoxiang Smart BMS",
"description": "Enter the Bluetooth address of your BMS, or select a discovered device from the dropdown.",
"data": {
"address": "Bluetooth Address"
},
"data_description": {
"address": "MAC address of the BMS (e.g. AA:BB:CC:DD:EE:FF). Tip: pair the device first via your system Bluetooth settings."
}
},
"confirm": {
"title": "Confirm Xiaoxiang BMS",
"description": "Connect to **{name}** ({address})?\n\nMake sure the BMS is powered on and within Bluetooth range."
}
},
"abort": {
"already_configured": "This BMS is already configured."
},
"error": {
"cannot_connect": "Unable to connect to the BMS. Check the address and try again."
}
},
"options": {
"step": {
"init": {
"title": "BMS Options",
"description": "Adjust the polling interval. Lower values give more accurate real-time readings but use more Bluetooth bandwidth.",
"data": {
"poll_interval": "Poll interval (seconds)"
},
"data_description": {
"poll_interval": "How often to request data from the BMS (260 seconds). Default is 5 s for solar/energy monitoring."
}
}
}
}
}