Marstek B2500-D lokal über MQTT mit Simons HA Automation

Hallo zusammen,

ich habe Simon42s Video zum Marstek B2500-D Speicher mit lokalem MQTT Betrieb und HA Automation gesehen und fand dies genau das richtige für meine Bedürfnisse (kleine Wohnung, kein richtiger Zugang zum Schaltkasten für einen Shelly 3EM).
Habe mir somit einen dieser Speicher gekauft und die Einrichtung und Automation laut Video durchgeführt.

Gerät über Tomquists BLE Tool in den lokalen Modus mit MQTT geschaltet und der Spaß ging los.

Das ganze hat Anfangs sehr gut funktioniert. Die Automation regelte recht gut die benötigte Leistung für die “quasi Null-Einspeisung”. Jedoch stoppte das heute plötzlich. Nachdem ich geschaut habe, in welchem Zustand die ganze Sache ist, fiel mir auf, dass dies genau gestoppt hat, als der Speicher zu 100% geladen war (vorher waren nie 100% erreicht worden. Das Gerät schaltet die PV Eingänge und die Inverter Ausgänge ab und das wars dann. (Surplus Feed-in ist aktiviert)
Ich habe dann versucht, mit abgeschalteter Automation manuell Ausgangswerte zu setzen, welche das Gerät auch annimmt. Jedoch bleiben die Ausgänge deaktiviert.

Habe das Gerät in den Werkszustand gesetzt und über die App Werte eingestellt, funktioniert alles wieder. Habe danach das “pairing” über BLE Tool mit MQTT wieder durchgeführt –> selbes Verhalten.

Ich schließe mal ein Fehler in der Automation aus, denn manuelle Leistungseinstellung bringt ja nichts.

hat diese Verhalten schon jemand beobachtet, liegt hier ein Softwarebug vor (Firmware hm2mqtt)? Oder habe ich ‘nen Bug :slight_smile:

Gerät: B2500-D - HMJ-2 Firmware 113.1

HA 2025.8.0, moquitto broker 6.5.1, hm2mqtt 1.5.0

Gruß

Mardu

Hallo Mardu,

seit ich mein HMJ-2 auf die Firmware 110.9 aktualisiert habe, habe ich das gleiche Spiel wie du auch. Manchmal funktioniert es zwar, aber nicht so konsistent wie ich es gewohnt war. Bei einer früheren Firmware hatte ich da keine Probleme und es hat funktioniert so wie es soll.
Habe Marstek jetzt nach einer neueren Firmware gefragt. Die neuste für den HMJ-2 ist wohl die Firmware v116.
Gibt es bei dir Neuigkeiten?

Ach und noch eine Frage da du hm2mqtt auf Version 1.5.0 hast. Bekommst du folgende Werte? Bei mir werden diese nämlich als Unbekannt angezeigt, was sich wohl aber nach dem Update auf v116 wieder ändern soll:

sensor.speichername_host_battery_voltage
sensor.speichername_host_battery_current
sensor.speichername_input_voltage_1
sensor.speichername_input_voltage_2
sensor.speichername_input_current_1
sensor.speichername_input_current_2
sensor.speichername_output_current_1
sensor.speichername_output_current_2
sensor.speichername_output_voltage_1
sensor.speichername_output_voltage_2

Grüße
Matze

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
s.a.: (Neues Update & Features - Hier in der Community 🫶)

Hallo Matze,

ich habe das Gerät derzeit auf Werkseinstellungen zurückgesetzt und betreibe den lokal vorerst. Was auch eher schlecht als recht funktioniert. Deswegen kann ich gerade nicht schauen, ob ich diese Werte sehe. Lokal passiert nach voll Laden folgendes:

ständiges an- und ausschalten des Wechselrichters bei 100% bis 99% und die Shelly Automation läuft 1x an und schaltet nach 5 min ab :slight_smile: .

Ich habe daraufhin ein Ticket beim Support aufgemacht und die scheinen sich dieses Problems bewusst zu sein, denke mal das hat auch Auswirkungen auf die “lokale Automation” via HA:

“vielen Dank für Ihre ausführliche Schilderung. Das von Ihnen beobachtete Verhalten – dass der Ausgang beim 100%-Ladezustand kurz abschaltet und erst wieder startet, nachdem der Ladezustand leicht absinkt – entspricht einem bekannten Mechanismus in der aktuellen Firmware. Dieses Verhalten tritt in der Tat bei vollem Batterieladezustand auf, um die Batteriemanagement und Einspeiseprozesse optimal zu steuern.

Um dieses Verhalten zu optimieren, werden wir Ihnen in Kürze eine aktualisierte BMS-Version zur Verfügung stellen. Nach dem Update können Sie in der App unter „Einstellungen“ die Funktion „Einspeisung bei vollem Akku“ aktivieren. Damit läuft das Gerät auch nach Erreichen des 100%-Ladezustands kontinuierlich in den Durchleitungsmodus, ohne den Wechselrichter zu unterbrechen.

Wie von Ihnen beschrieben, scheint im Automatikmodus mit dem Shelly Pro 3EM Smartmeter die Regelung wie erwartet zu funktionieren, was darauf hindeutet, dass es sich nicht um einen generellen Hardware-Defekt, sondern um ein softwarebezogenes Verhalten handelt.“

ich warte jetzt mal darauf, dass die mir die “korrigierte” Version zur Verfügung stellen

1 „Gefällt mir“

Wie sieht es aus? Ich habe den Fehler jetzt auch..

Bzw. Immer wenn ich die Leistung ändere geht der aus.. zumindest bei 100%

keine Verbesserung seitens Marstek, habe die Automation mir so angepasst, dass ich bei 100% nichts an der Leistung ändere. Habe mich mehr oder weniger damit abgefunden, wie es läuft :slight_smile:

Schade, da hatte ich eine andere Antwort erhofft :slight_smile:

Hab seit ein paar Tagen einen neuen Speicher am Laufen, den ich nach der Inbetriebnahme auf 116 upgedated habe.
Mein alter Speicher hatte die 110.9.

Der alte hat mit Überschusseinspeisung funktioniert. Bei 100% wurde Passthrough aktiviert. Wenn der Soll-Ouptut den PV-In für eine zeitlang überstieg (keine Ahnung wie lange und wieviel, dauerte aber schon eine Weile), hat der Akku Passthrough wieder ausgeschaltet und zunächst nur den Output aktiviert. Bis der Akku auf 99% gefallen ist, danach wurde auch PV-In wieder aktiviert.

Der neue Speicher (bzw. vermutlich die 116 Firmware) hat da wohl ein Problem. Wenn Überschusseinspeisung aktiviert ist, wird bei 100% Passthrough aktiviert. Soweit wie gewohnt.
Nur wenn jetzt der Soll-Ouput den PV-Input übersteigt wird Passthrough deaktiviert und dann habe ich bisher zwei Möglichkeiten beobachtet:

  1. Nach dem Deaktivieren von Passthrough wird aber der Output nicht wieder aktiviert. Der Speicher steckt dann bei 100% “fest”.
  2. Nach dem Deaktivieren von Passthrough wird der Output zwar wieder aktiviert, aber sobald der Output aktiv wird, wird wieder zurück auf Passthrough geschaltet (weil der Speicher 100% hat?). Dann befindet man sich in einer Endlosschleife.

Man kann beides manuell beheben, indem man die Überschusseinspeisung (vorrübergehend) ausschaltet. Und frühestens wieder einschaltet, wenn der SoC auf 99% runtergegangen ist. Dann muss man natürlich aber aufpassen, das der Speicher nicht gleich wieder auf 100% lädt und man somit wieder beim gleichen Problem landet.

Ich habe den gleichen Speicher und das gleiche Problem. Hast du mehr Infos bis jetzt rausfinden können? @FinalFantasy

Hast du diesbezüglich den Support schon kontaktiert?

Ist leider echt ein Thema und nervt sehr.

Bei mir besteht das Problem übrigens immer, egal ob der PV Input größer als der PV Output ist

Ich habe dem Support geschrieben und nur eine wirre Antwort bekommen, ich soll irgendein Update installieren.
Auf die Rückfrage, welches Update denn und wo das bitte herkommen soll, habe ich noch keine Antwort gekriegt.

Gestern hatte ich dann noch den dritten Fall:
Akku voll, Output wird abgeschaltet aber Passthrough wird nicht eingeschaltet. → Akku ist im Deadlock, weil dann der Output auch nie wieder eingeschaltet wird.

Tolle Wurst. Jetzt scheint er immer nur noch den Output abzuschalten, aber Passthrough nicht ein. Das ist gleich doppelt ■■■■■■■, weil dann der Akku die Zellen nie balanced… Gott geht mir das Ding mittlerweile auf die Nerven. Ich hab keine Ahnung was jetzt anders ist, wodurch Passthrough überhaupt nichtmehr aktiviert wird.

Edit: Doch er balanced auch, wenn der Output aus, aber Passthrough nicht an ist. Nur dann kriegt man halt in der Zeit überhaupt keinen PV-Ertrag. :roll_eyes:

Edit2: Habs (vermeintlich) rausgefunden, warum Passthrough nichtmehr aktiviert wurde: Der Speicher mag es wohl überhaupt nicht, wenn während der Umschaltung der Soll-Output geändert wird. Muss also meine Regelung deaktivieren, sobald es auf 100% zugeht, damit die nicht dazwischenschießt während der Speicher umschaltet.

2 „Gefällt mir“

Selbes Problem: HMJ mit v116.6.

100% geladen und das wars seitdem. Wenn ich Tine Period 1 ausmache, geht zumindest Passthrough. Aber entladen geht gar nicht.

Bug?

Ich probiere morgen mal GitHub - tomquist/AstraMeter: This project emulates Smart Meter devices for Marstek storages such as the B2500, Marstek Jupiter and Marstek Venus energy storage system while allowing integration with almost any smart meters. · GitHub vielleicht regelt der Speicher dann intern anders bzw zuverlässiger

1 „Gefällt mir“

Ja, weil dann während der Umschaltung wohl auch der Soll-Output nichtmehr geändert wird.

Bin mir ziemlich sicher, das das ein Bug in der Firmware ist. Nur deren Support kapiert das irgendwie nicht.

Berichte mal. Ich habe leider die Befürchtung, das der Speicher die Ansteuerung durch das Smartmeter tatsächlich irgendwie anders verarbeitet und der Bug damit nicht auftritt. Was dann vielleicht auch der Grund ist, warum Marstek das Problem nicht erkennt… weil sie das nur auf diese Weise testen.

Klappt top

Hab mit AstraMeter den CT003 emuliert und gekoppelt. Musste der Gerät nochmal rebooten, da MQTT abgeschmiert ist (macht er gern bei grundsätzlichen Änderungen irgednwie) aber jetzt regelt er mit der eigenen Logik sehr gut. Batterie Laden Ja/Nein, je nach Bedarf und PV spontan geregelt, inklusive SurPlus Feed-In. SO wie er es brauch ohne Aufhänger. Nach einer Stunde beobachten und teils wilden Hin und her des Hausbedarfs: Bin zufrieden.

Jedenfalls besser als Time Period 1-Steuerung.

Alles im local mode, ohne Marstek Cloud.

2 „Gefällt mir“

Ich nehme mal an, wenn man das mit dem AstraMeter macht, wird der Adaptive Mode vom Speicher aktiv? Das heisst, wenn ich die automatische Regelung (temporär) deaktivieren will, kann ich einfach den Adaptive Mode ausschalten und der letzte Wert bleibt stehen, bzw. ich kann wieder manuell einen Wert eingeben?

Ich habe hier leider Verbraucher die extrem pulsen, je nachdem wie die Intervalle fallen, so schnell das mein IR-Leser am Stromzähler die Pulse nichtmal “merkt” oder ständig zwischen 100 und 500W hin und her springt. Deswegen will ich die automatische Regelung auch “schnell” mal ausschalten können.
Offsets kann das Ding anscheinend ja direkt… alternativ sollte man sich das aber auch mit einem einfachen Template-Sensor auch selbst bauen können?

Edit: Ja, scheint so zu funktionieren. Mit AstraMeter regelt der Speicher jedenfalls schonmal schneller, als über die Automation via hm2mqtt. Hab jetzt eine Shelly3empro emuliert. Mit PowerOffset -3 und Updateintervall 2s scheints gut zu laufen. Mit Updateintervall 0 hat es ein bisschen arg overshooted.

Ob das mit der Überschusseinspeisungsumschaltung damit auch funktioniert, wird sich vermutlich heute tagsüber zeigen.

2 „Gefällt mir“

Hallo zusammen,

Ich habe aktuell 2 Marstek B2500-D im Betrieb. Die beiden laufen im Automatik Modus. Ich verwende ein Bitshake SML Leser der ein EcoTracker Emulator ausführt. Das ganze läuft soweit erstmal ganz gut. Nun würde ich gerne die Daten der Akkus in meinen HA integrieren. Ich habe das Video von Simon gesehen. Nur würde ich ungerne die Nullspeisung per HA direkt machen da ich da noch relativ unerfahren bin. Gibt es einen Weg wie ich die “normale” Automatik nutzen kann aber trotzdem die Speicherdaten an den HA bekomme? Bzw wenn ich den B2500 in den MQTT Mode bringe kann ich dann im ha über MQTT den Speicher wieder auf Automatik stellen und den EcoTracker auswählen?

Du solltest dich mit den beiden Projekten von tomquist beschäftigen.

und

AstraMeter

Ersteres bringt dir die “B2500-Daten” nach HA. AstraMeter emuliert dir einen vom Marstek-Speicher unterstützten “Stromleser” (wie z.B. einen Shelly Pro 3EM) der dir eine Nulleinspeisung ermöglicht, und zwar mittels der von Marstek-Speicher B2500-Hardware eingebauten Möglichkeiten.

Dein bitshake gibt sich also als z.B. Shelly Pro 3EM aus und lässt sich somit in der App im Automodus (Autoadapt bzw. CT) auswählen.

Evtl. unterstützt Marstek mittlerweile auch den Ecotracker bzw. deren Emulation direkt, dann kannst den AstraMeter weglassen. Letzteres weiß ich jedoch nicht.

Okay danke, werde die beiden Speicher mal per mqtt anbinden. Kann ich dann einfach im HA den EcoTracker auswählen wie in der App?

Die Kopplung mit einem Smartmeter hat überhaupt nichts mit der HA-Integration zu tun.

Du hast deinen Speicher ja anscheinend schon mit diesem emuliertem EcoTracker gekoppelt. Das läuft unverändert weiter, auch wenn du MQTT auf dem Speicher aktivierst und ihn in dein HA einbindest.
Du kannst in HA dann den Automatikmodus ein oder ausschalten, wie in der App auch. Eine Kopplung zwischen Speicher und Smartmeter kann man in HA aber weder einrichten noch entfernen. Das läuft alles direkt zwischen Speicher und Smartmeter. Brauchst du aber ja auch nicht, denn das hast du ja schon.

Die Steuerung via HA-Automation “braucht” man eigentlich nur, wenn man eben kein Smartmeter hat was sich mit dem Speicher koppeln lässt, oder eben aus Gründen komplette Kontrolle über die Steuerung haben will.
Da man (mittlerweile) mit dem genannten AstraMeter via HA so eine Smartmeter aber auch emulieren kann, ist eigentlich die komplett in HA laufende Automation wie sie in dem Video beschreiben hinfällig/unnötig.

Möglicher Firmware-Bug beim Marstek B2500-D (HMJ-2): Nach 100 % SOC keine PV, keine Entladung und keine Wiederherstellung möglich

Hallo zusammen,

ich möchte einen reproduzierbaren Fehler bei meinen beiden Marstek B2500-D (HMJ-2) zur Diskussion stellen. Inzwischen bin ich ziemlich sicher, dass es sich um einen Firmwarefehler handelt und nicht um ein Hardwareproblem.

System

  • 2 × Marstek B2500-D (HMJ-2)

  • Geräte-Firmware: 117.1

  • Kein EcoTracker

  • Kein Shelly

  • Kein externes Smart Meter

  • Betriebsmodus: Simultaneous Charging/Discharging

  • Überschusseinspeisung aktiviert

  • Time Period 1 aktiv (00:00–23:59)

Fehlerbild

Beide Geräte arbeiten zunächst völlig normal.

Sobald sie jedoch 100 % Ladezustand (SOC) erreicht haben, tritt nach kurzer Zeit folgender Zustand auf:

  • PV Input fällt auf 0 W, obwohl die PV-Module Leistung liefern.

  • Die Ausgangsleistung zum Mikrowechselrichter bleibt dauerhaft bei 0 W.

  • Der Akku entlädt trotz vorhandenem Hausverbrauch nicht mehr.

  • Der interne Parameter Scene steht auf “Night”, obwohl es heller Tag ist und die Leistung von Panel’s noch anliegt.

  • Änderungen am Betriebsmodus oder an der Ausgangsleistung haben keine Wirkung.

Das Besondere

Anfangs war nur eines meiner Geräte betroffen. Nach kurzer Zeit zeigte jedoch auch das zweite Gerät exakt denselben Fehler.

Da beide Geräte:

  • dieselbe Firmware besitzen,

  • am selben Standort betrieben werden,( nicht gekoppelt)

  • unter identischen Bedingungen laufen,

  • und der Fehler immer erst nach Erreichen von 100 % SOC auftritt,

halte ich einen Hardwaredefekt für äußerst unwahrscheinlich.

Was ich bereits getestet habe

Leider konnte keine der folgenden Maßnahmen den Fehler beheben:

  • Gerät über den Hauptschalter vollständig ausschalten.

  • Mehr als 30 Minuten ausgeschaltet lassen.

  • Danach wieder einschalten.

  • Output 1 Active und Output 2 Active aktivieren bzw. deaktivieren.

  • Den Parameter Scene über Home Assistant manuell auf Day setzen.

  • Betriebsmodus ändern.

  • Ausgangsleistung ändern.

Keine dieser Maßnahmen bringt den Akku wieder in Betrieb.

Der Zustand bleibt bestehen:

  • Scene = Night

  • PV Input = 0 W

  • Output = 0 W

Meine Vermutung

Ich glaube inzwischen nicht mehr, dass es sich lediglich um ein Problem der Entladung handelt.

Vielmehr scheint die Firmware nach Erreichen von 100 % SOC in einen internen Zustand zu wechseln, aus dem sie nicht mehr selbst herauskommt.

Der sichtbare Parameter Scene = Night ist aus meiner Sicht wahrscheinlich nicht die Ursache, sondern lediglich ein Symptom eines tieferliegenden Fehlers in der internen Zustandsmaschine.

Hat das schon jemand beobachtet?

Mich würden insbesondere folgende Punkte interessieren:

  • Zeigt der interne Parameter Scene dann ebenfalls “Night”, obwohl es Tag ist?

  • Wird bei euch der PV Input ebenfalls auf 0 W geregelt?

  • Kennt jemand eine Möglichkeit, diesen Zustand ohne Austausch oder Firmware-Update wieder zu verlassen?

Ich plane aktuell, die komplette BLE-Kommunikation mit einem ESP32-S3 aufzuzeichnen und den Übergang von 99 % auf 100 % SOC detailliert zu analysieren. Vielleicht lässt sich so herausfinden, welcher interne Parameter unmittelbar vor dem Fehler seinen Zustand ändert oder ob sich der Zustand per BLE wieder zurücksetzen lässt, sobald ich die Speicher wieder irgendiwe zum laufen bekommen habe .

Über ähnliche Erfahrungen oder weitere Ideen würde ich mich sehr freuen.

Exakt gleiches Fehlerbild bei mir mit Firmware 116.6 HMJ-2. Exakt selbe Einstellungen wie bei dir.

Aus dem Zustand heraus bekommt man das Gerät mit der Marstek App, wenn man den Punkt “Hardware Reset” nutzt. Dann verliert der Speicher seine Kalibrierung und denkt kurz, er wäre nur 88% geladen, was dazu führt, dass der Wechselrichter wieder mit Spannung versorgt wird. Die “Scene” springt dann auf “Dusk/Dawn” solange der Ausgang mehr Leistung liefert ist als reinkommt. Ist die PV Leistung größer als zum Wechselrichter geht, erreicht der Speicher recht schnell wieder 100% und wieder in diesem Zustand.
Auch ich stimme dir zu, dass es ein Firmwareproblem ist. Ich habe einen Speicher mit Firmware 110.9 HMJ-2 und der macht überhaupt keine Probleme.

Man kommt auch ohne Hardwarereset aus dem Zustand raus.
Habe ich weiter oben vor 2 Monaten schon geschrieben:

Auch tritt das Problem nicht auf, wenn man den Speicher via SmartMeter oder AstraMeter direkt steuern lässt, weil dadurch nicht bei jedem neuem Wert die Konfiguration des Speichers geändert wird.