Marstek BLE Bridge 1.1 bis 1.3: Umbenennen, Deutsch, Reload
Die Versionen 1.1.0 bis 1.3.2 der Marstek BLE Bridge sind keine großen Neuerungen, sondern Dinge, die im Betrieb auffallen: eine zweite Bridge im Haus, ein vergessenes Passwort, ein Seiten-Reload mit leerem Dashboard. Bridge und Weboberfläche werden zusammen veröffentlicht und teilen sich die Versionsnummer.
1.1.0: Umbenennen und Passwort ändern
Eine zweite Bridge wäre per mDNS-Kollisionsbehandlung zu marstek-bridge-2 geworden – und welche der beiden das ist, hinge von der Startreihenfolge ab. Der Name wird deshalb jetzt auf dem Gerät gespeichert und lässt sich auf der Setup-Seite ändern.
Das Passwort konnte bisher genau einmal gesetzt werden; eine Änderung hieß, den Flash per Kabel zu löschen. Nun gibt es dafür eine Karte in der Oberfläche. Die Änderung verlangt das alte Passwort, damit ein vom Netz gelesenes Session-Cookie nicht reicht, um den Besitzer auszusperren. Danach enden alle Sitzungen, auch die, die gerade ändert.
Behoben wurde außerdem ein Connect, der ins Leere lief, wenn die Verbindung zur Bridge im Hintergrund weggebrochen war: Jetzt steht eine Meldung da. Die Kopfleiste, die Gerätename, beide Funkwerte, Status und Button in eine Zeile presste, schob auf dem Handy den Trennen-Button aus dem Bild.
1.2.0: Die Oberfläche spricht Deutsch
Die ganze Oberfläche gibt es jetzt auch auf Deutsch, nicht nur die Beschriftungen, sondern auch Warnungen, Erklärungen unter den Widgets und die Fehlermeldungen der Transportschicht. Die Sprache folgt dem Browser, lässt sich jederzeit umschalten und wird gemerkt.
Deutsche Labels sind etwa die Hälfte länger, und die Gerätedaten-Zeilen hatten keinen Spielraum: Eine Firmware-Version 150 kam als „15“ und „0“ an. Der Wert bricht nun gar nicht mehr um, lange Komposita an einer sinnvollen Stelle. Außerdem hingen beide Release-Buttons am Vergleich der Firmware-Version; ein Firmware-Update nahm so den einzigen Weg, die passende Oberfläche zu holen.
1.3.0 und 1.3.1: Der Reload
Ein Reload der Seite ließ ein Dashboard ohne Daten zurück. Dahinter steckten vier Fehler gleichzeitig:
- Das Relay merkte nur an einem WebSocket-Close-Frame, dass ein Browser weg war. Ein Reload sendet keinen, die Verbindung bricht einfach ab. Der Client blieb für immer in der Liste, der Zähler erreichte nie null. Sitzungen werden jetzt dort verfolgt, wo sie wirklich enden.
- Die Verbindung zum Speicher wird nach dem Weggang des letzten Browsers fünfzehn Sekunden gehalten statt sofort verworfen – ein Reload ist ein Browser, der geht und gleich zurückkommt.
- Eine Verbindung, die zwischenzeitlich niemand beobachtet hat, kommt stumm zurück: Schreibzugriffe werden angenommen, geantwortet wird nichts. Sie wird deshalb vor der Übergabe an den zurückkehrenden Browser neu aufgebaut.
- In der Oberfläche beendete die Poll-Schleife sich, sobald der Transport kurz nicht verbunden war – ohne den nächsten Poll einzuplanen. Ein solcher Moment stoppte das Polling dauerhaft.
Ein Druck auf „Verbinden“ geht außerdem nicht mehr stillschweigend durch. Ein zweiter Connect während eines laufenden gab bisher kommentarlos zurück, was genau dazu verleitet, ihn nochmal zu drücken. Und eine Verbindung, die der Speicher annimmt und innerhalb einer Sekunde wieder kappt, wurde als normales Trennen gemeldet. Beides wird nun benannt. Fehler im Browser gingen zudem unter, weil connect weder abgewartet noch abgefangen wurde. Zuletzt vergleicht die Oberfläche Bridge-Firmware und Weboberfläche getrennt, sodass die Buttons zwischen Installieren und Neu installieren unterscheiden.
1.3.1 ergänzt, dass der aufgefrischte Link erneut versucht wird, wenn der Speicher ihn ablehnt. Er nimmt den Reconnect regelmäßig an, kappt ihn sofort wieder, und der nächste Versuch klappt. Drei Versuche im Abstand von 2,5 Sekunden. Die Meldungen der Bridge tragen außerdem einen Code, damit die Oberfläche sie in ihrer Sprache ausgibt.
1.3.2: Modulzustände mit sieben Packs
Eine Venus D mit sieben Packs antwortet auf die Modulabfrage mit einem Frame von 42 Bytes: sieben Bytes Header und sechs Modul-Einträge – während der Zähler im ersten Byte sieben sagt. Die Antwort wächst nicht über sechs hinaus. Wer dem Zähler traute, las über das Pufferende hinaus, der Parser warf, und die Karte zeigte gar nichts statt der sechs Messwerte, die ankamen. Jetzt werden so viele Einträge gelesen, wie der Frame tatsächlich enthält, und es steht da, wenn der Speicher mehr Module zählt als er meldet.
73 2a 23 42 | 07 7f 01 24 02 b6 0a | de 03 01 42 01 | ...fünf weitere Einträge... | a2
magic len | Header | Modul 1 | | PrüfsummeUpdate
Die Oberfläche bietet neue Versionen selbst an und installiert sie. Von Hand lädt man zuerst marstek-ble-bridge.bin hoch, meldet sich neu an und spielt danach web.bin ein.
Zu den Projekten
-
Marstek BLE Bridge
ESP32-Brücke, die die Bluetooth-LE-Verbindung eines Marstek-Venus-Speichers ins Netzwerk überträgt und die Weboberfläche von Marstek BLE Control selbst ausliefert. Ohne Cloud, ohne App, inklusive Firmware-Updates.
-
Marstek BLE Control
Cloud-freies Bedienfeld für Marstek Venus A, D und E 3.0 im Browser über Web Bluetooth: Betriebsmodus, Leistungsgrenzen, Peak Shaving, lokale API und Firmware-Updates per Bluetooth. Kein Konto, keine App.
Unterstützen
Diese Tools entstehen in meiner Freizeit und bleiben kostenlos, offen und cloud-frei. Wenn dir eins davon einen Nachmittag gespart hat, freue ich mich über einen Kaffee oder ein Stück Pizza.
Kaffee oder PizzaWeitere Beiträge
- Rollladen-Steuerung pro Raum: Taster, Fenster, Kälte und Regen Eine Automation pro Raum, die Taster, Fensterkontakt, Kälte, Regen und die Zeit vor Sonnenaufgang zusammenführt. Zwei Merker-Helfer verhindern, dass sich die Auslöser gegenseitig überfahren.
- Stromausfall erkennen und Geräte wiederherstellen in Home Assistant Nach einem Stromausfall booten Lampen und Steckdosen in zufälligen Zuständen. Drei Erkennungswege, ein gemeinsames Script und ein Wiederherstellungsfenster bringen alles wieder in den gewünschten Zustand.
- Rauchmelder löst aus: Alle Rollläden fahren hoch (Home Assistant) Bei Rauchalarm sollen die Rollläden im ganzen Haus hochfahren, damit Fenster als Fluchtweg frei sind. Die Automation ist kurz – aber ein fehlendes „from“ im Trigger entscheidet darüber, ob sie im Ernstfall überhaupt feuert.