Benachrichtigungen
Alles löschen

SOC (Ladezustand) im Victron Node Red setzen

22 Beiträge
4 Benutzer
0 Likes
463 Ansichten
Monokristallin
(@monokristallin)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 112
Themenstarter  

Moin zusammen.

 

Ich habe ein System in dem das Daly BMS ans Victron VenusOS angeschlossen ist. Läuft bei mir auf einem Raspberry pi. Ich habe es schnell hinbekommen, den SOC Wert auszulesen un den auch über http auslesber zumachen. So sieht's aus:

Auslesen kann man die Werte dann mit:

 https://venus.local:1881/batt 

 

Okay, nun will ich den SOC Wert aber (möglichst auch in Node Red) setzen. Also manipulieren. Das ist mir bisher nicht gelungen und ich finde da auch im Netz nichts das ich nachvollziehen könnte. Hat da jemand eine Lösung parat?

Vielen Dank vorab...

 

Hier die Nodes zum Importieren:

[
    {
        "id": "ee976dfbdb76164f",
        "type": "victron-input-battery",
        "z": "96cffcb4cb06b139",
        "service": "com.victronenergy.battery/3",
        "path": "/Soc",
        "serviceObj": {
            "service": "com.victronenergy.battery/3",
            "name": "SerialBattery(Daly)"
        },
        "pathObj": {
            "path": "/Soc",
            "type": "float",
            "name": "State of charge (%)"
        },
        "initial": "",
        "name": "Batt Monitor",
        "onlyChanges": false,
        "roundValues": "no",
        "x": 130,
        "y": 280,
        "wires": [
            [
                "1a032c9ca300fcde"
            ]
        ]
    },
    {
        "id": "d5868940c9996cab",
        "type": "debug",
        "z": "96cffcb4cb06b139",
        "name": "debug 4",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 580,
        "y": 280,
        "wires": []
    },
    {
        "id": "1a032c9ca300fcde",
        "type": "function",
        "z": "96cffcb4cb06b139",
        "name": "extractSOC",
        "func": "var newbattmsg = {payload: msg.payload};\nglobal.set(\"batt.soc\",newbattmsg);\nreturn newbattmsg;",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 370,
        "y": 280,
        "wires": [
            [
                "d5868940c9996cab"
            ]
        ]
    },
    {
        "id": "bc9afb993b05e874",
        "type": "http in",
        "z": "96cffcb4cb06b139",
        "name": "",
        "url": "/batt",
        "method": "get",
        "upload": false,
        "swaggerDoc": "",
        "x": 120,
        "y": 340,
        "wires": [
            [
                "d6b648c7a825d369"
            ]
        ]
    },
    {
        "id": "d6b648c7a825d369",
        "type": "function",
        "z": "96cffcb4cb06b139",
        "name": "json",
        "func": "msg.payload = {battery: global.get('batt.soc')};\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 310,
        "y": 340,
        "wires": [
            [
                "f5c6e012ca283bfa"
            ]
        ]
    },
    {
        "id": "f5c6e012ca283bfa",
        "type": "http response",
        "z": "96cffcb4cb06b139",
        "name": "http Response",
        "statusCode": "",
        "headers": {},
        "x": 480,
        "y": 340,
        "wires": []
    }
]

   
Zitat
mdkeil
(@mdkeil)
Batterielecker
Beigetreten: Vor 1 Jahr
Beiträge: 403
 

Was meinst Du mit manipulieren? Willst Du den minsoc (unter Settings/ESS?) setzen?

IBN: 07/2021
Fronius Symo 20.0-3-M : 13.2kWp S 45° + 3.96 kWp S 15° (Verschattung) &
Fronius Primo 3.0-1 : 2.97 kWp N 15° (Verschattung)
06/2023 : Speichererweiterung 14,34kWh DIY (EEL Gehäuse) LiFePO4 EVE LF280K @ Victron MP II 48/5000 - Seplos 10E BMS
######
Wallbox: 11kW echarge Hardy Barth Cpμ2 Pro - Überschuss-Steuerung via evcc.io
Peugeot e-208 Allure Pack seit 11.11.22!
Kia Niro EV Edition 7 seit 28.04.23.


   
AntwortZitat
Monokristallin
(@monokristallin)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 112
Themenstarter  

@mdkeil 

Hi!

Nee, ich will einfach nur den SOC-Wert (State of Charge) setzen. Das Daly-BMS ist ja ziemlich doof. Erst bei ca 50 - 60 Watt Leistung fängt er an, etwas zu messen und seinen SOC Wert zu ändern. Gerade im Winter ziehe ich aber nicht über den WR den Strom aus dem Akku, sondern die 24V direkt. Das merkt das BMS dann über Tage hinweg nicht. Somit laufen die Zellen auf < 3.0V und SoC sagt immer noch z.B. 50%. Da will ich eingreifen und den SOC entsprechend der niedrigen (oder eben hohen) Zellspanungen selbst setzen. Das kann ich so jetzt nur manuell über die BT-Dongel machen.


   
AntwortZitat
Carolus
(@carolus)
Famous Member Admin
Beigetreten: Vor 2 Jahren
Beiträge: 6916
 

Veröffentlicht von: @monokristallin

Nee, ich will einfach nur den SOC-Wert (State of Charge) setzen. Das Daly-BMS ist ja ziemlich doof.

Da will jemand den SOC für die Regelung benutzen. Und um das tun zu können, will er ihn setzen. Für mich steckt da eine unlogik drin.

SOC muss doch ein Messwert sein.

entweder ist er das, oder er ist das nicht. Und wenn nicht, ist es Wahrsagerei.

Ich bin kein Amateur, aber ich lerne trotzdem noch.
Bürokratie schafft man nicht durch neue Regeln oder Gesetze ab.


   
AntwortZitat
mdkeil
(@mdkeil)
Batterielecker
Beigetreten: Vor 1 Jahr
Beiträge: 403
 

Den SOC setzen macht das BMS, was die Steuerung hat.. in deinem Fall einfach einen zusätzlichen Shunt einbauen, der dann die Steuerung übernimmt und gut ist.

IBN: 07/2021
Fronius Symo 20.0-3-M : 13.2kWp S 45° + 3.96 kWp S 15° (Verschattung) &
Fronius Primo 3.0-1 : 2.97 kWp N 15° (Verschattung)
06/2023 : Speichererweiterung 14,34kWh DIY (EEL Gehäuse) LiFePO4 EVE LF280K @ Victron MP II 48/5000 - Seplos 10E BMS
######
Wallbox: 11kW echarge Hardy Barth Cpμ2 Pro - Überschuss-Steuerung via evcc.io
Peugeot e-208 Allure Pack seit 11.11.22!
Kia Niro EV Edition 7 seit 28.04.23.


   
AntwortZitat
SolarHeini
(@solarheini)
Heroischer Stromgenerator
Beigetreten: Vor 1 Jahr
Beiträge: 1019
 

Veröffentlicht von: @carolus

Veröffentlicht von: @monokristallin

Nee, ich will einfach nur den SOC-Wert (State of Charge) setzen. Das Daly-BMS ist ja ziemlich doof.

Da will jemand den SOC für die Regelung benutzen. Und um das tun zu können, will er ihn setzen. Für mich steckt da eine unlogik drin.

SOC muss doch ein Messwert sein.

entweder ist er das, oder er ist das nicht. Und wenn nicht, ist es Wahrsagerei.

Ich denke der SoC ist nie ein Messwert.

Das die DALYs so seltsam sind liegt an falschen und missverstandenen Parametern.
Je nach DALY Type ist DfilterCur oder Current Wave schuld an der Blindheit für kleine Ströme.
Dort stehen ab Werk (oft) extrem hohe Werte drin, 1-2,5 Ampere (!).
Ohne das ggf. abzustellen wird das nichts.
Ändern lässt sich das aber leider nur in der passenden PC-Software.
Nebenbei führt das dazu, das bei CV sofort 100% SoC gesetzt werden und der Balancer nie aktiv wird.
Der SoC im DALY ist flüchtig und geht bei Wartung bzw. Trennen verloren.
Für die Funktion des BMS ist der Wert SoC völlig irrelevant.

Ich betreibe vier/sechs DALYs in parallel und verstehe den Wunsch einen SoC ableiten und nutzen zu können.
Es ist sinnlos auch bei offensichtlich oder erklärbar falschen SoC Werten auf die nächste volle Ladung warten zu sollen.

Ich frage alle DALYs alle 2Sek. ab und kumuliere W/s Gesamt aus allen BMS.
Eine bekannte Gesamtkapazität vorausgesetzt führe ich separat Buch über den Energiefluss rein und raus in die parallelen Batterien.
Den SoC in aktuell gespeicherten W/s lege ich u.a. alle 60Sek als einen der vielen Messwerte in einer InfluxDB ab.
Das ist meine Sicherheitskopie.
Der SoC wird selbsttätig bei leer und voll gesetzt, ich kann aber jederzeit bei besserem Wissen einen Füllstand definieren.

SolarHeini

 


   
AntwortZitat
Carolus
(@carolus)
Famous Member Admin
Beigetreten: Vor 2 Jahren
Beiträge: 6916
 

Du bist der Problematik des SOC bewusst, holst mit trickreichen Maßnahmen das beste heraus und lebst mit den nicht perfekten Ergebnissen.

Alle Achtung davor. Ich verneige mich.

Ich entschuldige mich für alle Missverständnisse, die ich mit meiner technischen Meinung zu deinen Lasten verursacht habe.

Aber eines hast du bestätigt: SOC ist nicht unbeaufsichtigt als Regelgröße bzw. Führungsgröße eines Regelkreises brauchbar.

Ich bin kein Amateur, aber ich lerne trotzdem noch.
Bürokratie schafft man nicht durch neue Regeln oder Gesetze ab.


   
AntwortZitat
SolarHeini
(@solarheini)
Heroischer Stromgenerator
Beigetreten: Vor 1 Jahr
Beiträge: 1019
 

Ja … gut.
Monokristallin schrieb nichts von steuern.
Er möchte mit NodeRed einen plausiblen SoC Wert anzeigen, ohne von komischen Dingen im DALY BMS abhängig zu sein.
Auch ohne NodeRed muss das Problem nicht so ausgeprägt sein, für nur eine Batterie sogar eher vernachlässigbar.
DfilterCur = 0.1-0.2A bzw. Current Wave = 0.2A.

Meine Lösung war:
Den originalen SoC Wert zu vergessen und mit möglichst fehlerfreien Strom- und Spannungswerten aus dem DALY einen eigenen SoC Wert zu bilden.
Nebenbei hat man dann die Möglichkeit diesen auch sinnvoll zu kalibrieren, wie und wann man mag.


   
AntwortZitat
Monokristallin
(@monokristallin)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 112
Themenstarter  

Veröffentlicht von: @solarheini

Meine Lösung war:
Den originalen SoC Wert zu vergessen und mit möglichst fehlerfreien Strom- und Spannungswerten aus dem DALY einen eigenen SoC Wert zu bilden.
Nebenbei hat man dann die Möglichkeit diesen auch sinnvoll zu kalibrieren, wie und wann man mag.

Genau!  Das wäre soweit auch mein Plan-B.

Also noch mal zusammengefasst: kleine (auch langfristig fließende) Ströme bekommt das BMS für die SoC-Berechnung nicht mit. Wobei, und das ist besonders absurd, es misst sie schon (kann man üner die BT-Dongle sehen), es berücksichtigt sie bloß erst ab so ca. 50W.

Den Ladezustand der Lifepo4 Akkus kann man lediglich in den unteren (ca.) 5% und den oberen 5% des SOC "messen". Dazwischen liegt die Spannung (je nach gerade entnommenem Strom) so um die 3.2 V. Deshalb kann man den SoC nur über die zwischenzeitlich entnommenden Ströme in Verbindung mit der Kapazität ermitteln.

Aber: Daly korrigiert den Wert erst, sobald die absolute Unter- /Obergrenze, also 0% oder 100% der eingestellten Werte, erreicht werden. Wenn die Spannung aber bei geringer Stromentnahme bei 3V liegt, dann könnte das BMS merken, dass keine 50% SoC mehr vorliegen sondern eher 5%, und das korrigieren. Tut es aber nicht! DAS will ich dann machen.

Alternative, wie Solarheine schon schreibt, wäre ein eigener SoC. Also einen Korrekturwert, dem ich dem Daly-SoC dann hinzurechne und dann mit diesem weiterarbeite.

In der Modbus TCP Register list steht der Wert allerdings auch als not writeable:

Meine Hoffnung ist aber, dass es über Node Red dann vielleicht doch geht, über Bluetooth geht's ja letzlich auch.

Ich hab'es eben noch mal überprüft, ich ziehe gerade so um die 30W aus dem Akku. Node Red bekommt davon nichts mit.

 


   
AntwortZitat
SolarHeini
(@solarheini)
Heroischer Stromgenerator
Beigetreten: Vor 1 Jahr
Beiträge: 1019
 

@monokristallin 

Moin,

es gibt zu viele verschiedene DALYs z.T. auch mit verschiedenen Ladekontrollern und Firmware.

Für meine Sorte (und ich weiß noch nicht einmal wie die offiziell heißen / 8S80A ) gilt,
- NICHT, dass der DALY SoC bei 0% gesetzt wird, er stagniert nur irgendwie
- 100% wird gesetzt, wenn Spannung X erreicht wird und der Strom < Y wird.
- kann der SoC auch NICHT gewollt gesetzt werden, weder APP noch PC
- die ignorierten Ströme werden NICHT angezeigt
- sie haben eine serielle Schnittstelle mit 3,3V Pegel und sprechen NICHT MODBUS
- der Kontroller ist von Fa. Sinowealth, es gibt keine Untergrenze für DfilterCur  und 100mA passt.

IMHO kannst du den DALY SoC nicht irgendwie korrigieren. Lass ihn einfach WEG.
Schau, dass du Ströme ab 0,2A oder weniger wirklich erfasst und DIY.

Interessante Liste „… determined from different measurements
Die Liste ist mir unbekannt.
Wäre nett zu sehen welche und die Bedingungen die du benutzt.

Wenn ich dir meinen Flow gäbe hilft das nicht viel?
Zu unterschiedlich die Systeme.
Zu erklärungsbedürftig das Ganze.

SolarHeini

 

P.S.
ich sehe gerade die Liste ist ein Link.
Das ist aber so garnichts von DALY? Irgendwas VICTRON?
Das ist ein Addin für NodeRed, "SerialBattery" Java Script anderer Herkunft?
Wenn BT im DALY anzeigt, dann ist das Problem in dem Addin?
Passe ...

Diese r Beitrag wurde geändert Vor 3 Monaten 2 mal von SolarHeini

   
AntwortZitat
Monokristallin
(@monokristallin)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 112
Themenstarter  

@solarheini 

Die Liste repäsentiert die über ModBus gehenden Signale im Victron-System. Damit lese ich mit Python den SOC-Wert aus. Der Daly hängt mit nem USB-Konverter-Kabel am Pi auf dem das Venus-OS läuft.

Mit dem oben gezeigten Flow geht das jetzt aber auch noch viel einfacher über http. Über Modbus kannst Du auch Werte setzen, aber den SOC Wert wohl nicht.

Solange ich im Sommer hauptsächlich mit Solar lade und über den Wechselrichter mindestens 60 Watt ziehe (darunter läuft er mir zu unwirtschaftlich), funktioniert das mit dem SOC übrigens ziemlich gut. Aber eben nicht, wenn ich im Winter hauptsächlich bei günstigen Strompreisen über AC lade, und dann langsam den DC-Strom aus dem 7kWh-Akku sauge.

Ich werde mir jetzt mal aus der Tabelle aus dieser Seite eine oder zwei schicke Kurven bastels und ggf. dazwischen interpolieren. Wenn's fertig ist, werde ich das hier mal posten. Vielleicht hilft's ja auch anderen...

 


   
AntwortZitat
SolarHeini
(@solarheini)
Heroischer Stromgenerator
Beigetreten: Vor 1 Jahr
Beiträge: 1019
 

@monokristallin 

Dann viel Erfolg, du findest da ein Problem für eine Lösung die ich nicht brauche.
Es geht wie gesagt auf die normale Art sehr gut.
Ich kann Dir aber nicht sagen wo du da falsch abbiegst.

SolarHeini


   
AntwortZitat
mdkeil
(@mdkeil)
Batterielecker
Beigetreten: Vor 1 Jahr
Beiträge: 403
 

Was du auch machen kannst, dein Daly ggfs. via serialbattery einzubinden.. in der aktuellsten BETA kann man die Berechnung vom SOC aktivieren.. speziell für BMS welche keinen SOC liefern.. könnte man mal versuchen, inwiefern der berechnete SOC besser ist..

IBN: 07/2021
Fronius Symo 20.0-3-M : 13.2kWp S 45° + 3.96 kWp S 15° (Verschattung) &
Fronius Primo 3.0-1 : 2.97 kWp N 15° (Verschattung)
06/2023 : Speichererweiterung 14,34kWh DIY (EEL Gehäuse) LiFePO4 EVE LF280K @ Victron MP II 48/5000 - Seplos 10E BMS
######
Wallbox: 11kW echarge Hardy Barth Cpμ2 Pro - Überschuss-Steuerung via evcc.io
Peugeot e-208 Allure Pack seit 11.11.22!
Kia Niro EV Edition 7 seit 28.04.23.


   
AntwortZitat
Monokristallin
(@monokristallin)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 112
Themenstarter  

Veröffentlicht von: @mdkeil

Was du auch machen kannst, dein Daly ggfs. via serialbattery einzubinden.. in der aktuellsten BETA kann man die Berechnung vom SOC aktivieren.. speziell für BMS welche keinen SOC liefern.. könnte man mal versuchen, inwiefern der berechnete SOC besser ist..

Tjaaaaa,

 never change a running system. Habe mal auf Release Candidate v3.20~41 geupdated. Jetzt findet er das Day-BMS überhaupt nicht mehr. 😳 

Na, mal schauen, vielleicht muss ich den Treiber neu installieren...

PS: Okay, Treiber nachinstalliert und 1x das Kabel gezogen, Batterie wieder da.

Aber: wo finde ich jetzt die Funktion der SOC-Berechnung?

Ich nehme an, Du meinst diese Art der Einbindung:


   
AntwortZitat
mdkeil
(@mdkeil)
Batterielecker
Beigetreten: Vor 1 Jahr
Beiträge: 403
 

https://github.com/Louisvdw/dbus-serialbattery/releases/tag/v1.0.20240102beta

Added: Possibility to count and calculate the SOC based on reference values with #868 by @cflenker

config.default.ini

; --------- SOC calculation ---------
; Description: Calculate the SOC in the driver. Do not use the SOC reported by the BMS
; SOC_CALCULATION:
;     True: Calc SOC in the driver, do not use SOC reported from BMS
;         - The SOC is calculated by integration of the current reported by the BMS
;         - The current reported from the BMS can be corrected by
;           the map (SOC_CALC_CURRENT_REPORTED_BY_BMS, SOC_CALC_CURRENT_MEASURED_BY_USER)
;         - The SOC is set to 100% if the following conditions apply for at least SOC_RESET_TIME seconds:
;             * Current is lower than SOC_RESET_CURRENT amps
;             * Sum of cell voltages >= self.max_battery_voltage - VOLTAGE_DROP
;         - The calculated SOC is stored in dbus to persist a driver restart
;     False: Use SOC reported from BMS (none of the other parameters apply)
; More info:  https://github.com/Louisvdw/dbus-serialbattery/pull/868 
SOC_CALCULATION = False
SOC_RESET_CURRENT = 7
SOC_RESET_TIME = 60
SOC_CALC_CURRENT_REPORTED_BY_BMS  = -300, 300
SOC_CALC_CURRENT_MEASURED_BY_USER = -300, 300
; Example to set small currents to zero
; SOC_CALC_CURRENT_REPORTED_BY_BMS  = -300, -0.5, 0.5, 300
; SOC_CALC_CURRENT_MEASURED_BY_USER = -300,    0,   0, 300

IBN: 07/2021
Fronius Symo 20.0-3-M : 13.2kWp S 45° + 3.96 kWp S 15° (Verschattung) &
Fronius Primo 3.0-1 : 2.97 kWp N 15° (Verschattung)
06/2023 : Speichererweiterung 14,34kWh DIY (EEL Gehäuse) LiFePO4 EVE LF280K @ Victron MP II 48/5000 - Seplos 10E BMS
######
Wallbox: 11kW echarge Hardy Barth Cpμ2 Pro - Überschuss-Steuerung via evcc.io
Peugeot e-208 Allure Pack seit 11.11.22!
Kia Niro EV Edition 7 seit 28.04.23.


   
AntwortZitat
Seite 1 / 2
Teilen: