Aus "purer Not" heraus
habe ich dieses Projektchen gestartet, direkt zur vollständigen deutschen Beschreibung
VE.Direct Aggregator — Kurzübersicht von claude.ai
Firmware · Arduino Mega 2560 / Teensy 4.1 · v2.0 · 2026
Überblick
Liest mehrere Victron VE.Direct-Geräte gleichzeitig und führt die Datenströme zu einem seriellen Ausgang zusammen. Unterstützt alle VE.Direct-Textgeräte: MPPT, BMV, SmartShunt, Phoenix-Wechselrichter, Blue Smart Charger, Orion.
Ausgang: normaler VE.Direct-Textstrom. Geräte werden per SER# identifiziert. Nicht direkt kompatibel mit Cerbo GX / Venus GX -- aber mit vedirect_deaggregator.py nutzbar.
Topologien
Direkt (Mega): 3 Geräte → 1 Mega → Ausgang
Direkt (Teensy): 7 Geräte → 1 Teensy → Ausgang
Stern: 9 Geräte → 3 Mega → 1 Mega → Ausgang
Kaskade: 12 Geräte → 4 Mega → Ausgang (115200 Baud)
Gemischt: 13 Geräte → 1 Teensy + 2 Mega → 1 Mega → Ausgang (115200 Baud)
Teensy-Stern: 21 Geräte → 3 Teensy → 1 Teensy → Ausgang (115200 Baud)
Leistungssteuerung (readtext_sendhex)
SET <ser> <watt>\n einzelnen MPPT-Regler begrenzen
SET ALL <watt>\n alle MPPT-Regler gleichzeitig
HEX <ser> <string>\n beliebigen HEX-Befehl senden
Antworten: OK <ser> <watt>W <ampere>A\n / ERR <ser> timeout\n / HEX_REPLY <ser> :<antwort>\n
Register 0x2015 (Charge Current Limit, 0.1A, volatil). Vbat wird aus dem Text-Stream gelernt, Fallback: VBAT_FALLBACK (24V). Routing per SER# — unterscheidet Geräte mit gleicher PID korrekt. Nur betroffener Port pausiert; andere Ports werden während wait_hex_reply kontinuierlich geleert (kein Buffer-Overflow). hex_busy wird in allen Pfaden zurückgesetzt.
Hardware
| Mega 2560 | Teensy 4.1 | |
|---|---|---|
| Logikpegel | 5V | 3.3V |
| Pegelwandler | keiner | BSS138 pro RX (+ TX bei sendhex) |
| Max. Eingänge | 3 | 7 |
| Versorgung | extern 5V, min. 150 mA | extern 5V, min. 150 mA |
| USB + extern | gleichzeitig möglich | gleichzeitig möglich |
Python-Tools
| Datei | Zweck |
|---|---|
ve_aggregator.py |
Client-Modul — Blöcke lesen, SET/HEX senden |
mppt_read_example.py |
Daten anzeigen mit Intervall pro Gerät |
block_monitor.py |
Block-Timing, Gap-Messung pro Gerät |
sendhex_test.py |
SET/HEX Befehle testen |
powerset_example.py |
Leistungsregelung mit Spannungsrampe |
vedirect_simulator.py |
Upstream-Aggregator simulieren |
from ve_aggregator import VEDirect
with VEDirect('/dev/ttyACM3') as vd:
data = vd.get_all() # {'SER#': {Felder...}}
c = vd.combined() # Vbat gemittelt, PPV/I summiert
alive = vd.is_alive() # True wenn MCU innerhalb 15s gemeldet
vd.set_watts('ALL', 1500) # Leistung begrenzen (sendhex)
for r in vd.get_replies():
print(r)
De-Aggregation und Venus OS / Cerbo GX
Der aggregierte Stream kann mit vedirect_deaggregator.py wieder in einzelne
virtuelle serielle Ports aufgeteilt werden. Jeder MPPT erscheint als eigener
/dev/pts/N Port, den Venus OS und Cerbo GX als eigenständiges VE.Direct-Gerät
einbinden können.
Siehe deaggregator_spec_de.md für die Einrichtung.
Die Integration in GitHub - E-t0m/zeroinput: Set power input to zero with gti inverter and charge controller. · GitHub ist obligatorisch. ![]()