substitutions: name: jk-bms device_description: "Monitor and control a JK-BMS v11 via bluetooth" external_components_source: github://syssi/esphome-jk-bms@main mac_address: C8:47:80:39:31:5D # Please use "JK02_24S" if you own a old JK-BMS < hardware version 11.0 (hardware version >= 6.0 and < 11.0) # Please use "JK02_32S" if you own a new JK-BMS >= hardware version 11.0 (f.e. JK-B2A8S20P hw 11.XW, sw 11.26) # Please use "JK04" if you have some old JK-BMS <= hardware version 3.0 (f.e. JK-B2A16S hw 3.0, sw. 3.3.0) protocol_version: JK02_32S device_host: jk-bms.lan esphome: name: ${name} comment: ${device_description} min_version: 2024.6.0 project: name: "syssi.esphome-jk-bms" version: 2.3.0 esp32: variant: esp32c3 board: esp32-c3-devkitm-1 framework: type: esp-idf external_components: - source: ${external_components_source} refresh: 0s wifi: ssid: !secret wifi_24_name password: !secret wifi_24_pass use_address: ${device_host} logger: level: DEBUG logs: esp32_ble_tracker: INFO esp32_ble_client: INFO web_server: port: 80 auth: username: admin password: superLongP4ss # If you don't use Home Assistant please remove this `api` section and uncomment the `mqtt` component! api: encryption: key: !secret api_encryption_key ota: - platform: esphome password: !secret api_encryption_key on_begin: then: - switch.turn_off: ble_client_switch0 - logger.log: "BLE connection suspended for OTA update" # mqtt: # broker: !secret mqtt_host # username: !secret mqtt_username # password: !secret mqtt_password # id: mqtt_client esp32_ble_tracker: scan_parameters: active: false ble_client: - mac_address: ${mac_address} id: client0 jk_bms_ble: - ble_client_id: client0 protocol_version: ${protocol_version} throttle: 5s id: bms0 binary_sensor: - platform: jk_bms_ble balancing: name: "${name} balancing" charging: name: "${name} charging" discharging: name: "${name} discharging" heating: name: "${name} heating" online_status: name: "${name} online status" dry_contact_1: name: "${name} dry contact 1" dry_contact_2: name: "${name} dry contact 2" button: - platform: jk_bms_ble retrieve_settings: name: "${name} retrieve settings" retrieve_device_info: name: "${name} retrieve device info" number: - platform: jk_bms_ble jk_bms_ble_id: bms0 balance_trigger_voltage: name: "${name} balance trigger voltage" cell_count: name: "${name} cell count" total_battery_capacity: name: "${name} total battery capacity" cell_voltage_overvoltage_protection: name: "${name} cell voltage overvoltage protection" cell_voltage_overvoltage_recovery: name: "${name} cell voltage overvoltage recovery" cell_voltage_undervoltage_protection: name: "${name} cell voltage undervoltage protection" cell_voltage_undervoltage_recovery: name: "${name} cell voltage undervoltage recovery" balance_starting_voltage: name: "${name} balance starting voltage" voltage_calibration: name: "${name} voltage calibration" current_calibration: name: "${name} current calibration" power_off_voltage: name: "${name} power off voltage" max_balance_current: name: "${name} max balance current" max_charge_current: name: "${name} max charge current" max_discharge_current: name: "${name} max discharge current" smart_sleep_voltage: name: "${name} smart sleep voltage" cell_soc100_voltage: name: "${name} cell soc100 voltage" cell_soc0_voltage: name: "${name} cell soc0 voltage" cell_request_charge_voltage: name: "${name} cell request charge voltage" cell_request_float_voltage: name: "${name} cell request float voltage" cell_request_charge_voltage_time: name: "${name} cell request charge voltage time" cell_request_float_voltage_time: name: "${name} cell request float voltage time" charge_overcurrent_protection_delay: name: "${name} charge overcurrent protection delay" charge_overcurrent_protection_recovery_time: name: "${name} charge overcurrent protection recovery time" discharge_overcurrent_protection_delay: name: "${name} discharge overcurrent protection delay" discharge_overcurrent_protection_recovery_time: name: "${name} discharge overcurrent protection recovery time" short_circuit_protection_delay: name: "${name} short circuit protection delay" short_circuit_protection_recovery_time: name: "${name} short circuit protection recovery time" charge_overtemperature_protection: name: "${name} charge overtemperature protection" charge_overtemperature_protection_recovery: name: "${name} charge overtemperature protection recovery" discharge_overtemperature_protection: name: "${name} discharge overtemperature protection" discharge_overtemperature_protection_recovery: name: "${name} discharge overtemperature protection recovery" charge_undertemperature_protection: name: "${name} charge undertemperature protection" charge_undertemperature_protection_recovery: name: "${name} charge undertemperature protection recovery" power_tube_overtemperature_protection: name: "${name} power tube overtemperature protection" power_tube_overtemperature_protection_recovery: name: "${name} power tube overtemperature protection recovery" discharge_precharge_time: name: "${name} discharge precharge time" heating_start_temperature: name: "${name} heating start temperature" heating_stop_temperature: name: "${name} heating stop temperature" sensor: - platform: jk_bms_ble jk_bms_ble_id: bms0 min_cell_voltage: name: "${name} min cell voltage" max_cell_voltage: name: "${name} max cell voltage" min_voltage_cell: name: "${name} min voltage cell" max_voltage_cell: name: "${name} max voltage cell" delta_cell_voltage: name: "${name} delta cell voltage" average_cell_voltage: name: "${name} average cell voltage" cell_voltage_1: name: "${name} cell voltage 1" cell_voltage_2: name: "${name} cell voltage 2" cell_voltage_3: name: "${name} cell voltage 3" cell_voltage_4: name: "${name} cell voltage 4" cell_voltage_5: name: "${name} cell voltage 5" cell_voltage_6: name: "${name} cell voltage 6" cell_voltage_7: name: "${name} cell voltage 7" cell_voltage_8: name: "${name} cell voltage 8" cell_voltage_9: name: "${name} cell voltage 9" cell_voltage_10: name: "${name} cell voltage 10" cell_voltage_11: name: "${name} cell voltage 11" cell_voltage_12: name: "${name} cell voltage 12" cell_voltage_13: name: "${name} cell voltage 13" cell_voltage_14: name: "${name} cell voltage 14" cell_voltage_15: name: "${name} cell voltage 15" cell_voltage_16: name: "${name} cell voltage 16" cell_voltage_17: name: "${name} cell voltage 17" cell_voltage_18: name: "${name} cell voltage 18" cell_voltage_19: name: "${name} cell voltage 19" cell_voltage_20: name: "${name} cell voltage 20" cell_voltage_21: name: "${name} cell voltage 21" cell_voltage_22: name: "${name} cell voltage 22" cell_voltage_23: name: "${name} cell voltage 23" cell_voltage_24: name: "${name} cell voltage 24" cell_resistance_1: name: "${name} cell resistance 1" cell_resistance_2: name: "${name} cell resistance 2" cell_resistance_3: name: "${name} cell resistance 3" cell_resistance_4: name: "${name} cell resistance 4" cell_resistance_5: name: "${name} cell resistance 5" cell_resistance_6: name: "${name} cell resistance 6" cell_resistance_7: name: "${name} cell resistance 7" cell_resistance_8: name: "${name} cell resistance 8" cell_resistance_9: name: "${name} cell resistance 9" cell_resistance_10: name: "${name} cell resistance 10" cell_resistance_11: name: "${name} cell resistance 11" cell_resistance_12: name: "${name} cell resistance 12" cell_resistance_13: name: "${name} cell resistance 13" cell_resistance_14: name: "${name} cell resistance 14" cell_resistance_15: name: "${name} cell resistance 15" cell_resistance_16: name: "${name} cell resistance 16" cell_resistance_17: name: "${name} cell resistance 17" cell_resistance_18: name: "${name} cell resistance 18" cell_resistance_19: name: "${name} cell resistance 19" cell_resistance_20: name: "${name} cell resistance 20" cell_resistance_21: name: "${name} cell resistance 21" cell_resistance_22: name: "${name} cell resistance 22" cell_resistance_23: name: "${name} cell resistance 23" cell_resistance_24: name: "${name} cell resistance 24" total_voltage: name: "${name} total voltage" current: name: "${name} current" heating_current: name: "${name} heating current" power: name: "${name} power" charging_power: name: "${name} charging power" discharging_power: name: "${name} discharging power" temperature_sensor_1: name: "${name} temperature sensor 1" temperature_sensor_2: name: "${name} temperature sensor 2" temperature_sensor_3: name: "${name} temperature sensor 3" temperature_sensor_4: name: "${name} temperature sensor 4" temperature_sensor_5: name: "${name} temperature sensor 5" power_tube_temperature: name: "${name} power tube temperature" balancing: name: "${name} balancing" state_of_charge: name: "${name} state of charge" state_of_health: name: "${name} state of health" capacity_remaining: name: "${name} capacity remaining" total_battery_capacity_setting: name: "${name} total battery capacity setting" charging_cycles: name: "${name} charging cycles" total_charging_cycle_capacity: name: "${name} total charging cycle capacity" total_runtime: name: "${name} total runtime" balancing_current: name: "${name} balancing current" errors_bitmask: name: "${name} errors bitmask" emergency_time_countdown: name: "${name} emergency time countdown" charge_status_id: name: "${name} charge status id" charge_status_time_elapsed: name: "${name} charge status time elapsed" switch: - platform: jk_bms_ble charging: name: "${name} charging" discharging: name: "${name} discharging" balancer: name: "${name} balancer" emergency: name: "${name} emergency" heating: name: "${name} heating" disable_temperature_sensors: name: "${name} disable temperature sensors" display_always_on: name: "${name} display always on" smart_sleep: name: "${name} smart sleep" disable_pcl_module: name: "${name} disable pcl module" timed_stored_data: name: "${name} timed stored data" charging_float_mode: name: "${name} charging float mode" - platform: ble_client ble_client_id: client0 name: "${name} enable bluetooth connection" id: ble_client_switch0 text_sensor: - platform: jk_bms_ble errors: name: "${name} errors" total_runtime_formatted: name: "${name} total runtime formatted" charge_status: name: "${name} charge status" software_version: name: "${name} software version" hardware_version: name: "${name} hardware version"