Powerwall mit Felicity IVEM5048 + Felicity LPBA48100-OL - Auslesen des BMS und Steuerung des Inverters

Hallo,

ich habe nun ein paar Tage damit verbracht, eine Powerwall mit Felicity IVEM5048 + Felicity LPBA48100-OL zu bauen.

Da es hier einige Probleme gerade in Bezug auf die Doku gab, wollte ich dies für andere Interessierte einmal aufschreiben.

Das hier ist also keine Frage, sondern eine mögliche Lösung, um die Komponenten per RS-485 und RS-232 anzubinden. Ich kann natürlich auch keine Garantie oder Haftung für etwaige Schäde übernehmen - aber mein Ausprobieren haben die Systeme klaglos geschluckt. Bis auf die 12 V vom RS232? - aber dazu unten mehr.

Beschreibung:

Ich habe einen Sungrow Wechselrichter mit den PV Modulen dran. Dieser hat keinen Akku und ist 3 phasig angeschlossen.

Nun sollte es eine Nachrüstlösung für den Akku geben - ich nenne das ganze mal hier jetzt "Powerwall".

Dazu habe ich einen Felicity IVEM5048 + Felicity LPBA48100-OL gekauft. Der IVEM5048 ist ein 5 KW 1-phasiger Hybrid Wechselrichter mit Off-Grid Funktionalität. Der LPBA48100-OL ist ein 5 kWh Akku mit 51V Nennspannung. Die Inverter kann man parallel schalten zur Leistungserhöhung und/oder auch für mehrere Phasen. Genauso kann man bis zu 12 Akkus parallel schalten.

Beides kostet aktuell zusammen so ca. 1700 €. Ein zweiter Akku kommt bald noch, da ja jetzt alles funktioniert.

Bei mir läuft ein "SmartHome" - das meiste ist über MQTT (Raspberrys) gekoppelt. Das sind diverse Raspberrys, Arduinos, Kameras und Zigbee Geräte. Eine OpenWB Wallbox lädt das E-Auto.

Zentral als manuelles Steuerungsgerät und als Infozentrale ist OpenHAB installiert.

Daher sind diese Informationen bereits vorhanden:

  • Einspeisung W / kWh

  • Netzbezug W / kWh

  • PV Leistung

  • Wallbox Leistung

Ziel:

Nun ist das Auto aber nicht immer da und genau da scheint die Sonne. Dieser Ertrag soll nicht mehr eingespeist werden, sondern in einem Akku für den nächtlichen Verbrauch gespeichert werden. Grundlast ist ca. 700W - davon 450 W für Ethernet-Switche, Synology-NAS und ESXi (Virtualisierungslösung). Der Rest sind Kühlschänke, SmartHome-Komponenten, etc.

Anforderungen an die Powerwall:

  • Auslesen des SOC (also des Ladezustands)

  • Einstellen dreier Modi (Batteriebetrieb, Netzbetrieb mit Laden, Netzbetrieb ohne Laden)

  • Einstellen des Ladestroms, um sich auf die aktuelle Einspeisung anzupassen.

  • Auslesen einiger Informationen wie Zellspannungen, Gesamtspannung

Aufbau:

Akku und Inverter verbinden

Akku und Inverter sind schnell angeschraubt. Die Stromverbindung ran und schon geht da was.

Aber dann kommen diverse Probleme. Das erste ist gleich die BMS Anbindung zwischen Inverter und Akku. Es liegt ein Kabel dafür bei. Aber es steht nicht wirklich eindeutig im Handbuch, wo die Stecker rein müssen. Und selbst, wenn man alles durchprobiert, geht es nicht. Darüber hinaus muss man die RS 485 Adresse des Akkus per DIP Schalter einstellen. Hier nach der Anleitung zu gehen, endet ebenfalls im Nicht-Funktionieren.

Das mit dem Akku mitgelieferte Kabel kann man gleich weglegen (wegwerfen). Denn es funktioniert nicht. Hier sind die PINS 5/6 auf 1/2 verbunden und das ist für die Kombination von Felicity Akku und dem Inverter eines anderen Herstellers gedacht. Wir brauchen hier einfach 5/6 auf 5/6. Dafür reicht ein einfaches Ethernet-Patchkabel aus.

Dies kommt im Inverter in die BMS Buchse (RJ-45) und im Akku in einen beliebigen Port. Denn RS 485 liegt hier überall an. Ich hab das andere Ende in den PCS Port gesteckt. Dann sind Link 0/1 und RS 485 frei.

Da ich nicht weiß, wie die sonstigen Pins der RJ-45 Buchsen belegt sind (bis auf CAN), habe ich alle anderen Kabel durchtrennt. Es ist also nur 5/6 verbunden. Damit funktioniert es.

5 ist RS485B (blau/weiss) und 6 ist RS485A (grün).

Die DIP Schalter 1-4 (Adresse) sollten nach meinem Verständnis in der Doku bei einem Akku auf 0/0/0/0 und DIP 5 auf 1 (Abschlusswiderstand) stehen.

Damit es funktioniert, muss man aber die Adresse auf 1/0/0/0 stellen - der Widerstand ist bei der Kürze der Kabel m.E. egal - ich habe DIP 5 auf 0, da ich eh andere RS485 Geräte noch angeschlossen habe (nämlich zum Auslesen).

Nachdem also das richtige Kabel drinsteckt und man den Akku im Inverter auf "Lib" gestellt hat, erscheint nun auch das kleine "c" und man kann im BMS Menü die Akku Daten auslesen. Solange das nicht geht, sollte der Akku auch nicht auf "Lib" stehen.

Akku auslesen

Da ich überhaupt nicht wusste, welches Protokoll auf welchen PINs hier irgendetwas schickt, habe ich zuerst einen RS485/USB Wandler an den Akku RS485 Port gesteckt und mitgehört. Aber da kommt nichts. Egal, was man macht, man kann nicht mithören.

Offenbar sind die Ports untereinander abgeschirmt - denn wenn man den RS485 Wandler an das Ethernetkabel zwischen Akku und Inverter (also 5/6) steckt, läuft das Sniffen der Daten.

Im Netz (ich weiß nicht mehr woher) habe ich dieses Dokumente gefunden.

BMS Communication Protocol RS485 20210608.pdf (545 KB)

Beim Sniffen mit 9600 8N1 auf RS 485 konnte ich die Befehle in der BMS Doku wiedererkennen.

Nun habe ich das USB/RS485 Kabel wieder in den freien RS485 Port des Akkus gesteckt und ein paar Daten hingeschickt:

full_command = bytes.fromhex("01 03 13 2A 00 18 60 8C") # Cell voltage and temperature
full_command = bytes.fromhex("01 03 f8 0b 00 01 c4 a8") # BMS version
full_command = bytes.fromhex("01 03 13 02 00 0A 60 89") # Battery information

Das steht in dem PDF oben unter Punkt 3.1. / 3.2.

Darauf gibt es auch eine Antwort und die Daten sind stimmig.

Der Lesezugriff auf das BMS mittels RS485 funktioniert also.

Ich habe das Ganze auch in einer Python Library verpackt. Diese kann man von der Bash oder aus einem anderen Python Programm nutzen. Bei Bedarf bitte melden oder ich schreibe da später noch etwas zu. Da ist auch das CRC Erstellen der Pakete enthalten. Aber initial geht es mir erstmal um die Hardware.

Inverter auslesen und Settings verändern

Hier dachte ich natürlich auch, dass das über RS485 geht. Leider nicht... Eine Doku habe ich von einem Felicity Supporter (Danke Daniel!). Hier steht was von RS485, 2400 Baud, MODBUS. Das ist aber leider nur halb richtig, denn so habe ich natürlich nach einer RS485 Verbindung gesucht und scheiterte daran, dass der Inverter der Master ist und auf keine Slave ID hört. Also habe ich mich an RS232 und den 2400 Baud versucht. Das geht! (übrigens kann man den chinesischen Text super in den Google Translater nach Englisch packen)

高频逆变器对外通信协议20210608B(1)(1)(1).pdf (220 KB)

An dem RS232 Port hängt ja mittels mitgeliefertem Kabel dieser Wifi Dongle - der übrigens bei mir nicht geht. (das liegt aber offensichtlich an der Baudzahl von 9600 im Dongle...) Aber ich brauche den auch nicht mehr :slight_smile:

Das Seltsame ist hier, dass der Dongle über die RS232 mit Strom versorgt wird - ACHTUNG: Deswegen hat es mir auch meinem RS232/USB Adapter den Hitzetod beschert.

Denn bei dem mitgelieferten Kabel sind 4 Pins belegt: TX/RX/GND + 12 Volt auf Pin 9!!! Das ist normalerweise der Ring Indicator. Das war der Grund, warum der RS232 Adapter auch so warm wurde und nach 2 Tagen mit Kunststoffblase auf dem Gehäuse kaputt ging.

Die PINs auf der RJ45 Seite am Inverter sind mit PIN 1,2,3 und 8 belegt. 3 ist das grün/weiße Kabel und führt die 12 Volt. Dies muss durchtrennt werden. Also Kabel abisolieren, grün/weiß raussuchen und durchschneiden. Zur Probe kann man Pin 5 + 9 des RS232 Steckers durchmessen. Dort liegen bei intaktem Kabel 12 V an. Das ist falsch. Nach dem Durchtrennen sollte man nur noch die 5 V zwischen GND und TX messen können, also PIN 5 und 3.

Der neue RS232/USB läuft nun ohne Erwärmung...

RS232 wird mit 2400 8N1 initialisiert.

Nun zum Protokoll:

Das ist dem des BMS sehr ähnlich bzw. identisch. Ein Beispiel (ohne CRC, da dies meine Python Lib selber macht):

no_crc_command = bytes.fromhex("01 03 11 01 00 01") # Realtime data / Working mode

Wichtig ist hier die 03 (Lesen), 06 ist nämlich Schreiben, das Register 11 01 ist laut Doku der Working Mode und man muss nun nach dem Senden dieses Kommandos (die 01 hinten heißt, dass man INT16 erwartet) noch die Antwortdaten holen. Da steht dann tatsächlich der Modus drin.

Und genauso kann man mit 06 auch Daten senden - aber nur die Settings, also die Register, die in der Doku als R/W gekennzeichnet sind.

Technischer Aufbau:

Also technisch sind die beiden USB Adapter an einem Raspberry bei mir angeschlossen. Dort ist die erwähnte Library aktiv und diese frage ich von einem Python Service ab. Dieser schickt die Daten per MQTT an die OpenWB Wallbox und an OpenHAB.

Im OpenHAB habe ich dann auch eine kleine Oberfläche gemacht und kann jetzt dort alles Notwendige ansehen und die verschiedenen Modi umstellen. Sobald also zuviel Netzbezug ist, schalte ich auf "Battery" um, wenn der Akku leer ist auf "Bypass without Loading" und wenn die Sonne wieder scheint auf "Bypass with Loading". Mit dem Schiebeschalter passe ich den Ladestrom der aktuellen Einspeisung an.

So, das war es jetzt erstmal zum initialen Aufbau. Wer also auch so etwas vorhat: Es funktioniert.

Ich kann gerne bei Bedarf Details zu der Python Lib und den Commands noch erläutern. Dann einfach hier schreiben.

Meine nächste Aufgabe ist jetzt nur noch, "mich" zu automatisieren. Es muss also nur noch ein kleiner Service her, der per MQTT die Daten abfragt und je nach Wert (Einspeisung/Netzbezug/SOC/PW Leistung) die drei Modi (siehe oben) umstellt und den Ladestrom so justiert, dass möglichst der gesamte Überschuss in den Akku geht.

Viele Grüße und viel Erfolg mit eurem eigenen Projekt

Andreas

1 „Gefällt mir“

Den Felicity Inverter habe ich zurückgeschickt wegen der fehlenden Netzeinspeisung und habe mir einen Multiport II geholt. Der unterstützt die Insel + Einspeisung und damit funktioniert nun das Halten von 0W Einspeisung/Bezug automatisch. Steht hier in einem anderen Thread beschrieben:

https://www.akkudoktor.net/forum/stell-dein-batterie-powerwall-projekt-vor/felicity-5kwh-speicher-und-victron-cerbo-gx-connection/paged/6/

Es gab gerade die Frage per Nachricht, ob es Code gibt zum Auslesen. Daher habe ich ein paar Dinge aus meiner Lösung hier reingestellt.

Hier ist schon mal das Python Script zum Auslesen.

FelicityBMSManager.zip (2.42 KB)

(Nach dem mein kompletter Post gerade gelöscht wurde, schreibe ich das jetzt einzeln.)

2 „Gefällt mir“

Mit dem Script kann man direkt die Daten abfragen:

python FelicityBMSManager.py GetBMSBatteryInformation -c 1
+----------------+----------------+---------+
| Name           | Description    | Value   |
+----------------+----------------+---------+
| BatteryVoltage | BatteryVoltage | 52.71 V |
| BatteryCurrent | BatteryCurrent | 0.0 A   |
| SOC            | Ladezustand    | 30 %    |
+----------------+----------------+---------+

-c steht für die Cell-Id - also die DIP Einstellung

Es gibt diese Commands:

GetBMSVersion
GetBMSCellInformation
GetBMSBatteryInformation

Als device ist per Default /dev/ttypUSB0 eingestellt. Man kann das mit "-d DEVICE" aber anpassen - es funktioniert auch IP:Port für einen Ethernet RS485 Adapter.

Wenn man das in einem eigenen Python Code verwenden möchte, sieht das so aus - (ich musste das stark kürzen, da andauernd hier im Forum eine Sperre kommt, wenn ich das posten möchte...)

from FelicityBMSManager import FelicityBMSManager
...
def getFormattedData(command, clientid):
ws = FelicityBMSManager(command=command, clientid=clientid)
data = ws.get_data()
...

So - damit kann man das BMS auszulesen - in der Python Datei ist also alles drin, um an die Daten zu kommen. Weitere Datenquellen / Register sind oben in den Dokumenten beschrieben.

Viel Erfolg!

2 „Gefällt mir“

Hallo Andreas,

tolle Sache, hab mir auch zwei Speicher (je15kWh) von FS Solar zugelegt...dank deinem Py-Skript ist das Ansprechen beider BMS fast problemlos...super und weiter so

{pear}:wink:

Hallo @andreasm,

vielen Dank für dein Python-Script. Ich habe es auch zum Laufen bekommen und kann jetzt endlich das BMS meines Felicity-Speichers auslesen.

Zur Weiterverarbeitung der Daten mit NodeRed/InfluxDB/Grafana tue ich mich aber noch schwer die ASCII-Tabelle zu parsen.

Wäre es möglich, die Ergebnisse als JSON auszugeben ? Bin leider in Python nicht fit genug, alle Anpassungsversuche scheiterten bisher.

Für einen Tipp wäre ich dankbar !

Viele Grüße

EDIT: Hat sich erledigt. Bekomme die Daten jetzt wie gewünscht aufbereitet und speichere sie in der InfluxDB usw. (ChatGPT sei dank !)

Hallo,

das freut mich, wenn es jetzt klappt. Ich war über das Wochenende unterwegs und konnte da nicht antworten. Generell ist das Python Script so aufgebaut, dass es zwar ASCII auf der Console ausgibt. Aber wenn es als Library genutzt wird, kommen JSON Daten direkt zur Weiterverarbeitung zurück.

Wenn noch Fragen sind, helfe ich gerne.

Viele Grüße

Andreas

Hallo,

ich hab auch ein Felicity LPBF48250 hier am laufen und überlege gerade noch einen zweiten dazu zu holen aber das eine Geschichte. Mich würde interesieren, mit welchen Adaptern du die Daten aus dem Speicher holst? Weil mein System läuft und das ganz gut aber die 4 LED`s sind ganz miese Schätzeisen und ich versuche derzeit, über die Batteriespannung Rückschlüsse zu ziehen, was für eine Ladung er hat. Aber auch das sind nur ganz grobe Schätzungen meinerseits.

Kannst du mal ein Link zu den verwendenden Adaptern setzten?

Dank dir

LG

Hallo Zusammen,
ich überlege ebenfalls mir einen Felicity Solar lpbf48300 anzuschaffen, da unser aktueller 10kWh Speicher nicht ganz ausreicht.
Leider antwortet der Verkäufer auf meine Fragen immer nur mit "keine Ahnung" was nicht gerade für Kompetenz oder Supportfähigkeit im Garantiefall spricht.
Könnt ihr mir sagen ob ein aktives BMS verbaut ist bzw. welches BMS verbaut ist?
Wie gut werden die Zellen balanciert bei Last/Ladung? Wie sieht es mit dem Zellendrift unter Last und bei SOC100 aus?
Abgesehen von der Automation, mit welchem Tool lest ihr den Speicher direkt am PC aus?

So was wäre super interessant. Und wo habt ihr den gekauft?

Gruß und herzlichen Dank für eure Antworten vorab!

@solar-wolf: Ic hab meinen in Stendal gekauft

Hi , ich habe auch einen Felicity Solar , mit 5 Modulen ~25,6kWh , läuft seit letztem Samstag mit einem Victron 5000 MP-II GX und die Kommunikation über die Com-box von Felicity Solar via CAN zum Victron funktioniert gut.

Jetzt stellt sich mir die Frage ob ich parallel über einen RS485 Adapter die BMS Daten (Zellspannungen etc.) abgreifen kann.

@merlin5

Dazu musst Du nur den ersten Beitrag in diesem Thread lesen - den Thread habe ich nämlich genau mit der Beantwortung dieser Frage eröffnet.

Am besten generell mal alles durchlesen, dann erklärt sich vieles von selbst. Sind ja nur ein Beiträge hier...

@andreasm Danke für das schnelle Feedback , das war mir "durchgerutscht"

[quote data-userid="24935" data-postid="209796"]

Dies kommt im Inverter in die BMS Buchse (RJ-45) und im Akku in einen beliebigen Port. Denn RS 485 liegt hier überall an. Ich hab das andere Ende in den PCS Port gesteckt. Dann sind Link 0/1 und RS 485 frei.

[/quote]

@merlin5 Gerne - wenn Du da weitere Fragen hast, melde Dich einfach. Bei mir läuft das stabil im Dauereinsatz.

Du kannst natürlich auch zuerst das EDMS dort ausprobieren - das liefert Dir ja auch die Daten. Dann klappt schon mal die Hardware-Seite. Das eigene Auslesen über das Protokoll kannst Du dann ja nachgelagert angehen.

Hallo Andreas,

ich habe nun auch einen raspberry und einen RS485/USB Adapter an dem geht die A(6) und B(5) und das ganze an eine Buchse des Akkus (letztes von 5 Modulen)

wenn ich -c1 oder -c 0 mitgebe bekomme ich nur null Werte

pi@felicityPi:/felicity $ python ./FelicityBMSManager.py GetBMSBatteryInformation -c 1
+----------------+----------------+-------+
| Name | Description | Value |
+----------------+----------------+-------+
| BatteryVoltage | BatteryVoltage | 0.0 V |
| BatteryCurrent | BatteryCurrent | 0.0 A |
| SOC | Ladezustand | 0 % |
+----------------+----------------+-------+

gebe ich kein -c mit bekomme ich Werte

pi@felicityPi:/felicity $ python ./FelicityBMSManager.py GetBMSBatteryInformation
+----------------+----------------+---------+
| Name | Description | Value |
+----------------+----------------+---------+
| BatteryVoltage | BatteryVoltage | 53.61 V |
| BatteryCurrent | BatteryCurrent | -8.2 A |
| SOC | Ladezustand | 64 % |
+----------------+----------------+---------+

auch zu Firmware und Cell

pi@felicityPi:/felicity $ python ./FelicityBMSManager.py GetBMSVersion
+------------+-------------+-------+
| Name | Description | Value |
+------------+-------------+-------+
| BMSVersion | BMSVersion | 518 |
+------------+-------------+-------+

pi@felicityPi:/felicity $ python ./FelicityBMSManager.py GetBMSCellInformation
+---------------------+---------------------+---------+
| Name | Description | Value |
+---------------------+---------------------+---------+
| Cell1 Voltage | Cell1 Voltage | 3.352 V |
| Cell2 Voltage | Cell2 Voltage | 3.35 V |
| Cell3 Voltage | Cell3 Voltage | 3.353 V |
| Cell4 Voltage | Cell4 Voltage | 3.351 V |
| Cell5 Voltage | Cell5 Voltage | 3.352 V |
| Cell6 Voltage | Cell6 Voltage | 3.35 V |
| Cell7 Voltage | Cell7 Voltage | 3.353 V |
| Cell8 Voltage | Cell8 Voltage | 3.351 V |
| Cell9 Voltage | Cell9 Voltage | 3.351 V |
| Cell10 Voltage | Cell10 Voltage | 3.35 V |
| Cell11 Voltage | Cell11 Voltage | 3.353 V |
| Cell12 Voltage | Cell12 Voltage | 3.35 V |
| Cell13 Voltage | Cell13 Voltage | 3.352 V |
| Cell14 Voltage | Cell14 Voltage | 3.349 V |
| Cell15 Voltage | Cell15 Voltage | 3.352 V |
| Cell16 Voltage | Cell16 Voltage | 3.349 V |
| Sensor1 Temperature | Sensor1 Temperature | 22 °C |
| Sensor2 Temperature | Sensor2 Temperature | 22 °C |
| Sensor3 Temperature | Sensor3 Temperature | 22 °C |
| Sensor4 Temperature | Sensor4 Temperature | 22 °C |
+---------------------+---------------------+---------+

aber das scheint ja nur von einem Modul zu sein, wie bekomme ich die anderen Module ?

Nachtrag es kommen auch Werte bei C1 , 2, 3, 4 ,5 , nur beim ersten mal sind die Null

und manchmal kommen scheinbar nicht alle Werte oder "Unsinn", serielles Problem ?

+----------------+----------------+---------+
| Name | Description | Value |
+----------------+----------------+---------+
| BatteryVoltage | BatteryVoltage | 0.0 V |
| BatteryCurrent | BatteryCurrent | 915.2 A |
| SOC | Ladezustand | 63961 % |
+----------------+----------------+---------+

oder hier

Modul 2
+---------------------+---------------------+---------+
| Name | Description | Value |
+---------------------+---------------------+---------+
| Cell1 Voltage | Cell1 Voltage | 3.343 V |
| Cell2 Voltage | Cell2 Voltage | 3.344 V |
| Cell3 Voltage | Cell3 Voltage | 3.343 V |
| Cell4 Voltage | Cell4 Voltage | 3.343 V |
| Cell5 Voltage | Cell5 Voltage | 3.344 V |
| Cell6 Voltage | Cell6 Voltage | 3.344 V |
| Cell7 Voltage | Cell7 Voltage | 3.344 V |
| Cell8 Voltage | Cell8 Voltage | 3.345 V |
| Cell9 Voltage | Cell9 Voltage | 3.341 V |
| Cell10 Voltage | Cell10 Voltage | 3.344 V |
| Cell11 Voltage | Cell11 Voltage | 3.343 V |
| Cell12 Voltage | Cell12 Voltage | 3.343 V |
| Cell13 Voltage | Cell13 Voltage | 3.344 V |
| Cell14 Voltage | Cell14 Voltage | 0.0 V | <--
| Cell15 Voltage | Cell15 Voltage | 0.004 V | <--
| Cell16 Voltage | Cell16 Voltage | 5.632 V | <--
| Sensor1 Temperature | Sensor1 Temperature | 5632 °C | <--
| Sensor2 Temperature | Sensor2 Temperature | 5632 °C |
| Sensor3 Temperature | Sensor3 Temperature | 5765 °C |
| Sensor4 Temperature | Sensor4 Temperature | 116 °C |
+---------------------+---------------------+---------+

@merlin5 Hallo, das sieht ja schon ganz gut aus. Das -c 1 ist gleichzusetzen mit "keinem Parameter". "-c 1" ist also der Default. Das geht ja bei Dir prinzipiell auch. Schön...

Ich habe bei mir auch manchmal den Effekt, dass die Daten nicht vollständig ankommen. Da aber ist der Grund, dass ein Python Service gleichzeitig alle paar Sekunden auch über den FelicityBMSManager mittels RS485 Daten abholt. Dann wird das Python Script als Library innerhalb eines größeren Systems genutzt. Wenn nun beide Instanzen (Service + CommandLine) gleichzeitig die Daten holen, kommt es zu diesen Effekten, da in der Lib kein Reentrent-Check oder Waiting implementiert ist. Das wäre dann auch etwas komplexer bzw. bei anderer parallel genutzter Fremdsoftware evtl. sogar unmöglich, da im Prinzip ja alle am Bus angeschlossenen Systeme sich daran halten müssten (wie z.B. bei einigen 868 Mhz Funk Systemen). Es müsste dann ein Protokoll her, welches von allen eingehalten wird und das dafür sorgt, dass jeder "Master" seinen Abfragezeitslot bekommt.

Wenn ich aber bei mir den Service mit den regelmäßigen Abfragen stoppe und nur alleinig den Command Line Aufruf mache, habe ich bisher noch keine "zerschossenen" Daten bemerkt. So ist das auch konzipiert: Nur ein BMS "Sender/Master" pro Bus (EDMS oder FelicityBMSManager), der die Slaves abfragt. Bei mehreren "Mastern" kommen die sich halt in die Quere.

Daher zur Problem-Einkreisung/Lösungsfindung:

Hast Du evtl. auch mehrere Instanzen des FelicityBMSManagers parallel am Laufen oder fragt etwas anderes die RS485 ab? Z.B. die Software EDMS?

Falls ja, hast Du den Grund, ansonsten würde ich nochmal bei der Verkabelung und der Terminierung schauen.

@andreasm

nein Dein Python script läuft "allein" ich vermute aber das die Original Com-Box das gleiche Problem verursacht und da es ja die seriellen Daten auf CAN für den Victron umwandelt, wäre für mich zumindest schlüssig.

Für mich geht es mit dem Script eher darum "ab und an" mal das balancing der Zellen und Module zu kontrollieren , da diese Daten scheinbar über die Com-Box nicht an den Victron geliefert werden .

@merlin5 Ach so, Du hast die COM Box am Laufen - das kann natürlich sein. Die habe ich zwar auch hier liegen, aber noch nie angeschlossen. Das funktioniert alles auch ohne. Also Akkus per RS485 per Python zum OpenHAB (Hausautomation) und zur OpenWB (Wallbox). Und per CAN direkt zum CerboGX.

@andreasm

ja genau Dein Script habe ich erst später gefunden, ich ziehe die Grid Informationen über ein script (auch gefunden :wink: ) vom SMA Homemanager ab

Ich habe hier aber noch einen iobroker und den Teslasolarcharger laufen (der fragt den Speicher via Modbus ab) und steuert die Ladung des Autos dann anhand der Parameter und PV Überschuß