JKBMS auslesen über BLE (Bluetooth) oder RS485 Adapter mittels EPS, ioBroker

:thumbup: :thumbup:

danke

@ Scotty89

Vielen Dank !!!

Die 3.6 Version funktioniert nun auch mit meinem 2.BMS .

Ich habe das Problem mit den Absturz und reboot jetzt gefunden.

Da ich schon mehrere Beiträge dazu gesehen habe wollte ich nur kurz meinen Workarround dazu weiter geben.

Liegt wohl einfach an der Funktion "BLERemoteService* pRemoteService = pClient->getService(serviceUUID)". In der aktuellen Boardsoftware ESP32 Version 2.0.4 bricht das Programm an dieser Stelle ab und startet neu. Mit einer alten Version (ich habe 1.0.6 benutzt) läuft alles wunderbar.

Gruß,
Dennis

@Obi70

wahrscheinlich gehört das nicht hier her, aber vielleicht kann mir einer mal ein Schubs geben.
Die Werte der Zellen vom JKBMS wollen einfach nicht in einem Graph dargestellt werden.

Daten sind Vorhanden:


Aber es wird einfach nicht angezeigt habe schon etliche Einstellungen probiert.


Nur als Balken können die dargestellt werden:

Kann deine Datenquellen denn kein Sql?
Ich glaube, dir fehlt da ein feld mit einem GroupBy mit den Zellennamen.

Meine Variante mit Timescale und HA sieht so aus:

select
$__timeGroupAlias(sref.last_updated,$__interval),
substring(sref.entity_id,8,100) metric,
avg(sref.state::float) "value"
from
states sref
where
$_timeFilter(sref.last_updated)
and sref.entity_id like 'sensor.jkbms_bt_cell_voltage
%'
and sref.state ~ '^([-]?[0-9]+[.]?[0-9]*|[.][0-9]+)$'
group by 1,2

entity_id sind die Zellen, % ist der Joker für die Zellennummern


Mit dem Bootloop Kernelpanic mit aktuellen Libs hatte ich weiter oben schon geschrieben.

Das gilt aber wohl nicht für SPI_FAST_FLASH_BOOT, da würde ich mal versuchen, das erzeugte bin mit dem Tasmotaflasher auf den ESP zu kopieren, mit Option erase flash.
Ist aber nur ne Idee, ich habe da nur gegoogelt, ich hatte SPI_FAST_FLASH_BOOT noch nie.

Can anyone convert the code to python so it can run on raspi directly

@Mank1234 Did you have a look at mpp-solar? This is written in python.

First sorry this is in English - my only language.

Try as i may but i cannot see where i can download the bin file and/or source code.

I may not be able to see it as i have to read every page via google translate.

A link greatly appreciated.

Hab das mit der seriellen Anbindung verworfen, weil das mit dem Wemos und BT so gut funktioniert :stuck_out_tongue: . Fetter Respekt an @Scotty89 !

Hätte aber noch ein paar Fragen:

  • Ich habe mehrere baugleiche BMS, bei welchen der BLE Name immer JK-B2A24S20P ist. Wie können die unterschieden werden? Denke das ist aktuell eher Zufall, zu welchem BMS sich der ESP32 nach dem Einschalten verbindet?
    Könnte man das nicht auch gezielt auf MAC Ebene einstellen?
  • Hat schon jemand probiert, 2 BMS'n mit einem ESP32 zu monitoren? Wenn die Leistung dafür ausreicht sollte das zumindest technisch möglich sein (Stichwort "BLE Multiconnect").
  • Bin blutiger Anfänger was Telegraf und Influx angeht: Kann mir jemand den Teil der telegraf.conf posten, welcher zu den MQTT Ausgaben des ESP32 hier passt?
  • Den Namen des BMS kann man über die App anpassen. Danach in der Konfig einfach den korrekten Namen eintragen zu dem er sich verbinden soll.
    Das mit dem Multiconnect habe ich mir auch überlegt (baue mir gerade das Logging auf), aber wieder verworfen bei den geringen Kosten für die ESPs...

    @scotty auch von mir ein Herzliches Dankeschön dafür! Funktioniert hervorragend!

    First sorry this is in English - my only language.

    Try as i may but i cannot see where i can download the bin file and/or source code.

    I may not be able to see it as i have to read every page via google translate.

    A link greatly appreciated.
    On the first Page you can see the Link to download the 3.6 Version.

    @scotty89
    Ich habe mir das alles einmal durchgelesen.
    Erstmal großes Lob an dich. Ich habe in der BLE_Data_analyse.ino gesehen, das doch so einige Bits nicht zugeordnet werden können.
    Ich habe bei dem Download der App noch andere Dokumente gefunden und mit deepl. und google Translator auf deutsch übersetzt.
    Hier sind viele Dokumente die uns vielleicht in der zuornung der restlichen bits helfen könne.
    Wäre doch interessant wenn wir auch Benachrichtigt werden, wenn ein Alarm auf dem BMS passiert.
    Klar kann man das selber dann im IOBroker machen, aber man weiß immer noch nicht ob das BMS einen Alarm registriert hat.

    hier die dokumente, chinesisch sind dann die originale
    https://nas.gode.de/index.php/s/sspEK2s5YSJgxMe

    Ich werde das dann demnächst mal mit unseren beiden Akkus ausprobieren.

    @scotty89: Nachdem mein xiexiang BMS, das ich auch über eine selbstgeschriebene software mit ESP32 über BT auslese, nicht mehr richtig funktioniert, musste was neues her, und ich finde es toll, dass du das hier für die JKBMS geschrieben hast.

    Nach den 35 Seiten habe ich gesehen dass du auch CANBUS auf IO[45] ausgibst. Nachdem ich aber das USB Interface meines Victron Multiplus erfolgreich zerschossen habe bin ich jetzt extra vorsichtig. Daher meine Frage: Wie wird diese Canbus-Verbindung hergestellt? Ist das ne Direktverbindung von ESP32 und Victron? Oder brauch ich da noch ein Interface dazwischen? Das wäre nämlich sch***e, weil USB ja leider defekt ist.

    Gibt's da irgendwo ein Pinout? Danke!

    https://www.victronenergy.com/live/battery_compatibility:can-bus_bms-cable#introduction

    Nachdem ich aber das USB Interface meines Victron Multiplus erfolgreich zerschossen habe ...
    Der USB Anschluss ist nicht galvanisch getrennt, daher kann es hier zu Ausgleichsströmen kommen, die durchaus Schäden anrichten. Daher immer galvanisch getrennte USB Kabel verweden, egal ob für TTL, RS232, RS485, CAN usw. Die sind natürlich deutlich teurer. Das ist auch ein Grund warum die original Victron Kabel so teuer sind, die sind auch galvanisch getrennt.
    Beim Ethernet Anschluss sollte man ungeschirmte Kabel verwenden, da kann man in das gleiche Problem reinlaufen ! Die Schirmungsanschlüsse sind ebenfalls ohne galvanische Trennung.

    @izeman: Kleine Zwischenfrage, Du hat das BMS schon an ein GX Device angeschlossen und nicht direkt an den Multiplus ? Ich wüßte nicht wo die sein soll, außer du hast einen Multiplus mit integriertem GX Device.
    @scotty89
    Ich habe mir das alles einmal durchgelesen.
    Erstmal großes Lob an dich. Ich habe in der BLE_Data_analyse.ino gesehen, das doch so einige Bits nicht zugeordnet werden können.
    Ich habe bei dem Download der App noch andere Dokumente gefunden und mit deepl. und google Translator auf deutsch übersetzt.
    Hier sind viele Dokumente die uns vielleicht in der zuornung der restlichen bits helfen könne.
    Wäre doch interessant wenn wir auch Benachrichtigt werden, wenn ein Alarm auf dem BMS passiert.
    Klar kann man das selber dann im IOBroker machen, aber man weiß immer noch nicht ob das BMS einen Alarm registriert hat.

    hier die Dokumente, chinesisch sind dann die originale
    https://nas.gode.de/index.php/s/sspEK2s5YSJgxMe

    Ich werde das dann demnächst mal mit unseren beiden Akkus ausprobieren.
    Hey erstmal vielen Dank ;) seit heute läuft mein neuer Akku nun auch wieder mit dem neuen JKBMS ... und natürlich der ESP32 "Überwachung"... he he

    ich kenne die Dokumente alle hab mir die auch mal übersetzt.. leider ist da nur das CAN und RS.. Protokoll drin nicht das BLE ..
    ich hatte dan JK auch mal angeschrieben ob ich das BLE Protokoll haben könnte .. Antwort war ist ihr Know how und "Geheimnis"

    daher habe ich es dann einfach mit geloggt und selbst "entschlüsselt" ... deshalb sind nicht alle Daten ausgewertet etc..
    in der Pipline habe ich schon den "code" für Charge, Discharge und Ballance an und aus so das man das dann über den ESP machen könnte..
    bezüglich der Errors fehlt mir halt einfach die Zeit zum testen und die Daten...
    Sprich welcher Fehler wird in der App angezeigt und was sendet das BMS dann bspw. der Full log vom ESP ...

    damit könnte man da weiter machen...


    @izeman

    schau mal auf der ersten seite da steht was du noch dafür brauchst ... einen kleinen CAN "controler"..
    bezüglich Pining kann ich die Tage mal schauen hab da ein einfaches RJ45 Kabel genommen und in den VE.BMS Port gesteckt und entsprechend zwei adern dann an dem CAN Controller

    so Sieht das Aktuell bei mir aus, nicht schön aber es geht ;)
    von meine LAN Kabel ist es das braun und braun/hel

    Nachdem ich aber das USB Interface meines Victron Multiplus erfolgreich zerschossen habe ...
    Der USB Anschluss ist nicht galvanisch getrennt, daher kann es hier zu Ausgleichsströmen kommen, die durchaus Schäden anrichten. Daher immer galvanisch getrennte USB Kabel verweden, egal ob für TTL, RS232, RS485, CAN usw. Die sind natürlich deutlich teurer. Das ist auch ein Grund warum die original Victron Kabel so teuer sind, die sind auch galvanisch getrennt.
    Beim Ethernet Anschluss sollte man ungeschirmte Kabel verwenden, da kann man in das gleiche Problem reinlaufen ! Die Schirmungsanschlüsse sind ebenfalls ohne galvanische Trennung.

    @izeman: Kleine Zwischenfrage, Du hat das BMS schon an ein GX Device angeschlossen und nicht direkt an den Multiplus ? Ich wüßte nicht wo die sein soll, außer du hast einen Multiplus mit integriertem GX Device.
    Tja. Das weiss ich jetzt auch. :( Und es ist wohl so dass das xiechiang BMS da mit dem GND nicht ganz sauber umgeht und das tötet dann den USB Anschluss. Ist ehrlich gesagt auch ein Armutszeugnis von Victron hier nicht galvanisch zu trennen. Wo gibt's denn sowas?

    Das BMS war an eine USB/seriell-Converter am Multiplus II GX angeschlossen.
    @izeman

    schau mal auf der ersten seite da steht was du noch dafür brauchst ... einen kleinen CAN "controler"..
    bezüglich Pining kann ich die Tage mal schauen hab da ein einfaches RJ45 Kabel genommen und in den VE.BMS Port gesteckt und entsprechend zwei adern dann an dem CAN Controller

    so Sieht das Aktuell bei mir aus, nicht schön aber es geht ;)
    von meine LAN Kabel ist es das braun und braun/hel
    Danke. So richtig viel steht auf der ersten Seite nicht :) Das CAN-Bus-Modul hab ich besorgt. Was auf der ersten Seite nicht steht ist die Belegung des Kabels. Aber so wie es aussieht sind hier nur die IO[45] und CAN high/low am Victron zu verbinden. Korrekt? Um diese Belegung ging es mir.
    Wie gesagt: Ist ja kein Hexenwerk, aber ich will nicht das nächste Interface meines Multiplus grillen ;)
    Den Namen des BMS kann man über die App anpassen. Danach in der Konfig einfach den korrekten Namen eintragen zu dem er sich verbinden soll.
    Das mit dem Multiconnect habe ich mir auch überlegt (baue mir gerade das Logging auf), aber wieder verworfen bei den geringen Kosten für die ESPs...

    @scotty auch von mir ein Herzliches Dankeschön dafür! Funktioniert hervorragend!
    Muss nur der Name oder auch alle "BMS_watchdog" zu z.B. "BMS_watchdog_2" geändert werden?
    Hat jemand Erfahrung mit mehreren BMS?
    Den Namen des BMS kann man über die App anpassen. Danach in der Konfig einfach den korrekten Namen eintragen zu dem er sich verbinden soll.
    Das mit dem Multiconnect habe ich mir auch überlegt (baue mir gerade das Logging auf), aber wieder verworfen bei den geringen Kosten für die ESPs...

    @scotty auch von mir ein Herzliches Dankeschön dafür! Funktioniert hervorragend!
    Muss nur der Name oder auch alle "BMS_watchdog" zu z.B. "BMS_watchdog_2" geändert werden?
    Hat jemand Erfahrung mit mehreren BMS?
    Man benötigt für jeden BMS einen eigenen ESP Chip.
    Daher einfach den Namen ändern und gut ist.
    Ich selbst habe aktuell auch 2 parallel laufen.

    Hallo zusammen,

    Hab den BLE_Client auch grad mal getestet, scheint alles zu funktionieren, also Wlan, MQTT (alive status), und das JK BMS macht auch geräusche wenn sich der Client verbindet via Bluetooth, aber ich bekomm keine Daten, die Ausgabe über den Seriellen Monitor schaut so aus, mehr kommt nich...

    rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
    configsip: 0, SPIWP:0xee
    clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
    mode:DIO, clock div:1
    load:0x3fff0030,len:1344
    load:0x40078000,len:13864
    load:0x40080400,len:3608
    entry 0x400805f0
    BMS Watchdog V 3.6
    Booting
    Connecting to WiFi ...Ready
    IP address: 192.168.1.237

    • Created client
      MQTT Client not connected
      MQTT time for reconnect
      MQTT reconnected!
      BLE -> Reconnecting 0
      BLE Advertised Device found: Name: JK-B2A24S20P, Address: c8:47:8c:e4:56:b7, manufacturer data: 650b88a0c8478ce456b7, serviceUUID: 0000ffe0-0000-1000-8000-00805f9b34fb, serviceUUID: 0000fee7-0000-1000-8000-00805f9b34fb
      Forming a connection to c8:47:8c:e4:56:b7
    • Connected to server
    • Found our service
    • Found our characteristic
      Notify the characteristic
      Sending device Info
      We are now connected to the BLE Server.
      gesendet!
      Daten anerkannt !
      New Data for Analyse Complete...
      Daten anerkannt !
      New Data for Analyse Complete...
      Daten anerkannt !
      New Data for Analyse Complete...
      Daten anerkannt !
      New Data for Analyse Complete...
      Daten anerkannt !
      New Data for Analyse Complete...
      Daten anerkannt !
      New Data for Analyse Complete...
      Daten anerkannt !
      New Data for Analyse Complete...
      Daten anerkannt !

      Grüße,
      Nano