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

Grüße,
ich habe mal ein bisschen weiter an dem Projekt hier gearbeitet. Sind jetzt auf Version 3.8-beta.
Ich habe alles mal ein bisschen aufgeräumt und anpassbar gemacht. Die ESP32S reihe nutzt jetzt beide Kerne. (Kern 0 :WiFi MQtt | Kern1: BLE/UART* CAN)
Da die ESP32C Reihe ja nur einen Kern hat habe ich eine abfrage dafür eingebaut. Wird dann alles auf einem Kern ausgeführt.
Den ESP8266 habe ich jetzt mal aufgrund von fehlendem BLE weg gelassen.
Eingestellt wird jetzt alles in "userSettings.h" sollte selbsterklärend sein.
@rainfly Deine Änderung habe ich natürlich mit übernommen, das ich da selbst nicht drauf gekommen bin ... {green}:scared:
ESP-IDF Versionen getestet sind 3.0.2 und 3.1.0RC1, da kam bei mir zumindest beim Kompilieren keine Fehler für CAN.

Das Flashlayout muss auf mindestens 2MB APP sein, OTA nutze ich nicht, und ist auch nicht vorgesehen.

Die Verwendeten libs habe ich als zip mit eingefügt.

Testen kann ich allerdings CAN nicht, müsste von euch einer übernehmen

BLE_client_v3.8-beta.zip (558 KB)

Was noch kommen soll.
*1. Verbindung über UART(GPS Port am BMS) da machen allerdings nur die "neueren" sinn, weil da auch die Zelldaten kommen.
2. Steuerung von Ladegerät/Generator. (Ladegerät habe ich eins vom Chinesen momentan, was ich umgebaut habe und über UART/I2C steuern kann)
3. Steuerung von den XY6020L (bis zu 4). Die haben allerdings ein Problem das die manchmal wohl fest hängen und nicht von CC auf CV schalten.
Mal gugge ob ich das in Software überwachen/reagieren kann.
4. Embedded Website (ESPUI) < Steht aber ganz weit hinten an.

Wenn dann mal Punkt 2,3 und 4 soweit ist weis ich nicht ob das hier noch rein Passt oder ich ein neues Thema aufmachen soll ?!

PS: Wenn jemand Fehler/verbesserungsvorschläge hat einfach melden.

@sunny198828 , hallo, das problem ist geklärt. Und selbst wenn es würde mir lokal genügen.

Nur wird im esphome yaml code leider der schaltet nicht ausgelesen. Deshalb meine Frage ob das schon wer gemacht hat oder auch wie die einstellungen aus HA herraus die werte im bms zu verändern🫣

Schöne Grüße aus :austria:

Hallo Zusammen,

Ich habe folgendes Problem:

Beim Compilieren der Version 3.8 bekomme ich den Fehler:

Der Sketch verwendet 1735629 Bytes (132%) des Programmspeicherplatzes. Das Maximum sind 1310720 Bytes.
Globale Variablen verwenden 61468 Bytes (18%) des dynamischen Speichers, 266212 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 Bytes.

Ich versuche auf einen ESP32 zu flashen

bin dankbar um jede Hilfe

Du musst unter den Boardsettings ein anderes flashlayout nehmen z.b. 2Mb app

@sunny198828 Danke für deine Arbeit. Kannst du ggf. noch auflisten, welche Bibs installiert sein müssen?

Ich habe IDE neu installiert und die Bib´s installiert die ich noch wusste, bekomme den Sketch aber nicht übersetzt.

danke und grüße

Andreas

@andy85 ich habe meine Beitrag angepasst. Die libs sind jetzt mit enthalten. Werde ich auch jetzt immer so machen das die Libs gleich mit dabei sind.

Aber was ist den die Fehlermeldung die wäre auch mal ganz interessant.

Hallo,

ich habe auch mal die Version 3.8 aufgespielt und hat auch sofort geklappt. Leider ist mir bei der Durchsicht der Daten ein Fehler aufgefallen. Bei Cycle_Count wird mir in meinem Iobroker 28 angezeigt. Wenn ich über die JK App auf das BMS gehe habe ich aber 283 Ladungen und das entspricht auch der Realität. Kann das jemand von euch bestätigen oder liegt der Fehler irgendwo bei mir ?

@stromsparer_1 du musst über MQTT an den Topic "deinMQTTname/parameter/debugging_Full_Log_aktive" den Wert true senden.

Der ESP schickt dann über die Serielle Schnittstelle die BMS Rohdaten, die lass mir mal bitte zukommen.

Hier ein Beispiel wie das dann aussieht:

capture.txt (15.9 KB)

Erstellt mit RealTerm

Grüße

@sunny198828 danke für deine Antwort und gute Idee. Anbei die Logdatei. Bin mal gespannt ob du da was entdecken kannst.

Beste Grüße

Logdatei.txt (12.2 KB)

Ok das war ne Kackidee von mir mit der Ausgabe der Rohdaten...hab den Fehler aber denke ich gefunden. (war meine Schuld {green}:crying: )

In bms_data.h ist Cycle_Count als String definiert. Das ist natürlich falsch .......

String Cycle_Count = ""; ist zu ersetzten durch uint32_t Cycle_Count;

Denn im Log wurde ja 0x11b gesendet, was 283 entspricht. Da ist dann irgendwas durcheinander gekommen weil die Variable falsch deklariert war ...

Grüße

PS: geändert es werden ja 4 bytes gesendet also 32bit ...

PPS: Eine Rückmeldung obs klappt wäre Cool {green}:cool:

Hier mal jetzt die 3.8.1beta, beinhaltet jetzt ESPUI.

Läuft auch auf ESP32 mit 4MB Flash "Partition Scheme: Minimal SPIFFS(1.9MB APP with OTA/190KB SPIFFS).(Zum Daten speichern wird LittleFS benutzt)

Wichtig ist über 1.9MB APP und SPIFFS. OTA bin ich mir noch nicht so sicher ob ich das mit einbaue oder nicht.

Beim Hochladen am besten "Erase ALL flash before Upload" auf enable stellen. Danach wieder auf disable für weitere Uploads.

Wenn der ESP Jungfräulich ist oder sein Wifi nicht findet (dauert 100 Sekunden) macht er einen Hotspot auf.

Mit diesem verbinden und die IP 192.168.4.1 aufrufen.(nutze selbst mozilla)

Wenn der ESP wifi hat gibt er über die Serielle Konsole seine IP aus.

Der rest sollte selbsterklärend sein. Wenn nicht einfach Fragen.

Wer lust hat kann es mal ausprobieren und gerne Kritik oder vorschläge bringen. Ich versuche die dann um zu setzten.

Beim Serial Debug kommt jetzt der komplette Serial stream in einem rutsch.

BLE_client_3.8.1beta.zip (1.72 MB)

Grüße sunny

@sunny198828 Moin, hab die Zeile geändert wie du geschrieben hast. Hat leider nicht geklappt, siehe dazu Screenshot.

ok das ist doof. Ich denke dann klappt mit der auswertung was nicht. Die habe ich aber auch nur übernommen. Mit der neusten Version von mir bekommst du einen Besseren Debug auf der Seriellen Konsole. Wenn du den hast Schick mir den bitte mal. Geht alles über ESPUI ein zu stellen.

@sunny198828 so, ich kämpfe nun schon 2 Stunden mit der neuen Version, ich bekomme keine Verbindung zum iobroker und auch kein Bluetooth Verbindung hin. Im Iobroker gibt es die Fehlermeldung das der Username und das Passwort falsch sind, sind aber nicht ich hatte zuerst gar kein Passwort drin. Es ist für mich nicht einfacher gerworden diese Version an den Start zu bringen. Ich glaube es liegt am Port, ich habe bei mir 1885 der wird offensichtlich nicht übernommen denn nach dem Neustart steht da wieder 1883 drin

@sunny198828 so, hab es selber hin bekommen. Hab wieder die Version 3.8.1 aufgespielt und dann in der bms_data.h die Variable Cycle_Count auf

uint16_t geändert. Dann habe ich der BLE_BMS_Connection die Zeile 331 geändert in
Cycle_Count = ((int)receivedBytes_main[185] << 24 | receivedBytes_main[184] << 16 | receivedBytes_main[183] << 8 | receivedBytes_main[182]);
Jetzt kommt der Wert richtig im Iobroker an.

@stromsparer_1 oh sorry, das habe ich vergessen. mit dem Port. In BLE_client.ino steht fast ganz oben mqttPort. Dort trage deinen port erstmal ein.

Auf der BMS_Einstellung Seite musst du einmal zwischen UART/GPS und Bluetooth hin und her schalten. Danach auf Speichern und dann neu Starten.

Achte darauf das der Gerätename BLE richtig geschrieben ist.

Sorry das du da solche umstände mit hast, und danke fürs Probieren.

Und danke das habe ich übersehen, habe mich darauf versteift ob die byte Zählung richtig ist {green}:scared: .

Grüße

So, das habe ich jetzt auch nochmal probiert. Ich bekomme eine Verbindung zum Iobroker und auch eine Verbindung zum BMS allerdings sind im Iobroker alle Werte auf Null. Was auch komisch ist wenn der ESP sich mit dem BMS verbindet wird zwar die Bluetooth LED des BMS eingeschaltet aber es gibt keinen Doppelpiepton zur Bestätigung {green}:surprised: .

Ich habe jetzt erstmal wieder die 3.8 aufgespielt denn mit den Änderungen läuft es ja erstmal.

Es gibt noch ein kleines Problem. In den Objekten die angezeigt werden gibt es eine Zelle 0, siehe Bild und es gibt bei den Protokollen diese Einträge.

Moin,, ich habe heute morgen nochmal ein wenig probiert. Ich habe 2 Akkus mit einem JK BMS. Habe die Version 3.8 aufgespielt mit den oben erwähnten Änderungen. Zusätzlich habe ich in der userSettings in Zeile 10 den jsonSend auf false gestellt weil ich den nicht brauche. Dann habe ich den gesamten Objektraum im Iobroker gelöscht und alles neu gestartet. Es läuft mit beiden ESP`s alles bestens. Siehe dazu den Screenshot.

Also ich lass das jetzt so weil für mich reicht das.

Beste Grüsse

Hallo zusammen, ich bekomme beim compilieren folgende Fehlermeldung. Ich bin leider nicht so firm in der Arduino IDE.Könnte mir jemand helfen?

Bin nun einen schritt weiter aber irgendwie hat die IDE ein Problem mit der Arduino BLE. Kann mir jemand sagen welche version ich installieren muss?

Ich bekomme es einfach nicht kompiliert.

 

Hallo, ich habe es jetzt soweit zum laufen bekommen.

Jetzt ist die nächste frage... Ist der BLE Name den ich auf der Accesspoint- Seite eingeben muss der der in der JK App als BMS Name hinterlegt ist? Ich habe bestimmt fast alle 51 Seiten überflogen aber nichts gefunden.

Irgendwie verbindet sich die ESP nicht. Sorry das ich für euch eventuell dumme Fragen stelle aber ich bin nur ein dummer Dorfjunge. {green}:tears: