kann mir zufällig jemand bei folgendem Thema weiterhelfen?
Ich habe zwei Seplos Mason 280 mit BMS V3 an einem Deye SUN-12K angeschlossen. Zusätzlich möchte ich die Werte beider BMS über einen ESP32 und RS485/Modbus auslesen und anschließend an Home Assistant übertragen.
Mit nur einem angeschlossenem BMS funktioniert das Auslesen problemlos. Allerdings nur, wenn sich das BMS im Single-Mode befindet und der ESP32 die Modbus-ID 0x00 abfragt. Dafür stehen die DIP-Schalter auf der Rückseite des BMS alle auf „unten“.
Sobald ich jedoch das zweite BMS über ein Patchkabel verbinde und die DIP-Schalter entsprechend einstelle – beim ersten BMS DIP 1 nach oben (ID 1) und beim zweiten DIP 2 nach oben (ID 2) – erhalte ich keine Werte mehr.
Die entsprechenden IDs habe ich natürlich auch im Quellcode des ESP32 angepasst und die Software anschließend neu auf den ESP32 übertragen. Leider bekomme ich unabhängig davon, welche ID ich im ESP32 abfrage, keine Daten zurück.
Da ich mich mit dem Thema RS485/Modbus noch nicht besonders gut auskenne, bin ich mir nicht sicher, ob ich grundsätzlich etwas falsch mache.
Daher meine Frage:
Hat jemand Erfahrung damit, zwei Seplos-BMS über RS485/Modbus mit einem ESP32 auszulesen?
Muss ich bei der Kommunikation mit zwei BMS noch etwas Besonderes beachten, z. B. bei der Modbus-Adresse, DIP-Schalter-Konfiguration, oder beim Abfragecode des ESP32?
Falls jemand das mit zwei Seplos-BMS bereits umgesetzt hat, wäre ich für einen Hinweis oder vielleicht sogar ein Beispiel für die richtige Konfiguration bzw. den Abfragecode sehr dankbar.
Hallo Franz,
bei meinem Setup mit Deye Sun-12K und 2x Seplos BMS funktionierte die Kommunikation zwischen den Batterien erst, nachdem die Dipschalter so eingestellt waren, das bei der einen Batterie Dip1 nach oben gestellt war und bei der anderen Dip5.
Evtl. hilft auch noch neue Firmware für das Seplos, bei älteren Versionen gab es da Probleme.
Die Anbindung an Homeassistant möchte ich demnächst noch angehen.
danke für dein Feedback! Ich kann dir leider erst jetzt antworten. Sorry!
Die Kommunikation zwischen den beiden Seplos-Batterien (beide mit BMS V3) sowie zwischen dem Deye SUN 12K und den beiden Seplos funktioniert bei mir problemlos.
Bei der V3 ist es eigentlich egal, ob DIP5 oben oder unten steht. Zumindest kann ich dabei keine Änderungen am Deye feststellen.
Vom Deye-Wechselrichter kann ich über einen ESP32 und ein dazwischengeschaltetes Modbus-Modul (RS485) ebenfalls sämtliche Daten abgreifen und diese in Home Assistant entweder visuell darstellen oder auch verschiedene Parameter direkt m Wechselrichter ändern. Zum Beispiel:
Der Datenabruf vom Akku über Modbus funktioniert ebenfalls problemlos. Aber nur solange nur ein Akku-Pack angeschlossen ist. Sobald ich jedoch den zweiten Akku dazuschalte, bekomme ich über den Seplos-Modbus keine Daten mehr.
Ich dreh mich schon seit Tgen und inzwischen unzähligen Kompelierungen im ESP32 inzwischen komplett im Kreis. Vielleicht hast noch eine Idee.
die Darstellung im Homeassistant gefällt mir sehr gut, das werde ich mir demnächst auch noch einrichten. Zur Anbindung des ESP32 zum Seplos BMS kann ich zur Zeit auch keinen Tip geben, da kenne ich mich zu wenig aus. Bezüglich Dip5 war der Unterschied beim Deye, dass er dann den durchschnittlichen Soc-Wert von beiden Batterien angezeigt hat, ohne Dip5 kam nur der Soc-Wert der Batterie an der der Deye angeschlossen ist.
Wünsche auf jeden Fall viel Erfolg bei der Lösung
Wie sind denn die beiden Akkus kommunikativ an den Deye angebunden? Normalerweise sind die Akkus untereinander mit RS458 verbunden und der Master-Akku dann via CAN mit dem Deye.
In dieser Konstellation kannst du den Datenverkehr am zweiten RS485 Port des Slave-Akkus mit sniffen, aber nur lesend. Du forderst also nicht aktiv zur Kommunikation auf denn das macht ja immer schon das Masterpack um zu wissen wie es seinen Slaves geht. Es kann nur einen Master geben.
So lese ich via Iobroker zyklisch alle Zellspannungen unserer sechs Packs mit und visualisiere die Lanzeitdaten in Grafana. Dazu gibt es für den Iobroker einen eigens erstellten Adapter. So wie der aufgebaut ist sollte sich dein ESP auch verhalten. Also fleißig mitlesen wenn der Master-Akku seine Slave(s) abfragt.
Danke für TIP mit dem "sniffen" am Slave-BMS.
Der Deye ist bei mir über den BMS-Port am Seplos Master-BMS verbunden. Ist ein 8-adriges Flachbandkabel mir RJ45 an beiden Enden. Diese Kommunikation ist und war bislang auch OK. Und die beiden BMS sind über ein normales RJ45-Patchkabel miteinander verbunden. Und zwar vom Master auf RS485-2 zum Slave RS485 -1. Das funktioniert auch soweit. Ich sehe am BMS zumindest die gemittelten Werte von beiden BMS bzw. Akkus im Deye...
Das sniffen am Slave-RS485-2 hatte ich bislang noch nicht auf dem Fokus. Ich hab es sofort mit einem neuen Kabel versucht. Aber leider brachte dies auch nicht den erhofften Erfolg. Egal wo ich sniffe.und egal welche DIP ich gesetzt habe. Also beim Master DIP 5-On und am Slave DIP-1 on. Oder Master DIP-1, DIP-5-on und Salve DIP-2-on bringt keine Änderung.
Auffällig ist allerdings, dass wenn ich das Patchkabel zwischen Master und Slave kurz aus und wieder einstecke, dann liest er einmalig kurz die Daten von dem BMS in dem grad der Stecker vom RS485 steckt. Somit weiß ich wenigstens dass die Verkabelung passen sollte.
Welche Hardware im Detail hast Du im Einsatz. Wenn es bei dir funktioniert und bei mir nicht, denke ich so langsam, dass mir die Hardware in die Suppe spucken könnte..
Also, ich habe 6x Seplos V3 davon kommuniziert das Master-Pack via CAN mit einem Raspi4 auf dem das VenusOS (sozusagen das GX Device bei Victron) läuft. Der Raspi ist mit einem zweikanaligen CAT HAT ausgerüstet, am zweiten CAN Port hängt ein 450V/200A MPPT Lader von Victron.
Die DIP Schalter sind an allen Packs auf 0 - die werden beim V3 in der CAN/RS485 mixed Kommunikation nicht mehr gebraucht.
Die fünf Slave-Packs sind wie bei dir via RS485 zum Master-Pack verbunden - also vom Master RJ45-2 auf RJ45-1 vom ersten Slave, RJ45-2 vom ersten Slave zum RJ45-1 des dritten Slaves usw. Am letzten Slave in dieser RS485 Linientopologie wird am RJ45-2 das Signal vom RS485 zu USB Wandler abgegriffen.
Dieser RS485 zu USB Wandler steckt in einem weiteren Raspi4 auf dem mein Iobroker, Grafana und der SQL-Server laufen. Innerhalb des Iobrokers gibt es einen fertigen SEPLOS Sniffer Adapter (so heißen beim Iobroker die Softwaremodule/Treiber mit denen man diverseste Geräte oder Clouds datentechnisch bedienen kann - nur als Randinfo).
Ich stecke ehrlich gesagt nicht in der Tiefe des Seplos Sniffer Adapters, also ich weiß nicht was der im Detail macht. Jedoch ist bekannt dass das Masterpack zyklisch sehr umfangreich Daten seiner Slaves abfragt. Ob der Master dabei initial stumpf alle maximal möglichen Adressen "anpingt" und dabei schaut bis zu welcher Adresse er noch Antwort bekommt oder ob er einfach die Slaves inkrementell ausliest bis keine Antwort mehr kommt kann ich nicht sagen - ich bin da auch faulerweise nur Anwender.
Der Iobroker Adapter liest halt bei jeder Anfrage des Masters die Antworten der Slaves mit. Bezüglich plausibler Daten klappt das tatsächlich auch wesentlich fehlerfreier als die Abfrage der Victron ModbusTCP Register. In den Daten der Victron ModbusTCP Register sind schon manchmal totale Phantasiewerte dabei wie z.B. einmalig Akkutemperatur von 180°C - das stellt sich dann immer als unplausible Spikes in den Diagrammen dar. Aber ich schweife ab
Ich denke du wirst erstmal den Telegrammaufbau kennen müssen den der Master als Abfrage seiner Slaves schickt. An dem Telegrammaufbau kann man dann erkennen das als Nächstes Antworten folgen werden. Anhand der Antworten kann man dann aufschlüsseln welcher Slave und wie viele Slaves geantwortet haben. Aber das Prozedere lässt sich sicher auch herausfinden wenn man sich mehr mit dem Code des Seplos-Sniffer Adapters beschäftigt.
Dazu fehlt mir aber leider aufgrund einger Baustellen am Haus die noch vor dem Winter fertig werden müssen leider die Zeit.
Das sieht mir aber danach aus als wenn dein ESP nicht passiv mit liest sondern aktiv fragt. Das darf er nicht. Er darf nur lesen und muss anhand der Telegramme erkennen ob es sich um eine Anfrage des Masters oder eine Antwort des/der Slaves handelt.
Ich habs jetzt andersweitig irgendwie geschafft. Ich vermute stark dass der RS485 vom Ali aus CN das irgendwie nicht kann. Das hat er auch gemacht, als ich in der Source den TX auskommentiert habe und neu auf den ESP kompiliert habe. Ist irgendwie komisch und unlogisch...???
Ich hab jetzt mal den ESP32 incl. dem RS485 Adapter raus und dafür einen RS485 Adapter über USB in den RB4 eingesteck. Im HACS-Store vom HomeAssistant gibts eine fertige Integration (Nams: BMS-Connector) für Seplos V2 und V3. In der habe ich nach der Installation den USB-Port vom RS485 Adapter und die jeweilige ID's vom BMS eingegeben. Jetzt kann ich die Werte von beiden BMS (jeweils 32 Stk.) mitlesen. Ich denke das dies ähnlich der dem Sniffer vom IOBroker sein dürfte.
Im letzten RS485 ist noch der Laptop mit dem Seplos-BMS-Studio angeschlossen. Da kann ich ggf. Parameter im BMS ändern. Das genügt mir im Moment vollkommen.
das mit dem Raspi und der HA Integration hört sich interessant an (RB4 ist doch Raspi4 oder?). Was hast du denn auf dem Raspi installiert? Nur das das normale Raspi OS oder noch was dazu? Und welchen RS485 - USB Adapter hast du verwendet? Hatte schon ein paar, die nicht gingen ...
ja, RB4 ist ein Rasberry 4. Auf dem läuft der Homeassistant. Zumindest im Moment noch. Ich plane den HA auf eine ProxMox VE umzuziehen. Der RB4 schafft zwar noch die Visualisierung. Aber wenn der neu startet oder eine ESP32 Kompelierung gestartet wird, braucht das inzwischen seine Zeit. Den HomeAssistant gibt es als kpl. eigenständigt Installtion für den RB. Hier ein Link zum HowTo.
Als RS485 habe ich jetzt den USB to RS232/485 Model UTS-T02 vom Ali aus CN. Hier ebenfalls ein Link dazu.
Und den Deye 12K habe ich über ESP32 und einer RS485 Platine (Link dazu) eingebunden. Der kann über Automatisationen gesteuert werden. Damit schalte ich z. B. während der Wintermonate den Deye ab, wenn der Akku ab 18:00 Uhr unter 15% sinkt und ab 07:00 Uhr wieder ein. Dait spare ich mir den Eigenverbrauch des Deye von ca. 100W.
Hier ein kl. Ausschnitt vom WEB-UI des ESP32 des Deye.
vielen Dank für die Infos.
Der RS485 Adapter hängt also direkt am HA-Server. Das geht bei mir nicht, da die räumlich getrennt sind. Ich muss da noch mal gucken, ob sich das auch irgendwie übers Netzwerk realisieren lässt.
Mehr kann ich dazu allerdings nicht sagen. Bei mit hat es sich angeboten den Serial-Adapter zu verwenden, weil die AKKUs, WR usw. direkt neben dem RB sind.