After a week of chasing a phantom “broken discharge FET” on my Seplos Mason 280 (10E BMS, 16S LiFePO4, 314 Ah), I ended up reverse-verifying the whole Seplos BMS 3.0 Modbus protocol against the live pack - and it turns out you can get everything into Home Assistant with nothing but the built-in modbus integration. No HACS custom component, no ESP32, no MQTT bridge, no Windows software.
Plug a USB-RS485 adapter into your HA machine, paste one YAML block, restart: 28 entities, including all 16 cell voltages, SOC/SOH/cycles, MOSFET temperature and - the part I really wanted - the charge/discharge FET states and protection bits as binary sensors.
Full write-up, tested YAML and a standalone diagnostic script:
GitHub - rolandfiege69-svg/seplos-v3-ha-modbus: Seplos BMS V3 (Mason/10E) in Home Assistant with plain Modbus YAML - no custom component, no ESP, no MQTT. All 16 cell voltages, FET states, full register map. · GitHub
The hard-won facts nobody had posted in one place (this forum’s older Seplos V3 Modbus thread died unanswered):
- BMS 3.0 firmware does not answer the old Seplos ASCII protocol (
~2000...frames) - it ignores them silently. If your V3 pack seems “dead” on RS485, that is why. It speaks Modbus RTU, 19200 8N1 on the RS485-1 port. -
- Slave address = DIP switch address. All DIP off = address 0, and yes, the pack really answers on 0 (the nominal broadcast address) - works fine with HA/pymodbus.
-
- Input registers (fc 0x04):
0x1000pack voltage (0.01 V),0x1001current signed (0.01 A),0x1002remaining capacity,0x1005SOC (0.1 %),0x1006SOH,0x1007cycles,0x1100-0x110Fcell voltages 1-16 (mV),0x1118MOSFET temp,0x1119ambient temp (0.1 K).
- Input registers (fc 0x04):
-
- Coils (fc 0x01, base
0x1200): offset 120 = discharge FET, 121 = charge FET, 64/65/68 = discharging/charging/idle.
- Coils (fc 0x01, base
-
- RJ45 pinout on the BMS: pin 1 = B-, pin 2 = A+, pins 3/6 = GND. The USB adapter Seplos ships in the box works out of the box.
Verified end-to-end on HA OS (Raspberry Pi, Core 2026.7) under a 15 kW load test. Caveat: register/coil map verified on one Mason 280/10E pack - reports from other packs and firmware versions are very welcome, especially the coil offsets.
- RJ45 pinout on the BMS: pin 1 = B-, pin 2 = A+, pins 3/6 = GND. The USB adapter Seplos ships in the box works out of the box.
Bonus war story: the “broken” battery was fine all along - the real bug was the Deye inverter’s Time-of-Use setting (Disabled = battery is backup-only and never discharges grid-parallel). The BMS data proved the pack innocent in five minutes. That is exactly why having FET states and protection bits in HA is worth it.