JK BMS und Venus OS: Einzelne Zellspannungen bereitstellen

Hallo,

hier hat @Layer8 die Spannungen seiner einzelnen Zellen hübsch in Grafana aufbereitet. Scheinbar hat er/sie dafür separate Hardware im Einsatz.

Gibt es vorausgesetzt das JK BMS ist über TTL/RS485 schon an Venus OS angebunden ohne weitere Zusatzhardware keinen Weg, die einzelnen Zellspannungen über z.B. MQTT oder Modbus vom Venus OS zugänglich zu machen? Das Venus OS scheint sie (dank dbus-serialbattery) ja zu kennen, da sie auf dessen Konsole sichtbar sind.

Merci!

Damit habe ich mich auch schon befasst aber noch keine ordentliche Lösung gefunden. In dem anderen Thread werden alle Zellspannungen mittels eines ESP über die TTL Schnittstelle des JK BMS ausgelesen. Diese Schnittstelle ist aber bereits belegt wenn du den RS485 Adapter für die Verbindung zum Venus OS in Nutzung hast.

Über Modbus TCP könnte man dann noch die Zellspannungen auslesen - leider gibt es da aber nur 2 verfügbare Werte: Höchste und niedrigste Zellspannung. Also so wie es auch im Venus OS angezeigt wird.

Am liebsten wäre es mir wenn man die Schnittstelle am JK "doppeln" könnte. Dann könnte man das ESP Projekt und den RS485 Adapter verwenden.

Ich nutze es derzeit so, dass ich mit einem ESP32 per Bluetooth das JKBMS auslese und zusätzlich am TTL-Port das Venus OS habe.

Bislang funktioniert es bestens und über Bluetooth bekommt man alle Daten inklusive der einzelnen Zellspannungen ausgelesen. Über das ESPHome Projekt in Home Assistant eingebunden kann man sogar die App ersetzen, denn man kann darüber sogar die Einstellungen des BMS ändern. Wobei ich das noch nicht gebraucht habe und somit noch nicht getestet habe.

1 „Gefällt mir“

@bennyb21 Super! Wie hast du das verkabelt? Bilder wären super! Einfach alle Adern parallel?

Edit: jetzt habe ich nochmal richtig gelesen - Eine Verbindung per TTL und eine per Bluetooth. Welches ESPHome Projekt hast du da verwendet? :slight_smile:

Genutzt habe ich dieses Projekt:

Man kann da sowohl per TTL verbinden, als auch über BT. Und das BMS gibt auch beides parallel aus (muss es ja auch, da die App-Nutzung parallel zum TTL möglich ist).

1 „Gefällt mir“

Ich selber bin zwar noch nicht an dem Punkt, aber vielleicht hat @bennyb21 diese Projekt verwendet:
GitHub - syssi/esphome-jk-bms: ESPHome component to monitor a Jikong Battery Management System (JK-BMS) via RS485 or BLE

Muss mal schauen ob die das BMS ohne Zellen in Betrieb nehmen kann um dann das ESPHome Projekt zu testen. Wäre schon klasse wenn man die Werte einzeln darstellen könnte um somit auch rechtzeitig verdächtige Zellen zu erkennen.

Das BMS habe ich schon hier, die Zellen halt noch nicht, daher kann ich mit dem Auslesen / Anzeigen hier noch nicht viel weiter helfen

@wawibu Kannst du ohne Probleme schon jetzt testen. Mein JK hängt auch nur am Labornetzteil. Plus Minus jeweils auf die Versorgungseingänge und eine Minus Leitung parallel auf den blauen B-. Dann kannst du das BMS starten. :slight_smile:

1 „Gefällt mir“

@regda der wandelt RS485 auf TCP. Habe dort mehrere SDM via RS485 dran hängen und auf der IP Seite verbinden sich aktuell VenusOS, IPSymcon und openWB um die Daten der Zähler per TCP zu bekommen.

Die Anpassung in der dbus-modbus-client.py hast Du gemacht nehme ich an und die TWE_Eastron Dateien auch im Ordner /opt/victronenergy/dbus-modbus-client/

Wenn Du den SDM per USB Adapter via RS485 auslesen willst, musst Du in der TWE_Eastron_SDM630v2.py ganz unten den Eintrag bei methods=['tcp'] auf methods=['tcp','rtu'] (glaube ich zumindest das das so war) ändern. Dann sollte das auch mit einem USB Adapter klappen - habe ich aber nicht getestet.

Gruß,

Torsten

Ich hab inzwischen sogar ohne den esp32, also nur mit dbus-serialbattery und dbus-mqtt die einzelnen Zellspannungen im Home Assistant und somit auch in Grafana.

Bedeutet ein Bauteil weniger und eine Kabelverbindung statt BT. Zellspannungen sind alle auf 0V, weil das JK BMS gerade nur am Labornetzteil hängt.

1 „Gefällt mir“

Habt ihr das auch mit 2 BMSen geschafft? - ich nicht.

Das ist sehr spannend, genau das was ich bräuchte (aber mit 2 BMS).

@jarek Wie ist das Verhalten denn genau bei dir mit 2 BMS?

Jens Rehpöhler hat auf seinem youtube-Kanal "meine Energiewende" im Video "#Victron GX / MP2 + #Node-RED: Steuerung von Verbrauchern im Smarthome." gezeigt, wie man an die Daten aus dem MP2 via MQTT rankommt. Das funktioniert mit meinem JKBMS, ich weiß nicht, ab das allgemeingültig für andere BMS ist.
Die entsprechenden Topics hat @layer8 oben schon gezeigt. Also so in etwa:

N/<your_ID>/battery/1/Voltages/Cell1
N/<your_ID>/battery/1/Voltages/Cell2
N/<your_ID>/battery/1/Voltages/Cell3
...
N/<your_ID>/battery/1/Voltages/Cell15
N/<your_ID>/battery/1/Voltages/Cell16
N/<your_ID>/battery/1/Voltages/Diff
N/<your_ID>/battery/1/Voltages/Sum

funktioniert prima. Jens hat im NR auch eine Liste aller verfügbaren topics auf die Platte schreiben lassen.

Wichtig ist, dass man den MP2 immer wieder triggern muss, sonst stellt er das Senden der MQTT Telegramme nach ein paar Minuten ein.
Dazu habe ich im NodeRed einen Inject-Node so eingestellt, dass er zyklisch alle 30 Sekunden ein timestamp an das Topic

R/<Your_ID>/system/0/Serial

rausschickt.

Vielleicht hilft's :slight_smile:

1 „Gefällt mir“

@ralph8k6 Danke für die Hilfe! Ich habe es nun versucht nachzubauen. im Mqtt Explorer bekomme ich alle Topics - zyklisch getriggert über einen kleinen Flow in Node Red. Ich bekomme es aber nicht hin die einzelnen Spannungen als Sensor/Entität in Home Assistant anzulegen. HA zeigt immer "unknown". Könntest du ein Beispiel Eintrag deiner configuation.yaml einstellen? :slight_smile:

Grüße,

Martin

da kann ich leider nichts zu sagen, ich habe nur NR und dessen dashboard am Start, sorry.

So bekommst du die Zelle in Home Assistant rein:

mqtt:
sensor:
- name: "Zelle 1"
state_topic: "venus-home/N/<deine Victron ID>/battery/1/Voltages/Cell1"
unique_id: zelle_1
value_template: '{{ value_json.value }}'
icon: 'mdi:battery'
1 „Gefällt mir“

Hier auch nochmal meine Einstellungen im Venus OS, damit man das MQTT vernünftig nutzen kann:

Damit das Keep-Alive nur einmal benötigt wird, kann man die Datei "/opt/victronenergy/service-templates/dbus-mqtt/run" anpassen:

#!/bin/sh
echo "*** starting dbus-mqtt ***"
exec 2>&1
# Original:
#exec softlimit -d 100000000 -s 1000000 -a 100000000 /opt/victronenergy/dbus-mqtt/dbus_mqtt.py --init-broker
# Angepasst:
exec softlimit -d 100000000 -s 1000000 -a 100000000 /opt/victronenergy/dbus-mqtt/dbus_mqtt.py --init-broker -k0

Damit dbus-mqtt beim Start aktiviert wird, habe ich in die Datei "/data/rc.local" Folgendes am Ende eingefügt:

# dbus over MQTT aktivieren
mosquitto_pub -I myclient_ -t 'R/<deine Victron ID>/system/0/Serial' -m '' -h 127.0.0.1

Achtung, du musst die "moquitto clients" installieren, damit das funktioniert. Das geht so:

root@raspberrypi2:~# opkg install mosquitto-clients

Viel Spaß!

Danke - habe es jetzt hinbekommen. Noch als Ergänzung für Interessierte mit Home Assistant: Ihr müsst zusätzlich auch noch eine Bridge Verbindung zwischen Venus MQTT Broker und dem Home Assistant MQTT Broker herstellen:

Das Venus MQTT erhalte ich am Leben mittels einem Trigger alle 25s über Node-Red. Geht aber auch über Home Assistant Automationen:

R/<Your_ID>/system/0/Serial

Hallo Layer8,

hast du das Venus OS Large Image oder das normale. Ich habe nämlich Mqtt aktiviert aber bekomme im MQTT Explorer nur die Topics "N" und "System"

die einzelnen Batteriespannungen usw sehe ich leider garnicht.

Danke und Gruss Christian

Ich habe schon in der Victron Excel Datei nachgesehen, welche Modbus-Register sind das mit den beiden Spannungswerten?

@andi_pad das würde mich auch mal interessieren. Min u. Max wäre schonmal nicht schlecht. Kann einer die Register hier hinschreiben?

P.S. ich antworte mir mal selbst:

1290 Vcell_Min

1291 Vcell_Max