Multiplus II GX + Deye SE-G5.1PRO

Hallo,
ich würde gerne einen MultiPlus II GX mit einem Deye SE-G5.1PRO Speicher betreiben.
Es gibt ja ein paar alte Einträge dazu, hat jemand das vielleicht in letzter Zeit so umgesetzt und kann darüber berichten, was die Kompatibilität angeht, insbesondere die Kommunikation zum BMS?

Hallo,

ich habe eine solche Anlage mit 3 Deye SE-G 5.1 Pro Batterien nun ein 3/4 Jahr gut am laufen. Die erste Schwierigkeit ist die Verbindung mit dem BMS. Hier muss die Einstellung VE.Can Port auf 500kb/s gestellt werden, dann erkennt der Victron das BMS der Batterie.

Die Ladereglung funktioniert über das BMS wunderbar, nur die Visualisierung im VRM passt nicht, hier ist Laden und Entladen in der Anzeige vertauscht. Stört mich aber nicht so wirklich.

Ein Problem gab es anfangs noch, das BMS, oder der Multiplus hat ohne Fehlermeldung - aus „unerklärlichen“ Gründen sporadisch das ESS ausgeschaltet und wir sind trotz geladener Batterie in Netzbezug gekommen.

Dieses Problem habe ich über ein Node-Red Baustein behoben, der das ESS automatisch wieder einschaltet, wenn es aus ist.

hallo,

wenn anstatt ladung entladung angezeigt wird, gibt das bestimmt probleme. dann klemm lieber das bms nicht an und installier einen smartshunt, wenn du daten vom akku haben willst. oder versuch herauszufinden, wie du die polung der strommessung vertauschen kannst!

dass der akkustrom mit der richtigen polung angezeigt wird, ist naemlich wichtig!

tschuess

Das Problem ist mMn., dass die Limits vom BMS nicht berücksichtigt werden, wenn die Stromrichtung falsch erkannt wird.
Ich umgehe das Problem, indem ich den Multiplus auf “External Control” geschaltet habe und über eine externe Logik in Loxone die Leistungsbegrenzungen vornehme.

Leider gibt es, so weit ich weiß, bisher keine Lösung die Stromrichtung per Software zu korrigieren.

Hab ein Workaround gefunden:
Superuser-Access freischalten und per SSH einloggen und dann:

mkdir -p /data/dbus-services
cd /data/dbus-services

damit herausfinden welche BatteryService vorhanden ist:
dbus-spy
Ergebnis zB: com.victronenergy.battery.socketcan_can0

nano dbus-invert-battery.py

#!/usr/bin/env python3

import dbus
import dbus.mainloop.glib
from gi.repository import GLib

BATTERY_SERVICE = “com.victronenergy.battery.socketcan_can0” # ggf. anpassen

def invert_value(path):
try:
obj = bus.get_object(BATTERY_SERVICE, path)
iface = dbus.Interface(obj, ‘com.victronenergy.BusItem’)
value = iface.GetValue()
iface.SetValue(-value)
except Exception as e:
print(f"Fehler bei {path}: {e}")

def update_values():
invert_value(“/Dc/0/Current”)
invert_value(“/Dc/0/Power”)
return True # Wiederholen

dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
GLib.timeout_add_seconds(1, update_values)
print(“DBus Inverter Service läuft …”)
GLib.MainLoop().run()

chmod +x /data/dbus-services/dbus-invert-battery.py

nano /data/rc.local

#!/bin/bash
/data/dbus-services/dbus-invert-battery.py &
exit 0

chmod +x /data/rc.local

Reboot und sollte passen

Guten Morgen,

danke für die Ausführungen PFITS. Kannst Du vielleicht dein beschriebener Workarround als super-user etwas genauer beschreiben? Also z Bsp wo hast Du Dich entsprechend eingeloggt? Was hast Du genau an der Datei verändert und warum bzw was macht das genau? Dann wäre es sehr hilfreich, wenn Du beschreiben könntest wie stabil das System nun mit diesen Änderungen läuft. Das wäre sehr hilfreich. Danke

Wenn Du das Venus OS nicht umschrieben/manipulieren willst, dann kann ggf. bei der Extra-Hardware “Battery Safety Controller” nachfragen, ob sie das Deye BMS implementieren.

Hallo PFITS, genau das habe ich getan. Leider ohne Effekt: Die Stromrichtung ist immer noch falsch herum. Wie kann ich testen ob das Script tatsächlich ausgeführt wird?

Danke!

Alle Einrückungen in dem Skript sind falsch. Sie gehen durch Copy&Paste im Forum verloren da es keine Möglichkeit gibt Code zu posten. Schade.

Claude hat das 1. Skript verändert:

#!/usr/bin/python3
import dbus
import dbus.mainloop.glib
from gi.repository import GLib
import time

BATTERY_SERVICE = “com.victronenergy.battery.socketcan_can0”

def invert_value(path):
try:
obj = bus.get_object(BATTERY_SERVICE, path)
iface = dbus.Interface(obj, ‘com.victronenergy.BusItem’)
value = iface.GetValue()
if value is not None:
iface.SetValue(-value)
except Exception as e:
print(“Fehler bei {}: {}”.format(path, e))

def update_values():
invert_value(“/Dc/0/Current”)
invert_value(“/Dc/0/Power”)
return True

time.sleep(10)
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
GLib.timeout_add_seconds(1, update_values)
print(“DBus Inverter Service laeuft…”)
GLib.MainLoop().run()

Das 2.te auch:

#!/bin/bash
sleep 15
/usr/bin/python3 /data/dbus-services/dbus-invert-battery.py > /var/log/dbus-invert.log 2>&1 &
exit 0

Nun wird die Stromrichtung korrekt angezeigt.

#!/usr/bin/python3
import dbus
import dbus.mainloop.glib
from gi.repository import GLib
import time

BATTERY_SERVICE = "com.victronenergy.battery.socketcan_can0"

def invert_value(path):
    try:
        obj = bus.get_object(BATTERY_SERVICE, path)
        iface = dbus.Interface(obj, 'com.victronenergy.BusItem')
        value = iface.GetValue()
        if value is not None:
            iface.SetValue(-value)
    except Exception as e:
        print("Fehler bei {}: {}".format(path, e))

def update_values():
    invert_value("/Dc/0/Current")
    invert_value("/Dc/0/Power")
    return True

time.sleep(10)
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
GLib.timeout_add_seconds(1, update_values)
print("DBus Inverter Service laeuft...")
GLib.MainLoop().run()

Macht doch eine GitHub Repo auf und teilt darüber.