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
Hallo sralus, Ganz tolles Projekt. Habe gerade mein neues JK-B2A8S20P in Betrieb genommen und natürlich nach einem Programm gesucht um die Daten in meinen Iobbroker zu bekommen. Hat sofort mit den Tipps aus den vorherigen Beiträgen geklappt und die Daten kommen super im Broker an. Ich habe lediglich noch die Balance Anzeige auf 8 Zellen begrenzt. Also nochmal astreine Arbeit.
Hallo sralus, ich hatte kurzzeitig das ESP homeassitant Programm am laufen, und da waren noch Daten welches die Zelle mit der grössten und der kleinsten Spannung ist. Ist das in diesem Projekt vielleicht auch möglich. Ich weiss das Programm ist schon super aber vieleicht geht da ja noch was
Ich habe meinen ESP damals nach dieser Anleitung hier aufgesetzt. Der ließt nun fleißig und fehlerfrei die bekannten Datenpunkte aus. Irgendwie fehlen mir aber Informationen zu den aktuellen Alarmen - wie komme ich da ran?
Ich möchte also gern im ioBroker sehen, welcher Alarm gerade aktuell ist bzw. welchen Status die einzelnen Alarmmeldung gerade haben.
Kann mir das jemand beschreiben? Wie kann ich die bestehenden Datenpunke um die Alarme erweitern?
Vielen Dank @sralus , eine absolute Top-Arbeit!
Die Installation des esp32 war überraschend einfach und lief sofort durch, die Daten erschienen kurz darauf im ioBroker. Selten so gut ohne Streß ein esp32-Projekt erledigt.
Ich benötige den Zugriff dringend, da das JK-BMS letzte Woche einen ALARM hatte, den ich nicht mit bekommen habe. ( Wer geht schon zur Batterie und schaut auf die LED )
Der Deye 12k hatte um ca. 14:00h die PV-Module abgeschaltet, die Ladespannung auf über 62 V gesetzt und den Load direkt mit dem Grid verbunden. Das BMS ging daraufhin in den Akkuschutz und schaltete ab.
Den Deye für 5min. abgeschaltet und wieder eingeschaltet und alles lief wieder....
Nun kann ich mir bei Alarm sofort eine WhatsApp schicken und reagieren
Auch von mir ein dickes Lob für Deine Arbeit und Deine Support.
Ich habe es auch hin bekommen, dass das Kompilieren nun Fehlerfrei läuft, bis auf das hier:
Der Sketch verwendet 1765591 Bytes (134%) des Programmspeicherplatzes. Das Maximum sind 1310720 Bytes.
Globale Variablen verwenden 65736 Bytes (20%) des dynamischen Speichers, 261944 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 Bytes.
Der Sketch ist zu groß; unter https://support.arduino.cc/hc/en-us/articles/360013825179 finden sich Hinweise, um die Größe zu verringern.
Textbereich überschreitet den verfügbaren Platz auf der Platine
Compilation error: Textbereich überschreitet den verfügbaren Platz auf der Platine
Ich verwende einen einen ESP8266MOD. Der ist offensichtlich zu klein.
Ich habe natürlich gelesen und gesehen, dass Du in Deinem ersten Thread das "ESP32-DevKitC" erwähnt hast und das gleich mal bestellt: