Open-Source ESP32-Bibliothek für VE.Bus RS485 — Multiplus direkt steuern ohne Cerbo GX

Hallo zusammen,

ich möchte eine Open-Source Arduino/PlatformIO-Bibliothek teilen, die ich für die direkte Kommunikation mit einem Victron Multiplus über VE.Bus RS485 per ESP32 geschrieben habe.

GitHub: https://github.com/mkrasselt1/ve.bus-library
PlatformIO Registry: nach “VEBus” suchen — Installation mit pio pkg install -l VEBus

Warum ich das gebaut habe

Wir haben einen Multiplus im Wohnmobil und ich wollte mir bewusst kein Cerbo GX einbauen. Für unseren Anwendungsfall ist das Cerbo schlicht oversized — zu groß, zu komplex, zu teuer. Alles was ich brauche ist:

  1. Eine eigene, kompakte Bedienoberfläche — ein kleines E-Ink-Display mit Tasten, verbaut im Wohnmobil. Zeigt Batteriespannung, AC-Leistung, Inverter-Status an und steuert Sleep / Wake. Kein Touchscreen, keine App, kein GX-Gerät nötig.

  2. Einbindung als Heimspeicher — wenn das Wohnmobil zu Hause steht, wird der Multiplus mit seiner Batterie zum zusätzlichen Speicher in unserem Heim-ESS. Der ESP32 empfängt Sollwerte per MQTT und steuert den Multiplus entsprechend.

Ein ESP32-Board für ~12 EUR ersetzt für diesen Zweck ein Cerbo GX für mehrere hundert Euro — bei einem Bruchteil der Baugröße.

Bestehende Projekte (insbesondere PepeTheFroggies hervorragende ESS-Firmware) haben mir den Einstieg ermöglicht, aber ich brauchte etwas, das ich als Bibliothek in meine eigene Anwendung einbinden kann, statt eine komplette Firmware zu forken. Deshalb habe ich die Protokollschicht in eine saubere, wiederverwendbare PlatformIO-Bibliothek extrahiert.

Was die Bibliothek kann

  • Interner FreeRTOS-Task übernimmt das gesamte RS485-Timing und die Synchronisation — der eigene Code ruft nur einfache Funktionen auf

  • ESS-Leistungsvorgabe — Multiplus auf einen bestimmten Watt-Wert zum Einspeisen oder Laden setzen

  • Sleep / Wake-Befehle

  • Rückmeldung: Batteriespannung, AC-Leistung, DC-Strom, Temperatur, LED-Status, Ladezustand, AC-Eingangsstrom-Limits

  • Thread-sichere Queue-Architektur — setESSPower() kann von jedem Core oder Task aufgerufen werden

  • Auto-Direction-Unterstützung für den MAX13487E-Transceiver (LilyGo T-CAN485 — kein DE-Pin nötig)

Hardware

Ich nutze ein LilyGo T-CAN485-Board (~12 EUR), das ESP32 + RS485-Transceiver on-board hat. Drei Drähte zum VE.Bus RJ45-Port des Multiplus (Data+, Data-, GND) und man spricht VE.Bus.

Ein Hinweis: Das T-CAN485 hat Filterkondensatoren und eine Gleichtaktdrossel auf den RS485-Leitungen, die für typische Modbus-Geschwindigkeiten ausgelegt sind. VE.Bus läuft mit 256000 Baud, daher müssen die drei Widerstände nach dem Transciever entfernet werden.

Mitgelieferte Beispiele

  1. Basic ESS — Serielle Konsole mit ESS-Setpoint-Steuerung, automatischem Wakeup bei Sync-Verlust und Statusausgabe. Guter Ausgangspunkt für eigene UIs.

  2. MQTT + Home Assistant — Veröffentlicht alle Multiplus-Daten als HA-Sensoren mit Auto-Discovery und stellt ESS-Leistung als steuerbares Number-Entity sowie Sleep/Wake-Buttons bereit. Das nutze ich für die Heim-ESS-Einbindung.

Code-Beispiel

#include <VEBus.h>

VEBus vebus;

void setup() {
    pinMode(19, OUTPUT);
    digitalWrite(19, HIGH);       // Transceiver aktivieren
    vebus.begin(21, 22, 17);     // RX, TX, /RE
}

void loop() {
    vebus.setESSPower(300);       // 300 W aus Batterie Richtung Netz einspeisen
    vebus.requestReadRAM();

    if (vebus.hasNewData()) {
        vebus.clearNewData();
        Serial.printf("Bat: %.2f V  AC: %d W\n",
                      vebus.getBatVolt(), vebus.getACPower());
    }
    delay(5000);
}

Credits

Die Protokoll-Implementierung basiert auf PepeTheFroggies Victron-VE.Bus—esp32. Wer eine komplette, fertige ESS-Steuerung mit WiFi-Dashboard und Shelly-Anbindung braucht, sollte sich das anschauen. Diese Bibliothek hier ist für Leute, die ihre eigene Anwendung darauf aufbauen wollen.

Fragen und Feature Requests gerne hier oder auf GitHub. Pull Requests willkommen!

Auch interessant: Mini-Balkonkraftwerk-Speicher

Das Ganze eignet sich natürlich nicht nur fürs Wohnmobil oder als Heim-ESS-Erweiterung. Wer einen Multiplus (oder Multiplus II) rumliegen hat, kann damit auch einen kompakten Balkonkraftwerk-Speicher bauen. Dafür braucht man zusätzlich nur:

  • Einen MPPT-Laderegler für die Solarpanels, oder

  • Einen Stromzähler (z.B. Shelly EM, Tasmota-Lesekopf am Smartmeter), der den aktuellen Netzbezug misst und die ESS-Sollwerte per MQTT an den ESP32 schickt

Der ESP32 steuert dann den Multiplus so, dass er genau die richtige Leistung ein- oder ausspeist — Nulleinspeisung oder gezieltes Laden, ganz wie man will. Und das alles ohne GX-Gerät, ohne Venus OS, ohne Cloud. Nur ein 12-EUR-Board, drei Drähte und ein paar Zeilen Code.

Besonders spannend: der Multiplus 12/800 oder 48/800. Mit 800 VA Dauerleistung liegt der genau auf der in Deutschland geltenden 800-Watt-Bagatellgrenze für vereinfachte Anmeldung von Balkonkraftwerken. Man braucht also keinen Elektriker und keine aufwändige Anmeldung beim Netzbetreiber — einfach anmelden über das vereinfachte Verfahren und loslegen. Dazu sind die 800er-Multiplus gebraucht oft günstig zu bekommen, kompakt, und für diesen Zweck völlig ausreichend. In Kombination mit einer kleinen 12V- oder 48V-Batterie, einem MPPT-Regler und diesem Library hat man einen vollwertigen DIY-Balkonkraftwerk-Speicher zum Bruchteil der Kosten einer kommerziellen Lösung.

Die kleinen Multis haben dafür aber nicht die nötige Zulassung/Zertifikate (NA-Schutz).

Aus dem gleichen Grund, und durch die Anbindung per SchuKo-Stecker, ist auch die Nutzung des WoMo zur Erweiterung des ESS im Haus nicht zulässig.

Also ich weiß nicht wie das bei uns ist aber unser wohnmobil ist über cee16 angesteckt.

Und okay - dann muss man noch einen dieser schuko na schütze für die Balkon Wechselrichter davor machen. Ich werde den Hinweis ergänzen