substitutions: name: seplos-bms device_description: "Monitor and control a Seplos V3 BMS via RS485 (Modbus)" tx_pin: GPIO16 rx_pin: GPIO17 esphome: name: ${name} friendly_name: ${name} comment: ${device_description} project: name: "syssi.esphome-seplos-bms" version: 1.6.0 esp32: board: wemos_d1_mini32 framework: type: esp-idf wifi: ssid: !secret wifi_ssid password: !secret wifi_password min_auth_mode: WPA2 ota: platform: esphome logger: level: DEBUG # If you use Home Assistant please remove this `mqtt` section and uncomment the `api` component! # The native API has many advantages over MQTT: https://esphome.io/components/api.html#advantages-over-mqtt mqtt: broker: !secret mqtt_host username: !secret mqtt_username password: !secret mqtt_password id: mqtt_client # api: uart: - id: uart_0 baud_rate: 19200 tx_pin: ${tx_pin} rx_pin: ${rx_pin} debug: direction: BOTH dummy_receiver: false modbus: - id: modbus0 uart_id: uart_0 send_wait_time: 200ms modbus_controller: - id: bms0 address: 0x00 modbus_id: modbus0 command_throttle: 200ms update_interval: 10s sensor: # 1000 Pack Voltage R UINT16 2 10mV - platform: modbus_controller modbus_controller_id: bms0 name: "total voltage" address: 0x1000 register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 2 filters: - multiply: 0.01 # 1001 Current R INT16 2 10mA - platform: modbus_controller modbus_controller_id: bms0 name: "current" address: 0x1001 register_type: read value_type: S_WORD unit_of_measurement: "A" device_class: current state_class: measurement accuracy_decimals: 2 filters: - multiply: 0.01 # 1002 Remaining capacity R UINT16 2 10mAH - platform: modbus_controller modbus_controller_id: bms0 name: "remaining capacity" address: 0x1002 register_type: read value_type: U_WORD unit_of_measurement: "Ah" state_class: measurement accuracy_decimals: 2 filters: - multiply: 0.01 # 1003 Total Capacity R UINT16 2 10mAH - platform: modbus_controller modbus_controller_id: bms0 name: "total capacity" address: 0x1003 register_type: read value_type: U_WORD unit_of_measurement: "Ah" state_class: measurement accuracy_decimals: 2 filters: - multiply: 0.01 # 1004 Total Discharge Capacity R UINT16 2 10AH - platform: modbus_controller modbus_controller_id: bms0 name: "total discharge capacity" address: 0x1004 register_type: read value_type: U_WORD unit_of_measurement: "Ah" state_class: measurement accuracy_decimals: 2 filters: - multiply: 0.01 # 1005 SOC R UINT16 2 0.1% - platform: modbus_controller modbus_controller_id: bms0 name: "state of charge" address: 0x1005 register_type: read value_type: U_WORD unit_of_measurement: "%" device_class: battery state_class: measurement accuracy_decimals: 0 filters: - multiply: 0.1 # 1006 SOH R UINT16 2 0.1% - platform: modbus_controller modbus_controller_id: bms0 name: "state of health" address: 0x1006 register_type: read value_type: U_WORD unit_of_measurement: "%" state_class: measurement accuracy_decimals: 0 # 1007 Cycle R UINT16 2 1 - platform: modbus_controller modbus_controller_id: bms0 name: "cycle" address: 0x1007 register_type: read value_type: U_WORD unit_of_measurement: "" state_class: measurement accuracy_decimals: 0 # 1008 Averag of Cell Votage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "average cell voltage" address: 0x1008 register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 1009 Averag of Cell Temperature R UINT16 2 0.1K - platform: modbus_controller modbus_controller_id: bms0 name: "average cell temperature" address: 0x1009 register_type: read value_type: S_WORD unit_of_measurement: "°C" device_class: temperature state_class: measurement accuracy_decimals: 1 filters: - offset: -2731.5 - multiply: 0.1 # 100A Max Cell Voltage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "max cell voltage" address: 0x100A register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 100B Min Cell Voltage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "min cell voltage" address: 0x100B register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 100C Max Cell Temperature R UINT16 2 0.1K - platform: modbus_controller modbus_controller_id: bms0 name: "max cell temperature" address: 0x100C register_type: read value_type: S_WORD unit_of_measurement: "°C" device_class: temperature state_class: measurement accuracy_decimals: 1 filters: - offset: -2731.5 - multiply: 0.1 # 100D Min Cell Temperature R UINT16 2 0.1K - platform: modbus_controller modbus_controller_id: bms0 name: "min cell temperature" address: 0x100D register_type: read value_type: S_WORD unit_of_measurement: "°C" device_class: temperature state_class: measurement accuracy_decimals: 1 filters: - offset: -2731.5 - multiply: 0.1 # 100F MaxDisCurt R UINT16 2 1A # Max Discharging Current # 1010 MaxChgCurt R UINT16 2 1A # Max Charging Current # 1100 Cell1 Voltage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "cell voltage 1" address: 0x1100 register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 1101 Cell2 Voltage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "cell voltage 2" address: 0x1101 register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 1102 Cell3 Voltage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "cell voltage 3" address: 0x1102 register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 1103 Cell4 Voltage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "cell voltage 4" address: 0x1103 register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 1104 Cell5 Voltage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "cell voltage 5" address: 0x1104 register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 1105 Cell6 Voltage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "cell voltage 6" address: 0x1105 register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 1106 Cell7 Voltage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "cell voltage 7" address: 0x1106 register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 1107 Cell8 Voltage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "cell voltage 8" address: 0x1107 register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 1108 Cell9 Voltage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "cell voltage 9" address: 0x1108 register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 1109 Cell10 Voltage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "cell voltage 10" address: 0x1109 register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 110A Cell11 Voltage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "cell voltage 11" address: 0x110A register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 110B Cell12 Voltage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "cell voltage 12" address: 0x110B register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 110C Cell13 Voltage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "cell voltage 13" address: 0x110C register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 110D Cell14 Voltage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "cell voltage 14" address: 0x110D register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 110E Cell15 Voltage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "cell voltage 15" address: 0x110E register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 110F Cell16 Voltage R UINT16 2 1mV - platform: modbus_controller modbus_controller_id: bms0 name: "cell voltage 16" address: 0x110F register_type: read value_type: U_WORD unit_of_measurement: "V" device_class: voltage state_class: measurement accuracy_decimals: 3 filters: - multiply: 0.001 # 1110 Cell temperature 1 R UINT16 2 0.1K - platform: modbus_controller modbus_controller_id: bms0 name: "cell temperature 1" address: 0x1110 register_type: read value_type: S_WORD unit_of_measurement: "°C" device_class: temperature state_class: measurement accuracy_decimals: 1 filters: - offset: -2731.5 - multiply: 0.1 # 1111 Cell temperature 2 R UINT16 2 0.1K - platform: modbus_controller modbus_controller_id: bms0 name: "cell temperature 2" address: 0x1111 register_type: read value_type: S_WORD unit_of_measurement: "°C" device_class: temperature state_class: measurement accuracy_decimals: 1 filters: - offset: -2731.5 - multiply: 0.1 # 1112 Cell temperature 3 R UINT16 2 0.1K - platform: modbus_controller modbus_controller_id: bms0 name: "cell temperature 3" address: 0x1112 register_type: read value_type: S_WORD unit_of_measurement: "°C" device_class: temperature state_class: measurement accuracy_decimals: 1 filters: - offset: -2731.5 - multiply: 0.1 # 1113 Cell temperature 4 R UINT16 2 0.1K - platform: modbus_controller modbus_controller_id: bms0 name: "cell temperature 4" address: 0x1113 register_type: read value_type: S_WORD unit_of_measurement: "°C" device_class: temperature state_class: measurement accuracy_decimals: 1 filters: - offset: -2731.5 - multiply: 0.1 # 1118 Environment Temperature R UINT16 2 0.1K - platform: modbus_controller modbus_controller_id: bms0 name: "environment temperature" address: 0x1118 register_type: read value_type: S_WORD unit_of_measurement: "°C" device_class: temperature state_class: measurement accuracy_decimals: 1 filters: - offset: -2731.5 - multiply: 0.1 # 1119 Power temperature R UINT16 2 0.1K - platform: modbus_controller modbus_controller_id: bms0 name: "mosfet temperature" address: 0x1119 register_type: read value_type: S_WORD unit_of_measurement: "°C" device_class: temperature state_class: measurement accuracy_decimals: 1 filters: - offset: -2731.5 - multiply: 0.1 # Pack Info C # # 1200 Cells voltage 08-01low alarm state R HEX 1 1:alarm # 1208 Cells voltage 16-09low alarm state R HEX 1 1:alarm # 1210 Cells voltage 08-01high alarm state R HEX 1 1:alarm # 1218 Cells voltage 16-09high alarm state R HEX 1 1:alarm # 1220 Cell 08-01 temperature Tlow alarm state R HEX 1 1:alarm # 1228 Cell 08-01 temperature high alarm state R HEX 1 1:alarm # 1230 Cell 08-01 equalization event code R HEX 1 1:on 0:off # 1238 Cell 16-09 equalization event code R HEX 1 1:on 0:off # 1240 System state code R HEX 1 See TB09 # 1248 Voltage event code R HEX 1 See TB02 # 1250 Cells Temperature event code R HEX 1 See TB03 # 1258 Environment and power Temperature event code R HEX 1 See TB04 # 1260 Current event code1 R HEX 1 See TB05 # 1268 Current event code2 R HEX 1 See TB16 # 1270 The residual capacity code R HEX 1 See TB06 # System Parameter reg. 1300...1367 # System Function reg. 1400...1448 # System Control reg. 1500...1519 # History Info reg. 1600...1627 # Version Info reg. 1700...1724 # PCS Control reg. 1800...1823 # EMS Info A reg. 2000...2019 # EMS Info B reg. 2100...2115 # EMS Info C reg. 2200...2248 # # See docs/XZH BMS Modbus-RTU Protocol.pdf