Benachrichtigungen
Alles löschen

dbus-serialbattery mit Victron

96 Beiträge
29 Benutzer
6 Reactions
12.2 K Ansichten
(@rangarid)
Batterielecker
Beigetreten: Vor 2 Jahren
Beiträge: 237
Themenstarter  

Ich mache das mit einem Wandler USB-UART, danach ein Wandler UART-RS485

Das geht aber nur bei Daly BMS wo RS485 mir aufgedruckt ist, sonst muss man über UART, oder nicht? Und da braucht man den RS485 Wandler nicht.

Meine Interpretation von VE.Direct war, dass es sich einfach um eine serielle Schnittstelle handelt, die im Prinzip jeder beliebig verwenden kann, ist das nicht so?


   
AntwortZitat
(@tobedefined)
Batterielecker
Beigetreten: Vor 2 Jahren
Beiträge: 385
 

Ich mache das mit einem Wandler USB-UART, danach ein Wandler UART-RS485

Das geht aber nur bei Daly BMS wo RS485 mir aufgedruckt ist, sonst muss man über UART, oder nicht? Und da braucht man den RS485 Wandler nicht.

Meine Interpretation von VE.Direct war, dass es sich einfach um eine serielle Schnittstelle handelt, die im Prinzip jeder beliebig verwenden kann, ist das nicht so?

Jein, Serielle Schnittstelle gibt es viele USB, RS232, CAN, RS485....
Gemeint ist meist RS232. RS232 hat aber physikalisch diese hohen Pegel mit +15V - +12V und un -12V - 15V. Der Rest ist auch bei UART/TTL gleich, wenn man nur 0 und 5V als Pegel verwendet.
VE.Direct scheint dieses UART/TTL zu verwenden. Allerdings ist das nur die physikalische Schnittstelle. Wie und was du da abfragen kannst, ist nicht definiert im Standard. Deswegen braucht man das vom Hersteller.
RS485 ist eine differentielle Schnittstelle, die mit RS232 verglichen werden kann. Von den Bits/Bytes, Bitrate etc ist das identische zu UART / TTL.
RS485 wird häufig für Modbus RTU verwendet. Bei Victron eben für VE.Bus. Was für Daten darüber abgefragt werden können und wie, kann ganz anders sein als bei VE.Direct.
Beim Daly BMS gilt das Gleiche. Du brauchst das Protocol, mit dem über UART vom Daly Daten abgefragt werden können. Kann sein, dass das anders ist als bei RS485. Also rein von der Transportschicht aus dem ISO OSI Schichtenmodell.


   
AntwortZitat
(@rangarid)
Batterielecker
Beigetreten: Vor 2 Jahren
Beiträge: 237
Themenstarter  

Laut Dokumentation ist das UART und RS485 Protokoll gleich (siehe Anhang). Es wird zumindest im Dokument nicht mehr unterschieden.

Dann fang ich mal damit an, die PC App zu testen, um Fehlerquellen auszuschließen.

Nachtrag:
Über die PC App bekomme ich eine Verbindung, die Verkabelung ist also korrekt und Daten kommen auch über UART raus. Dann muss ich mir mal den Python code genauer anschauen. Vielleicht hab ich ja eine Variante vom Daly, die noch nicht ganz unterstützt ist oder so...


   
AntwortZitat
(@rangarid)
Batterielecker
Beigetreten: Vor 2 Jahren
Beiträge: 237
Themenstarter  

Ist ja komisch, nachdem ich die PC app ausprobiert habe funktioniert es auf einmal auch am Cerbo... Muss man nicht verstehen, aber cool dass es jetzt geht. Werde mir dann mal die Daten über MQTT an Openhab schicken und ein paar Grafiken bauen...


   
AntwortZitat
(@und-mehr)
Heroischer Stromgenerator
Beigetreten: Vor 2 Jahren
Beiträge: 1140
 

Ich fange dann auch gleich mal an... Wie genau habt ihr das BMS mit dem Venus OS verbunden?

uart->wifi->ethernet

..,-


   
AntwortZitat
(@rangarid)
Batterielecker
Beigetreten: Vor 2 Jahren
Beiträge: 237
Themenstarter  

Nachdem jetzt erstmal alles zu laufen scheint habe ich mir mal die Daten aus dem mqtt Feed angeschaut. Dabei ist mir aufgefallen, dass die Spannungswerte der einzelnen Zellen null sind:

N/xxx/battery/1/Voltages/Cell1 {"value": null}
N/xxx/battery/1/Voltages/Cell10 {"value": null}
N/xxx/battery/1/Voltages/Cell11 {"value": null}
N/xxx/battery/1/Voltages/Cell12 {"value": null}
N/xxx/battery/1/Voltages/Cell13 {"value": null}
N/xxx/battery/1/Voltages/Cell14 {"value": null}
N/xxx/battery/1/Voltages/Cell15 {"value": null}
N/xxx/battery/1/Voltages/Cell16 {"value": null}
N/xxx/battery/1/Voltages/Cell2 {"value": null}
N/xxx/battery/1/Voltages/Cell3 {"value": null}
N/xxx/battery/1/Voltages/Cell4 {"value": null}
N/xxx/battery/1/Voltages/Cell5 {"value": null}
N/xxx/battery/1/Voltages/Cell6 {"value": null}
N/xxx/battery/1/Voltages/Cell7 {"value": null}
N/xxx/battery/1/Voltages/Cell8 {"value": null}
N/xxx/battery/1/Voltages/Cell9 {"value": null}

Habt ihr das auch?

Diff, min, max, soc usw funktioniert alles.

Und das Log zeigt wieder Timeouts. Geht der UART eventuell einfach irgendwann in standby?

Ich muss dazu sagen, der Victron MP2 läuft gerade nicht mit, ich teste quasi nur die Batterie mit BMS an aber ohne Verbraucher.


   
AntwortZitat
(@und-mehr)
Heroischer Stromgenerator
Beigetreten: Vor 2 Jahren
Beiträge: 1140
 

Ist ja komisch, nachdem ich die PC app ausprobiert habe funktioniert es auf einmal auch am Cerbo... Muss man nicht verstehen, aber cool dass es jetzt geht. Werde mir dann mal die Daten über MQTT an Openhab schicken und ein paar Grafiken bauen...

Wie holst du die Daten denn von der Venus ab?
das Dokuschnipsel, was ich gefunden habe, kennt Cell1-n Voltage gar nicht für com.victronenergy.battery

Hast du in deiner Liste ein /State?
Es gibt für com.victronenergy.battery so was, aber da fehlt die Beschreibung der enums.

..,-


   
AntwortZitat
(@rangarid)
Batterielecker
Beigetreten: Vor 2 Jahren
Beiträge: 237
Themenstarter  

Wie holst du die Daten denn von der Venus ab?
das Dokuschnipsel, was ich gefunden habe, kennt Cell1-n Voltage gar nicht für com.victronenergy.battery

Hast du in deiner Liste ein /State?
Es gibt für com.victronenergy.battery so was, aber da fehlt die Beschreibung der enums.

Ich hab einfach mit mosquito client alle Daten von der Batterie abgefragt und das kam als Ergebnis mit noch ganz vielen anderen Daten, die befüllt waren.

Laut dbus-serialbattery gibt es zwei Varianten, wie die Zellspannung an den DBUS übertragen werden:

# Select the format of cell data presented on dbus. [Valid values 0,1,2,3]
# 0 Do not publish all the cells (only the min/max cell data as used by the default GX)
# 1 Format: /Voltages/Cell# (also available for display on Remote Console)
# 2 Format: /Cell/#/Volts
# 3 Both formats 1 and 2
BATTERY_CELL_DATA_FORMAT = 1

Default ist 1

Ich hab jetzt mal in die Funktion, die die Zellspannung liest ein Logging eingebaut um zu sehen, ob da überhaupt was kommt, aber jetzt hab ich erstmal wieder mit Timeouts zu kämpfen...

Es steht da, dass nur min/max tatsächlich von der Venus benutzt wird, aber ich hätte erwartet, dass wenn sie schon auftauchen, dass sie dann auch weitergeleitet werden, aber erstmal kucken was das logging sagt...

Nachtrag:

Habs gefunden, die Zellspannung wird garnicht abgefragt... Ist auskommentiert....

elif self.poll_step == 2:
# result = result and self.read_cells_volts(ser)
# elif self.poll_step == 3:
result = result and self.read_temperature_range_data(ser)
#else: # A placeholder to remind this is the last step. Add any additional steps before here
# This is last step so reset poll_step
self.poll_step = -1


   
AntwortZitat
(@und-mehr)
Heroischer Stromgenerator
Beigetreten: Vor 2 Jahren
Beiträge: 1140
 

Das ist meine referenz:
https://github.com/victronenergy/venus/wiki/dbus
Min, Max, Soc,
Alert für Kabel abgebissen, Sicherung weggeblasen ist alles da,
aber nicht die einzelnen Zellspannungen.

Ich hab mich auf einen anderen Weg eingeschossen und verteile die Daten an der Quelle in zwei Äste.
Es kommt überall ein ESP-M3 dran, wenn der von der Größe reicht, sonst muss ich einen 32er opfern.
Der ESP verteilt einmal die Daten, für die sich der Smarthomeserver abonniert hat, und einmal in einer Form aufbereitet für Venus.
Dann steht das zwar 2 x im Mqtt Server, aber jeder hat das für ihn passende Format.
Ich will keine Geräteabhängigkeit auf der Venus bauen und baue mit dort nur Mqtt Mapper für jede Geräteklasse.

..,-


   
AntwortZitat
(@rangarid)
Batterielecker
Beigetreten: Vor 2 Jahren
Beiträge: 237
Themenstarter  

Ja das sind keine offiziellen dbus Werte, macht aber nichts, da sie anscheinend trotzdem aufgenommen werden und per MQTT weitergeleitet werden können.

Mein Timeout Problem kommt übrigens daher, dass man anscheinend einmal am Anfang beim BT Modul den Button drücken muss, danach läuft es für eine Weile. Dann muss man aber irgendwann wieder den button drücken. Hat jemand eine Idee wie man das umgehen kann?


   
AntwortZitat
(@petermeter)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 152
 

Ich hatte das gleiche Problem. Die einzelnen Zellen sind nur mit dem neusten code im github sichtbar, für den es aber noch kein release gibt. :crazy:


   
AntwortZitat
(@rbeudel)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 98
 

Aktualisier mal auf die aktuelle Version 0.12, da kannst du die Capacity einstellen. Steht im Default auf 50Ah.

Gemacht, gefunden und geändert. 😀
Vielen Dank


   
AntwortZitat
(@rangarid)
Batterielecker
Beigetreten: Vor 2 Jahren
Beiträge: 237
Themenstarter  

Ich hatte das gleiche Problem. Die einzelnen Zellen sind nur mit dem neusten code im github sichtbar, für den es aber noch kein release gibt. :crazy:

Du meinst die Anzeige im Victron Remote? Denn soweit ich sehen kann sind die Einzelzellspannungen auch für Daly im Hauptbranch deaktiviert. Hab aber das Problem gefixt, da gab es einen Bug und den habe ich behoben. Werde dafür Mal einen PR aufmachen.


   
AntwortZitat
(@rbeudel)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 98
 

Mein Timeout Problem kommt übrigens daher, dass man anscheinend einmal am Anfang beim BT Modul den Button drücken muss, danach läuft es für eine Weile. Dann muss man aber irgendwann wieder den button drücken. Hat jemand eine Idee wie man das umgehen kann?

Den Timeout Wert mit der APP auf 65535s hochsetzen?


   
AntwortZitat
(@hanes1)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 166
 

Ich hatte das gleiche Problem. Die einzelnen Zellen sind nur mit dem neusten code im github sichtbar, für den es aber noch kein release gibt. :crazy:

Zumindest für Daly gilt das aber nicht, im aktuellen Repository daly.py:67 ist die Zeile für die Zellspannungen auskommentiert. Wurde mit Anpassung 16. Juni scheinbar rausgenommen. Habs mal testweise einkommentiert und ein paar Bugs behoben, aber bei mir liest er das gar nicht erst vom Daly aus.


   
AntwortZitat
Seite 3 / 7
Teilen: