JK-BMS + ESPHome-JK-BMS Home Assistant Dashboard

hast du dir denn in HA noch einen Alarm hinterlegt oder ist das rein informativ?

Ne, ist für mich nur rein Informativ und zum Loggen.

Gesteuert wird bei mir jetzt mit dem BSC. Das fragt die beiden BMS auch ab, aber über die serielle Verbindung. Das läuft derzeit halt noch parallel, weil ich noch nicht dazu gekommen bin die MQTT-Messages in HA als Sensoren einzubinden... Dann kommt die ESP BT Lösung weg... Weniger Klimbim in der Garage liegen. Und dann überlege ich mir mal ob ich mir da in bestimmten Situationen noch Nachrichten schicken lasse.

Ich habe mein JK bereits seit einiger Zeit im iOBroker und werte die Daten mit Grafana aus. Meine Hardware funktioniert soweit also gut. Ich befinde mich grad im Umstieg auf HomeAssistant und bin dabei auf dieses Projekt gestoßen.
Mein Problem fängt viel weiter vorn an. Die Installation der GitHub Repo hat funktioniert. Aber die Installation des AddON BatMON bricht mit einer Fehlermeldung ab:

Kann mir dazu jemand etwas sagen? Verschiede Browser ausprobiert(Chrome, Edge und Firefox) sowie auch AddBlocker abgeschaltet/deinstalliert etc..

@bennyb21 Ich bekomme das mit den 2 bms pro ESP nicht hin. Kannst du deinen Code hier bereitstellen? Danke dafür

@joergz Leider schwierig... Habe wie oben ja schon angekündigt die ESP-Lösung jetzt schon länger nicht mehr laufen und entsprechend leider auch die Config nicht mehr. Oben ist ein leerer Post von mir, ich fürchte da wäre der Code gewesen. Keine Ahnung ob der Inhalt dem Foren-Update oder so zum Opfer gefallen ist...

JK-BMS + ESPHome (esp8266 Wemos D1 Mini) + Home Assistant + Hoymiles HM-400

Hier mein vorläufiges Ergebnis

ESPHome

Dashboard

Automation

@cdfighter hast schon mal versucht mit dem ESPhome auch gleich Aktionen wie discharge off zu machen bei geringem SOC? Wozu nutzt du das? Nur um es in HA zu haben?

@linuxdep

Der Akku hängt für die Einspeisung an einem Hoymiles HM-400 Wechselrichter, die Entladung wird über das Skript unter Automation gesteuert.

Damit wird über AhoyDTU die Leistung des Wechselrichters begrenzt, das funktioniert allerdings noch nicht ganz da der Wechselrichter bei hohen Strömen, falsche Werte anzeigt.

ok, also mit HA im Hintergrund.
Aber was macht der HM nicht richtig? Was zeigt er da falsch an?

@linuxdep Bei Strömen über 8 Ampere wird die Leistung nicht richtig berechnet.

https://www.photovoltaikforum.com/thread/221194-hm-400-an-batterie-limitierung-%C3%BCber-opendtu-eigenartig/

Hallo zusammen, nach nun fast einem Jahr, vielen Frustpausen und wenig zeit wollte ich´s nun doch wissen ob ich es schaffe.

Mein Haupt BMS ist ein B2A24S15P, das hängt aber 2 autostunden von mir weg und ist zum Probieren einfach nicht greifbar. Ich hab mir als es raus kam ein JK_PB2A16S15P (Inverter BMS) gekauft und das nun mal mit der neuesten Firmware versehen und zum test der Kommunikation mit dem ESP eingebunden.

Der ESP verbindet sich mit HA und BMS (jubel) nur es kommen keine sinvollen werte (nona sind ja keine zellen dran) ich wäre zum test (weil ich ein relais schalten will mit dem SOC schalten will) mit den temperatursensoren zufrieden das einzige was kommt ist der Balancer schalter.

Deshalb wollte ich fragen ob die yaml noch für das inverter BMS weiter entwickelt wird? sonnst muss ich mir halt was einfallen lassen damit ich die Automatisierung hier ausprobieren kann ohne damit jedes mal stunden mit fahren zu verbringen.

Danke im voraus und alles gute

1 „Gefällt mir“

@concierge

Ich habe mein Inverter BMS mit dieser yaml am laufen.

jk-bms-test.txt (9.51 KB)

GitHub GitHub - txubelaxu/esphome-jk-bms: ESPHome components to monitor and control a Jikong Battery Management System (JK-BMS) via UART-TTL or BLE. Monitor multiple JK-PBx (hw v14 & v15) using RS485 internal network.

grüße

1 „Gefällt mir“

@juf vielen danke für die info, den code hab ich ans laufen gebracht jetzt versuch ich mal das dasboard zu bekommen, ich sags alt darfst nicht werden:)

Eine frage hätte ich dann doch noch,

welchen esp verwendest du? denn

#power_save_mode: NONE
musste ich auskommentieren da ich immer die fehlermeldung von nicht esp 32 kompatibel bekam

@concierge

habe einen, aber den Code so noch nicht getestet. Hatte dazu nur was recherchiert und schauen.

wemos_d1_mini32

Danke schon mal für den Tipp.
Grüße

@juf , bitte gerne ich hab zu danken. Ich dachte du hast den code so im einsatz deshalb fragte ich

der code liest zumindest aus und funktioniert das dasboard ist für rs485 muss komplett umgefrickelt werden:) da seh ich schon ma richtig schwarz in den codezeilen rumzuwühlen :slight_smile: /p>

1 „Gefällt mir“

Hallo zusammen,

Gestern endlich eine Sternstunde auf meinem holprigen weg, Der HA hat seinen Platz neben dem BMS eingenommen, Der ESP sendet DATEN :joy::woman_facepalming: und in HA wird's zumindest teilweise am Dashboard schon dargestellt. Auch der Fernzugriff funktioniert. Leider kann man dann nicht alle Einstellungen am HA vornehmen da der HA durch den VPN glaubt er ist lokal.

Aber soweit so gut ich sehe zumindest mal was los ist und dafür hab ich nur ein Jahr und zig Anläufe gebraucht. Klar wenn das ganze Gedöns gleich hier vor Ort wäre wäre es schneller und leichter gewesen.

Eine frage an euch, hätte jemand ein Smartphone taugliches Dashboard und würde dies auch zur Verfügung stellen bitte :slight_smile: was zu meinem ESP passt.

#esphome:
#name: jk-bt
#friendly_name: jk-BT
substitutions:
name: jk-bms
device_description: "Monitor and control a JK-BMS via bluetooth"
external_components_source: github://syssi/esphome-jk-bms@main
#B2A24S15P Black One - "C8:47:XX:XX:XX:XX"
mac_address: C8:47:XX:XX:XX:XX
# Defaults to "JK02_24S" (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_24S
#protocol_version: JK02_32S
protocol_version: JK02_24S
esphome:
name: ${name}
comment: ${device_description}
project:
name: "syssi.esphome-jk-bms"
version: 1.5.0
esp32:
#board: wemos_d1_mini32
board: esp32dev
framework:
type: esp-idf
external_components:
- source: ${external_components_source}
refresh: 0s
logger:
level: DEBUG
# Enable Home Assistant API
api:
encryption:
key: !secret api_key
ota:
password: "jk2espbt"
#password: !secret ota_pwd
wifi:
ssid: !secret wifi_ssid2
password: !secret wifi_password2
# Optional manual IP
manual_ip:
static_ip: 192.168.0.192
gateway: 192.168.0.1
subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "ESP_Jk-Bms-Bluetooth"
password: "12345678"
captive_portal:
web_server:
port: 80
auth:
username: jkesp
password: jkesp
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: ${mac_address}
id: client0
on_connect:
then:
- switch.turn_on: BluetoothLED
on_disconnect:
then:
- switch.turn_off: BluetoothLED
jk_bms_ble:
- ble_client_id: client0
protocol_version: ${protocol_version}
throttle: 5s
id: bms0
binary_sensor:
- platform: jk_bms_ble
balancing:
name: "${name} balancing"
charging:
name: "${name} charging"
discharging:
name: "${name} discharging"
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"
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"
id: v1
cell_voltage_2:
name: "${name} cell voltage 2"
id: v2
cell_voltage_3:
name: "${name} cell voltage 3"
id: v3
cell_voltage_4:
name: "${name} cell voltage 4"
id: v4
cell_voltage_5:
name: "${name} cell voltage 5"
id: v5
cell_voltage_6:
name: "${name} cell voltage 6"
id: v6
cell_voltage_7:
name: "${name} cell voltage 7"
id: v7
cell_voltage_8:
name: "${name} cell voltage 8"
id: v8
cell_voltage_9:
name: "${name} cell voltage 9"
id: v9
cell_voltage_10:
name: "${name} cell voltage 10"
id: v10
cell_voltage_11:
name: "${name} cell voltage 11"
id: v11
cell_voltage_12:
name: "${name} cell voltage 12"
id: v12
cell_voltage_13:
name: "${name} cell voltage 13"
id: v13
cell_voltage_14:
name: "${name} cell voltage 14"
id: v14
cell_voltage_15:
name: "${name} cell voltage 15"
id: v15
cell_voltage_16:
name: "${name} cell voltage 16"
id: v16
#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"
total_voltage:
name: "${name} total voltage"
id: total_voltage
current:
name: "${name} current"
id: current
power:
name: "${name} power"
id: power
charging_power:
name: "${name} charging power"
id: charging_power
discharging_power:
name: "${name} discharging power"
id: discharging_power
temperature_sensor_1:
name: "${name} temperature sensor 1"
id: temp1
temperature_sensor_2:
name: "${name} temperature sensor 2"
id: temp2
power_tube_temperature:
name: "${name} power tube temperature"
state_of_charge:
name: "${name} state of charge"
id: 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"
- platform: wifi_signal
name: "WiFi jk-bms-BT"
update_interval: 60s
id: wifisignal
switch:
- platform: jk_bms_ble
charging:
name: "${name} charging"
discharging:
name: "${name} discharging"
balancer:
name: "${name} balancer"
- platform: ble_client
ble_client_id: client0
name: "${name} enable bluetooth connection"
- platform: restart
name: "jk-bms Restart"
- platform: gpio
pin: 2
id: WlanLed # die ID kann optional vergeben werden
name: "Wlan Led JK-bms"
disabled_by_default: true
internal: true
inverted: false
- platform: gpio
pin: 4
id: BluetoothLED # die ID kann optional vergeben werden
name: "Bluetooth Led JK-bms"
disabled_by_default: true
internal: true
inverted: false
text_sensor:
- platform: jk_bms_ble
errors:
name: "${name} errors"
total_runtime_formatted:
name: "${name} total runtime formatted"
interval:
- interval: 5s
then:
if:
condition:
wifi.connected:
then:
- switch.turn_on: WlanLed
else:
- switch.turn_off: WlanLed

Das was bei Syssi auf github ist will bei mir nicht viel anzeigen, Die Werte kommen aber in HA an und sind verfügbar.

Ich danke mal und wünsche einen schönen tag

1 „Gefällt mir“

Funktioniert dass syssi Projekt auch für das JK inverter bms? Auf seiner Seite sind nur die älteren B2A BMS angegeben aber nicht die neueren PB2A oder verstehe ich da wieder was falsch?

Oder habt ihr noch andere Projekte parat für Homeassistant und das JK Inverter?

Die neueste Variante des BMS wird unterstützt. Es gibt drei Wege das BMS anzusprechen: BLE, UART-TTL und Modbus. Ich empfehle dir mit Bluetooth zu starten.

1 „Gefällt mir“

Hi zusammen mit welcher Software sollte ich den ESP32 am besten austatten aktuell ist ein ESP precence drauf und muss neu flashen kann mir hier jemand nen Tipp geben danke

Moin Gemeinde

Ich klinke mich hier auch mal ein ...
Ich baue gerade drei von den "neuen" JK Inverter BMS Boxen.
Ich bin aber gerade noch überfordert mit den ganzen Möglichkeiten in dem Gidhub reposetorie ..
Welchen yaml wäre für drei BMS'se wohl das richtige?

Grüsse Leiner