Die Daten der Zähler werden von der MeterHub Software erfasst und über eine einfache HTTP API bereitgestellt. Dadurch können mehrere Programme auf die Daten zugreifen, was bei USB Interfaces sonst nicht so einfach geht.
Die ESS Software macht einen HTTP Request auf den MeterHub und bekommt dadurch alle notwendigen Informationen. Deinen Zähler kannst Du in den MeterHub oder in die ESS Software integrieren.
Momentan ist die Software noch sehr auf meine Konfiguration zugeschnitten. Eine weitere Modularisierung für eine einfachere Integration anderer BMSe und Zähler ist aber in Arbeit.
@bindpe
Bei identischem Aufbau aus Multiplus2, Pylontech und SDM** (kein Programmänderung) sehe ich kein Problem, aber wenn Du am Code Anpassungen vornehmen willst würde ich mit etwas einfacherem anfangen.
Für den Einstieg in die Raspberry Welt und das Programmieren in Python ist die Software vermutlich nicht sonderlich geeignet.
@pv123:
Ich bin aus OÖ/Österreich und baue das System gerade mit einer US5000 nach. Als Energiezähler möchte ich Link entfernt integrieren (Rest Api oder MQTT).
Wie komme ich an die Portnamen Victron_MK3 und USB/RS485?
Ich erhalte aktuell folgenden Fehler:
pi@ESS:~ $ sudo journalctl -u ess -f
-- Journal begins at Tue 2023-02-21 02:23:32 CET. --
Apr 22 09:04:30 ESS python3[313]: File " Link entfernt ", line 11, in <module>
Apr 22 09:04:30 ESS python3[313]: from multiplus2 import MultiPlus2
Apr 22 09:04:30 ESS python3[313]: File " Link entfernt ", line 4, in <module>
Apr 22 09:04:30 ESS python3[313]: from vebus import VEBus
Apr 22 09:04:30 ESS python3[313]: File " Link entfernt ", line 5, in <module>
Apr 22 09:04:30 ESS python3[313]: import serial
Apr 22 09:04:30 ESS python3[313]: ModuleNotFoundError: No module named 'serial'
Apr 22 09:04:30 ESS systemd[1]: ess.service: Main process exited, code=exited, status=1/FAILURE
Apr 22 09:04:31 ESS systemd[1]: ess.service: Failed with result 'exit-code'.
Apr 22 09:04:31 ESS systemd[1]: ess.service: Consumed 4.711s CPU time.
@e-t0m Danke, ich habs auch gerade gefunden und installiert. Dann habe ich noch den Ordner log angelegt.
Jetzt spukt "sudo journalctl -u ess -f" etliches aus. Viele Fehler. Der USB/RS485 Adapter zur Batterie blinkt nun auch schön.
Sollte auf [ip_des_raspi]:8090 nicht eine Webseite sichtbar sein, da erhalte ich leider nichts.-> habs gefunden: im web.py die lokale IP des Raspi statt 0.0.0.0 eingetragen, nun erhalte ich auf Port 8888 eine Website. Der Wert http_port im conifg.py scheint nicht verwendet zu sein.
Die Verbindung zum Multiplus II funktioniert, zum BMS der Pylontech 5000 leider nicht, ich suche weiter....
BMS Kommunikation:
Auf den Befehl TX: b'~20024642E00202FD33\r' antwortet die US5000 mit RX: b'\x00\x00'....
Bei mir läuft die Lösung nun perfekt auf einem Raspi 1B. Ich habe 2 x US5000 im System - also 9kWh.
Das BMS der US5000 liefert 4 Byte mehr als die US3000, die analogen Werte sind um 2 Byte verschoben.
Ich brauchte keinen zusätzlichen Smartmeter, da ich einen Smartmeter Lesekopf per REST eingebunden habe.
genau so würde ich es auch gerne machen, kann man irgendwo ein Script bekommen, dass ich dann nur noch anpassen muss. Die Daten vom IR liegen mir auch vor und der Akku hat ein Seplos BMS.
Der Überschuß soll dann geladen werden und der Bezug vom Akku ausgeglichen werden und das netzparallel.
Für Hinweise oder Weiterentwicklungen wäre ich dankbar, dann würde ich mir einen nackten MP 2 5000 besorgen. Weitere Infos kann ich gerne liefern.
IR kopf kenn ich nicht, ich mach das mit shelly3EM.
Der esp32 braucht keinen stm32 "übersetzer" (MK3 genannt) von USB nach ve.bus wie der raspi das braucht. Für ve.bus direkt wie das der esp32 macht ist der raspi zu lahm.
Mein internes BMS im esp32 drin das die multiplu2 messwerte verrechnet läuft sehr gut parallel zum BMS. Mehr als 1% abweichung ist da nicht. Deshalb finde ich eine verbindung zum BMS unnötig. Falls doch würde ich das ohne hardwareänderung vom esp32 BT zum BMS BT machen, ist aber viel arbeit.
Bis auf den letzten Abschnitt bin ich deiner Meinung. Die Reaktion des WR auf Anomalien die aus den BMS-Werten detektiert werden, ist ein Must-Feature.
Macht das nicht das BMS selbsständig? Wobei das BMS abschaltet, nicht runterregelt. Was eigentlich richtig ist. Wenn was schief geht soll er nicht einfach weiterwursteln.
Der MP2 begrenzt den strom auf 35A. Der MP2 überwacht max und min batteriespannung. Der im ESP32 berechnete SoC begrenzt ladung auf 90% und entladen auf 20%. Bei über 80% SoC wird PV überschuss bis 600W eingespiesen (dafür gibts geld) darunter alles in akku. Wozu brauch ich da eine BMS kommunikation?
Dein BMS selbst kann nicht runterregeln, es könnte nur dem WR sagen "regel den Strom runter weil eine Zelle vorraus eilt" Dein BMS kann nur die Ladung über den Mosfet unterbrechen mehr nicht. Versagt dein Mosfet, fakelt dein Speicher ab. Die Kommunikation mit dem WR ist deine erste Sicherheit, Trennen übers BMS die 2. Sicheheit.
Laden auf 90% und entladen auf 20% funktioniert nicht, weil dein ESP32 den Ladezustand nicht kennt, wenn nicht regelmässig auf 100% gesynct wird.
Verstanden hat Surolac es bestimmt, er ist ja nicht doof. Nur nach seiner Einschàtzung ist es aureichend wenn der MP2 anhand der eingestellten Spannungsgrenzen und dem gemeldeten SOC reagiert. Und im Notfall, also wenn einzelne Zellen abhauen, das BMS hart abschalten.
Funktional, aber mir zuwenig elegant. Wenn der MP2 anhand der Zellenunterschiede gleitend den Ladestrom runternimmt, bekommt der Balancer auch eine Chance zu balancen.
Auch killt es somanches BMS, wenn es bei Vollstrom den Akku hart abtrennt.
welchen gemeldeten SOC meinst du, der Multi bekommt doch von seinem BMS keine Info, weil keine kommunikation.
Ausserdem wird sich der berechnete SOC bei jedem Zyklus verschlechtern, weil kein BMS der Welt den SOC richtig berechnen kann. Daher kann nur durch eine Vollladung der 100% SOC festgestellt werden. Wenn er immer nur bis 90% lädt wird der Fehler immer größer.