Victron
Übersicht
Die Familie der Solarlade und -speichergeräte von Victron verwenden verschiedene Bussysteme, um untereinander zu kommunizieren. Sehr angenehm ist, daß die zentrale Steuerung namens Venus (Victron ENergy Unix System :-) frei verfügbar ist, und gern auf einem RaspberryPi läuft. Integriert ist gleich ein MQTT Server (mit und ohne SSL), der die Meßwerte der angeschlossenen Geräte - und das sind viele - per MQTT anbietet.
Victron ist generell gut dokumentiert: https://www.victronenergy.com/support-and-downloads/technical-information
Einbindung in fhem als MQTT2_DEVICE
Über MQTT2_CLIENT wird zunächst die Verbindung zum Broker auf dem Victron Venus Gerät angelegt. (Hier ist die IP noch anzupasssen.)
defmod venus MQTT2_CLIENT 10.1.x.x:1883 attr venus autocreate complex attr venus clientOrder MQTT_GENERIC_BRIDGE MQTT2_DEVICE attr venus room MQTT2_DEVICE attr venus verbose 4
Das Wechselrichter wird dann als MQTT2_DEVICE angelegt:
defmod MQTT2_mp2 MQTT2_DEVICE venus attr MQTT2_mp2 IODev venus
Aufbau der Topics von Victron
Jede Installation Venus gibt sich eine vrm_ID, die initial aus der Hardwareadresse abgeleitet wird. Über diese ID wird die Installation auf dem Victron VRM Portal erkannt. In den Beispielen unten taucht sie als <vrm_ID> auf. Die einzelnen Geräte einer Installation erhalten Nummern, die eine Unterscheidung auch mehrerer Wechselrichter (etwa im 3-Phasenbetrieb) oder mehrerer Solarlader ermöglichen.
Nach Verbindung erscheint eine umfangreiche readingList, aus der hier nur einige Elemente verwendet werden.
- system - Konfiguration des Gesamtsystems bzw. konsolidierte Werte
- solarcharger - MPPT-DC-Lader, Anschluß VE-Direct (seriell, baut auf RS-485) , Wartung per Bluetooth und App
- grid - Stromzähler , Anschluß über RS-485 / wahlweise Ethernet
- vebus - Wechselrichter, Anschluß über Cat5, serielles Protokoll
N/<vrm_ID>/system/0/Batteries:.* { json2nameValue($EVENT, 'Batteries_', $JSONMAP) } N/<vrm_ID>/solarcharger/290/Yield/Power:.* { json2nameValue($EVENT, 'PVPower_', $JSONMAP) } N/<vrm_ID>/grid/30/Ac/Power:.* { json2nameValue($EVENT, 'GridPower_', $JSONMAP) } N/<vrm_ID>/vebus/288/Ac/Out/P:.* { json2nameValue($EVENT, 'P_', $JSONMAP) } N/<vrm_ID>/system/0/SystemState/State:.* { json2nameValue($EVENT, 'State_', $JSONMAP) } N/<vrm_ID>/vebus/288/Mode:.* { json2nameValue($EVENT, 'Mode_', $JSONMAP) }
Topics zum Schreiben
Einige Enstellungen sind schreibbar. Die entsprechenden Topics beginnen mit einem W. Eine setList kann beispielsweise so aussehen und erlaubt dann
- An- und Abschalten
- Inverter- und Charger Mode
- Mode: Betriebszustand
- CurrentLimit: max. Strom aus/in das Netz
- MinimumSocLimit: Entladegranze im ESS (Speicher-)Betrieb, solange das Netz anliegt
- Relay[0|1]: Schalte interne Relais
Eine einfache Setlist:
off W/<vrm_ID>/vebus/288/Mode {"value":4} on W/<vrm_ID>/vebus/288/Mode {"value":3} inv W/<vrm_ID>/vebus/288/Mode {"value":2} chg W/<vrm_ID>/vebus/288/Mode {"value":1} Mode W/<vrm_ID>/vebus/288/Mode {"value":$EVTPART1} GridCurrentLimit W/<vrm_ID>/vebus/288/Ac/In/1/CurrentLimit {"value":$EVTPART1} MinSOC W/<vrm_ID>/settings/0/Settings/CGwacs/BatteryLife/MinimumSocLimit {"value":$EVTPART1} Relay0 W/vrm_ID/system/0/Relay/0/State:.* {"value":$EVTPART1} Relay1 W/vrm_ID/system/0/Relay/1/State:.* {"value":$EVTPART1}
Visualisierung
stateFormat kann so aussehen:
SSOC Batteries_value_1_soc, SOC: Batteries_value_1_soc % (MinimumSocLimit_value), Bat: Batteries_value_1_power W, PV: PVPower_value W, ACin: GridPower_value W, ACout2: P_value W, State: State_value, Mode: Mode_value
SSOC wird später für das devStateIcon genutzt.
Das devStateIcon bietet einen ersten Blick auf den Ladestand:
SSOC\s[2|3|4].+:measure_battery_25 SSOC\s[5|6].+:measure_battery_50 SSOC\s[7|8].+:measure_battery_75 SSOC\s[9].+:measure_battery_100
Derzeit existiert noch kein Template, aber das kann sich ja ändern.