Aktualisier mal auf die aktuelle Version 0.12, da kannst du die Capacity einstellen. Steht im Default auf 50Ah.Schau mal in der utils.py ob du die Werte für Capacity richtig eingestellt hastIch habe keine Einstellung für Capacity:# Constants - Need to dynamically get them in future DRIVER_VERSION = 0.10 DRIVER_SUBVERSION = '' zero_char = chr(48) degree_sign = u'N{DEGREE SIGN}' # Cell min/max voltages - used with the cell count to get the min/max battery voltage MIN_CELL_VOLTAGE = 3.1 MAX_CELL_VOLTAGE = 3.45 # battery Current limits MAX_BATTERY_CURRENT = 50.0 MAX_BATTERY_DISCHARGE_CURRENT = 60.0 # Invert Battery Current. Default non-inverted. Set to -1 to invert INVERT_CURRENT_MEASUREMENT = -1
Bei der Gelegenheit aber bemerkt das warum auch immer die Einstellung auf Lion und nicht mehr auf LiFePo stand.
Kannst du mit 2x USB-TTL Intefaces (nur Rx-Leitungen) die Kommunikation abfangen und am PC mitloggen? Vielleicht zeigt sich dann das Problem.Hab ich auch aber ist mir erstmal zu umständlich. Muss wohl irgendwie am USB Adapter oder der Verkabelung liegen. Konnte ihn inzwischen wenigstens dazu bewegen, dass er bei einer der Daly Varianten das ganze als 16 Zellensystem erkennt, aber danach Timeout... Werde mal andere Adapter probieren. Zur not hab ich auch noch TTL<->RS232 Wandler, dann könnte ich auch direkt an VE.Bus.
Bei mir funktioniert es mit Daly über RS485
Das rumgezappel des Entladestroms konnte ich durch ein Firmwareupdate am Daly beheben
Ist es richtig das sich dbus-serialbattery bei jedem reboot neu installiert?
Es wirft mir dann jedes Mal die Einträge für meine MQTT-Adapter aus der rc.local
Wie habt Ihr das gelöst?
Mich wundert auch das man nach Parameteränderungen jedes mal neu installieren muss?
Ich weiss aber noch nicht ob ich die Software weiter nutze - in meinen Augen macht bei einem Speicher die Abschaltung über die Zellspannung mehr Sinn als über den SOC
Bei kontinuirlicher Nutzung des Akkus von z.B. zwischen 20 und 80% passt irgendwann der SOC nicht mehr
Zur not hab ich auch noch TTL<->RS232 Wandler, dann könnte ich auch direkt an VE.Bus.Entweder du meinst einen andere Schnittstelle oder du meinst einen TTL<->RS485. VE.Bus scheint ja RS485 zu sein.
Ah ist das so? RS485 Anschluss hat mein Daly BMS auch, dann kann ich den direkt an die VE.Direct Schnittstelle anschließen? Dachte VE.Direct ist RS232 mit 12V Level.
Ah ist das so? RS485 Anschluss hat mein Daly BMS auch, dann kann ich den direkt an die VE.Direct Schnittstelle anschließen? Dachte VE.Direct ist RS232 mit 12V Level.Nein. Nicht durcheinanderbringen:
https://www.victronenergy.de/upload/documents/Technical-Information-Data-communication-with-Victron-Energy-products_DE.pdf
VE.Direct: Irgendetwas RS232 artiges mit TTL Spannungslevel.
VE.Bus: Irgendwas RS485 artiges mit entsprechenden Spannungslevel
Ja da steht VE.Direct ist RS232... Also müsste man doch mit einem RS232-TTL Converter auch auf das Daly BMS kommen, oder nicht?
Das Daly hat ja einen UART Port für BT und einen RS485/CAN Port der nicht bei allen Geräten Bestückt ist.
Soweit ich das Verstanden habe, nimmt man normalerweise einen FTDI Adapter oder ähnlich mit TTL und verbindet ihn mit dem UART Port.
Naja ich versuch jetzt erstmal mit der PC-App draufzukommen, um Verbindungsprobleme auszuschließen und dann kuck ich weiter.
So wie du es oben beschrieben hattest, dacht ich du willst mit dem VE.Direct auf den RS485 vom Daly. Das geht halt nicht.
Der UART Port spricht wahrscheinlich ein anderes Protokoll als der RS485 Port, dass von der Lib nicht unterstützt wird? Brauchst ein RS485 Interface auf USB.
Ah ist das so? RS485 Anschluss hat mein Daly BMS auch, dann kann ich den direkt an die VE.Direct Schnittstelle anschließen? Dachte VE.Direct ist RS232 mit 12V Level.Der MP 2 hat doch gar keine VE.Direct-Schnittstelle?
VE.Bus ist RS485-ähnlich, aber sicher ein komplett anderes Kommunikationsformat als Daly-Rs485, das kannst nicht verbinden
Du musst über USB zum Daly
Ich mache das mit einem Wandler USB-UART, danach ein Wandler UART-RS485
In der Theorie müsste so einer gehen:
https://www.amazon.de/WINGONEER-USB-485-Konverter-Adapter-Window-1/dp/B016IG6X7I
Ich mache das mit einem Wandler USB-UART, danach ein Wandler UART-RS485Das 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....Ich mache das mit einem Wandler USB-UART, danach ein Wandler UART-RS485Das 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?
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.
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...
41561=7150-Part-4_-Daly-RS485UART-Protocol.pdf|attachment (269 KB)
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...
Ich fange dann auch gleich mal an... Wie genau habt ihr das BMS mit dem Venus OS verbunden?uart->wifi->ethernet
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.
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.
Wie holst du die Daten denn von der Venus ab?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.
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.
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 1Ich 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
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.
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?