[23_BYDBox] - Modul für BYD Box Battery

Begonnen von MiniBlister, 14 Juni 2021, 18:37:02

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Hänge mich hier mal rein, meine BYDBox läuft seit heute.

LG

pah

stefanru

Hi MadMax,
ich benutze das Modul schon eine ganze Zeit.
Ich habe jetzt noch das Balancing eingebaut, perfekt das man das nun auch sehen kann.

Ich hätte 2 kleine Fragen:
Was bewirkt das Attribut statistic?
Bei meinen Werten scheint
Battery_1_ChargeE    3349243
Battery_1_DischargeE 2845829
nicht wirklich zusammen zu passen.

Vom Modbus bekomme ich:
Summe_Ladung    3736.3
Summe_Entladung 3555.0

Mein eigener Integral Zähler zeigt:
Laden:    3655.601
Entladen: 3507.935

Integral und Modbus sehen ganz gut aus und passen einigermaßen.
Hast du eine Idee.

Vielen Dank und viele Grüße,
Stefan


MadMax

Hallo Stefan,

das Attribut statistic aktiviert einfach nur die Funktion dadurch Min/Max Werte erstellt werden.

Battery_1_ChargeE und Battery_1_DischargeE kommen direkt vom BMS und sind die gleichen die mein Wechselrichter von der BMU bekommt.

Was ich im PV Forum gelesen habe sind die Werte sehr ungenau.
Woher kommen deine Modbus werte?

Gruß
Max
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 6x SMA Wechselrichter, BYD HVM, BYD HVS, SMA EVCharger, KEBA Wallbox, 2x HMS800W, Daikin Wärmepumpe über CAN, viele ESPs

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

stefanru

#243
Hi MadMax,

danke für deine Antwort.
Mich wundert vor allem die sehr große Abweichung zwischen
Battery_1_ChargeE    3349243
Battery_1_DischargeE 2845829
Das sieht sehr komisch aus.

Für den Modbus Zugriff verwende ich dies:
defmod BYD_Runge ModbusAttr 1 60 192.168.69.72:502 TCP
attr BYD_Runge dev-h-combine 125
attr BYD_Runge dev-h-defFormat %.1f
attr BYD_Runge dev-h-defLen 2
attr BYD_Runge dev-h-defPoll 1
attr BYD_Runge dev-h-defUnpack f>
attr BYD_Runge devStateStyle style="text-align:right"
attr BYD_Runge event-min-interval ACActEnergy:7200,ACPower:7200,Battery.*:7200
attr BYD_Runge event-on-change-reading .*Energy:0.1,ACPower:1,DCPowerMPPT.*:1,status,Battery.*harge.*:1,BatteryState
attr BYD_Runge group Fronius Modbus
attr BYD_Runge icon measure_battery_100
attr BYD_Runge obj-h40073-reading ACCurrentPhaseA
attr BYD_Runge obj-h40075-reading ACCurrentPhaseB
attr BYD_Runge obj-h40077-reading ACCurrentPhaseC
attr BYD_Runge obj-h40085-reading ACVoltagePhaseA
attr BYD_Runge obj-h40087-reading ACVoltagePhaseB
attr BYD_Runge obj-h40089-reading ACVoltagePhaseC
attr BYD_Runge obj-h40091-format %.0f
attr BYD_Runge obj-h40091-reading ACPower
attr BYD_Runge obj-h40093-reading ACFrequency
attr BYD_Runge obj-h40109-reading CabinetTemperature
attr BYD_Runge obj-h40117-format %s
attr BYD_Runge obj-h40117-len 1
attr BYD_Runge obj-h40117-map 1:off,2:sleeping,3:starting,4:active,5:throttled,6:shutdown,7:fault,8:standby
attr BYD_Runge obj-h40117-reading status
attr BYD_Runge obj-h40117-unpack n
attr BYD_Runge obj-h40196-expr $val / 1000
attr BYD_Runge obj-h40196-format %.2f
attr BYD_Runge obj-h40196-len 4
attr BYD_Runge obj-h40196-reading ACActEnergy
attr BYD_Runge obj-h40196-unpack Q>
attr BYD_Runge obj-h40267-format %d
attr BYD_Runge obj-h40267-group 1-1
attr BYD_Runge obj-h40267-len 1
attr BYD_Runge obj-h40267-reading DCPowerScale
attr BYD_Runge obj-h40267-unpack s>
attr BYD_Runge obj-h40284-expr $val * 10 ** ReadingsVal($name, 'DCPowerScale', 1)
attr BYD_Runge obj-h40284-group 1-2
attr BYD_Runge obj-h40284-len 1
attr BYD_Runge obj-h40284-reading DCPowerMPPT1
attr BYD_Runge obj-h40284-unpack n
attr BYD_Runge obj-h40304-expr $val * 10 ** ReadingsVal($name, 'DCPowerScale', 1)
attr BYD_Runge obj-h40304-group 1-3
attr BYD_Runge obj-h40304-len 1
attr BYD_Runge obj-h40304-reading DCPowerMPPT2
attr BYD_Runge obj-h40304-unpack n
attr BYD_Runge obj-h40324-expr $val * 10 ** ReadingsVal($name, 'DCPowerScale', 1)
attr BYD_Runge obj-h40324-group 1-4
attr BYD_Runge obj-h40324-len 1
attr BYD_Runge obj-h40324-reading BatteryChargeWatt
attr BYD_Runge obj-h40324-unpack n
attr BYD_Runge obj-h40325-expr $val/100000
attr BYD_Runge obj-h40325-ignoreExpr $val < 100
attr BYD_Runge obj-h40325-len 2
attr BYD_Runge obj-h40325-poll 300
attr BYD_Runge obj-h40325-reading Summe_Ladung
attr BYD_Runge obj-h40325-unpack N
attr BYD_Runge obj-h40344-expr $val * 10 ** ReadingsVal($name, 'DCPowerScale', 1)
attr BYD_Runge obj-h40344-group 1-5
attr BYD_Runge obj-h40344-len 1
attr BYD_Runge obj-h40344-reading BatteryDischargeWatt
attr BYD_Runge obj-h40344-unpack n
attr BYD_Runge obj-h40345-expr $val/100000
attr BYD_Runge obj-h40345-ignoreExpr $val < 100
attr BYD_Runge obj-h40345-len 2
attr BYD_Runge obj-h40345-poll 300
attr BYD_Runge obj-h40345-reading Summe_Entladung
attr BYD_Runge obj-h40345-unpack N
attr BYD_Runge obj-h40355-len 1
attr BYD_Runge obj-h40355-reading BatConfigMaxReferenceWatt
attr BYD_Runge obj-h40355-unpack n
attr BYD_Runge obj-h40358-format %s
attr BYD_Runge obj-h40358-len 1
attr BYD_Runge obj-h40358-map 0:none,1:chargeMax,2:dischrMax,3:bothMax
attr BYD_Runge obj-h40358-reading BatConfigMaxEnabled
attr BYD_Runge obj-h40358-set 1
attr BYD_Runge obj-h40358-unpack n
attr BYD_Runge obj-h40360-expr $val / 100
attr BYD_Runge obj-h40360-format %.0f
attr BYD_Runge obj-h40360-len 1
attr BYD_Runge obj-h40360-poll 60
attr BYD_Runge obj-h40360-reading BatConfigReserve
attr BYD_Runge obj-h40360-set 1
attr BYD_Runge obj-h40360-setexpr $val * 100
attr BYD_Runge obj-h40360-unpack n
attr BYD_Runge obj-h40361-expr $val / 100
attr BYD_Runge obj-h40361-len 1
attr BYD_Runge obj-h40361-reading BatteryChargePercent
attr BYD_Runge obj-h40361-unpack n
attr BYD_Runge obj-h40364-format %s
attr BYD_Runge obj-h40364-len 1
attr BYD_Runge obj-h40364-map 1:off,2:empty,3:discharging,4:charging,5:full,6:holding,7:testing
attr BYD_Runge obj-h40364-reading BatteryState
attr BYD_Runge obj-h40364-unpack n
attr BYD_Runge obj-h40365-expr $val / 10000 * ReadingsVal($name, 'BatConfigMaxReferenceWatt', 1)
attr BYD_Runge obj-h40365-len 1
attr BYD_Runge obj-h40365-max ReadingsVal($name, 'BatConfigMaxReferenceWatt', 1)
attr BYD_Runge obj-h40365-min -ReadingsVal($name, 'BatConfigMaxReferenceWatt', 1)
attr BYD_Runge obj-h40365-reading BatConfigMaxDischargeWatt
attr BYD_Runge obj-h40365-set 1
attr BYD_Runge obj-h40365-setexpr $val / ReadingsVal($name, 'BatConfigMaxReferenceWatt', 1) * 10000
attr BYD_Runge obj-h40365-unpack s>
attr BYD_Runge obj-h40366-expr $val / 10000 * ReadingsVal($name, 'BatConfigMaxReferenceWatt', 1)
attr BYD_Runge obj-h40366-len 1
attr BYD_Runge obj-h40366-max ReadingsVal($name, 'BatConfigMaxReferenceWatt', 1)
attr BYD_Runge obj-h40366-min -ReadingsVal($name, 'BatConfigMaxReferenceWatt', 1)
attr BYD_Runge obj-h40366-reading BatConfigMaxChargeWatt
attr BYD_Runge obj-h40366-set 1
attr BYD_Runge obj-h40366-setexpr $val / ReadingsVal($name, 'BatConfigMaxReferenceWatt', 1) * 10000
attr BYD_Runge obj-h40366-unpack s>
attr BYD_Runge room Strom
attr BYD_Runge stateFormat Status: BatteryState <br/>\
Ladung: BatteryChargePercent % | Reserve: BatConfigReserve %<br/>\
Max Charge: BatConfigMaxChargeWatt W | Max DisCharge:BatConfigMaxDischargeWatt W<br/>\
Config Max: BatConfigMaxEnabled<br/>\
Temp: CabinetTemperature °C<br/>

setstate BYD_Runge Status: charging <br/>\
Ladung: 99.1 % | Reserve: 5 %<br/>\
Max Charge: 298.2 W | Max DisCharge:12800.0 W<br/>\
Config Max: bothMax<br/>\
Temp: 49.3 °C<br/>
setstate BYD_Runge 2024-08-11 17:57:47 ACActEnergy 15226.05
setstate BYD_Runge 2024-08-11 17:57:47 ACCurrentPhaseA 3.1
setstate BYD_Runge 2024-08-11 17:57:47 ACCurrentPhaseB 3.1
setstate BYD_Runge 2024-08-11 17:57:47 ACCurrentPhaseC 3.1
setstate BYD_Runge 2024-08-11 17:57:47 ACFrequency 50.0
setstate BYD_Runge 2024-08-11 17:57:47 ACPower 2188
setstate BYD_Runge 2024-08-11 17:57:47 ACVoltagePhaseA 235.0
setstate BYD_Runge 2024-08-11 17:57:47 ACVoltagePhaseB 234.8
setstate BYD_Runge 2024-08-11 17:57:47 ACVoltagePhaseC 235.0
setstate BYD_Runge 2024-08-11 17:57:47 BatConfigMaxChargeWatt 298.2
setstate BYD_Runge 2024-08-11 17:57:47 BatConfigMaxDischargeWatt 12800.0
setstate BYD_Runge 2024-08-11 17:57:47 BatConfigMaxEnabled bothMax
setstate BYD_Runge 2024-08-11 17:57:47 BatConfigMaxReferenceWatt 12800.0
setstate BYD_Runge 2024-08-11 17:57:47 BatConfigReserve 5
setstate BYD_Runge 2024-08-11 17:57:47 BatteryChargePercent 99.1
setstate BYD_Runge 2024-08-11 17:57:47 BatteryChargeWatt 302.7
setstate BYD_Runge 2024-08-11 17:57:47 BatteryDischargeWatt 0.0
setstate BYD_Runge 2024-08-11 17:57:47 BatteryState charging
setstate BYD_Runge 2024-08-11 17:57:47 CabinetTemperature 49.3
setstate BYD_Runge 2024-08-11 17:57:47 DCPowerMPPT1 2554.3
setstate BYD_Runge 2024-08-11 17:57:47 DCPowerMPPT2 6553.5
setstate BYD_Runge 2024-08-11 17:57:47 DCPowerScale -1
setstate BYD_Runge 2024-08-11 17:48:46 Summe_Entladung 3554.6
setstate BYD_Runge 2024-08-11 17:57:47 Summe_Ladung 3736.4
setstate BYD_Runge 2024-08-07 16:08:22 state opened
setstate BYD_Runge 2024-08-11 17:57:47 status active

Summe_Ladung und Summe_Entladung sind die Werte.

Bei Modbus ist mir immer unklar ob das jetzt vom Fronius WR kommt oder direkt von der Batterie.
Die IP ist die des WR an den die Batterie angeschlossen ist.
Mit Hilfe dieses Moduls beschränke ich die max Ladung in Watt je nach erwartetem PV Ertrag und auch die Max SOC in % im Sommer.

Viele Grüße,
Stefan

MadMax

Das sind sicher die Werte aus dem Wechselrichter.
Die BYD habe eine sehr schlechte Auflösung bei der Strommessung. Somit bekommen dir kleine Leistungen wie WR Standy gar nicht mit.

Battery_1_ChargeE      7214156
Battery_1_DischargeE   5811093

Meine Differenz ist auch recht Hoch.
Das ist leider Normal.

Gruß
Max
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 6x SMA Wechselrichter, BYD HVM, BYD HVS, SMA EVCharger, KEBA Wallbox, 2x HMS800W, Daikin Wärmepumpe über CAN, viele ESPs

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

stefanru

Ah, ok super, vielen Dank.
Dann bleib ich bei den Werten vom WR und meinem Integral.
Das scheint gut zu passen.

Nochmals vielen Dank für das coole Modul und die Visualisierungen.
Stefan

MadMax

Ich nehme auch die vom Wechselrichter.

Gerne, danke  :)
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 6x SMA Wechselrichter, BYD HVM, BYD HVS, SMA EVCharger, KEBA Wallbox, 2x HMS800W, Daikin Wärmepumpe über CAN, viele ESPs

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

Prof. Dr. Peter Henning

#247
ZitatBattery_1_ChargeE      7214156
Battery_1_DischargeE   5811093
Zunächst einmal muss klar sein, dass der Speicher verlustbehaftet ist: Es kommt immer weniger heraus, als hineingeladen wurde.
Das einerseits mit der Umwandlung der an den Speicher gelieferten Spannung durch das BMS zu tun, und andererseits damit, dass die Bewegung der Ionen natürlich mit Reibung verbunden ist (merkt man daran, das sowohl beim Laden, als auch beim Entladen die Temperatur des Speichers ansteigt).

Das kann sollte in der Regel nur bei ca. 10% liegen, während diese Zahlen beinahe doppelt so groß sind. Sollte man mal überwachen.

Ich habe das gerade bei mir implementiert, vergleiche sowohl die aus der Leistung integrierten Energiewerte (rein und raus separat) als auch die vom Speicher gemeldeten Daten.

LG

pah

MadMax

Das Thema ist auch das das was das BMS frisst nicht mehr zum entladen genutzt werden kann und die Standbyverbräche vom Wechselrichter bekommt das BMS auch nicht mit.
20% "Verlust" in der Batterie scheinen leider völlig normal zu sein.
Außerdem ist die Messung wie gesagt sehr sehr ungenau vom BMS.

Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 6x SMA Wechselrichter, BYD HVM, BYD HVS, SMA EVCharger, KEBA Wallbox, 2x HMS800W, Daikin Wärmepumpe über CAN, viele ESPs

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

MadMax

Hier sehen wir mal den Tagesvergleich zwischen meinem SMA Wechselrichter und dem BYD-HVM.
Der Wechselrichter lädt viel mehr wie der BYD-HVM bekommt, beim entladen sind sie recht dich beieinander.
Erschreckend ist die Differenz zwischen Laden vom Wechselrichter und Laden vom BYD-HVM, die frage ist wo bleibt die Differenz?
Nur falsch gemessen oder in Wäreme im Wechselrichter?

Gruß
Max
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 6x SMA Wechselrichter, BYD HVM, BYD HVS, SMA EVCharger, KEBA Wallbox, 2x HMS800W, Daikin Wärmepumpe über CAN, viele ESPs

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

Prof. Dr. Peter Henning

Ich glaube die blaue Kurve nicht so ganz. Würde die stimmen, wäre das Ding fantastisch effizient und könnte fast das entladen, was hineingeschoben wurde. Mal sehen was meine Daten sagen - die sind aber erst ab morgen verlässlich


LG

pah

MadMax

Zitat von: Prof. Dr. Peter Henning am 12 August 2024, 17:38:50Ich glaube die blaue Kurve nicht so ganz. Würde die stimmen, wäre das Ding fantastisch effizient und könnte fast das entladen, was hineingeschoben wurde. Mal sehen was meine Daten sagen - die sind aber erst ab morgen verlässlich


LG

pah

Ich lade meinen Speicher fast nie voll oder Leer.
Manchmal lade ich nur alle drei Tage was in drn Speicher aber Entladung kommt täglich vor.

Somit können wir bei mir das Verhältnis "rein/raus" nicht beachten.

Gruß
Max
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 6x SMA Wechselrichter, BYD HVM, BYD HVS, SMA EVCharger, KEBA Wallbox, 2x HMS800W, Daikin Wärmepumpe über CAN, viele ESPs

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

NewRasPi

Hallo @MadMax
[/quote]

Ich lade meinen Speicher fast nie voll oder Leer.
.....
Gruß
Max
[/quote]

Gibt es dafür einen technischen/ elektrischen Grund?
Angeblich sind 0 % Anzeige ja nicht wirklich "Leer"
und 100 % Anzeige nicht wirklich "ganz voll"
Darum soll sich im Hindergrund das Batteriemanagment kümmern.

Oder hast Du da andere/ bessere Informationen dazu?
Vielen Dank für jeden Hinweis.

Schöne Grüße
NewRasPi
Raspberry Pi 2 Mod B + Raspberry Pi 3 + Raspberry Pi4; HM Lan Adapter; 8 Kanal Relaiskarte; ca. 15x 1wire Temperatur Sensor DS18B20; 10x HC-SR501 Bewegungsmelder; 9x HM Rauchmelder HM-Sec-SD; HM Funk Fenstersensoren; HM Strommess-Zwischenstecker;

MadMax

Meine beiden Speicher haben zusammen 24kWh so viel brauche ich im Sommer nicht.
Aus diesem Grund lade ich den im Sommer nur alle 7 Tage auf 100% bei 100% haben die Zellen bis zu 3,65V.
Das ist zwar ok aber geht auf die Lebensdauer.
Im Grenzbereich ist immer nicht so gesund. Im Sommer lade ich auch nur mit 2kW, es ist ja genug Zeit.

An Tagen wo meine Anlage über 30kW Einspeisung kommt lade ich nur die Energie über 30kW in den Speicher da ich nicht mehr Einspeisen darf/kann.
Leer wir der Speicher nicht weil ich nicht so viel brauche. Wenn ich alle 7Tage voll lade dann entladen ich den in den 3-4Nächten danach runter bis 5%, da stoppt dann der Wechselrichter. Wenn dann der Große Speicher leer ist übernimmt der kleine den Rest der Nacht.

Gruß
Max
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 6x SMA Wechselrichter, BYD HVM, BYD HVS, SMA EVCharger, KEBA Wallbox, 2x HMS800W, Daikin Wärmepumpe über CAN, viele ESPs

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

Prof. Dr. Peter Henning

#254
So, ich habe die Daten heute erst ab 12:30 beieinander.
Wie man sieht, wird der Speicher zeitweise geladen, zeitweise entladen.

Blaue und rote Kurve sind die Daten, die durch Integration der Leistungen in bzw. aus der Batterie berechnet werden.
Braune und graue durchgezogene Kurve sind die von der BYD-Box per Modul erhaltenen Daten.

So, und jetzt die Überraschung: Braune und graue gestrichelte Kurve sind die Daten der BYD-Box multipliziert mit dem Faktor 1.2
Diese liegen erstaunlicherweise sehr genau auf der blauen und roten Kurve.

Das stinkt zum Himmel, sagt mir meine Erfahrung - irgendwo ist da ein Fehler.

EDIT: Ich habe diese Beobachtung jetzt in einen separaten Thread ausgelagert, dort sind auch die Screenshots zu finden: https://forum.fhem.de/index.php?topic=138940.0

LG

pah


Ach ja:
ZitatAngeblich sind 0 % Anzeige ja nicht wirklich "Leer"
und 100 % Anzeige nicht wirklich "ganz voll"
Darum soll sich im Hindergrund das Batteriemanagment kümmern.
Woher stammt dieser Unsinn denn?