Aus "purer Not" heraus
habe ich dieses Projektchen gestartet, direkt zur vollständigen deutschen Beschreibung
VE.Direct Aggregator — Kurzübersicht
Firmware · Arduino Mega 2560 / Teensy 4.1 · v1.6 · 2026, Kurzform von claude.ai
Ü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 PID + SER# identifiziert. Nicht direkt kompatibel mit Cerbo GX / Venus GX.
Fertige Blöcke werden sofort in eine zirkuläre TX-Queue (12 Slots) eingereiht — kein Block geht durch Sendedruck verloren, auch bei gleichzeitigen Blöcken oder Upstream-Bursts.
Firmware-Varianten
| Datei | Hardware | Eingänge | Ausgang | Funktion |
|---|---|---|---|---|
vedirect_readtext.ino |
Mega 2560 | 3 | TX0 / USB | Text-Aggregation |
vedirect_readtext_sendhex.ino |
Mega 2560 | 3 | TX0 / USB | Text + SET + HEX |
vedirect_readtext_teensy41.ino |
Teensy 4.1 | 7 | TX8 / USB | Text-Aggregation |
vedirect_readtext_sendhex_teensy41.ino |
Teensy 4.1 | 7 | TX8 / USB | Text + SET + HEX |
Ausgabeformat
Blockende: Checksum\t-Zeile — kein doppeltes \n. Nächster Block folgt sofort. ALIVE-Signal (ALIVE\r\n) nach 10s Inaktivität wenn Queue leer.
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 <pid> <watt>\n einzelnen MPPT-Regler begrenzen
SET ALL <watt>\n alle MPPT-Regler gleichzeitig
HEX <pid> <string>\n beliebigen HEX-Befehl senden
Antworten: OK <pid> <watt>W <ampere>A\n / ERR <pid> timeout\n / HEX_REPLY <pid> :<antwort>\n
Register 0x2015 (Charge Current Limit, 0.1A, volatil). Vbat wird aus dem Text-Stream gelernt, Fallback: VBAT_FALLBACK (24V). Nur betroffener Port pausiert (~50–100 ms).
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 |
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/ttyUSB0') as vd:
data = vd.get_all() # {'PID: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)
Die Integration in GitHub - E-t0m/zeroinput: Set power input to zero with gti inverter and charge controller. · GitHub ist obligatorisch. ![]()