Script um Seplos V2/10E über Bluetooth/BLE auszulesen

Da ich meine 3 Seplos (V2/10E) zusammengeschlossen habe, kann ich die Zellenspannungen der Master Box nicht mehr auslesen. Dieses Problem haben m.M.n. ja alle, die Seplos' in Master/Slave Kombination betreiben.
Ich habe meinen Linux Server gleich 1 Meter neben den Boxen stehen, darum würde ich gerne über ein Script die Infos per Bluetooth abholen.
Das funktioniert aktuell z.b. schon mit JK-BMS (mpp-solar) und einem JBD (eigenes Script und gatttool), für Seplos fehlt mir einfach noch die Aufschlüsselung der UUID's:

[bluetooth]# connect 60:6E:41:26:XX:XX
Attempting to connect to 60:6E:41:26:XX:XX
[CHG] Device 60:6E:41:26:XX:XX Connected: yes
Connection successful
[NEW] Primary Service (Handle 0x0000)
/org/bluez/hci0/dev_60_6E_41_26_XX_XX/service0001
00001801-0000-1000-8000-00805f9b34fb
Generic Attribute Profile
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_60_6E_41_26_XX_XX/service0001/char0002
00002a05-0000-1000-8000-00805f9b34fb
Service Changed
[NEW] Primary Service (Handle 0x0000)
/org/bluez/hci0/dev_60_6E_41_26_XX_XX/service000f
0000ff00-0000-1000-8000-00805f9b34fb
Unknown
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_60_6E_41_26_XX_XX/service000f/char0010
0000ff01-0000-1000-8000-00805f9b34fb
Unknown
[NEW] Descriptor (Handle 0x0000)
/org/bluez/hci0/dev_60_6E_41_26_XX_XX/service000f/char0010/desc0012
00002902-0000-1000-8000-00805f9b34fb
Client Characteristic Configuration
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_60_6E_41_26_XX_XX/service000f/char0013
0000ff02-0000-1000-8000-00805f9b34fb
Unknown
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_60_6E_41_26_XX_XX/service000f/char0015
0000ff03-0000-1000-8000-00805f9b34fb
Unknown
[NEW] Descriptor (Handle 0x0000)
/org/bluez/hci0/dev_60_6E_41_26_XX_XX/service000f/char0015/desc0017
00002902-0000-1000-8000-00805f9b34fb
Client Characteristic Configuration
[NEW] Characteristic (Handle 0x0000)
/org/bluez/hci0/dev_60_6E_41_26_XX_XX/service000f/char0018
0000ff04-0000-1000-8000-00805f9b34fb
Unknown
[NEW] Descriptor (Handle 0x0000)
/org/bluez/hci0/dev_60_6E_41_26_XX_XX/service000f/char0018/desc001a
00002902-0000-1000-8000-00805f9b34fb
Client Characteristic Configuration
[CHG] Device 60:6E:41:26:XX:XX UUIDs: 00001800-0000-1000-8000-00805f9b34fb
[CHG] Device 60:6E:41:26:XX:XX UUIDs: 00001801-0000-1000-8000-00805f9b34fb
[CHG] Device 60:6E:41:26:XX:XX UUIDs: 0000ff00-0000-1000-8000-00805f9b34fb
[CHG] Device 60:6E:41:26:XX:XX ServicesResolved: yes
[CHG] Device 60:6E:41:26:XX:XX Appearance: 0x03c0

Kann mir hierzu jemand einen Tip geben? Gibt's vielleicht schon ein Github Projekt (egal welche Programmiersprache) das per BLE Daten von den Seplos abholt?
Ich suche nun schon eine Weile, habe aber keinen passenden Code gefunden.
Müsste sich ja mit gatttool und dem Wissen, welches Service welche Daten hält, recht einfach umsetzten lassen.

PS: Bitte keine Verweise auf irgendwelche Projekte mit RS485 - die kenne ich alle aber die Schnittstellen sind bei mir nicht frei. Es muss sich definitiv über BT machen lassen.

So, bin nun einen Schritt weiter.
Am Android Handy habe ich den Bluetooth Verkehr der Seplos-App mit den Boxen mitgetraced (=> btsnoop_hci.log).
Nach Analyse der daraus gewonnenen Daten habe ich die relvanten BT Kommandos extrahiert und schicke diese per Linux CLI mit dem gatttool z.b. zur Master Box:

root@hphost:/home/riogrande75# gatttool -b 60:6E:41:26:XX_XX-I
[60:6E:41:26:XX_XX][LE]> connect
Attempting to connect to 60:6E:41:26:XX_XX
Connection successful
[60:6E:41:26:XX_XX][LE]> char-write-req 0x0012 0100
Characteristic value was written successfully
[60:6E:41:26:XX_XX][LE]> primary
attr handle: 0x0001, end grp handle: 0x0003 uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle: 0x0004, end grp handle: 0x000e uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x000f, end grp handle: 0x001a uuid: 0000ff00-0000-1000-8000-00805f9b34fb
[60:6E:41:26:XX_XX][LE]> mtu 512
MTU was exchanged successfully: 512
[60:6E:41:26:XX_XX][LE]> char-write-req 0x0014 7E100046610000FFDA0D
Characteristic value was written successfully
Notification handle = 0x0011 value: 7e 14 00 61 00 00 6a 00 00 10 0c dd 0c dd 0c de 0c de 0c de 0c de 0c dd 0c de 0c
Notification handle = 0x0011 value: de 0c de 0c dd 0c de 0c dd 0c dd 0c df 0c de 06 0b 8a 0b 84 0b 86 0b 86 0b b7 0b 8e 00 00 14 96
Notification handle = 0x0011 value: 44 1c 06 6d 60 02 6e 6d 60 00 75 03 e8 14 98 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Notification handle = 0x0011 value: 00 00 00 00 00 00 00 10 03 08 00 00 00 00 00 00 00 00 00 00 00 00 2c 71 0d
[60:6E:41:26:XX_XX][LE]> disconnect

Ich frage also mit dem "char-write-req" auf handle 0x0014 z.b. den "function code 61H (Get single machine data)" ab.
In den "Notification handle" Meldungen sieht man die Antwort vom BMS darauf. Codierung kann man aus der angehängten Seplos BT Protocolbeschreibung entnehmen.
Ich werde nun noch ein kleines Programm schreiben, welches das zyklisch als Task ausführt und die Zell-Daten per MQTT an meinen HA sendet.

Seplos.bluetooth.protocol.2-1.pdf (1.04 MB)

1 „Gefällt mir“

Hallo,
das ist ein interessantes Projekt und ich würde mich auch sehr dafür interessieren an die einzelnen Zellspannungen meiner vier Seplos 2 BMS zu kommen und meinem Homeassistant zuzuführen. Idealerweise über Bluetooth, alternativ auch über den Victron Cerbo GX.
Leider bin ich da viel zu wenig in der Materie drin, um das auch nur annähernd selbst entwickeln zu können. :-(.
Ich habe eben schon den ganzen Vormittag damit verbracht nach Lösungen zu suchen, bin da aber leider noch nicht fündig geworden.

Bist Du schon weiter gekommen, bzw. gibt es vielleicht doch schon eine Lösung, die ich bisher nur übersehen habe?

Grundsätzlich habe ich ein Script, dass funktioniert - aber da ich das sowieso im HA haben will, liegt mein Focus nun auf dem BMS_BLE-HA Projekt. Da ist der Entwickler dieser Tage am fixen der noch offenen Bugs, bin aber recht zuversichtlich.
Aktueller Stand siehe hier: BMS_BLE-HA

Die HA Implementierung ist nun fertig, Link zum Projekt siehe letzten Post.
Damit sieht man nun die Zellspannungen aller Batterien, auch die des Master Packs (BP00).

Oh, klasse, das klingt richtig gut! Ich werde mir das am Wochenende, vermutlich am Sonntag, anschauen :slight_smile:

Natürlich auch noch ein großes Lob und vielen Dank für den Input, den Du (und auch der Entwickler von BMS_BLE-HA) da reingesteckt habt. Das ist einfach genial. Ich hätte so was nie hinbekomme :slight_smile:

Jetzt hoffe ich mal, dass ich es dann bei mir auch zum Laufen bekomme :slight_smile:

Lieben Gruß

Hallo,
ich habe die Version 101 installiert und er liest scheinbar auch Werte aus dem Seplos aus. Bei mir in HA werden nun 12 neue Entitäten angezeigt.

Unklar ist mir allerdings noch, wie ich jetzt an die Zellspannungen komme, bzw. wo ich sie finde. Werden die nicht als getrennte Entitäten angezeigt?

Lies dir den Thread bis zum Ende durch. Ich hatte die gleiche Frage :smile:

Danke, ich bin dann auch endlich drüber gestolpert.
Finde sie nun in der Log-Datei und auch in der Entität "BP00 Delta voltage" unter "Attribute"
Wie bekomme ich sie aber als einzelne Entitäten, damit ich sie auch einzeln z.B. mit Grafana grafisch auswerten kann?

Das ist ein HA Thema und hat nun nichts mehr mit diesem Thread zu tun. Suche mal nach "Entität aus Attribut + HA".