I managed to integrate my JK BMS with HA using ESP32.
I get the individual cell voltages with entity cards. Is it possible to colorize the Maximum and minimum voltage cells as shown in the JK BMS app?
I managed to integrate my JK BMS with HA using ESP32.
I get the individual cell voltages with entity cards. Is it possible to colorize the Maximum and minimum voltage cells as shown in the JK BMS app?
Hi, would you kindly share with us how you did that step by step?
Kind regards
Eddy
ich glaube nicht sonnst hätte er oder sie es mitvorgestellt
Schade. Ich versuche gerade mit : GitHub - fl4p/batmon-ha: Add-on for Home Assistant to connect JK, JBD, Daly, ANT and Supervolt BMS via Bluetooth.
Mal schauen, ob es funz.
Ich habe es endlich geschafft. Keine Schönheit aber ich bekomme, was ich brauche.
Das wars.
Hi, can you share with us how you did this if it’s possible please?
@Dimumal I love your JK BMS dashboard - Would you be able to share the yaml for this page ?
I already have HA-Batmon installed and working, but am not that good at building nice dashboards like yours…
Thankyou
type: vertical-stack
cards:
- square: false
type: grid
cards:
- type: vertical-stack
cards:
- type: entity
entity: sensor.jk_bms_total_voltage
name: Battery voltage
- square: true
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: gauge
entity: sensor.srne_current_load_power
name: Load power
needle: true
max: 4800
severity:
green: 0
yellow: 400
red: 1600
columns: 2
- square: false
type: grid
cards:
- type: entity
entity: sensor.jk_bms_delta_cell_voltage
name: Delta cell voltage
- type: entity
entity: sensor.jk_bms_power
name: Battery net power
columns: 2
- show_name: true
show_icon: false
show_state: true
type: glance
entities:
- entity: sensor.jk_bms_max_voltage_cell
name: Max Vol Cell
- entity: sensor.jk_bms_max_cell_voltage
name: Max cell Voltage
- entity: sensor.jk_bms_min_voltage_cell
name: Min Vol Cell
- entity: sensor.jk_bms_min_cell_voltage
name: Min cell Voltage
- 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
- type: entity
entity: sensor.jk_bms_average_cell_voltage
name: Avg, cell voltage
columns: 3
- square: false
type: grid
cards:
- type: entity
entity: sensor.jk_bms_max_voltage_cell
name: Max voltage cell
- type: entity
entity: sensor.jk_bms_max_cell_voltage
name: Max cell voltage
- type: entity
entity: sensor.jk_bms_min_voltage_cell
name: Min voltage cell
- type: entity
entity: sensor.jk_bms_min_cell_voltage
name: Min cell voltage
columns: 2
and this one
type: vertical-stack
cards:
- square: false
type: grid
cards:
- type: entity
entity: sensor.jk_bms_cell_voltage_1
name: Cell 1
- type: entity
entity: sensor.jk_bms_cell_voltage_2
name: Cell 2
- type: entity
entity: sensor.jk_bms_cell_voltage_3
name: Cell 3
- type: entity
entity: sensor.jk_bms_cell_voltage_4
name: Cell 4
- type: entity
entity: sensor.jk_bms_cell_voltage_5
name: Cell 5
- type: entity
entity: sensor.jk_bms_cell_voltage_6
name: Cell 6
- type: entity
entity: sensor.jk_bms_cell_voltage_7
name: Cell 7
- type: entity
entity: sensor.jk_bms_cell_voltage_8
name: Cell 8
- type: entity
entity: sensor.jk_bms_cell_voltage_9
name: Cell 9
- type: entity
entity: sensor.jk_bms_cell_voltage_10
name: Cell 10
- type: entity
entity: sensor.jk_bms_cell_voltage_11
name: Cell 11
- type: entity
entity: sensor.jk_bms_cell_voltage_12
name: Cell 12
- type: entity
entity: sensor.jk_bms_cell_voltage_13
name: Cell 13
- type: entity
entity: sensor.jk_bms_cell_voltage_14
name: Cell 14
- type: entity
entity: sensor.jk_bms_cell_voltage_15
name: Cell 15
- type: entity
entity: sensor.jk_bms_cell_voltage_16
name: Cell 16
- type: entity
entity: sensor.jk_bms_charging_power
name: Charging
- type: entity
entity: sensor.jk_bms_discharging_power
name: Discharging
columns: 3
- 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
You are a superstar - thankyou
type: vertical-stack
cards:
- type: custom:stack-in-card
keep:
margin: false
box_shadow: false
background: false
cards:
- type: grid
square: false
columns: 1
cards:
- type: markdown
content: >-
<center><font size=4>Total runtime: <b> <font
color=#41CD52>{{states('sensor.jk_bms_total_runtime_formatted')}}
card_mod:
style: |
ha-card {
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
}
- type: custom:stack-in-card
keep:
margin: false
box_shadow: false
background: false
cards:
- type: grid
square: false
columns: 3
cards:
- type: markdown
content: >-
<center><font size=4>Charge: <b>{% if
states('binary_sensor.jk_bms_charging') == 'on' %} <font
color=#41CD52>{{ states('binary_sensor.jk_bms_charging') | upper
}}</font> {% else %} <font color=red>{{
states('binary_sensor.jk_bms_charging') | upper }}</font> {% endif
%}
- type: markdown
content: >-
<center><font size=3>Discharge: <b> {% if
states('binary_sensor.jk_bms_discharging') == 'on' %} <font
color=#41CD52>{{ states('binary_sensor.jk_bms_discharging') |
upper }}</font> {% else %} <font color=red>{{
states('binary_sensor.jk_bms_discharging') | upper }}</font> {%
endif %}
- type: markdown
content: >-
<center><font size=4>Balance: <b> {% if
states('binary_sensor.jk_bms_balancing') == 'on' %} <font
color=#41CD52>{{ states('binary_sensor.jk_bms_balancing') | upper
}}</font> {% else %} <font color=red>{{
states('binary_sensor.jk_bms_balancing') | upper }}</font> {%
endif %}
card_mod:
style: |
ha-card {
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
}
- type: vertical-stack
cards:
- type: horizontal-stack
cards:
- type: vertical-stack
cards:
- type: vertical-stack
cards:
- type: entity
style: |
ha-card {
color: #18f50c;
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
}
entity: sensor.jk_bms_total_voltage
name: Total voltage
icon: mdi:battery
- 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_power
name: Power
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
}
- entity: sensor.jk_bms_total_battery_capacity_setting
name: Capacity
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
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_average_cell_voltage
name: Average cell voltage
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_2
name: Battery T2
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
}
- type: vertical-stack
cards:
- type: vertical-stack
cards:
- type: entity
entity: sensor.jk_bms_current
style: |
ha-card {
color: #18f50c;
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_state_of_charge
name: Remaining %
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
}
- entity: sensor.jk_bms_capacity_remaining
name: Remaining 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_delta_cell_voltage
name: Cell Vol diff.
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_power_tube_temperature
name: MOS Temp
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
}
- square: false
type: grid
cards:
- type: grid
cards:
- type: markdown
content: |2-
<center><font color="#18f50c"><font size=3>01. {% if
states('sensor.jk_bms_max_voltage_cell') == '1' %} <font
color="#3090C7">{{ states('sensor.jk_bms_cell_voltage_1') }}
V</font> {% elif states('sensor.jk_bms_min_voltage_cell') ==
'1' %} <font color="orange">{{
states('sensor.jk_bms_cell_voltage_1') }} V</font> {% else %}
{{ states('sensor.jk_bms_cell_voltage_1') }} V {% endif %}
<br>
02. {% if
states('sensor.jk_bms_max_voltage_cell') == '2' %} <font
color="#3090C7">{{ states('sensor.jk_bms_cell_voltage_2') }}
V</font> {% elif states('sensor.jk_bms_min_voltage_cell') ==
'2' %} <font color="orange">{{
states('sensor.jk_bms_cell_voltage_2') }} V</font> {% else %}
{{ states('sensor.jk_bms_cell_voltage_2') }} V {% endif %}<br>
03. {% if
states('sensor.jk_bms_max_voltage_cell') == '3' %} <font
color="#3090C7">{{ states('sensor.jk_bms_cell_voltage_3') }}
V</font> {% elif states('sensor.jk_bms_min_voltage_cell') ==
'3' %} <font color="orange">{{
states('sensor.jk_bms_cell_voltage_3') }} V</font> {% else %}
{{ states('sensor.jk_bms_cell_voltage_3') }} V {% endif %}
<br>
04. {% if
states('sensor.jk_bms_max_voltage_cell') == '4' %} <font
color="#3090C7">{{ states('sensor.jk_bms_cell_voltage_4') }}
V</font> {% elif states('sensor.jk_bms_min_voltage_cell') ==
'4' %} <font color="orange">{{
states('sensor.jk_bms_cell_voltage_4') }} V</font> {% else %}
{{ states('sensor.jk_bms_cell_voltage_4') }} V {% endif %}
<br>
05. {% if
states('sensor.jk_bms_max_voltage_cell') == '5' %} <font
color="#3090C7">{{ states('sensor.jk_bms_cell_voltage_5') }}
V</font> {% elif states('sensor.jk_bms_min_voltage_cell') ==
'5' %} <font color="orange">{{
states('sensor.jk_bms_cell_voltage_5') }} V</font> {% else %}
{{ states('sensor.jk_bms_cell_voltage_5') }} V {% endif %}
<br>
06. {% if
states('sensor.jk_bms_max_voltage_cell') == '6' %} <font
color="#3090C7">{{ states('sensor.jk_bms_cell_voltage_6') }}
V</font> {% elif states('sensor.jk_bms_min_voltage_cell') ==
'6' %} <font color="orange">{{
states('sensor.jk_bms_cell_voltage_6') }} V</font> {% else %}
{{ states('sensor.jk_bms_cell_voltage_6') }} V {% endif %}
<br>
card_mod:
style: |
ha-card {
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
}
- type: markdown
content: |2-
<center><font color="#18f50c"><font size=3>07. {% if
states('sensor.jk_bms_max_voltage_cell') == '7' %} <font
color="#3090C7">{{ states('sensor.jk_bms_cell_voltage_7') }}
V</font> {% elif states('sensor.jk_bms_min_voltage_cell') ==
'7' %} <font color="orange">{{
states('sensor.jk_bms_cell_voltage_7') }} V</font> {% else %}
{{ states('sensor.jk_bms_cell_voltage_7') }} V {% endif %}
<br>
08. {% if
states('sensor.jk_bms_max_voltage_cell') == '8' %} <font
color="#3090C7">{{ states('sensor.jk_bms_cell_voltage_8') }}
V</font> {% elif states('sensor.jk_bms_min_voltage_cell') ==
'8' %} <font color="orange">{{
states('sensor.jk_bms_cell_voltage_8') }} V</font> {% else %}
{{ states('sensor.jk_bms_cell_voltage_8') }} V {% endif %}<br>
09. {% if
states('sensor.jk_bms_max_voltage_cell') == '9' %} <font
color="#3090C7">{{ states('sensor.jk_bms_cell_voltage_9') }}
V</font> {% elif states('sensor.jk_bms_min_voltage_cell') ==
'9' %} <font color="orange">{{
states('sensor.jk_bms_cell_voltage_9') }} V</font> {% else %}
{{ states('sensor.jk_bms_cell_voltage_9') }} V {% endif %}
<br>
10. {% if
states('sensor.jk_bms_max_voltage_cell') == '10' %} <font
color="#3090C7">{{ states('sensor.jk_bms_cell_voltage_10') }}
V</font> {% elif states('sensor.jk_bms_min_voltage_cell') ==
'10' %} <font color="orange">{{
states('sensor.jk_bms_cell_voltage_10') }} V</font> {% else %}
{{ states('sensor.jk_bms_cell_voltage_10') }} V {% endif %}
<br>
11. {% if
states('sensor.jk_bms_max_voltage_cell') == '11' %} <font
color="#3090C7">{{ states('sensor.jk_bms_cell_voltage_11') }}
V</font> {% elif states('sensor.jk_bms_min_voltage_cell') ==
'11' %} <font color="orange">{{
states('sensor.jk_bms_cell_voltage_11') }} V</font> {% else %}
{{ states('sensor.jk_bms_cell_voltage_11') }} V {% endif %}
<br>
12. {% if
states('sensor.jk_bms_max_voltage_cell') == '12' %} <font
color="#3090C7">{{ states('sensor.jk_bms_cell_voltage_12') }}
V</font> {% elif states('sensor.jk_bms_min_voltage_cell') ==
'12' %} <font color="orange">{{
states('sensor.jk_bms_cell_voltage_12') }} V</font> {% else %}
{{ states('sensor.jk_bms_cell_voltage_12') }} V {% endif %}
<br>
card_mod:
style: |
ha-card {
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
}
- type: markdown
content: |2-
<center><font color="#18f50c"><font size=3>13. {% if
states('sensor.jk_bms_max_voltage_cell') == '13' %} <font
color="#3090C7">{{ states('sensor.jk_bms_cell_voltage_13') }}
V</font> {% elif states('sensor.jk_bms_min_voltage_cell') ==
'13' %} <font color="orange">{{
states('sensor.jk_bms_cell_voltage_13') }} V</font> {% else %}
{{ states('sensor.jk_bms_cell_voltage_13') }} V {% endif %}
<br>
14. {% if
states('sensor.jk_bms_max_voltage_cell') == '14' %} <font
color="#3090C7">{{ states('sensor.jk_bms_cell_voltage_14') }}
V</font> {% elif states('sensor.jk_bms_min_voltage_cell') ==
'14' %} <font color="orange">{{
states('sensor.jk_bms_cell_voltage_14') }} V</font> {% else %}
{{ states('sensor.jk_bms_cell_voltage_14') }} V {% endif %}<br>
15. {% if
states('sensor.jk_bms_max_voltage_cell') == '15' %} <font
color="#3090C7">{{ states('sensor.jk_bms_cell_voltage_15') }}
V</font> {% elif states('sensor.jk_bms_min_voltage_cell') ==
'15' %} <font color="orange">{{
states('sensor.jk_bms_cell_voltage_15') }} V</font> {% else %}
{{ states('sensor.jk_bms_cell_voltage_15') }} V {% endif %}
<br>
16. {% if
states('sensor.jk_bms_max_voltage_cell') == '16' %} <font
color="#3090C7">{{ states('sensor.jk_bms_cell_voltage_16') }}
V</font> {% elif states('sensor.jk_bms_min_voltage_cell') ==
'16' %} <font color="orange">{{
states('sensor.jk_bms_cell_voltage_16') }} V</font> {% else %}
{{ states('sensor.jk_bms_cell_voltage_16') }} V {% endif %}
<br>
card_mod:
style: |
ha-card {
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
}
- type: grid
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_cell_resistance_1
name: 1
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.jk_bms_cell_resistance_2
name: 2
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.jk_bms_cell_resistance_3
name: 3
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.jk_bms_cell_resistance_4
name: 4
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.jk_bms_cell_resistance_5
name: 5
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.jk_bms_cell_resistance_6
name: 6
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- 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_7
name: 7
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.jk_bms_cell_resistance_8
name: 8
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.jk_bms_cell_resistance_9
name: 9
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.jk_bms_cell_resistance_10
name: 10
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.jk_bms_cell_resistance_11
name: 11
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.jk_bms_cell_resistance_12
name: 12
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- 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_13
name: 13
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.jk_bms_cell_resistance_14
name: 14
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.jk_bms_cell_resistance_15
name: 15
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.jk_bms_cell_resistance_16
name: 16
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
columns: 1
Now that is cool, and a very efficient use of screen space - I have 14 BMS’s to look after so I’ll give that a try.
Sorry Double Post
Would you even make your software and a short tutorial available to those who are not so clever? The view of the dashboard is nice but how do you get to it and what do you have to do to download it?
Thanks
Würden sie auch nicht so geschickten eventuell ihre Software und ein kleines tutorial zur Verfügung stellen? die Ansicht des Dashboards ist schön doch wie kommt man dazu was muss man dafür machen runterladen ?
danke
hello, i’m a newbie. can someone help me step my step how to design it ? thanks
Hi Dimumal,
I like your design a lot but I do not have an esp here but I use the BT MON add on for the JK BMS cause my pi 4 running HA is sitting on the battery.
I used your code and replaced the sensors with those of the BT Mon which worked quite good except these points:
Could you have a look for what went wrong ?
How did you got the sensor counting days hours minutes so beautifull ?
type: vertical-stack
cards:
- type: custom:stack-in-card
keep:
margin: false
box_shadow: false
background: false
cards:
- type: grid
square: false
columns: 1
cards:
- type: markdown
content: >-
<center><font size=4>Total runtime: <b> <font
color=#41CD52>{{states('sensor.hbb_pb2a16s20_battery1_uptime')}}
sec
card_mod:
style: |
ha-card {
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
}
- type: custom:stack-in-card
keep:
margin: false
box_shadow: false
background: false
cards:
- type: grid
square: false
columns: 3
cards:
- type: markdown
content: >-
<center><font size=4>Charge: <b>{% if
states('switch.hbb_pb2a16s20_battery1_charge') == 'on' %} <font
color=#41CD52>{{ states('switch.hbb_pb2a16s20_battery1_charge') |
upper }}</font> {% else %} <font color=red>{{
states('switch.hbb_pb2a16s20_battery1_charge') | upper }}</font>
{% endif %}
- type: markdown
content: >-
<center><font size=3>Discharge: <b> {% if
states('switch.hbb_pb2a16s20_battery1_discharge') == 'on' %} <font
color=#41CD52>{{ states('hbb_pb2a16s20_battery1_discharge') |
upper }}</font> {% else %} <font color=red>{{
states('switch.hbb_pb2a16s20_battery1_discharge') | upper
}}</font> {% endif %}
- type: markdown
content: >-
<center><font size=4>Balance: <b> {% if
states('switch.hbb_pb2a16s20_battery1_balance') == 'on' %} <font
color=#41CD52>{{ states('switch.hbb_pb2a16s20_battery1_balance') |
upper }}</font> {% else %} <font color=red>{{
states('switch.hbb_pb2a16s20_battery1_balance') | upper }}</font>
{% endif %}
card_mod:
style: |
ha-card {
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
}
- type: vertical-stack
cards:
- type: horizontal-stack
cards:
- type: vertical-stack
cards:
- type: vertical-stack
cards:
- type: entity
style: |
ha-card {
color: #18f50c;
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
}
entity: sensor.hbb_pb2a16s20_battery1_voltage
name: Total voltage
icon: mdi:battery
- type: entities
style: |
ha-card {
color: #18f50c;
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
}
entities:
- entity: sensor.hbb_pb2a16s20_battery1_power
name: Power
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
}
- entity: sensor.hbb_pb2a16s20_battery1_capacity
name: Capacity
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
}
- entity: sensor.hbb_pb2a16s20_battery1_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.hbb_pb2a16s20_battery1_cell_volt_average
name: Average cell voltage
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
}
- entity: sensor.hbb_pb2a16s20_battery1_balance_current
name: Balance current
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
}
- entity: sensor.hbb_pb2a16s20_battery1_temperatures_2
name: Battery T2
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
}
- type: vertical-stack
cards:
- type: vertical-stack
cards:
- type: entity
entity: sensor.hbb_pb2a16s20_battery1_current
name: Current
style: |
ha-card {
color: #18f50c;
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.hbb_pb2a16s20_battery1_soc
name: Remaining %
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
}
- entity: sensor.hbb_pb2a16s20_battery1_cycle_capacity
name: Remaining capacity
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
}
- entity: sensor.hbb_pb2a16s20_battery1_num_cycles
name: Cycle count
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
}
- entity: sensor.hbb_pb2a16s20_battery1_cell_volt_delta
name: Cell Vol diff.
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
}
- entity: sensor.hbb_pb2a16s20_battery1_temperatures_1
name: Battery T1
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
}
- entity: sensor.hbb_pb2a16s20_battery1_mos_temperature
name: MOS Temp
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:0 !important;
Color: white;
}
- square: false
type: grid
cards:
- type: grid
cards:
- type: markdown
content: |2-
<center><font color="#18f50c"><font size=3>01. {% if
states('sensor.hbb_pb2a16s20_battery1_cell_volt_max') == '1' %} <font
color="#3090C7">{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_01') }}
V</font> {% elif states('sensor.hbb_pb2a16s20_battery1_cell_volt_min') ==
'1' %} <font color="orange">{{
states('sensor.hbb_pb2a16s20_battery1_cell_volt_01') }} V</font> {% else %}
{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_01') }} V {% endif %}
<br>
02. {% if
states('sensor.hbb_pb2a16s20_battery1_cell_volt_max') == '2' %} <font
color="#3090C7">{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_02') }}
V</font> {% elif states('sensor.hbb_pb2a16s20_battery1_cell_volt_min') ==
'2' %} <font color="orange">{{
states('sensor.hbb_pb2a16s20_battery1_cell_volt_02') }} V</font> {% else %}
{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_02') }} V {% endif %}<br>
03. {% if
states('sensor.hbb_pb2a16s20_battery1_cell_volt_max') == '3' %} <font
color="#3090C7">{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_03') }}
V</font> {% elif states('sensor.hbb_pb2a16s20_battery1_cell_volt_min') ==
'3' %} <font color="orange">{{
states('sensor.hbb_pb2a16s20_battery1_cell_volt_03') }} V</font> {% else %}
{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_03') }} V {% endif %}
<br>
04. {% if
states('sensor.hbb_pb2a16s20_battery1_cell_volt_max') == '4' %} <font
color="#3090C7">{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_04') }}
V</font> {% elif states('sensor.hbb_pb2a16s20_battery1_cell_volt_min') ==
'4' %} <font color="orange">{{
states('sensor.hbb_pb2a16s20_battery1_cell_volt_04') }} V</font> {% else %}
{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_04') }} V {% endif %}
<br>
05. {% if
states('sensor.hbb_pb2a16s20_battery1_cell_volt_max') == '5' %} <font
color="#3090C7">{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_05') }}
V</font> {% elif states('sensor.hbb_pb2a16s20_battery1_cell_volt_min') ==
'5' %} <font color="orange">{{
states('sensor.hbb_pb2a16s20_battery1_cell_volt_05') }} V</font> {% else %}
{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_05') }} V {% endif %}
<br>
06. {% if
states('sensor.hbb_pb2a16s20_battery1_cell_volt_max') == '6' %} <font
color="#3090C7">{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_06') }}
V</font> {% elif states('sensor.hbb_pb2a16s20_battery1_cell_volt_min') ==
'6' %} <font color="orange">{{
states('sensor.hbb_pb2a16s20_battery1_cell_volt_06') }} V</font> {% else %}
{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_06') }} V {% endif %}
<br>
card_mod:
style: |
ha-card {
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
}
- square: false
type: grid
cards:
- type: grid
cards:
- type: markdown
content: |2-
<center><font color="#18f50c"><font size=3>07. {% if
states('sensor.hbb_pb2a16s20_battery1_cell_volt_max') == '07' %} <font
color="#3090C7">{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_07') }}
V</font> {% elif states('sensor.hbb_pb2a16s20_battery1_cell_volt_min') ==
'07' %} <font color="orange">{{
states('sensor.hbb_pb2a16s20_battery1_cell_volt_07') }} V</font> {% else %}
{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_07') }} V {% endif %}
<br>
08. {% if
states('sensor.hbb_pb2a16s20_battery1_cell_volt_max') == '08' %} <font
color="#3090C7">{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_08') }}
V</font> {% elif states('sensor.hbb_pb2a16s20_battery1_cell_volt_min') ==
'08' %} <font color="orange">{{
states('sensor.hbb_pb2a16s20_battery1_cell_volt_08') }} V</font> {% else %}
{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_08') }} V {% endif %}<br>
09. {% if
states('sensor.hbb_pb2a16s20_battery1_cell_volt_max') == '09' %} <font
color="#3090C7">{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_09') }}
V</font> {% elif states('sensor.hbb_pb2a16s20_battery1_cell_volt_min') ==
'09' %} <font color="orange">{{
states('sensor.hbb_pb2a16s20_battery1_cell_volt_09') }} V</font> {% else %}
{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_09') }} V {% endif %}
<br>
12. {% if
states('sensor.hbb_pb2a16s20_battery1_cell_volt_max') == '12' %} <font
color="#3090C7">{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_12') }}
V</font> {% elif states('sensor.hbb_pb2a16s20_battery1_cell_volt_min') ==
'12' %} <font color="orange">{{
states('sensor.hbb_pb2a16s20_battery1_cell_volt_12') }} V</font> {% else %}
{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_12') }} V {% endif %}
<br>
card_mod:
style: |
ha-card {
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
}
- square: false
type: grid
cards:
- type: grid
cards:
- type: markdown
style: |
ha-card {
color: #18f50c;
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
}
content: |2-
<center><font color="#18f50c"><font size=3>13. {% if
states('sensor.hbb_pb2a16s20_battery1_cell_volt_max') == '13' %} <font
color="#3150C7">{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_13') }}
V</font> {% elif states('sensor.hbb_pb2a16s20_battery1_cell_volt_min') ==
'13' %} <font color="orange">{{
states('sensor.hbb_pb2a16s20_battery1_cell_volt_13') }} V</font> {% else %}
{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_13') }} V {% endif %}
<br>
16. {% if
states('sensor.hbb_pb2a16s20_battery1_cell_volt_max') == '16' %} <font
color="#3150C7">{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_16') }}
V</font> {% elif states('sensor.hbb_pb2a16s20_battery1_cell_volt_min') ==
'16' %} <font color="orange">{{
states('sensor.hbb_pb2a16s20_battery1_cell_volt_16') }} V</font> {% else %}
{{ states('sensor.hbb_pb2a16s20_battery1_cell_volt_16') }} V {% endif %}
<br>
- type: grid
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.hbb_pb2a16s20_battery1_cell_volt_01
name: 1
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.hbb_pb2a16s20_battery1_cell_volt_02
name: 2
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.hbb_pb2a16s20_battery1_cell_volt_03
name: 3
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.hbb_pb2a16s20_battery1_cell_volt_04
name: 4
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.hbb_pb2a16s20_battery1_cell_volt_05
name: 5
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.hbb_pb2a16s20_battery1_cell_volt_06
name: 6
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- type: entities
style: |
ha-card {
color: #18f50c;
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
}
entities:
- entity: sensor.hbb_pb2a16s20_battery1_cell_volt_07
name: 7
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.hbb_pb2a16s20_battery1_cell_volt_08
name: 8
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.hbb_pb2a16s20_battery1_cell_volt_09
name: 9
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.hbb_pb2a16s20_battery1_cell_volt_10
name: 10
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.hbb_pb2a16s20_battery1_cell_volt_11
name: 11
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.hbb_pb2a16s20_battery1_cell_volt_12
name: 12
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- type: entities
style: |
ha-card {
color: #18f50c;
box-shadow: none;
background: rgba(0,0,0,0);
border: white solid 1px !important;
}
entities:
- entity: sensor.hbb_pb2a16s20_battery1_cell_volt_13
name: 13
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.hbb_pb2a16s20_battery1_cell_volt_14
name: 14
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.hbb_pb2a16s20_battery1_cell_volt_15
name: 15
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
- entity: sensor.hbb_pb2a16s20_battery1_cell_volt_16
name: 16
card_mod:
style:
hui-generic-entity-row:
$: |
state-badge {
display: none;
}
.info {
margin-left:12 !important;
Color: lime;
}
columns: 1
Due to limitation I cut out a few cells .
thanks a lot and I guess many more will love your idea once it is ported to batmon too.
Thanks.
I’'m not good at coding. So please get the help of a person who has that knowledge to get what you want in your configuration
how to get resistance,