diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 4239120..61d82ab 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -178,6 +178,7 @@ jobs: esphome -s external_components_source components config esp8266-boqiang-bms001-example-debug.yaml esphome -s external_components_source components config esp8266-boqiang-bms001-example-faker.yaml esphome -s external_components_source components config esp8266-example-multiple-battery-banks.yaml + esphome -s external_components_source components config esp8266-seplos-v3-example.yaml - name: Validate esp32 example configurations run: | esphome -s external_components_source components config esp32-example.yaml @@ -189,6 +190,7 @@ jobs: esphome -s external_components_source components config esp32-boqiang-bms001-example.yaml esphome -s external_components_source components config esp32-boqiang-bms001-example-debug.yaml esphome -s external_components_source components config esp32-boqiang-bms001-example-faker.yaml + esphome -s external_components_source components config esp32-seplos-v3-example.yaml - name: Validate test configurations run: | esphome -s external_components_source ../components config tests/esp8266-boqiang-emulator.yaml @@ -238,7 +240,9 @@ jobs: esphome -s external_components_source components compile esp8266-example-faker.yaml esphome -s external_components_source components compile esp8266-boqiang-example-faker.yaml esphome -s external_components_source components compile esp8266-example-multiple-battery-banks.yaml + esphome -s external_components_source components compile esp8266-seplos-v3-example.yaml - name: Compile esp32 example configurations run: | esphome -s external_components_source components compile esp32-example-faker.yaml esphome -s external_components_source components compile esp32-boqiang-example-faker.yaml + esphome -s external_components_source components compile esp32-seplos-v3-example.yaml diff --git a/docs/XZH BMS Modbus-RTU Protocol.pdf b/docs/XZH BMS Modbus-RTU Protocol.pdf new file mode 100644 index 0000000..7f54331 Binary files /dev/null and b/docs/XZH BMS Modbus-RTU Protocol.pdf differ diff --git a/esp32-seplos-v3-example.yaml b/esp32-seplos-v3-example.yaml new file mode 100644 index 0000000..12c7ca0 --- /dev/null +++ b/esp32-seplos-v3-example.yaml @@ -0,0 +1,529 @@ +substitutions: + name: seplos-bms + device_description: "Monitor and control a Seplos V3 BMS via RS485 (Modbus)" + tx_pin: GPIO4 + rx_pin: GPIO5 + +esphome: + name: ${name} + comment: ${device_description} + project: + name: "syssi.esphome-seplos-bms" + version: 1.0.0 + +esp8266: + board: d1_mini + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + +ota: + +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: + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${name} total voltage" + address: 0x1000 + register_type: holding + value_type: U_WORD + unit_of_measurement: "V" + device_class: voltage + state_class: measurement + accuracy_decimals: 2 + filters: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${name} current" + address: 0x1001 + register_type: holding + value_type: S_WORD + unit_of_measurement: "A" + device_class: current + state_class: measurement + accuracy_decimals: 2 + filters: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${name} state of charge" + address: 0x1005 + register_type: holding + value_type: U_WORD + unit_of_measurement: "%" + device_class: battery + state_class: measurement + accuracy_decimals: 0 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${name} state of health" + address: 0x1006 + register_type: holding + value_type: U_WORD + unit_of_measurement: "%" + state_class: measurement + accuracy_decimals: 0 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${name} cycle" + address: 0x1007 + register_type: read + value_type: U_WORD + unit_of_measurement: "" + state_class: measurement + accuracy_decimals: 0 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 + + # 0x100F Max Discharging Current + # 0x1010 Max Charging Current + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 diff --git a/esp8266-seplos-v3-example.yaml b/esp8266-seplos-v3-example.yaml new file mode 100644 index 0000000..21714f5 --- /dev/null +++ b/esp8266-seplos-v3-example.yaml @@ -0,0 +1,531 @@ +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} + comment: ${device_description} + project: + name: "syssi.esphome-seplos-bms" + version: 1.0.0 + +esp32: + board: wemos_d1_mini32 + framework: + type: esp-idf + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + +ota: + +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: + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${name} total voltage" + address: 0x1000 + register_type: holding + value_type: U_WORD + unit_of_measurement: "V" + device_class: voltage + state_class: measurement + accuracy_decimals: 2 + filters: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${name} current" + address: 0x1001 + register_type: holding + value_type: S_WORD + unit_of_measurement: "A" + device_class: current + state_class: measurement + accuracy_decimals: 2 + filters: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${name} state of charge" + address: 0x1005 + register_type: holding + value_type: U_WORD + unit_of_measurement: "%" + device_class: battery + state_class: measurement + accuracy_decimals: 0 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${name} state of health" + address: 0x1006 + register_type: holding + value_type: U_WORD + unit_of_measurement: "%" + state_class: measurement + accuracy_decimals: 0 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${name} cycle" + address: 0x1007 + register_type: read + value_type: U_WORD + unit_of_measurement: "" + state_class: measurement + accuracy_decimals: 0 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 + + # 0x100F Max Discharging Current + # 0x1010 Max Charging Current + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01 + + - platform: modbus_controller + modbus_controller_id: bms0 + name: "${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: + - multiply: 0.01