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

@Scotty, Hut ab für Deinen Einsatz

Hoffe das wenn ich die BMs am laufen hab, das ich es hinbekomme mit Deinem Code, nur weiter so, TOP!

MFG Uwe

Hallo,

herzlichen Dank an @Scotty89, ich freu mich riesig über deinen Sketch, hab es jetz auch auf nen ESP32 drauf gebracht,
mein iobroker mqtt adapter hatte passwort u username, das hab ich jetz mal gelöschd, da ich das nicht hingebracht habe diese sachen einzufügen.

aber nun kommen die Daten schön im Broker an.
Magst du uns/mir noch bisschen was über deine Grafische Ausgabe erzählen find ich ziemlich ansprechend, ist das schwer zu machen /kannst du da was teilen?

danke nochmals und Respekt dafür.

ach und ich hab übrigens 16 Zellen. alle da :wink:

gruss Armin

Hey Scotty89,

Super Code! Läuft echt spitze!

Im gegensatz zu meiner Lösung spuckt dein Code nicht nur alle 40 sec Werte aus sonder permanent. Sehr geil!!
Die Lösung von ProfPorfessoren mit dem ausleden über Kabel am RS485-TTL Port scheitert bei mir kläglich. ESPHome ist für mich nix glaube ich. :slight_smile:

2 Fragen hätte ich aber. (Ich bin echt schlecht mit dem Ardoino :frowning: )

Ich hab 2 von den JKBMS.

1. Frage Kann ich eine feste BLEUUID eintragen um dem esp ein festes JKBMS zuzuordenen und wenn wo?
2. Frage bezüglich MQTT. Das Topick müsste ich dann im Code überall wo "BMS_Wachtdog" steht in z.B. BMS_Wachtdog_18650 und BMS_Wachtdog_LiFePo umbenennen?

Herzlichen Dank für deinen Scrach und deine Hilfe!

Top

Gruß Dirk

Hey,

danke freut mich wenn es bei euch soweit läuft :wink:
bin noch dabei den einen Bug zu finden wieso er manchmal sich von selbst abschaltet, aber immer wenn ich mit dem Debugger dran bin passiert es natürlich nicht :clap:

ich habe auch erst versucht das über die Rs845 zu machen und auch dafür habe ein Sketch der auch geht aber da kommen halt meiner Meinung nach nicht alle daten die ich gern hätte :wink:
von daher habe ich das verworfen :wink:

nun aber zu deinen Fragen.

bezüglich des senden der neuen Daten habe ich ein Timer eingebaut damit das Netzwerk nicht zu gesamt wird ;( ich sende per Default nur alle 1000ms (jede Sekunde) neue daten über MQTT
das mann man abr in der Zeile hier einstellen wenn euch das noch zu schnell ist :wink:
"if(mqttpublishtime == 0 || (millis() >= (mqttpublishtime + 1000))) {" -> einfach die 1000 auf das setzen was ihr wollt.. ich würde aber nicht unter 1000ms gehen :wink:

1.Die BLEUUID von dem JKBMS kann man soweit ich das weiß nicht ändern da sind alle gleich... sonst würden die apps auch nicht gehen .. somit muss man im Code eigentlich nichts ändern.
2. wenn du mehre JKBMS hast brauch du aktuell für jedes einen EPS32 :wink: und im Code solltet ihr dann alle stellen austauschen wo "BMS_Watchdog" steht.. so wie du z.b. geschrieben hast..

Jea, klasse.
Besten dank für deine schnelle Antwort.

Die Zeiteinstellung ist sehr cool!!

Die UUID wollte ich nicht am bms ändern.
Ich würde gerne eine feste uuid im code hinterlegen, damit der esp nur auf das eine bms zugreifen kann und nicht versehentlich das 2. nimmt.
Ich hab eins bms an einer 14s 18650er und eins an ner 16s LiFePo. Da wärs doof wenn die sich ins Gehege kämen. :wink:

hey,

ah jetzt weiß ich was du meinst die sind auch noch im selben raum :wink:
ja aktuell ist es im Code noch so das ich alle verfügbaren BLE Geräte abfrage ob sie die "JKBMS" UUID haben und wenn ja verbinde ich mich damit..
was wir noch einbauen müssten, wäre vorher den Gerätename noch abzufragen. Den kann man über die App ändern und daran kann auch ich dann die unterschiedlichen JKBMS in einem raum unterscheiden..

da brauch ich aber bissel Zeit zu kann ich aber mal einbauen

Das wäre der Hit.
Namenserkennung wär natürlich auch cool.

Ich schau mal ob ich mit den bekannten UUIDs was zurecht gebogen bekomme.

Jedenfalls ist der Code ziemlich geiler Scheiß und rennt wie die Sau. :wink:

hey,

mit den UUID wirst du nicht weit kommen den die beschreiben ja nur den angebotenen "Service" :wink: und nicht das individuelle Gerät...
ich Werd eine Geräte Erkennung einbauen ...

OK, danke das du meinen Aktionismus bremst!

Was hälst du von der mac adresse?
Könnte das eine einfachere Lösung sein?

Hey,

ja MAC Adresse würde auch gehen aber ich glaube für die meisten ist es mit den Namen einfacher den die MAC Adresse rauszubekommen finde ich gar nicht s leicht .. in der Original app sehe ich den Namen sofort und könnte ihn auch gleich ändern :wink:

Jep, recht hast Du!!

Hab in der Zwischenzeit den 2. ESP fertig und am laufen!!
Ich bin sowas von begeistert.
Grad noch die ganzen MQTT Geschichten in Node Red ändern und gut is es.
Sehr Sehr Geil!!
--> Klick :slight_smile:

Hey zusammen,

ging schneller als gedacht :wink:

anbei die Version 1.5 wo jetzt der BLE Gerätename abgefragt wird :wink: damit sichergestellt es ist das er sich mit dem richtigen verbindet wenn man mehrere hat..

zudem habe ich das Settings Feld mal aufgeräumt sollte so bissel einfacher sein anzupassen...

const char* Geraetename = "JK-B2A24S15P"; -> die den Ble Name von dem BMS angeben wie er auch in der App benannt wurde ...

hint: wenn ihr den Mqtt Namen ändert dann solltet ihr im Code alle stellen wo "BMS_Watchdog" ist auch gerade manuell anpassen.. (suchen und ersetzen :wink: )
habe ich auf die schnelle nicht verknüpft bekommen das er es automatische aus dem Parameter übernimmt..

10478=2411-BLE_client_v1.5.rar|attachment (6.04 KB)

Wuahnsinn, das ist support wie ich ihn liebe.

werd ich umgehend umsetzen. :slight_smile:

Top

Funzt Tip Top! Beide ESPs laufen auf anhieb.

Kleiner Tip am Rande. Wer mqtt ohne user und pass laufen lässt muß die xxxx zwichen den beiden Anführungszeichen "" löschen.

Hallo Zusammen,

ich habe auch erfolgreich die Version 1.5 im Betrieb genommen. Besten Dank Scotty89 für die tolle Arbeit !

Leider aber bricht sporadisch die Verbindung bei mir immer ab. Ein Neustart vom ESP32 bringt dann wieder Abhilfe.

Ich nutze IOBroker mit dem MQTT Broker/Client und der ESP ist im selbem Raum wie das JK-BMS. WLAN Signalstärke ist sehr gut. 16 Zellen.
Läuft es bei Euch ohne Unterbrechung ?

Hey,

ja genau das meine ich mit es gibt noch ein Bug :wink:
bis jetzt habe ich es noch nicht gefunden denn immer wenn der Laptop zum Debuggen dran war kam der Fehler nicht ...
aktuell läuft meiner fast schon eine Woche am Stück ...

ich bi da aber dran sobald ich das gefunden habe melde ich mich ...

Hey danke für die schnelle Rückmeldung.

Von einer Woche Laufzeit bin ich leider weit entfernt denn bei mir ist es maximal einen Tag :slight_smile:

Mit welchen Netzteil betreibst du deinen ESP ? ich habe aktuell ein 5V Ladegerät für ein Handy am Start.
Kann es evtl. an zu "vielen" Daten hängen welche der ESP an den MQTT übermittelt. Wenn ich bei mir im IO Broker unter Objekte schaue kommt manchmal der IO Broker nicht hinterher die Daten darzustellen.
Wobei auch mein IO Broker auf einem Raspberry 4 auf einer SD Karte läuft.. evtl. sollte ich doch auf eine SSD umstellen, oder ?

also ich betreibe ihn auch nur über ein Handy Ladegerät :wink:

solang ich nicht weis was da passier ist es nur Spekulation...
ich selber lasse mir aber auch alle daten an ioBroker senden nur halt 14 anstelle 16 Zellen der rest ist ja identisch von daher mh ...

ich häng die Tage den Laptop mal wieder rann und schau..

wenn ihr Helfen wollt dann hängt doch mal euren Laptop ran und lasst ihn laufen :wink:

ihr müsst dafür eigentlich nur die Arduino IDE Öffen dazu dann die Serial Monitor offen lassen und warten bis der Fehler kommt, ich brauch dann was zu Letzt so in der Konsole steht :wink:

Jep, mach ich!
:+1:t2:

Hi Scotty,
danke für die tolle Arbeit.
Habe mir soeben einen ESP32 bestellt.
Könntest Du die Einstellungen von Deiner Arduino IDE posten?

Gruß
Thomas

@ Scotty
Hi Scotty, ich hab jetzt 2 ESP‘s (die gleichen die du hast) mit deiner Version 1.5 5 Tage mit dem Seriellen Monitor betrieben. Bisher ein Abbruch nach ca. 48 Stunden. Er hat sich nicht mit dem MQTT verbinden können. Liegt aber bestimmt nicht am Code. Ansonsten problemlos. Ich werd jetzt mal einen ohne IDE laufen lassen und sehen was passiert.

Grüsse Dirk