I Have successfully integrated my JK BMS with Home assistant (Running on Ras pi4) through ESP32. Here is the Yaml File for the Dashboard
Battery 48V100Ah Lithium 16S 3.2V Cells
views:
- title: Home
sections:- type: grid
cards:- type: heading
heading: Sukhpal’s JK BMS
heading_style: title - type: vertical-stack
cards:- square: false
type: grid
cards:- type: vertical-stack
cards:- type: entity
entity: sensor.jk_bms_total_voltage
name: Battery voltage - type: entity
entity: sensor.jk_bms_current
name: Current
- type: entity
- type: gauge
entity: sensor.jk_bms_discharging_power
name: Load power
needle: true
max: 5120
severity:
green: 0
yellow: 400
red: 1600
columns: 2
- type: vertical-stack
- square: false
type: grid
cards:- type: entity
entity: sensor.jk_bms_state_of_charge
name: SOC - type: entity
entity: sensor.jk_bms_charging_cycles
name: Cycles
columns: 2
- type: entity
- square: false
type: grid
cards:- type: entity
entity: sensor.jk_bms_discharging_power
name: Discharging
card_mod:
style: |
ha-card {
color: red !important;
}
.info, .name {
color: red !important;
} - type: entity
entity: sensor.jk_bms_power
name: Charging
card_mod:
style: |
ha-card {
color: green !important;
}
.info, .name {
color: green !important;
}
columns: 2
- type: entity
- square: false
type: grid
cards:- type: entity
entity: sensor.jk_bms_capacity_remaining
name: Remaining - type: entity
entity: number.jk_bms_total_battery_capacity
name: Capacity
columns: 2
- type: entity
- square: false
type: grid
cards:- type: entity
entity: sensor.jk_bms_average_cell_voltage
name: Avg. cell volt - type: entity
entity: sensor.jk_bms_delta_cell_voltage
name: Cell Vol diff.
columns: 2
- type: entity
- type: vertical-stack
cards:- type: entities
style: |
ha-card {
color: #18f50c;
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
}
entities:- entity: sensor.jk_bms_total_charging_cycle_capacity
name: Cycle capacity
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
} - entity: sensor.jk_bms_charging_cycles
name: Cycle count
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
} - entity: sensor.jk_bms_balancing_current
name: Balance current
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
} - entity: sensor.jk_bms_temperature_sensor_1
name: Battery T1
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
} - entity: sensor.jk_bms_temperature_sensor_2
name: Battery T2
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
} - entity: sensor.jk_bms_power_tube_temperature
name: MOS Temp
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
}
- entity: sensor.jk_bms_total_charging_cycle_capacity
- square: false
type: grid
columns: 2
cards:- type: markdown
content: |2-
01. {% if
states(‘sensor.jk_bms_max_voltage_cell’) == ‘1’ %} {{ states(‘sensor.jk_bms_cell_voltage_1’) }}
V {% elif states(‘sensor.jk_bms_min_voltage_cell’) ==
‘1’ %} {{
states(‘sensor.jk_bms_cell_voltage_1’) }} V {% else %}
{{ states(‘sensor.jk_bms_cell_voltage_1’) }} V {% endif %}
02. {% if
states(‘sensor.jk_bms_max_voltage_cell’) == ‘2’ %} {{ states(‘sensor.jk_bms_cell_voltage_2’) }}
V {% elif states(‘sensor.jk_bms_min_voltage_cell’) ==
‘2’ %} {{
states(‘sensor.jk_bms_cell_voltage_2’) }} V {% else %}
{{ states(‘sensor.jk_bms_cell_voltage_2’) }} V {% endif %}
03. {% if
states(‘sensor.jk_bms_max_voltage_cell’) == ‘3’ %} {{ states(‘sensor.jk_bms_cell_voltage_3’) }}
V {% elif states(‘sensor.jk_bms_min_voltage_cell’) ==
‘3’ %} {{
states(‘sensor.jk_bms_cell_voltage_3’) }} V {% else %}
{{ states(‘sensor.jk_bms_cell_voltage_3’) }} V {% endif %}
04. {% if
states(‘sensor.jk_bms_max_voltage_cell’) == ‘4’ %} {{ states(‘sensor.jk_bms_cell_voltage_4’) }}
V {% elif states(‘sensor.jk_bms_min_voltage_cell’) ==
‘4’ %} {{
states(‘sensor.jk_bms_cell_voltage_4’) }} V {% else %}
{{ states(‘sensor.jk_bms_cell_voltage_4’) }} V {% endif %}
05. {% if
states(‘sensor.jk_bms_max_voltage_cell’) == ‘5’ %} {{ states(‘sensor.jk_bms_cell_voltage_5’) }}
V {% elif states(‘sensor.jk_bms_min_voltage_cell’) ==
‘5’ %} {{
states(‘sensor.jk_bms_cell_voltage_5’) }} V {% else %}
{{ states(‘sensor.jk_bms_cell_voltage_5’) }} V {% endif %}
06. {% if
states(‘sensor.jk_bms_max_voltage_cell’) == ‘6’ %} {{ states(‘sensor.jk_bms_cell_voltage_6’) }}
V {% elif states(‘sensor.jk_bms_min_voltage_cell’) ==
‘6’ %} {{
states(‘sensor.jk_bms_cell_voltage_6’) }} V {% else %}
{{ states(‘sensor.jk_bms_cell_voltage_6’) }} V {% endif %}
07. {% if
states(‘sensor.jk_bms_max_voltage_cell’) == ‘7’ %} {{ states(‘sensor.jk_bms_cell_voltage_7’) }}
V {% elif states(‘sensor.jk_bms_min_voltage_cell’) ==
‘7’ %} {{
states(‘sensor.jk_bms_cell_voltage_7’) }} V {% else %}
{{ states(‘sensor.jk_bms_cell_voltage_7’) }} V {% endif %}
08. {% if
states(‘sensor.jk_bms_max_voltage_cell’) == ‘8’ %} {{ states(‘sensor.jk_bms_cell_voltage_8’) }}
V {% elif states(‘sensor.jk_bms_min_voltage_cell’) ==
‘8’ %} {{
states(‘sensor.jk_bms_cell_voltage_8’) }} V {% else %}
{{ states(‘sensor.jk_bms_cell_voltage_8’) }} V {% endif %}
card_mod:
style: |
ha-card {
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
} - type: markdown
content: |2-
09. {% if
states(‘sensor.jk_bms_max_voltage_cell’) == ‘9’ %} {{ states(‘sensor.jk_bms_cell_voltage_9’) }}
V {% elif states(‘sensor.jk_bms_min_voltage_cell’) ==
‘9’ %} {{
states(‘sensor.jk_bms_cell_voltage_9’) }} V {% else %}
{{ states(‘sensor.jk_bms_cell_voltage_9’) }} V {% endif %}
10. {% if
states(‘sensor.jk_bms_max_voltage_cell’) == ‘10’ %} {{ states(‘sensor.jk_bms_cell_voltage_10’) }}
V {% elif states(‘sensor.jk_bms_min_voltage_cell’) ==
‘10’ %} {{
states(‘sensor.jk_bms_cell_voltage_10’) }} V {% else %}
{{ states(‘sensor.jk_bms_cell_voltage_10’) }} V {% endif %}
11. {% if
states(‘sensor.jk_bms_max_voltage_cell’) == ‘11’ %} {{ states(‘sensor.jk_bms_cell_voltage_11’) }}
V {% elif states(‘sensor.jk_bms_min_voltage_cell’) ==
‘11’ %} {{
states(‘sensor.jk_bms_cell_voltage_11’) }} V {% else %}
{{ states(‘sensor.jk_bms_cell_voltage_11’) }} V {% endif %}
12. {% if
states(‘sensor.jk_bms_max_voltage_cell’) == ‘12’ %} {{ states(‘sensor.jk_bms_cell_voltage_12’) }}
V {% elif states(‘sensor.jk_bms_min_voltage_cell’) ==
‘12’ %} {{
states(‘sensor.jk_bms_cell_voltage_12’) }} V {% else %}
{{ states(‘sensor.jk_bms_cell_voltage_12’) }} V {% endif %}
13. {% if
states(‘sensor.jk_bms_max_voltage_cell’) == ‘13’ %} {{ states(‘sensor.jk_bms_cell_voltage_13’) }}
V {% elif states(‘sensor.jk_bms_min_voltage_cell’) ==
‘13’ %} {{
states(‘sensor.jk_bms_cell_voltage_13’) }} V {% else %}
{{ states(‘sensor.jk_bms_cell_voltage_13’) }} V {% endif %}
14. {% if
states(‘sensor.jk_bms_max_voltage_cell’) == ‘14’ %} {{ states(‘sensor.jk_bms_cell_voltage_14’) }}
V {% elif states(‘sensor.jk_bms_min_voltage_cell’) ==
‘14’ %} {{
states(‘sensor.jk_bms_cell_voltage_14’) }} V {% else %}
{{ states(‘sensor.jk_bms_cell_voltage_14’) }} V {% endif %}
15. {% if
states(‘sensor.jk_bms_max_voltage_cell’) == ‘15’ %} {{ states(‘sensor.jk_bms_cell_voltage_15’) }}
V {% elif states(‘sensor.jk_bms_min_voltage_cell’) ==
‘15’ %} {{
states(‘sensor.jk_bms_cell_voltage_15’) }} V {% else %}
{{ states(‘sensor.jk_bms_cell_voltage_15’) }} V {% endif %}
16. {% if
states(‘sensor.jk_bms_max_voltage_cell’) == ‘16’ %} {{ states(‘sensor.jk_bms_cell_voltage_16’) }}
V {% elif states(‘sensor.jk_bms_min_voltage_cell’) ==
‘16’ %} {{
states(‘sensor.jk_bms_cell_voltage_16’) }} V {% else %}
{{ states(‘sensor.jk_bms_cell_voltage_16’) }} V {% endif %}
card_mod:
style: |
ha-card {
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
} - type: entities
style: |
ha-card {
color: #18f50c;
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
}
entities:- entity: sensor.jk_bms_cell_resistance_1
name: 1 - entity: sensor.jk_bms_cell_resistance_2
name: 2 - entity: sensor.jk_bms_cell_resistance_3
name: 3 - entity: sensor.jk_bms_cell_resistance_4
name: 4 - entity: sensor.jk_bms_cell_resistance_5
name: 5 - entity: sensor.jk_bms_cell_resistance_6
name: 6 - entity: sensor.jk_bms_cell_resistance_7
name: 7 - entity: sensor.jk_bms_cell_resistance_8
name: 8
- entity: sensor.jk_bms_cell_resistance_1
- type: entities
style: |
ha-card {
color: #18f50c;
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
}
entities:- entity: sensor.jk_bms_cell_resistance_9
name: 9 - entity: sensor.jk_bms_cell_resistance_10
name: 10 - entity: sensor.jk_bms_cell_resistance_11
name: 11 - entity: sensor.jk_bms_cell_resistance_12
name: 12 - entity: sensor.jk_bms_cell_resistance_13
name: 13 - entity: sensor.jk_bms_cell_resistance_14
name: 14 - entity: sensor.jk_bms_cell_resistance_15
name: 15 - entity: sensor.jk_bms_cell_resistance_16
name: 16
- entity: sensor.jk_bms_cell_resistance_9
- type: markdown
- type: entities
- show_name: true
show_icon: true
show_state: true
type: glance
entities:- entity: switch.jk_bms_charging
name: Charging - entity: switch.jk_bms_discharging
name: Discharging - entity: binary_sensor.jk_bms_balancing
name: Balancing
state_color: true
- entity: switch.jk_bms_charging
- square: false
- type: heading
- type: grid
cards:- type: heading
heading: New section - type: history-graph
entities:- entity: sensor.jk_bms_state_of_charge
name: Battery SoC
hours_to_show: 24
refresh_interval: 0
title: SOC Chart
- entity: sensor.jk_bms_state_of_charge
- type: heading
- type: grid