und hier noch ne Modbus Register Map, die ich mal irgendwann irgendwo gefunden hatte. ich weiss allerdings nicht, zu welcher JK Generation die jetz gehört…
Grundsätzlich gibt es (zumin bei der PB Serie, aber wahrscheinlich bei P genauso) zwei Arten mit den Daten.
Eine ist man schickt da ein w Command hin und bekommt alles in einem Rutsch zurück und muss das auseinanderpflücken, und die andre ist eine Modbus Kommunikation mit read_register.
Leider kann ich dein Projekt nicht direkt umsetzen – jedenfalls nicht so einfach. Ich möchte auf jeden Fall über BLE mit dem JK BMS kommunizieren, aus Sicherheitsgründen (z. B. BT blocken).
Dein Python-Skript nutzt Modbus RTU über RS485/USB. Mein BMS per BLE spricht jedoch eine eigene BLE-Frame-Struktur (JK BMS BLE). Registeradressen, Befehle, Checksummen etc. passen daher nicht.
RS485 ist seriell, synchron, Master/Slave.
BLE ist paketbasiert, asynchron, über Notifications/Write/Read.
Übernehmen könnte ich z. B. den MQTT-Teil, der sollte unabhängig vom Transport funktionieren.
Bisher kann ich mich mit dem BMS verbinden und erhalte auch Werte – was mir aber fehlt, ist eine Zuordnungstabelle der Hex-Werte für mein BLE-BMS (JK-B2A8S20P). Ohne diese kann ich bisher nur die Zellspannungen auslesen, alles andere noch nicht. (abgesehen von den Type3 Daten, wie Modell, Version, Serial, Passwort, usw.)
Wenn du irgendwo so eine Tabelle hast oder Hinweise, wie man die BLE-Frames richtig dekodiert, wäre das extrem hilfreich.
Wenn du dir die Arbeit machen möchtest dann kann du hier reinschauen:
Ich würde allerdings hingehen und einfach diese ESP Home Komponente auf einen ESP32 flashen. deinen MQTT Server konfigurieren und dann hast du ja alle Möglichkeiten offen.
Ein ESP32 bekommst du für 2€ / Stück aus Fernost oder 5€ / Stück Amazon.
Mach ich selber so und ist dann direkt im HomeAssistant Dashboard verfügbar: