Code for Batteries - It's the full code with sections commented out.
substitutions:
name: jbdbms-1
device_description: "Battery Purchase Date - 31/AUG/23. IP Address - 192.168.1.20"
external_components_source: github://syssi/esphome-jbd-bms@main
tx_pin: GPIO4
rx_pin: GPIO5
rx_timeout: 150ms
esphome:
name: ${name}
friendly_name: 305ah Battery 1
comment: ${device_description}
project:
name: "syssi.esphome-jbd-bms"
version: 1.5.0
esp8266:
board: d1_mini
external_components:
- source: ${external_components_source}
refresh: 0s
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
manual_ip:
static_ip: 192.168.1.20
gateway: 192.168.1.1
subnet: 255.255.255.0
ota:
platform: esphome
logger:
level: DEBUG
web_server:
port: 80
# If you use Home Assistant please remove this `mqtt` section and uncomment the `api` component!
# The native API has many advantages over MQTT: https://esphome.io/components/api.html#advantages-over-mqtt
#mqtt:
# broker: !secret mqtt_host
# username: !secret mqtt_username
# password: !secret mqtt_password
# id: mqtt_client
api:
uart:
- id: uart_0
baud_rate: 9600
tx_pin: ${tx_pin}
rx_pin: ${rx_pin}
jbd_bms:
- id: bms0
update_interval: 2s
rx_timeout: ${rx_timeout}
binary_sensor:
- platform: jbd_bms
jbd_bms_id: bms0
balancing:
name: "${name} balancing"
charging:
name: "${name} charging"
discharging:
name: "${name} discharging"
online_status:
name: "${name} online status"
sensor:
- platform: jbd_bms
jbd_bms_id: bms0
battery_strings:
name: "${name} battery strings"
current:
name: "${name} current"
power:
name: "${name} power"
charging_power:
name: "${name} charging power"
discharging_power:
name: "${name} discharging power"
state_of_charge:
name: "${name} state of charge"
accuracy_decimals: 1
nominal_capacity:
name: "${name} nominal capacity"
charging_cycles:
name: "${name} charging cycles"
capacity_remaining:
name: "${name} capacity remaining"
battery_cycle_capacity:
name: "${name} battery cycle capacity"
total_voltage:
name: "${name} total voltage"
average_cell_voltage:
name: "${name} average cell voltage"
delta_cell_voltage:
name: "${name} delta cell voltage"
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"
temperature_1:
name: "${name} temperature 1"
# temperature_2:
# name: "${name} temperature 2"
# temperature_3:
# name: "${name} temperature 3"
# temperature_4:
# name: "${name} temperature 4"
# temperature_5:
# name: "${name} temperature 5"
# temperature_6:
# name: "${name} temperature 6"
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_voltage_25:
# name: "${name} cell voltage 25"
# cell_voltage_26:
# name: "${name} cell voltage 26"
# cell_voltage_27:
# name: "${name} cell voltage 27"
# cell_voltage_28:
# name: "${name} cell voltage 28"
# cell_voltage_29:
# name: "${name} cell voltage 29"
# cell_voltage_30:
# name: "${name} cell voltage 30"
# cell_voltage_31:
# name: "${name} cell voltage 31"
# cell_voltage_32:
# name: "${name} cell voltage 32"
operation_status_bitmask:
name: "${name} operation status bitmask"
errors_bitmask:
name: "${name} errors bitmask"
balancer_status_bitmask:
name: "${name} balancer status bitmask"
software_version:
name: "${name} software version"
- platform: wifi_signal
name: "WiFi Signal Sensor"
id: rssi_sensor
update_interval: 15s
- platform: template
name: "Wifi Quality"
unit_of_measurement: "%"
accuracy_decimals: 0
icon: "mdi:wifi"
update_interval: 15s
lambda: |-
int quality;
const int rssi = id(rssi_sensor).state;
if (rssi <= -100) {
quality = 0;
} else if (rssi >= -50) {
quality = 100;
} else {
quality = 2 * (rssi + 100);
}
return quality;
text_sensor:
- platform: jbd_bms
jbd_bms_id: bms0
errors:
name: "${name} errors"
operation_status:
name: "${name} operation status"
device_model:
name: "${name} device model"
switch:
- platform: jbd_bms
jbd_bms_id: bms0
charging:
name: "${name} charging"
discharging:
name: "${name} discharging"