Ich habe vor ca. 3 Jahren dieses JKBMS auf einen ESP32 installiert und es hat bis gestern auch ohne Probleme funkioniert.
Aber heute auf einmal habe ich über Mqtt keinen Daten mehr empfangen –> warum … keine Ahnung –> EPS32 leuchtet aber er verbintet sich nicht mehr mit dem JKBMS!!
Jetzt wollte auf dem EPS32 nochmal die Software neu flashen aber scheitere bei Adruino an der Kompilierung und bekomme immer die Fehlermeldung “compilation terminated. exit status 1 Compilation error: driver/can.h: No such file or directory”
Ich weiss echt nicht mehr wie ich das vor ca. 3Jahren gelöst habe
Ist ja schon länger her, ich schreib trotzdem mal was dazu. Wer home assistant und somit esphome nutzt, muss drauf achten esp mit ch340 zu kaufen. Weil esphome über usb am pc den ch340 treiber/schnittstelle braucht. Ich hab 10 stück esp8266 ohne ch340 gekauft. Dann muss man in esphome ein gerät anlegen, ein 3lf file exportieren. Dieses auserhalb von esphome flashen. Danach ist der esp über wlan auch von esphome zu erreichen.
Ich habe ein jk bms über esp32 in home assistant. Wer den code braucht kann mir eine nachricht schreiben.
Wenn nur Zellspannungen und ggf. Cycle_Count kommen, ist meistens der JK-Datenframe nicht komplett im Buffer oder die Byte-Offsets passen nicht zum BMS/Firmware. Zellspannungen stehen am Anfang des Frames und werden auch bei unvollständigem Empfang korrekt dekodiert, während Spannung/Strom/Leistung/Temps später im Frame liegen und dann 0 bleiben. Lösung: im Notify-Callback prüfen, ob wirklich ein kompletter 0x02 Live-Frame mit ~300+ Bytes zusammengesetzt wird (frame counter/loggen), und ggf. Offsets/Indexe an das konkrete Modell (JK-B2A8S-20P-V11.6.1) anpassen bzw. neuere ESP32 Core Version nutzen.
Danke für die schnelle Antwort.
Ich habe beim "kompilieren" noch ein paar Fehler bekommen, kannst du was damit anfangen.
Ist bei dir die Überprüfung "IO" durchgelaufen ?
ich kann Dir als Tip geben, dass es bei den ESPs und Arduino ganz empfindlich darauf ankommt, keine neueren Library-/Boardversionen zu verwenden, als die mit denen der Code seinerzeit entworfen wurde. Da ist nix abwärtskompatibel.
Ich bin da auch drübergestolpert vor ca. 1 Jahr. Irgendwo im Thread sind die Versionen von sralus auch erwähnt, glaube ich mich erinnern zu können.
Lösung für Kompilierfehler (ESP32_BLE_Arduino falsche Library aktiv)
Du nutzt gerade die falsche BLE-Library aus deinem Arduino-Libraries-Ordner (ESP32_BLE_Arduino). Die ist nicht kompatibel mit dem aktuellen ESP32-Boardpaket und verursacht genau diese Fehler: ringbuf_type_t not declared, void value not ignored, std::string -> String.
So bekommst du es sofort zum Kompilieren:
Arduino IDE schließen
Öffne diesen Ordner: C:\Users\<DEINNAME>\Documents\Arduino\libraries\
Ordner umbenennen oder löschen: ESP32_BLE_Arduino → z.B. ESP32_BLE_Arduino_OFF
Arduino IDE neu starten
Nochmal kompilieren
Wichtig: Im Kompilier-Log muss dann stehen: Benutzt:...\AppData\Local\Arduino15\packages\esp32\hardware\esp32\...\libraries\BLE und nicht mehr ...\Documents\Arduino\libraries\ESP32_BLE_Arduino\...
Fix für “undefined reference to Datenanalyse()” (wenn du mein ZIP nutzt)
Dieser Fehler heißt: Datenanalyse() wird aufgerufen, aber die Datei mit der Funktion wird nicht mit kompiliert. Das passiert fast immer, wenn du nur eine .ino geöffnet hast statt den ganzen Sketch.
So machst du es richtig:
ZIP komplett entpacken
In den entpackten Ordner gehen
Wichtig: Öffne NICHT irgendeine einzelne Datei, sondern die Hauptdatei im Sketch-Ordner, sodass Arduino alle Tabs lädt.
→ Doppelklick auf: JKBMS-WI.ino (die muss im Ordner liegen, zusammen mit allen anderen .ino Dateien)
In der Arduino IDE musst du dann oben als Tabs sehen: BLE_BMS_Connection.ino, BLE_Data_analyse.ino, Publish_data.ino, usw.
Wenn der Tab BLE_Data_analyse.ino fehlt, dann ist die Datei nicht im gleichen Ordner oder nicht geladen → dann kommt genau dieser Linker-Fehler.
Kontrolle: In BLE_Data_analyse.ino muss exakt stehen: void Datenanalyse() { ... }
(groß/klein muss exakt stimmen)
TOP !! das freut mich und das interne Webinterface auch ? http://XXX.XXX.XXX.XXX/web/index.html - Also XXX... IP des ESP32
ich habe für mich ein größeres ESP32 genommen weil ich beim Webinterface manchmal ein bug hatte .. WIFI verbindung bricht ab ...
Gruß Sralus