Hallo,
habe gerade mühevoll das Projekt esphome-jk-bms auf einem ESP32 in meine Home Assistant eingebunden. Läuft erst mal, aber da das BMS noch offline ist, habe ich die Kommunikation noch nicht testen können, wird aber sicher auch noch gehen.
Jetzt wollte ich mir aber ein Dashboard zusammen zimmern, aber bin da noch nicht so firm, darum wollte ich mal fragen, hat da schon einer was gemacht und könnte das teilen? Dann könnte ich am Akku weiter bauen, denn ich möchte gerne die Daten beim Aufladen mitschreiben und aus der Ferne überwachen.
Hallo wie hast du den ESP32 korrekt mit ESP Home geflasht?
Ich bekomme das nicht hin.
Ich habe verschiedene .yaml Beispiel files probiert .
Da wird auch jedesmal das bin file erzeugt.
Nach dem ESP reset tut sich jedoch nichts??? :oops:
Hallo,
habe gerade mühevoll das Projekt esphome-jk-bms auf einem ESP32 in meine Home Assistant eingebunden. Läuft erst mal, aber da das BMS noch offline ist, habe ich die Kommunikation noch nicht testen können, wird aber sicher auch noch gehen.
Jetzt wollte ich mir aber ein Dashboard zusammen zimmern, aber bin da noch nicht so firm, darum wollte ich mal fragen, hat da schon einer was gemacht und könnte das teilen? Dann könnte ich am Akku weiter bauen, denn ich möchte gerne die Daten beim Aufladen mitschreiben und aus der Ferne überwachen.
ist hier jemand schon weiter gekommen?
Nutze es nur noch für meinen JK-Balancer, da gehen noch nicht alle parameter, aber ja, das BMS sollte gehen.
[quote data-userid="1883" data-postid="112190"]
ist hier jemand schon weiter gekommen?[/quote]
Ist mit Sicherheit nur ein bootloop, stacküberauf.
Streiche die properties raus die du nicht brauchst und compilier das Zeug nochmal.
Das läuft bei mir seit Monaten ohne Probleme (per Bluetooth). Poste doch mal deine .yaml Datei aus ESPHome.
Das wichtigste ist natürlich auch die richtige MAC Adresse "mac_address: C8:47:...." in der .yaml Datei einzutragen.
Bitte diesen Abschnitt:
esp32: board: esp32dev framework: type: esp-idf version: latest
ändern auf
esp32: board: esp32dev framework: type: esp-idf version: recommended
Aktuell ist ESPHome nicht kompatibel mit dem neuesten ESP-IDF-Framework-Release. Danach sollte das YAML sauber bauen. Hast du darüberhinaus Probleme das Setup ans Laufen zu bekommen?
Alternativ könntest du dir die aktuelle Beispiel-Konfiguration aus dem Projekt schnappen und wieder auf deine Bedürfnisse reduzieren: esphome-jk-bms/esp32-ble-example.yaml at main · syssi/esphome-jk-bms · GitHub
Hinzugekommen ist hier ein neuer binärer Sensor, welche den Online-Status des BMS anzeigt:
binary_sensor: - platform: jk_bms_ble online_status: name: "${name} online status"
Dieses Feature gibt es noch nicht in deiner YAML von Release 1.3.0.
danke dir teste ich!
so es funktioniert, vielen Dank. Habe jetzt Pro BMS einen ESP32, das sollte ja passen. Für die NEEY Balancer werde ich auch mal noch schauen obs was gibt.
Für das Dashboard hat jemand ein Lovelace UI zusammengebaut: Home Assistant Lovelace UI cards · syssi/esphome-jk-bms · Discussion #230 · GitHub. Nach der Anleitung ging das bei mir.
@domii666 Das ist die Beispiel-Konfiguration, welche du für den NEEY Balancer nehmen solltest:
danke funktioniert! hab zwar jetzt 4 esp32 rumfahren, aber dafür läuft es. {green}
@domii666 Es sollten aber mehrere BMS pro ESP gehen. Bei mir laufen 2 JK stabil an einem ESP per BT. Nur, falls das noch nicht bekannt war....
hättest du mir bitte deine YAML? dass ich spicken kann, bin hier noch ein wenig unerfahren
Das tut es bei mir. Da wo XXX sind anpassen an die eigenen Gegebenheiten. Ob noch mehr gehen würden weiß ich nicht. Aber zwei laufen wie gesagt stabil.
substitutions: name: jk-bms bms0: "${name} bms0" bms1: "${name} bms1" device_description: "Monitor and control a JK-BMS via bluetooth" external_components_source: github://syssi/esphome-jk-bms@main bms0_mac_address: C8:47:XX:XX:XX:XX bms1_mac_address: C8:47:XX:XX:XX:XX # Defaults to "JK02". Please use "JK04" if you have some old JK-BMS version (f.e. JK-B2A16S hw 3.0, sw. 3.3.0) bms0_protocol_version: JK02 bms1_protocol_version: JK02 esphome: name: akkumonitor comment: ${device_description} project: name: "syssi.esphome-jk-bms" version: 1.3.0 esp32: board: esp32dev framework: # The arduino platform crashs # type: arduino # version: latest type: esp-idf version: latest # Enable logging logger: # Enable Home Assistant API api: encryption: key: "XXXXXXXXXXXXXXXXX" ota: password: "XXXXXXXXXXXXXXXX" 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: "Akkumonitor Fallback Hotspot" password: "XXXXXXXXXX" esp32_ble_tracker: on_ble_advertise: then: - lambda: |- if (x.get_name().rfind("JK-", 0) == 0) { ESP_LOGI("ble_adv", "New JK-BMS 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: ${bms0_mac_address} id: client0 - mac_address: ${bms1_mac_address} id: client1 jk_bms_ble: - ble_client_id: client0 protocol_version: ${bms0_protocol_version} throttle: 5s id: bms0 - ble_client_id: client1 protocol_version: ${bms1_protocol_version} throttle: 5s id: bms1 binary_sensor: - platform: jk_bms_ble jk_bms_ble_id: bms0 balancing: name: "${bms0} balancing" charging: name: "${bms0} charging" discharging: name: "${bms0} discharging" - platform: jk_bms_ble jk_bms_ble_id: bms1 balancing: name: "${bms1} balancing" charging: name: "${bms1} charging" discharging: name: "${bms1} discharging" button: - platform: jk_bms_ble jk_bms_ble_id: bms0 retrieve_settings: name: "${bms0} retrieve settings" retrieve_device_info: name: "${bms0} retrieve device info" - platform: jk_bms_ble jk_bms_ble_id: bms1 retrieve_settings: name: "${bms1} retrieve settings" retrieve_device_info: name: "${bms1} retrieve device info" number: - platform: jk_bms_ble jk_bms_ble_id: bms0 balance_trigger_voltage: name: "${bms0} balance trigger voltage" cell_count: name: "${bms0} cell count" total_battery_capacity: name: "${bms0} total battery capacity" cell_voltage_overvoltage_protection: name: "${bms0} cell voltage overvoltage protection" cell_voltage_overvoltage_recovery: name: "${bms0} cell voltage overvoltage recovery" cell_voltage_undervoltage_protection: name: "${bms0} cell voltage undervoltage protection" cell_voltage_undervoltage_recovery: name: "${bms0} cell voltage undervoltage recovery" balance_starting_voltage: name: "${bms0} balance starting voltage" voltage_calibration: name: "${bms0} voltage calibration" current_calibration: name: "${bms0} current calibration" power_off_voltage: name: "${bms0} power off voltage" max_balance_current: name: "${bms0} max balance current" max_charge_current: name: "${bms0} max charge current" max_discharge_current: name: "${bms0} max discharge current" - platform: jk_bms_ble jk_bms_ble_id: bms1 balance_trigger_voltage: name: "${bms1} balance trigger voltage" cell_count: name: "${bms1} cell count" total_battery_capacity: name: "${bms1} total battery capacity" cell_voltage_overvoltage_protection: name: "${bms1} cell voltage overvoltage protection" cell_voltage_overvoltage_recovery: name: "${bms1} cell voltage overvoltage recovery" cell_voltage_undervoltage_protection: name: "${bms1} cell voltage undervoltage protection" cell_voltage_undervoltage_recovery: name: "${bms1} cell voltage undervoltage recovery" balance_starting_voltage: name: "${bms1} balance starting voltage" voltage_calibration: name: "${bms1} voltage calibration" current_calibration: name: "${bms1} current calibration" power_off_voltage: name: "${bms1} power off voltage" max_balance_current: name: "${bms1} max balance current" max_charge_current: name: "${bms1} max charge current" max_discharge_current: name: "${bms1} max discharge current" sensor: - platform: jk_bms_ble jk_bms_ble_id: bms0 min_cell_voltage: name: "${bms0} min cell voltage" max_cell_voltage: name: "${bms0} max cell voltage" min_voltage_cell: name: "${bms0} min voltage cell" max_voltage_cell: name: "${bms0} max voltage cell" delta_cell_voltage: name: "${bms0} delta cell voltage" average_cell_voltage: name: "${bms0} average cell voltage" cell_voltage_1: name: "${bms0} cell voltage 1" cell_voltage_2: name: "${bms0} cell voltage 2" cell_voltage_3: name: "${bms0} cell voltage 3" cell_voltage_4: name: "${bms0} cell voltage 4" cell_voltage_5: name: "${bms0} cell voltage 5" cell_voltage_6: name: "${bms0} cell voltage 6" cell_voltage_7: name: "${bms0} cell voltage 7" cell_voltage_8: name: "${bms0} cell voltage 8" cell_voltage_9: name: "${bms0} cell voltage 9" cell_voltage_10: name: "${bms0} cell voltage 10" cell_voltage_11: name: "${bms0} cell voltage 11" cell_voltage_12: name: "${bms0} cell voltage 12" cell_voltage_13: name: "${bms0} cell voltage 13" cell_voltage_14: name: "${bms0} cell voltage 14" cell_voltage_15: name: "${bms0} cell voltage 15" cell_voltage_16: name: "${bms0} cell voltage 16" total_voltage: name: "${bms0} total voltage" current: name: "${bms0} current" power: name: "${bms0} power" charging_power: name: "${bms0} charging power" discharging_power: name: "${bms0} discharging power" temperature_sensor_1: name: "${bms0} temperature sensor 1" temperature_sensor_2: name: "${bms0} temperature sensor 2" power_tube_temperature: name: "${bms0} power tube temperature" state_of_charge: name: "${bms0} state of charge" capacity_remaining: name: "${bms0} capacity remaining" total_battery_capacity_setting: name: "${bms0} total battery capacity setting" charging_cycles: name: "${bms0} charging cycles" total_charging_cycle_capacity: name: "${bms0} total charging cycle capacity" total_runtime: name: "${bms0} total runtime" balancing_current: name: "${bms0} balancing current" errors_bitmask: name: "${bms0} errors bitmask" - platform: jk_bms_ble jk_bms_ble_id: bms1 min_cell_voltage: name: "${bms1} min cell voltage" max_cell_voltage: name: "${bms1} max cell voltage" min_voltage_cell: name: "${bms1} min voltage cell" max_voltage_cell: name: "${bms1} max voltage cell" delta_cell_voltage: name: "${bms1} delta cell voltage" average_cell_voltage: name: "${bms1} average cell voltage" cell_voltage_1: name: "${bms1} cell voltage 1" cell_voltage_2: name: "${bms1} cell voltage 2" cell_voltage_3: name: "${bms1} cell voltage 3" cell_voltage_4: name: "${bms1} cell voltage 4" cell_voltage_5: name: "${bms1} cell voltage 5" cell_voltage_6: name: "${bms1} cell voltage 6" cell_voltage_7: name: "${bms1} cell voltage 7" cell_voltage_8: name: "${bms1} cell voltage 8" cell_voltage_9: name: "${bms1} cell voltage 9" cell_voltage_10: name: "${bms1} cell voltage 10" cell_voltage_11: name: "${bms1} cell voltage 11" cell_voltage_12: name: "${bms1} cell voltage 12" cell_voltage_13: name: "${bms1} cell voltage 13" cell_voltage_14: name: "${bms1} cell voltage 14" cell_voltage_15: name: "${bms1} cell voltage 15" cell_voltage_16: name: "${bms1} cell voltage 16" total_voltage: name: "${bms1} total voltage" current: name: "${bms1} current" power: name: "${bms1} power" charging_power: name: "${bms1} charging power" discharging_power: name: "${bms1} discharging power" temperature_sensor_1: name: "${bms1} temperature sensor 1" temperature_sensor_2: name: "${bms1} temperature sensor 2" power_tube_temperature: name: "${bms1} power tube temperature" state_of_charge: name: "${bms1} state of charge" capacity_remaining: name: "${bms1} capacity remaining" total_battery_capacity_setting: name: "${bms1} total battery capacity setting" charging_cycles: name: "${bms1} charging cycles" total_charging_cycle_capacity: name: "${bms1} total charging cycle capacity" total_runtime: name: "${bms1} total runtime" balancing_current: name: "${bms1} balancing current" errors_bitmask: name: "${bms1} errors bitmask" switch: - platform: jk_bms_ble jk_bms_ble_id: bms0 charging: name: "${bms0} charging" discharging: name: "${bms0} discharging" balancer: name: "${bms0} balancer" - platform: jk_bms_ble jk_bms_ble_id: bms1 charging: name: "${bms1} charging" discharging: name: "${bms1} discharging" balancer: name: "${bms1} balancer" - platform: ble_client ble_client_id: client0 name: "${bms0} enable bluetooth connection" - platform: ble_client ble_client_id: client1 name: "${bms1} enable bluetooth connection" text_sensor: - platform: jk_bms_ble jk_bms_ble_id: bms0 errors: name: "${bms0} errors" total_runtime_formatted: name: "${bms0} total runtime formatted" - platform: jk_bms_ble jk_bms_ble_id: bms1 errors: name: "${bms1} errors" total_runtime_formatted: name: "${bms1} total runtime formatted"
Der ESP32 (und auch die ESPHome-Komponente) unterstützt drei gleichzeitige Verbindungen. Es ist jedoch gut möglich, dass man in Engpässe läuft, wenn man den Mikrocontroller so sehr beansprucht.
Ich habe wegen der Begrenzungen schon einige Sensoren in der Config weggelassen. Es werden nur 16 Spannungen abgerufen, und auch die ganzen Meldungen zu den Widerständen werden weggelassen. Wenn man möchte, kann man das noch weiter reduzieren. Manche Werte sind halt auch nicht sooo Interessant.