Last active
December 7, 2024 09:35
-
-
Save aver-ua/40b8ef3ee374ac7fa48eb25f1bfe9c47 to your computer and use it in GitHub Desktop.
ESPHome config for JK-BMS B1A8S10P via UART-TTL monitoring, ESP32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| substitutions: | |
| name: jkbms-b2a8s20p-calb | |
| device_description: "Monitor a JK-BMS using the GPS port (UART-TTL)" | |
| external_components_source: github://syssi/esphome-jk-bms@main | |
| tx_pin: GPIO16 | |
| rx_pin: GPIO17 | |
| time: | |
| - platform: homeassistant | |
| id: homeassistant_time | |
| esphome: | |
| name: ${name} | |
| 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: arduino | |
| external_components: | |
| - source: ${external_components_source} | |
| refresh: 0s | |
| wifi: | |
| ssid: !secret wifi_ssid | |
| password: !secret wifi_password | |
| # Enable fallback hotspot (captive portal) in case wifi connection fails | |
| ap: | |
| ssid: "Jkbms-b2a8s20p-calb Hotspot" | |
| password: !secret hotspot_password | |
| # Enable Home Assistant API | |
| api: | |
| encryption: | |
| key: !secret api_encryption_key | |
| ota: | |
| platform: esphome | |
| logger: | |
| level: DEBUG | |
| # baud_rate: 0 | |
| uart: | |
| - id: uart_0 | |
| baud_rate: 115200 | |
| rx_buffer_size: 384 | |
| tx_pin: ${tx_pin} | |
| rx_pin: ${rx_pin} | |
| jk_modbus: | |
| - id: modbus0 | |
| uart_id: uart_0 | |
| rx_timeout: 50ms | |
| jk_bms: | |
| - id: bms0 | |
| jk_modbus_id: modbus0 | |
| update_interval: 5s | |
| binary_sensor: | |
| - platform: jk_bms | |
| balancing: | |
| name: "${name} balancing" | |
| balancing_switch: | |
| name: "${name} balancing switch" | |
| charging: | |
| name: "${name} charging" | |
| discharging: | |
| name: "${name} discharging" | |
| dedicated_charger_switch: | |
| name: "${name} dedicated charger switch" | |
| online_status: | |
| name: "${name} online status" | |
| sensor: | |
| - platform: jk_bms | |
| 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" | |
| power_tube_temperature: | |
| name: "${name} power tube temperature" | |
| temperature_sensor_1: | |
| name: "${name} temperature sensor 1" | |
| temperature_sensor_2: | |
| name: "${name} temperature sensor 2" | |
| total_voltage: | |
| name: "${name} total voltage" | |
| current: | |
| name: "${name} current" | |
| power: | |
| name: "${name} power" | |
| charging_power: | |
| name: "${name} charging power" | |
| id: bms_charging_power | |
| discharging_power: | |
| name: "${name} discharging power" | |
| id: bms_discharging_power | |
| capacity_remaining: | |
| name: "${name} capacity remaining" | |
| capacity_remaining_derived: | |
| name: "${name} capacity remaining derived" | |
| temperature_sensors: | |
| name: "${name} temperature sensors" | |
| charging_cycles: | |
| name: "${name} charging cycles" | |
| total_charging_cycle_capacity: | |
| name: "${name} total charging cycle capacity" | |
| battery_strings: | |
| name: "${name} battery strings" | |
| errors_bitmask: | |
| name: "${name} errors bitmask" | |
| operation_mode_bitmask: | |
| name: "${name} operation mode bitmask" | |
| total_voltage_overvoltage_protection: | |
| name: "${name} total voltage overvoltage protection" | |
| total_voltage_undervoltage_protection: | |
| name: "${name} total voltage undervoltage protection" | |
| cell_voltage_overvoltage_protection: | |
| name: "${name} cell voltage overvoltage protection" | |
| cell_voltage_overvoltage_recovery: | |
| name: "${name} cell voltage overvoltage recovery" | |
| cell_voltage_overvoltage_delay: | |
| name: "${name} cell voltage overvoltage delay" | |
| cell_voltage_undervoltage_protection: | |
| name: "${name} cell voltage undervoltage protection" | |
| cell_voltage_undervoltage_recovery: | |
| name: "${name} cell voltage undervoltage recovery" | |
| cell_voltage_undervoltage_delay: | |
| name: "${name} cell voltage undervoltage delay" | |
| cell_pressure_difference_protection: | |
| name: "${name} cell pressure difference protection" | |
| discharging_overcurrent_protection: | |
| name: "${name} discharging overcurrent protection" | |
| discharging_overcurrent_delay: | |
| name: "${name} discharging overcurrent delay" | |
| charging_overcurrent_protection: | |
| name: "${name} charging overcurrent protection" | |
| charging_overcurrent_delay: | |
| name: "${name} charging overcurrent delay" | |
| balance_starting_voltage: | |
| name: "${name} balance starting voltage" | |
| balance_opening_pressure_difference: | |
| name: "${name} balance opening pressure difference" | |
| power_tube_temperature_protection: | |
| name: "${name} power tube temperature protection" | |
| power_tube_temperature_recovery: | |
| name: "${name} power tube temperature recovery" | |
| temperature_sensor_temperature_protection: | |
| name: "${name} temperature sensor temperature protection" | |
| temperature_sensor_temperature_recovery: | |
| name: "${name} temperature sensor temperature recovery" | |
| temperature_sensor_temperature_difference_protection: | |
| name: "${name} temperature sensor temperature difference protection" | |
| charging_high_temperature_protection: | |
| name: "${name} charging high temperature protection" | |
| discharging_high_temperature_protection: | |
| name: "${name} discharging high temperature protection" | |
| charging_low_temperature_protection: | |
| name: "${name} charging low temperature protection" | |
| charging_low_temperature_recovery: | |
| name: "${name} charging low temperature recovery" | |
| discharging_low_temperature_protection: | |
| name: "${name} discharging low temperature protection" | |
| discharging_low_temperature_recovery: | |
| name: "${name} discharging low temperature recovery" | |
| total_battery_capacity_setting: | |
| name: "${name} total battery capacity setting" | |
| current_calibration: | |
| name: "${name} current calibration" | |
| device_address: | |
| name: "${name} device address" | |
| sleep_wait_time: | |
| name: "${name} sleep wait time" | |
| alarm_low_volume: | |
| name: "${name} alarm low volume" | |
| manufacturing_date: | |
| name: "${name} manufacturing date" | |
| total_runtime: | |
| name: "${name} total runtime" | |
| # start_current_calibration: | |
| # name: "${name} start current calibration" | |
| actual_battery_capacity: | |
| name: "${name} actual battery capacity" | |
| # protocol_version: | |
| # name: "${name} protocol version" | |
| - platform: total_daily_energy | |
| name: "${name} Energy Charging Today" | |
| power_id: bms_charging_power | |
| unit_of_measurement: kWh | |
| icon: mdi:counter | |
| accuracy_decimals: 3 | |
| restore: true | |
| filters: | |
| - multiply: 0.001 | |
| - platform: total_daily_energy | |
| name: "${name} Energy Discharging Today" | |
| power_id: bms_discharging_power | |
| unit_of_measurement: kWh | |
| icon: mdi:counter | |
| accuracy_decimals: 3 | |
| restore: true | |
| filters: | |
| - multiply: 0.001 | |
| # Uptime sensor. | |
| - platform: uptime | |
| name: "${name} Uptime" | |
| entity_category: "diagnostic" | |
| id: esp_uptime | |
| update_interval: 60s | |
| on_raw_value: | |
| then: | |
| - text_sensor.template.publish: | |
| id: uptime_human | |
| state: !lambda |- | |
| int seconds = round(id(esp_uptime).raw_state); | |
| int days = seconds / (24 * 3600); | |
| seconds = seconds % (24 * 3600); | |
| int hours = seconds / 3600; | |
| seconds = seconds % 3600; | |
| int minutes = seconds / 60; | |
| seconds = seconds % 60; | |
| return ( | |
| (days ? String(days) + "d " : "") + | |
| (hours ? String(hours) + "h " : "") + | |
| (minutes ? String(minutes) + "m " : "") + | |
| (String(seconds) + "s") | |
| ).c_str(); | |
| # WiFi Signal sensor. | |
| - platform: wifi_signal | |
| name: "${name} WiFi Signal dB" | |
| id: wifi_signal_db | |
| entity_category: "diagnostic" | |
| update_interval: 60s | |
| - platform: copy # Reports the WiFi signal strength in % | |
| source_id: wifi_signal_db | |
| name: "${name} WiFi Signal Percent" | |
| filters: | |
| - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0); | |
| unit_of_measurement: "%" | |
| entity_category: "diagnostic" | |
| device_class: "" | |
| - platform: dht | |
| pin: GPIO23 | |
| model: AM2302 | |
| temperature: | |
| name: "${name} AM2303 Temperature" | |
| humidity: | |
| name: "${name} AM2303 Humidity" | |
| update_interval: 60s | |
| switch: | |
| # Restart ESP | |
| - platform: restart | |
| name: "${name} Restart ESP" | |
| icon: "mdi:restart" | |
| - platform: jk_bms | |
| charging: | |
| name: "${name} charging" | |
| discharging: | |
| name: "${name} discharging" | |
| text_sensor: | |
| - platform: jk_bms | |
| errors: | |
| name: "${name} errors" | |
| operation_mode: | |
| name: "${name} operation mode" | |
| battery_type: | |
| name: "${name} battery type" | |
| password: | |
| name: "${name} password" | |
| device_type: | |
| name: "${name} device type" | |
| software_version: | |
| name: "${name} software version" | |
| manufacturer: | |
| name: "${name} manufacturer" | |
| total_runtime_formatted: | |
| name: "${name} total runtime formatted" | |
| # Uptime Human Readable | |
| - platform: template | |
| name: "${name} Uptime HR" | |
| id: uptime_human | |
| icon: mdi:clock-start | |
| # Enable Web server. | |
| web_server: | |
| port: 80 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment