From da48f621954afaa43e54a2852f08a7b4597a9a9d Mon Sep 17 00:00:00 2001 From: Richie Cahill Date: Sat, 6 Dec 2025 12:30:01 -0500 Subject: [PATCH] splint HA battery monitoring --- esphome/batteries.yml | 129 ----------------- esphome/battery0.yml | 132 ++++++++++++++++++ esphome/battery1.yml | 132 ++++++++++++++++++ .../home_assistant/battery_sensors.yaml | 46 +----- 4 files changed, 268 insertions(+), 171 deletions(-) delete mode 100644 esphome/batteries.yml create mode 100644 esphome/battery0.yml create mode 100644 esphome/battery1.yml diff --git a/esphome/batteries.yml b/esphome/batteries.yml deleted file mode 100644 index e0f3d18..0000000 --- a/esphome/batteries.yml +++ /dev/null @@ -1,129 +0,0 @@ -esphome: - name: batteries - friendly_name: batteries - -esp32: - board: esp32dev - framework: - type: arduino - -logger: - -api: - encryption: - key: !secret api_key - -external_components: - - source: github://syssi/esphome-jk-bms@main - -ota: - - platform: esphome - password: !secret ota_password - -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password - -captive_portal: - -esp32_ble_tracker: - scan_parameters: - interval: 1100ms - window: 1100ms - active: true - -ble_client: - - mac_address: "C8:47:80:29:0F:DB" - id: jk_ble0 - - mac_address: "C8:47:80:37:9D:DD" - id: jk_ble1 - -jk_bms_ble: - - ble_client_id: jk_ble0 - protocol_version: JK02_32S - throttle: 1s - id: jk_bms0 - - - ble_client_id: jk_ble1 - protocol_version: JK02_32S - throttle: 1s - id: jk_bms1 - -sensor: - # BMS1 sensors - - platform: jk_bms_ble - jk_bms_ble_id: jk_bms0 - total_voltage: - name: "JK0 Total Voltage" - current: - name: "JK0 Current" - state_of_charge: - name: "JK0 SoC" - power: - name: "JK0 Power" - temperature_sensor_1: - name: "JK0 Temp 1" - temperature_sensor_2: - name: "JK0 Temp 2" - balancing: - name: "JK0 balancing" - charging_cycles: - name: "JK0 charging cycles" - total_runtime: - name: "JK0 total runtime" - balancing_current: - name: "JK0 balancing current" - - # BMS2 sensors - - platform: jk_bms_ble - jk_bms_ble_id: jk_bms1 - total_voltage: - name: "JK1 Total Voltage" - current: - name: "JK1 Current" - state_of_charge: - name: "JK1 SoC" - power: - name: "Jk1 Power" - temperature_sensor_1: - name: "JK1 Temp 1" - temperature_sensor_2: - name: "Jk1 Temp 2" - balancing: - name: "JK1 balancing" - charging_cycles: - name: "JK1 charging cycles" - total_runtime: - name: "JK1 total runtime" - balancing_current: - name: "JK1 balancing current" - -text_sensor: - - platform: jk_bms_ble - jk_bms_ble_id: jk_bms0 - errors: - name: "JK0 Errors" - - - platform: jk_bms_ble - jk_bms_ble_id: jk_bms1 - errors: - name: "JK1 Errors" - -switch: - - platform: jk_bms_ble - jk_bms_ble_id: jk_bms0 - charging: - name: "JK0 Charging" - discharging: - name: "JK0 Discharging" - balancer: - name: "JK0 Balancing" - - - platform: jk_bms_ble - jk_bms_ble_id: jk_bms1 - charging: - name: "JK1 Charging" - discharging: - name: "JK1 Discharging" - balancer: - name: "JK1 Balancing" diff --git a/esphome/battery0.yml b/esphome/battery0.yml new file mode 100644 index 0000000..2c160e5 --- /dev/null +++ b/esphome/battery0.yml @@ -0,0 +1,132 @@ +esphome: + name: batteries + friendly_name: batteries + +esp32: + board: esp32dev + framework: + type: arduino + +logger: + +api: + encryption: + key: !secret api_key + +external_components: + - source: github://syssi/esphome-jk-bms@main + +ota: + - platform: esphome + password: !secret ota_password + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + fast_connect: on + +captive_portal: + +esp32_ble_tracker: + scan_parameters: + interval: 1100ms + window: 1100ms + active: true + +ble_client: + - mac_address: "C8:47:80:29:0F:DB" + id: jk_ble0 + +jk_bms_ble: + - ble_client_id: jk_ble0 + protocol_version: JK02_32S + throttle: 1s + id: jk_bms0 + +button: + - platform: jk_bms_ble + retrieve_settings: + name: "JK0 retrieve settings" + retrieve_device_info: + name: "JK0 retrieve device info" + +sensor: + - platform: jk_bms_ble + jk_bms_ble_id: jk_bms0 + total_voltage: + name: "JK0 Total Voltage" + state_of_charge: + name: "JK0 SoC" + charging_power: + name: "JK0 charging power" + discharging_power: + name: "JK0 discharging power" + temperature_sensor_1: + name: "JK0 Temp 1" + temperature_sensor_2: + name: "JK0 Temp 2" + balancing: + name: "JK0 balancing" + total_runtime: + name: "JK0 total runtime" + balancing_current: + name: "JK0 balancing current" + delta_cell_voltage: + name: "JK0 cell delta voltage" + average_cell_voltage: + name: "JK0 cell average voltage" + cell_voltage_1: + name: "JK0 cell voltage 1" + cell_voltage_2: + name: "JK0 cell voltage 2" + cell_voltage_3: + name: "JK0 cell voltage 3" + cell_voltage_4: + name: "JK0 cell voltage 4" + cell_voltage_5: + name: "JK0 cell voltage 5" + cell_voltage_6: + name: "JK0 cell voltage 6" + cell_voltage_7: + name: "JK0 cell voltage 7" + cell_voltage_8: + name: "JK0 cell voltage 8" + cell_resistance_1: + name: "JK0 cell resistance 1" + cell_resistance_2: + name: "JK0 cell resistance 2" + cell_resistance_3: + name: "JK0 cell resistance 3" + cell_resistance_4: + name: "JK0 cell resistance 4" + cell_resistance_5: + name: "JK0 cell resistance 5" + cell_resistance_6: + name: "JK0 cell resistance 6" + cell_resistance_7: + name: "JK0 cell resistance 7" + cell_resistance_8: + name: "JK0 cell resistance 8" + total_charging_cycle_capacity: + name: "JK0 total charging cycle capacity" + +text_sensor: + - platform: jk_bms_ble + jk_bms_ble_id: jk_bms0 + errors: + name: "JK0 Errors" + +switch: + - platform: jk_bms_ble + jk_bms_ble_id: jk_bms0 + charging: + name: "JK0 Charging" + discharging: + name: "JK0 Discharging" + balancer: + name: "JK0 Balancing" + + - platform: ble_client + ble_client_id: jk_ble0 + name: "JK0 enable bluetooth connection" + id: ble_client_switch0 diff --git a/esphome/battery1.yml b/esphome/battery1.yml new file mode 100644 index 0000000..f1d1f98 --- /dev/null +++ b/esphome/battery1.yml @@ -0,0 +1,132 @@ +esphome: + name: battery1 + friendly_name: battery1 + +esp32: + board: esp32dev + framework: + type: arduino + +logger: + +api: + encryption: + key: !secret api_key + +external_components: + - source: github://syssi/esphome-jk-bms@main + +ota: + - platform: esphome + password: !secret ota_password + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + fast_connect: on + +captive_portal: + +esp32_ble_tracker: + scan_parameters: + interval: 1100ms + window: 1100ms + active: true + +ble_client: + - mac_address: "C8:47:80:37:9D:DD" + id: jk_ble1 + +jk_bms_ble: + - ble_client_id: jk_ble1 + protocol_version: JK02_32S + throttle: 1s + id: jk_bms1 + +button: + - platform: jk_bms_ble + retrieve_settings: + name: "JK1 retrieve settings" + retrieve_device_info: + name: "JK1 retrieve device info" + +sensor: + - platform: jk_bms_ble + jk_bms_ble_id: jk_bms1 + total_voltage: + name: "JK1 Total Voltage" + state_of_charge: + name: "JK1 SoC" + charging_power: + name: "JK1 charging power" + discharging_power: + name: "JK1 discharging power" + temperature_sensor_1: + name: "JK1 Temp 1" + temperature_sensor_2: + name: "JK1 Temp 2" + balancing: + name: "JK1 balancing" + total_runtime: + name: "JK1 total runtime" + balancing_current: + name: "JK1 balancing current" + delta_cell_voltage: + name: "JK1 cell delta voltage" + average_cell_voltage: + name: "JK1 cell average voltage" + cell_voltage_1: + name: "JK1 cell voltage 1" + cell_voltage_2: + name: "JK1 cell voltage 2" + cell_voltage_3: + name: "JK1 cell voltage 3" + cell_voltage_4: + name: "JK1 cell voltage 4" + cell_voltage_5: + name: "JK1 cell voltage 5" + cell_voltage_6: + name: "JK1 cell voltage 6" + cell_voltage_7: + name: "JK1 cell voltage 7" + cell_voltage_8: + name: "JK1 cell voltage 8" + cell_resistance_1: + name: "JK1 cell resistance 1" + cell_resistance_2: + name: "JK1 cell resistance 2" + cell_resistance_3: + name: "JK1 cell resistance 3" + cell_resistance_4: + name: "JK1 cell resistance 4" + cell_resistance_5: + name: "JK1 cell resistance 5" + cell_resistance_6: + name: "JK1 cell resistance 6" + cell_resistance_7: + name: "JK1 cell resistance 7" + cell_resistance_8: + name: "JK1 cell resistance 8" + total_charging_cycle_capacity: + name: "JK1 total charging cycle capacity" + +text_sensor: + - platform: jk_bms_ble + jk_bms_ble_id: jk_bms1 + errors: + name: "JK1 Errors" + +switch: + - platform: jk_bms_ble + jk_bms_ble_id: jk_bms1 + charging: + name: "JK1 Charging" + discharging: + name: "JK1 Discharging" + balancer: + name: "JK1 Balancing" + + - platform: ble_client + ble_client_id: jk_ble1 + name: "JK1 enable bluetooth connection" + id: ble_client_switch0 diff --git a/systems/brain/services/home_assistant/battery_sensors.yaml b/systems/brain/services/home_assistant/battery_sensors.yaml index 8efc058..6290d4b 100644 --- a/systems/brain/services/home_assistant/battery_sensors.yaml +++ b/systems/brain/services/home_assistant/battery_sensors.yaml @@ -1,45 +1,7 @@ -template: - - sensor: - # Battery 0 - - name: "JK0 charge power W" - unique_id: jk0_charge_power_w - unit_of_measurement: W - device_class: power - state_class: measurement - state: > - {% set p = states('sensor.batteries_jk0_power')|float(0) %} - {{ max(0, p) }} - - name: "JK0 discharge power W" - unique_id: jk0_discharge_power_w - unit_of_measurement: W - device_class: power - state_class: measurement - state: > - {% set p = states('sensor.batteries_jk0_power')|float(0) %} - {{ max(0, -p) }} - - # Battery 1 - - name: "JK1 charge power W" - unique_id: jk1_charge_power_w - unit_of_measurement: W - device_class: power - state_class: measurement - state: > - {% set p = states('sensor.batteries_jk1_power')|float(0) %} - {{ max(0, p) }} - - name: "JK1 discharge power W" - unique_id: jk1_discharge_power_w - unit_of_measurement: W - device_class: power - state_class: measurement - state: > - {% set p = states('sensor.batteries_jk1_power')|float(0) %} - {{ max(0, -p) }} - sensor: # Battery 0 - platform: integration - source: sensor.jk0_charge_power_w + source: sensor.batteries_jk0_charging_power name: "JK0 energy in" unique_id: jk0_energy_in_kwh unit_prefix: k @@ -48,7 +10,7 @@ sensor: max_sub_interval: minutes: 5 - platform: integration - source: sensor.jk0_discharge_power_w + source: sensor.batteries_jk0_charging_power name: "JK0 energy out" unique_id: jk0_energy_out_kwh unit_prefix: k @@ -59,7 +21,7 @@ sensor: # Battery 1 - platform: integration - source: sensor.jk1_charge_power_w + source: sensor.battery1_jk1_charging_power name: "JK1 energy in" unique_id: jk1_energy_in_kwh unit_prefix: k @@ -68,7 +30,7 @@ sensor: max_sub_interval: minutes: 5 - platform: integration - source: sensor.jk1_discharge_power_w + source: sensor.battery1_jk1_discharge_power name: "JK1 energy out" unique_id: jk1_energy_out_kwh unit_prefix: k