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.
24kWP an 2x FSP 10kW,Solax X3-G2 und AxpertMAXII 8000 mit 70kWh LiFePo4
123solar, meterN und EVSE-WiFi
Kein Support per PN
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.
24kWP an 2x FSP 10kW,Solax X3-G2 und AxpertMAXII 8000 mit 70kWh LiFePo4
123solar, meterN und EVSE-WiFi
Kein Support per PN