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

@merlin5 Du kannst ja einmal die COM Box abschalten und dann schauen. Dann weißt Du ja, woran es liegt, wenn es geht. Aber das klingt schon schlüssig. Musst dann auch aufpassen, wenn Du eine Firmware auf die Akkus spielen möchtest, da darf auch parallel nichts anderes auf dem Bus aktiv sein.

Warum schließt Du denn die Akkus nicht direkt per CAN an den Victron an? Musst nur die neue Firmware auf die Akkus aufspielen.

hm, ich dachte bisher und so sagte es auch der Händler das die Com-Box für CAN benötigt wird, evtl habe ich einen etwas anderen Akku als Du der CAN nicht nativ kann.

Ich habe auf dem Modul mit der Anzeige die 518 und auf den anderen noch die 517, wurde so ausgeliefert , denke das werde ich dann demnächst gerade ziehen

https://www.xx-xxxxx.de/p/felicity-solar-niedervolt-stapel-5-3kwh-bis-42-26-6kwh

@merlin5 Ok, ich habe 2x LPBA48100-OL mit Firmware 516. Das läuft wunderbar ohne Com-Box. Damit auch kein paralleler Datenverkehr auf der RS485. Per CAN also Akku und Multiplus/CerboGX verbunden & per RS485 das Auslesen des BMS über mein Tool. Somit keine Konflikte auf dem RS485 Bus. Kannst ja mal bei Gelegenheit ausprobieren, ob es bei Dir auch ohne Com Box geht.

@andreasm

hab gerade nochmal in die Doku geschaut, die Ports werden ja mit den kurzen RJ45 einfach gestacked, und von der Belegung her müßte ja auch CAN vorhanden sein , stellt sich mir die Frage warum ich dann die Com-Box brauchte und mir diese ja auch kostenfrei nachgeliefert würde

@merlin5 So wie ich das verstanden habe, ging die CAN Bus Kommunikation mit älteren Firmwares nicht. Daher die COM Box. Irgendwo ab Version 516 (oder knapp früher) klappte dann die CAN Bus Verbindung direkt. Ich hab gleich beide Akkus auf 516 aktualisiert und angeschlossen. Kein Problem (nur den Terminierungsstecker am CerboxGX nicht vergessen!!! Sonst geht es nicht) damit. Die COM Box habe ich mir dann nur noch zur Sicherheit für spätere/andere Projekte zuschicken lassen - liegt noch verpackt im Keller...

Zu dem Thema mit den Firmwares gibt es auch noch diesen Thread hier:

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

@andreasm

Ich hatte vor dem Kauf schon Kontakt mit "Rebecca" von Felicity Solar, sehr sehr nett , ich habe Sie gerade nochmal angeschrieben und versuche etwas mehr Licht ins dunkel zu bringen, werde dann hier berichten.

zu dem 2x5kWh link , da hatte ich mich schon "durchgearbeitet" und auf Seite 8 eingeklinkt :wink: , ich stöbere auch viel bevor ich kaufe ...

So kurzes Update , der Akku kann nativ CAN sprechen und benötigt die com-Box nicht, die Doku ist ein bisschen irritierend da es die PINs CAN und CAN-PCS gibt.

Für native CAN zum Victron muss man die CAN-PCS Pins nehmen, 3 Batterie muß auf 8 Victron und 4 Batterie auf Victron 7 , man bekommt so zwar keine weiteren Informationen in den Victron (z.B. Cell Spannungen) aber der RS-485 ist frei für diese Abfragen.

Ich nutze das Python script von AndreasM dafür und habe auch keine Aussetzer / falsche Werte mehr

@merlin5 Super! Dann ist der Aufbau jetzt wie bei mir und das funktioniert mit Deinen Akkus genauso. Die COM Box ist somit anscheinend wirklich obsolete. Viel Erfolg bei Deinem weiteren Vorhaben.

@merlin5
Hallo Merlin5,
hast Du bei Deiner Verbindung von der Combo Box den Anschluss PCS-Can zum Cerbo BMS genutzt?
Den CAN Eingang beim Cerbo kann ich leider nicht nutzen, da dort meine Pylontech Akkus mit der Einstellung "VE.Can 250/100 rev2" dranhängen. Bei Umstellung dieses Wertes werden die Pylontech Akkus nicht mehr geladen.

Und wie hast Du das selbstgebaute Kabel verbunden
PIN 1 zu Pin 3,
PIN 7 zu PIN 8 und
PIN 8 zu PIN 7?
Ich frage, weil mir der Spaß immer noch nicht läuft und ich nicht wirklich weiter komme.

Danke Dir.

@frank1801

Hi, ich nutze die Combo Box ja nicht mehr da ich direkt vom AKKU PCS-CAN an meinen GX verbunden habe , Cerbos habe ich keine

3 Batterie muß auf 8 am Victron

4 Batterie muß auf 7 am Victron

Hallo Zusammen,

ich bekomme das skript irgendwie nicht zum laufen. ich bekomme z.B. Syntax error.

Muss an den Skript irgendwas angepasst werden das ich es zum laufen bekomme?

jetzt läuft es, lag an der Python Version die ich installiert hatte. Für das Skript wird zwingend mindestens 3.9 benötigt.

Ja, ich bin etwas spät mit der Antwort dran - aber jetzt klappt es ja schon bei Dir.

Das mit der Version kann auch passieren, wenn der Link von "python" auf die Version 2.x zeigt. Dann muss man unter Umständen "python3" eingeben. Sicherheit schafft "python --version". Dann weiß man, welche Version installiert ist und welche unter dem Shortlink "python" aufgerufen wird.

Entwickelt wurde das Script unter Version 3.9.2.

Viel Erfolg, Andreas

Hallo Andreas

Ich bin auch gerade dabei zu versuchen das BMS auszulesen.

Im Wesentlich geht es mir darum aus dem BMS den aktuellen Füllgrad des Felicity Akkus auszulesen.

Nach diversen versuchen mit einem USR 203 od. einem Waveshare RS485 / Ethernet Modul musste ich leider diese Ideen verwerfen und bin aktuell dabei einen ESP32 dazu zu ermächtigen.

Folgender Aufbau bei mir:

Akku -> RS485 -> ESP32 -> LAN (WiFi) -> Homeassistant (ESPhome -> Modbus)

Die prinzipielle Kommunikation mit dem ESP32 funktioniert.

Ich scheitere aktuell daran, dass ich den richtigen Code an den Akku schicke, um ihm die Info bzgl. des Füllgrades (in %) zu entlocken.

Wenn ich es richtig aus deinem Text verstehe, dann schickst Du via Phyton o.g. Code ab. In meinem Fall kann ich das Phyton Script nicht nutzen und muss "nur" den richtigen Befehlscode an den Akku via RS485 schicken.

Leider reagiert er auf gar keine Befehle, deshalb vermute ich, dass hier mein Fehler liegt.

Kannst Du mir einen Tip geben ob der Code in HEX od. Dezimal geschickt werden muss?

Wie würde der Code für das Auslesen des Füllgrades zusammengestellt werden müssen?

So sieht das bei mir in HA aus:

Im Sensor unter "adress:" müsste dann der Code an das BMS geschickt werden ... (aktuell bei mir nur zum Test "Battery Voltage", aber leider noch erfolglos)

uart:
id: mod_bus
tx_pin: GPIO26
rx_pin: GPIO32
baud_rate: 9600
stop_bits: 2
parity: NONE
modbus:
id: modbus1
uart_id: mod_bus
send_wait_time: 500ms
modbus_controller:
- id: wb1
address: 0x1 # address of the ModBUS slave device on the bus
modbus_id: modbus1
# setup_priority: -10
update_interval: 5s
# offline_skip_updates: 0
sensor:
- platform: modbus_controller
modbus_controller_id: wb1
name: "Battery voltage"
register_type: holding
address: 1400 ## address of the register inside the Modbus slave device
unit_of_measurement: "V"
value_type: U_WORD

@samhain Hallo,

ich habe hier auch das komplette und funktionierende Python Script gepostet. Wenn Du also Python 3.8 installiert hast, kannst Du das direkt laufen lassen. Wenn EDMS und/mein Script gehen, klappt ja die Kommunikation prinzipiell.

Den Aufbau der Befehle und der Checksummen ist alles in meinem Python Script enthalten.

Da solltest Du Dir alles rausziehen können, was Du brauchst.

Schau mal direkt in den 1. und 3. Beitrag dieses Threads - da steht alles - auch das Script.

Viele Grüße

Andreas

1 „Gefällt mir“

Hallo Andreas

hab jetzt mal das Ganze vereinfacht und einen passenden USB RS485 Adapter im HA Server angesteckt. Mit EDMS und einem Windows Rechner funktioniert die Verbindung. Damit ist zumindest da schon mal der Haken dran.

Leider läuft dein Python Script in HA auf diverse Fehler und mir fehlt leider die Kenntnis damit etwas anzufangen:

Error loading script felicitybmsmanager.py: Line 20: AnnAssign statements are not allowed., Line 22: AnnAssign statements are not allowed., Line 23: AnnAssign statements are not allowed., Line 25: AsyncFunctionDef statements are not allowed., Line 229: AnnAssign statements are not allowed., Line 231: AnnAssign statements are not allowed., Line 243: "__name__" is an invalid variable name because it starts with "_"
Mir fehlt aktuell auch noch die Idee wie ich eine Parameterübergabe beim Aufruf des Phyton Scripts machen kann. Hat evtl. einer der User hier Home Assistant mit dem Script laufen und könnte mir einen Tip geben?

Die Fehlermeldungen sehen nach einer falschen Python Version aus. Mit Python Version 3.9.2 sollte alles laufen. Einfach mal "python --version" eingeben und schauen, welche Version aktuell installiert ist.

Bzgl. der Rückgabe: Das Script hat 2 Modi: a) Es ist wird über die Commandline aufgerufen und liefert die Liste b) Es wird von einem Python Script als Library eingebunden - dann liefert die Lib die Daten im JSON Format. So nutze ich das hier, die Daten werden dann in einem weiteren Script weiterverarbeitet. Evtl. hilft Dir das weiter.

Hallo Andreas.

Falsche Python Version kann ich zunächst ausschließen. Hab die 3.11

Ich habe jetzt schnell eine VM mit Debian 12 auf der gleichen Hardware (wo auch Home Assistant läuft) aufgesetzt und Python3 nachinstalliert

... und nach diversen Fehlermeldungen wo irgend welche Libraries gefehlt haben mit deinem Script nun folgendes Ergebnis:

+----------------+----------------+---------+
| Name | Description | Value |
+----------------+----------------+---------+
| BatteryVoltage | BatteryVoltage | 48.56 V |
| BatteryCurrent | BatteryCurrent | 0.0 A |
| SOC | Ladezustand | 15 % |
+----------------+----------------+---------+

Damit ist sichergestellt, dass alle Verbindungen (USB -> RS486 -> Akku) funktionieren.

Ein halbwegs angepasstes BMS.py für Homeassistant habe ich auch gefunden. Da müssen dann "nur" noch die Hex Codes modifiziert werden und dann sollte es laufen.

Nochmal Danke für die Hinweise, die mir wirklich geholfen haben.

vG

Franky

@samhain Gerne, schön, dass es geht. Das angepasste BMS.py könnte auch meine Lib verwenden und die zurückgegebenen JSON Daten direkt zurückgeben. Dann müsstest Du die Hex Sachen mit den den Checksummen nicht komplett übertragen, sondern bräuchtest nur die Ergebnisse (JSON) parsen.

(hat sich erledigt - ein Python Script hier als Code formatiert oder als Text ergibt eine "blocked" Meldung vom Forum - daher nachfolgend als Datei)