syssi/esphome-jk-bms

Read out two Neey balancers?

mathschut opened this issue · 5 comments

Hi, can someone tell me what the config should look like if I want to monitor two Neey Balancers?

Hi, thanks for the file. I have now set up my Mac addresses and I always get data. Unfortunately it always hangs up. Do you have any idea what could be causing this?

Is it possible that the ESP is overloaded with two devices?

Here the eror:

INFO ESPHome 2024.7.2
INFO Reading configuration /config/esphome/neey.yaml...
INFO Updating https://github.com/syssi/esphome-jk-bms.git@main
INFO Starting log output from 192.168.1.201 using esphome API
INFO Successfully connected to heltec-balancer @ 192.168.1.201 in 7.213s
WARNING Can't connect to ESPHome API for heltec-balancer @ 192.168.1.201: Timeout waiting for HelloResponse, ConnectResponse after 30.0s (TimeoutAPIError)
INFO Trying to connect to heltec-balancer @ 192.168.1.201 in the background
WARNING heltec-balancer @ 192.168.1.201: Connection error occurred: heltec-balancer @ 192.168.1.201: Connection lost

Let's start with a super simple and lightweight setup just for comparison:

substitutions:
  name: heltec-balancer
  balancer0: "${name} device0"
  balancer1: "${name} device1"
  device_description: "Monitor and control a Heltec/NEEY 4A balancer via bluetooth"
  external_components_source: github://syssi/esphome-jk-bms@main
  balancer0_mac_address: C8:47:8C:E1:E2:FF
  balancer1_mac_address: C8:47:8C:E1:E2:EE

esphome:
  name: ${name}
  comment: ${device_description}
  min_version: 2024.6.0
  project:
    name: "syssi.esphome-jk-bms"
    version: 2.0.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
  on_begin:
    then:
      - switch.turn_off: ble_client_switch0
      - switch.turn_off: ble_client_switch1
      - logger.log: "BLE connection suspended for OTA update"

logger:
  level: DEBUG

# If you don't use Home Assistant please remove this `api` section and uncomment the `mqtt` component!
api:

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

esp32_ble_tracker:
  on_ble_advertise:
    then:
      - lambda: |-
          if (x.get_name().rfind("GW-", 0) == 0) {
            ESP_LOGI("ble_adv", "New Heltec/NEEY balancer found");
            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: ${balancer0_mac_address}
    id: client0
  - mac_address: ${balancer1_mac_address}
    id: client1

heltec_balancer_ble:
  - ble_client_id: client0
    throttle: 5s
    id: balancer0
  - ble_client_id: client1
    throttle: 5s
    id: balancer1


sensor:
  - platform: heltec_balancer_ble
    heltec_balancer_ble_id: balancer0
    total_voltage:
      name: "${balancer0} total voltage"
    temperature_sensor_1:
      name: "${balancer0} temperature sensor 1"
    temperature_sensor_2:
      name: "${balancer0} temperature sensor 2"
    total_runtime:
      name: "${balancer0} total runtime"
    balancing_current:
      name: "${balancer0} balancing current"

  - platform: heltec_balancer_ble
    heltec_balancer_ble_id: balancer1
    total_voltage:
      name: "${balancer1} total voltage"
    temperature_sensor_1:
      name: "${balancer1} temperature sensor 1"
    temperature_sensor_2:
      name: "${balancer1} temperature sensor 2"
    total_runtime:
      name: "${balancer1} total runtime"
    balancing_current:
      name: "${balancer1} balancing current"

switch:
  - platform: heltec_balancer_ble
    heltec_balancer_ble_id: balancer0
    balancer:
      name: "${balancer0} balancer"

  - platform: heltec_balancer_ble
    heltec_balancer_ble_id: balancer1
    balancer:
      name: "${balancer1} balancer"

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

  - platform: ble_client
    ble_client_id: client1
    id: ble_client_switch1
    name: "${balancer1} enable bluetooth connection"

Another important change to free some resources is to decrease the log level:

logger:
  level: INFO

Which esp should I use for 2 devices?

I have no recommendation.