Moin zusammen,
ich habe mal etwas gebaut, das bei mir sehr zuverlässig läuft. Ich habe dafür das Projekt batmon-ha auf GitHub angepasst und einen Flow erstellt, der alle Daten an die entsprechenden Stellen für das VanPi OS schreibt.
Getestet habe ich verschiedene BMS von JBD, Daly, JK und TDT. Für mein DALY 4s (12V) BMS musste ich den Typ daly_ble verwenden, der ganz neu im GitHub-Projekt ist. Das ist das erste Skript, das endlich auch 4s-Daly-BMS korrekt ausliest. Bei 6s oder mehr war es bisher nie ein Problem, die Daten auszulesen – verschiedene Skripte hatte ich ausprobiert.
Leider liefert das Skript nicht immer exakt die gleichen Werte. Manchmal muss nur das Vorzeichen beim Laden bzw. Entladen angepasst werden – dafür ist aber bereits eine Bsp. in der Function hinterlegt.
Die Daten werden in der App, auf dem Display und im Webinterface angezeigt. Ihr könnt den Flow einfach importieren und dann das Inject auslösen, um die Installation zu starten. Anschließend nur noch in der Function die MAC-Adresse und den BMS-Typ eintragen – zum Test einmal Starten.
Es kann manchmal etwas dauern, bis die Daten kommen, da das Skript je nach BMS-Typ unterschiedliche Anfragen ausprobiert. Sobald es einmal korrekte Daten erhält, werden diese mehr oder weniger sekündlich aktualisiert (BMS-abhängig).
Wenn alles im Test läuft, könnt ihr das Skript über das Webinterface (Frontend) aktivieren:
Devices → BMS → BleBMS Userflow
Im Backend habe ich das Wichtiges beschrieben:
Wenn das Skript über das Webinterface aktiv geschaltet wird, wird auch ein BLE-Neustart berücksichtigt. Folgendes Verhalten ist implementiert:
-
Wenn über 2 Minuten keine Daten eingehen, werden BLE und das Skript neu gestartet.
-
Bei mehr als 3 Minuten ohne Daten werden die Werte auf 0 gesetzt.
-
Bei über 10 Minuten ohne Daten wird die BMS Info im Webinterface ausgeblendet.
-
Nach 20 Minuten erfolgt automatisch der System-Bluetooth-Neustart vom VanPI OS, wodurch auch das Skript wieder gestartet wird.
-
Sobald dann wieder Daten empfangen werden, wird die BMS Info erneut eingeblendet.
Diese Logik ist bewusst so umgesetzt, weil es BMS gibt, die bei keinem Stromfluss Bluetooth abschalten und somit zunächst nicht erreichbar sind. Dadurch würde sonst ein dauerhafter BLE-Neustart alle 2 Minuten stattfinden.
Das Skript kann außerdem mehrere BMS auslesen. Es kann eine Gruppe erstellt werden, sodass das System die Daten als eine Batterie bereitstellen kann.
Genau infos aus dem Github Projekt entnehmen, ist aber selbst erklärend. Wichtig ist nur das dann der Alias Name in die Gruppe wandert
BleBMS.json (21,2 KB)
Hier noch die Liste welche BMS mit v1.9 alles unterstützt werden:
jk JK BMS / jikong with JK02 protocol
daly, daly2, daly_ble Daly BMS
jbd JBD / Jiabaida/ Xiaoxiang / Overkill Solar BMS
ant ANT BMS
cbtpwr CBT Power / Creabest BMS
seplos, seplos_v2 Seplos BMS
supervolt Supervolt BMS supervolt
sok SOK BMS
tianpwr Tian-Power BMS
litime LiTime BMS
tdt
ej
abc
dpwrcore
ecoworthy
ective
felicity
ogt
redodo
roypow
braunpwr
neey
pro
renogy, renogy_pro
Es kann sein, das je nach Hersteller mehrere Skript/Typen aus wählbar sind, hier muss man Test welche funktioniert.
Gruß Wulle


