Mạch ESP32 kết nối BLE giám sát BMS JK

Hướng dẫn làm mạch ESP32 kết nối BLE theo dõi BMS JK
Code nạp ESP32:
Yêu cầu:
– Xác định được MAC Address của BLE khối pin để sửa code
– Xác định được phân loại mạch

substitutions:
  name: jk-bms
  device_description: "Giam sat BMS JK qua BLE -bachtrannet"
  external_components_source: github://syssi/esphome-jk-bms@main
  mac_address: C8:47:80:0D:0A:DA #thay thế bằng MAC Address của thiết bị bạn đang dùng
  # 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  #Xem thông số mạch BMS so sánh với dòng trên sau đó điền vào dữ liệu phù hợp

esphome:
  name: bms-jk
  comment: ${device_description}
  min_version: 2024.6.0
  project:
    name: "syssi.esphome-jk-bms"
    version: 2.1.0

esp32:
  board: wemos_d1_mini32
  framework:
    type: esp-idf

external_components:
  - source: ${external_components_source}
    refresh: 0s

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

ota:
  platform: esphome
  password: "c717640ea7d277aa25558a86f2e6bf57"
  on_begin:
    then:
      - switch.turn_off: ble_client_switch0
      - logger.log: "BLE connection suspended for OTA update"

logger:
  level: DEBUG
  logs:
    esp32_ble_tracker: INFO
    esp32_ble_client: INFO

# If you don't use Home Assistant please remove this `api` section and uncomment the `mqtt` component!
api:
  encryption:
    key: "lFC5laOAwjcbihrZmiOTlTGZp2s5kyqwSZ/g5Tl5lhg="

# mqtt:
#   broker: !secret mqtt_host
#   username: !secret mqtt_username
#   password: !secret mqtt_password
#   id: mqtt_client

esp32_ble_tracker:
  scan_parameters:
    active: false
  on_ble_advertise:
    then:
      - lambda: |-
          if (x.get_name().rfind("JK-", 0) == 0 || x.get_name().rfind("JK_", 0) == 0) {
            ESP_LOGI("ble_adv", "Tim thay JK-BMS moi");
            ESP_LOGI("ble_adv", "  Name: %s", x.get_name().c_str());
            ESP_LOGI("ble_adv", "  MAC address: %s", x.address_str().c_str());
            ESP_LOGD("ble_adv", "  Advertised service UUIDs:");
            for (auto uuid : x.get_service_uuids()) {
              ESP_LOGD("ble_adv", "    - %s", uuid.to_string().c_str());
            }
          }

ble_client:
  - mac_address: ${mac_address}
    id: client0

jk_bms_ble:
  - ble_client_id: client0
    protocol_version: ${protocol_version}
    throttle: 1s
    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"

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"
    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"

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"
    power_tube_temperature:
      name: "${name} power tube temperature"
    balancing:
      name: "${name} balancing"
    state_of_charge:
      name: "${name} state of charge"
    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"

switch:
  - platform: jk_bms_ble
    charging:
      name: "${name} charging"
    discharging:
      name: "${name} discharging"
    balancer:
      name: "${name} balancer"

  - platform: ble_client
    ble_client_id: client0
    id: ble_client_switch0
    name: "${name} enable bluetooth connection"

text_sensor:
  - platform: jk_bms_ble
    errors:
      name: "${name} errors"
    total_runtime_formatted:
      name: "${name} total runtime formatted"

Demo giao diện mình đang dùng trên Dashboard

Code YAML Dashboad

cards:
  - type: vertical-stack
    cards:
      - type: horizontal-stack
        cards:
          - type: horizontal-stack
            cards:
              - type: custom:bubble-card
                card_type: button
                entity: switch.jk_bms_charging
                name: Sạc
                show_state: false
                force_icon: false
                show_attribute: false
                show_last_changed: false
                sub_button:
                  - entity: switch.jk_bms_charging
                    show_name: false
                    name: Đang sạc
                    show_state: true
                    show_attribute: false
                    show_last_changed: false
                styles: ""
                button_type: state
                icon: mdi:battery-positive
          - type: horizontal-stack
            cards:
              - type: custom:bubble-card
                card_type: button
                entity: switch.jk_bms_discharging
                name: Xả
                show_state: false
                force_icon: false
                show_attribute: false
                show_last_changed: false
                sub_button:
                  - entity: switch.jk_bms_charging
                    show_name: false
                    name: Đang xả
                    show_state: true
                    show_attribute: false
                    show_last_changed: false
                button_type: state
                icon: mdi:battery-negative
      - type: horizontal-stack
        cards:
          - type: custom:bubble-card
            card_type: button
            entity: switch.jk_bms_balancer
            name: Cân bằng
            show_state: false
            force_icon: false
            show_attribute: false
            show_last_changed: false
            sub_button:
              - entity: switch.jk_bms_charging
                show_name: false
                name: Đang sạc
                show_state: true
                show_attribute: false
                show_last_changed: false
            button_type: state
  - 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><b><font color=#41CD52 size=6>{{
              states('sensor.jk_bms_total_voltage') }} V</font></b><br> Công
              Suất:&nbsp;&nbsp;<font color=#41CD52>{{
              states('sensor.jk_bms_power') }} W</font><br> Dung
              Lượng:&nbsp;&nbsp;<font color=#41CD52>{{
              states('sensor.jk_bms_total_battery_capacity_setting') }}
              Ah</font><br> Tổng Cycle:&nbsp;&nbsp;<font color=#41CD52>{{
              states('sensor.jk_bms_total_charging_cycle_capacity') }}
              Ah</font><br> Áp Trung Bình.:&nbsp;&nbsp;<font color=#41CD52>{{
              states('sensor.jk_bms_average_cell_voltage') }} V</font><br> Dòng
              cân bằng:&nbsp;&nbsp;<font color=#41CD52>{{
              states('sensor.jk_bms_balancing_current') }} A</font><br> Nhiệt
              T1:&nbsp;&nbsp;<font color=#41CD52>{{
              states('sensor.jk_bms_temperature_sensor_1') }} °C</font>
          - type: markdown
            content: >-
              <center><b><font color=#41CD52 size=6>{{
              states('sensor.jk_bms_current') }} A</font></b><br>
              SOC:&nbsp;&nbsp;<font color=#41CD52>{{
              states('sensor.jk_bms_state_of_charge') }} %</font><br> 
              Còn:&nbsp;&nbsp;<font color=#41CD52>{{
              states('sensor.jk_bms_capacity_remaining') }} Ah</font><br> Chu
              kỳ:&nbsp;&nbsp;<font color=#41CD52>{{
              states('sensor.jk_bms_charging_cycles') }}</font><br> Lệch
              Cell.:&nbsp;&nbsp;<font color=#41CD52>{{
              states('sensor.jk_bms_delta_cell_voltage') }} V</font><br> Nhiệt
              MOS.:&nbsp;&nbsp;<font color=#41CD52>{{
              states('sensor.jk_bms_power_tube_temperature') }} °C</font><br>
              Nhiệt T2:&nbsp;&nbsp;<font color=#41CD52>{{
              states('sensor.jk_bms_temperature_sensor_2') }} °C</font>
  - 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><b>Cells
      - type: grid
        square: false
        columns: 2
        cards:
          - type: markdown
            content: >-
              <center>01.&nbsp;&nbsp;&nbsp; {% 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="red">{{ states('sensor.jk_bms_cell_voltage_1') }}
              V</font> {% else %} {{ states('sensor.jk_bms_cell_voltage_1') }} V
              {% endif %} &nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp; {{
              states('sensor.jk_bms_cell_resistance_1') }} Ω <br>
              02.&nbsp;&nbsp;&nbsp; {% 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="red">{{ states('sensor.jk_bms_cell_voltage_2') }}
              V</font> {% else %} {{ states('sensor.jk_bms_cell_voltage_2') }} V
              {% endif %} &nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp; {{
              states('sensor.jk_bms_cell_resistance_2') }} Ω <br>
              03.&nbsp;&nbsp;&nbsp; {% 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="red">{{ states('sensor.jk_bms_cell_voltage_3') }}
              V</font> {% else %} {{ states('sensor.jk_bms_cell_voltage_3') }} V
              {% endif %} &nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp; {{
              states('sensor.jk_bms_cell_resistance_3') }} Ω <br>
              04.&nbsp;&nbsp;&nbsp; {% 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="red">{{ states('sensor.jk_bms_cell_voltage_4') }}
              V</font> {% else %} {{ states('sensor.jk_bms_cell_voltage_4') }} V
              {% endif %} &nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp; {{
              states('sensor.jk_bms_cell_resistance_4') }} Ω <br>
              05.&nbsp;&nbsp;&nbsp; {% 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="red">{{ states('sensor.jk_bms_cell_voltage_5') }}
              V</font> {% else %} {{ states('sensor.jk_bms_cell_voltage_5') }} V
              {% endif %} &nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp; {{
              states('sensor.jk_bms_cell_resistance_5') }} Ω <br>
              06.&nbsp;&nbsp;&nbsp; {% 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="red">{{ states('sensor.jk_bms_cell_voltage_6') }}
              V</font> {% else %} {{ states('sensor.jk_bms_cell_voltage_6') }} V
              {% endif %} &nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp; {{
              states('sensor.jk_bms_cell_resistance_6') }} Ω <br>
              07.&nbsp;&nbsp;&nbsp; {% 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="red">{{ states('sensor.jk_bms_cell_voltage_7') }}
              V</font> {% else %} {{ states('sensor.jk_bms_cell_voltage_7') }} V
              {% endif %} &nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp; {{
              states('sensor.jk_bms_cell_resistance_7') }} Ω <br>
              08.&nbsp;&nbsp;&nbsp; {% 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="red">{{ states('sensor.jk_bms_cell_voltage_8') }}
              V</font> {% else %} {{ states('sensor.jk_bms_cell_voltage_8') }} V
              {% endif %} &nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp; {{
              states('sensor.jk_bms_cell_resistance_8') }} Ω <br></center>
          - type: markdown
            content: >-
              <center>09.&nbsp;&nbsp;&nbsp; {% 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="red">{{ states('sensor.jk_bms_cell_voltage_9') }}
              V</font> {% else %} {{ states('sensor.jk_bms_cell_voltage_9') }} V
              {% endif %} &nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp; {{
              states('sensor.jk_bms_cell_resistance_9') }} Ω <br>
              10.&nbsp;&nbsp;&nbsp; {% 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="red">{{ states('sensor.jk_bms_cell_voltage_10') }}
              V</font> {% else %} {{ states('sensor.jk_bms_cell_voltage_10') }}
              V {% endif %} &nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp; {{
              states('sensor.jk_bms_cell_resistance_10') }} Ω <br>
              11.&nbsp;&nbsp;&nbsp; {% 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="red">{{ states('sensor.jk_bms_cell_voltage_11') }}
              V</font> {% else %} {{ states('sensor.jk_bms_cell_voltage_11') }}
              V {% endif %} &nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp; {{
              states('sensor.jk_bms_cell_resistance_11') }} Ω <br>
              12.&nbsp;&nbsp;&nbsp; {% 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="red">{{ states('sensor.jk_bms_cell_voltage_12') }}
              V</font> {% else %} {{ states('sensor.jk_bms_cell_voltage_12') }}
              V {% endif %} &nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp; {{
              states('sensor.jk_bms_cell_resistance_12') }} Ω <br>
              13.&nbsp;&nbsp;&nbsp; {% 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="red">{{ states('sensor.jk_bms_cell_voltage_13') }}
              V</font> {% else %} {{ states('sensor.jk_bms_cell_voltage_13') }}
              V {% endif %} &nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp; {{
              states('sensor.jk_bms_cell_resistance_13') }} Ω <br>
              14.&nbsp;&nbsp;&nbsp; {% 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="red">{{ states('sensor.jk_bms_cell_voltage_14') }}
              V</font> {% else %} {{ states('sensor.jk_bms_cell_voltage_14') }}
              V {% endif %} &nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp; {{
              states('sensor.jk_bms_cell_resistance_14') }} Ω <br>
              15.&nbsp;&nbsp;&nbsp; {% 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="red">{{ states('sensor.jk_bms_cell_voltage_15') }}
              V</font> {% else %} {{ states('sensor.jk_bms_cell_voltage_15') }}
              V {% endif %} &nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp; {{
              states('sensor.jk_bms_cell_resistance_15') }} Ω <br>
              16.&nbsp;&nbsp;&nbsp; {% 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="red">{{ states('sensor.jk_bms_cell_voltage_16') }}
              V</font> {% else %} {{ states('sensor.jk_bms_cell_voltage_16') }}
              V {% endif %} &nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp; {{
              states('sensor.jk_bms_cell_resistance_16') }} Ω <br></center>
  - type: horizontal-stack
    cards:
      - type: custom:battery-state-card
        icon: mdi:battery
        colors:
          steps:
            - value: 3.2
              color: red
            - value: 3.25
              color: yellow
            - value: 3.3
              color: blue
            - value: 3.4
              color: green
        tap_action:
          action: more-info
        collapse: 8
        sort:
          by: state
          desc: true
        unit: V
        entities:
          - entity: sensor.jk_bms_cell_voltage_1
            decimals: 3
            name: Cell 1
          - entity: sensor.jk_bms_cell_voltage_2
            decimals: 3
            name: Cell 2
          - entity: sensor.jk_bms_cell_voltage_3
            decimals: 3
            name: Cell 3
          - entity: sensor.jk_bms_cell_voltage_4
            decimals: 3
            name: Cell 4
          - entity: sensor.jk_bms_cell_voltage_5
            decimals: 3
            name: Cell 5
          - entity: sensor.jk_bms_cell_voltage_6
            decimals: 3
            name: Cell 6
          - entity: sensor.jk_bms_cell_voltage_7
            decimals: 3
            name: Cell 7
          - entity: sensor.jk_bms_cell_voltage_8
            decimals: 3
            name: Cell 8
      - type: custom:battery-state-card
        icon: mdi:battery
        colors:
          steps:
            - value: 3.2
              color: red
            - value: 3.25
              color: yellow
            - value: 3.3
              color: blue
            - value: 3.4
              color: green
        tap_action:
          action: more-info
        collapse: 8
        sort:
          by: state
          desc: true
        unit: V
        entities:
          - entity: sensor.jk_bms_cell_voltage_9
            decimals: 3
            name: Cell 9
          - entity: sensor.jk_bms_cell_voltage_10
            decimals: 3
            name: Cell 10
          - entity: sensor.jk_bms_cell_voltage_11
            decimals: 3
            name: Cell 11
          - entity: sensor.jk_bms_cell_voltage_12
            decimals: 3
            name: Cell 12
          - entity: sensor.jk_bms_cell_voltage_13
            decimals: 3
            name: Cell 13
          - entity: sensor.jk_bms_cell_voltage_14
            decimals: 3
            name: Cell 14
          - entity: sensor.jk_bms_cell_voltage_15
            decimals: 3
            name: Cell 15
          - entity: sensor.jk_bms_cell_voltage_16
            decimals: 3
            name: Cell 16
title: JK BMS
theme: ios-dark-mode-dark-green
type: custom:vertical-layout

Nếu anh em muốn giao diện giống JK thì tự tìm trên mạng có nhé

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *