Solarbatterieen von Marstek mit MQTT steuern

Begonnen von AlexMuc, 05 Juni 2025, 14:15:09

Vorheriges Thema - Nächstes Thema

pldemon

#30
Hallo,

Venus E unterstützt kein MQTT von Hause aus. Du musst deshalb wie volschin schrieb hame-relay installieren, welches die MQTT-Messages des Clients an die Cloud (diese muss eingeschaltet sein) an einen lokalen MQTT-Broker umleitet. Danach wird die Information mittels hm2mqtt als JSON nach Home Assistant geschleift. Das war als ich es getestet habe für mich nicht ausreichend und zu wacklig.

Ab hier wird es OT;
Ich habe mich deshalb für die Modbus-Lösung entschieden, die es ermöglicht schneller an die Daten zu kommen und damit das Gerät direkt von Fhem aus zu kontrollieren. Zudem lieferte die Schnittstelle erheblich mehr Daten und hat erheblich mehr Einstellmöglichkeiten.

Die Kontrolle ist leider notwendig, wenn du mehr als eine Batterie einsetzen willst, da sie nicht miteinander kommunizieren können und sich unter Umständen gegenseitig "leersaugen". In diesem Fall setzt du eine der Batterien in den KI-, Eigenverbrauch oder den manuellen Modus und steuerst so das Verhalten der Batterien. Das funktioniert relativ gut und man kann damit problemlos auch auf Lastspitzen reagieren:

Du darfst diesen Dateianhang nicht ansehen.

Hier eine kurze Anleitung, falls es dich interessiert, wie ich den Speicher eingebunden habe:

1.) Modbus-Adapter wie ELFIN-EW11 (Kostenpunkt ca. 10Euro bei Aliexpress)
https://de.aliexpress.com/item/1005003568862367.html

2.) Adapter mit Venus E verdrahten wie hier beispielsweise beschrieben:
https://gathering.tweakers.net/forum/list_messages/2282240

3.) ELFIN-EW11 konfigurieren:
Serial Port
Baud Rate: 115200
Data Bit: 8
Stop Bit: 1
Parity: None
Flow Control: None
Protocol: Modbus

Communication
Protocol: Tcp Server
Local Port: 502
Security: Disable
Route: Uart

4.) Verbindung testen und beispielsweise den Ladestand abfragen:
https://github.com/favalex/modbus-cli
modbus -s 1 IP_ADDR_DES_ELFIN 32104
Return:
Parsed 0 registers definitions from 1 files
32104: 20 0x14

5.) Funktioniert diese Abfrage, kann man den kompletten Speicher in Fhem konfigurieren und steuern:

Du darfst diesen Dateianhang nicht ansehen.

Hier eine Definition für Fhem:
define VenusE ModbusAttr 1 10 IP_ADDR_DES_ELFIN:502 TCP
attr VenusE dev-h-combine 2
attr VenusE dev-h-defLen 1
attr VenusE dev-h-defPoll 1
attr VenusE obj-h32104-expr $val
attr VenusE obj-h32104-polldelay 30
attr VenusE obj-h32104-reading battery_soc
attr VenusE obj-h32104-type unsigned short big
attr VenusE obj-h32105-expr $val/10
attr VenusE obj-h32105-polldelay 3600
attr VenusE obj-h32105-reading battery_total_energy
attr VenusE obj-h32105-type unsigned short big
attr VenusE obj-h32200-expr $val/10
attr VenusE obj-h32200-polldelay 60
attr VenusE obj-h32200-reading ac_voltage
attr VenusE obj-h32200-type unsigned short big
attr VenusE obj-h32201-expr $val/100
attr VenusE obj-h32201-polldelay 60
attr VenusE obj-h32201-reading ac_current
attr VenusE obj-h32201-type signed short big
attr VenusE obj-h32202-reading ac_power
attr VenusE obj-h32202-type signed long big
attr VenusE obj-h33000-expr $val/100
attr VenusE obj-h33000-polldelay 1800
attr VenusE obj-h33000-reading total_charging_energy
attr VenusE obj-h33000-type unsigned long big
attr VenusE obj-h33002-expr $val/100
attr VenusE obj-h33002-polldelay 1800
attr VenusE obj-h33002-reading total_discharging_energy
attr VenusE obj-h33002-type unsigned long big
attr VenusE obj-h35000-expr $val/10
attr VenusE obj-h35000-polldelay 60
attr VenusE obj-h35000-reading temperature_internal
attr VenusE obj-h35000-type signed short big
attr VenusE obj-h35100-map 0:sleep,1:standby,2:charge,3:discharge,4:backup,5:upgrade,6:unknown
attr VenusE obj-h35100-reading inverter_state
attr VenusE obj-h35100-type unsigned short big
attr VenusE obj-h41200-expr $val == 1 ? "off" : "on"
attr VenusE obj-h41200-hint off,on
attr VenusE obj-h41200-polldelay 60
attr VenusE obj-h41200-reading battery_backup_mode
attr VenusE obj-h41200-set 1
attr VenusE obj-h41200-setexpr $val eq "off" ? 1 : 0
attr VenusE obj-h41200-textArg 1
attr VenusE obj-h41200-type unsigned short big
attr VenusE obj-h42000-expr $val == 21947 ? "off" : "on"
attr VenusE obj-h42000-hint off,on
attr VenusE obj-h42000-polldelay 60
attr VenusE obj-h42000-reading battery_rs485_control_mode
attr VenusE obj-h42000-set 1
attr VenusE obj-h42000-setexpr $val eq "off" ? 21947 : 21930
attr VenusE obj-h42000-textArg 1
attr VenusE obj-h42000-type unsigned short big
attr VenusE obj-h42010-polldelay 60
attr VenusE obj-h42010-reading battery_force_charge_discharge_mode
attr VenusE obj-h42010-set 1
attr VenusE obj-h42010-type unsigned short big
attr VenusE obj-h42020-polldelay 60
attr VenusE obj-h42020-reading battery_forcible_charge_power
attr VenusE obj-h42020-set 1
attr VenusE obj-h42020-type unsigned short big
attr VenusE obj-h42021-polldelay 60
attr VenusE obj-h42021-reading battery_forcible_discharge_power
attr VenusE obj-h42021-set 1
attr VenusE obj-h42021-type unsigned short big
attr VenusE obj-h43000-hint manual,dynamic,sale
attr VenusE obj-h43000-map 0:manual,1:dynamic,2:sale
attr VenusE obj-h43000-polldelay 30
attr VenusE obj-h43000-reading work_mode
attr VenusE obj-h43000-set 1
attr VenusE obj-h43000-type signed short big
attr VenusE obj-h43100-polldelay 3600
attr VenusE obj-h43100-reading manual_day1_week_days
attr VenusE obj-h43100-set 1
attr VenusE obj-h43100-type unsigned short big
attr VenusE obj-h43101-polldelay 3600
attr VenusE obj-h43101-reading manual_day1_start_time
attr VenusE obj-h43101-set 1
attr VenusE obj-h43101-type unsigned short big
attr VenusE obj-h43102-polldelay 3600
attr VenusE obj-h43102-reading manual_day1_stop_time
attr VenusE obj-h43102-set 1
attr VenusE obj-h43102-type unsigned short big
attr VenusE obj-h43103-polldelay 3600
attr VenusE obj-h43103-reading manual_day1_power
attr VenusE obj-h43103-set 1
attr VenusE obj-h43103-type signed short big
attr VenusE obj-h43104-hint off,on
attr VenusE obj-h43104-map 0:off,1:on
attr VenusE obj-h43104-polldelay 3600
attr VenusE obj-h43104-reading manual_day1_enable
attr VenusE obj-h43104-set 1
attr VenusE obj-h43104-type unsigned short big
attr VenusE obj-h43105-polldelay 3600
attr VenusE obj-h43105-reading manual_day2_week_days
attr VenusE obj-h43105-set 1
attr VenusE obj-h43105-type unsigned short big
attr VenusE obj-h43106-polldelay 3600
attr VenusE obj-h43106-reading manual_day2_start_time
attr VenusE obj-h43106-set 1
attr VenusE obj-h43106-type unsigned short big
attr VenusE obj-h43107-polldelay 3600
attr VenusE obj-h43107-reading manual_day2_stop_time
attr VenusE obj-h43107-set 1
attr VenusE obj-h43107-type unsigned short big
attr VenusE obj-h43108-polldelay 3600
attr VenusE obj-h43108-reading manual_day2_power
attr VenusE obj-h43108-set 1
attr VenusE obj-h43108-type signed short big
attr VenusE obj-h43109-hint off,on
attr VenusE obj-h43109-map 0:off,1:on
attr VenusE obj-h43109-polldelay 3600
attr VenusE obj-h43109-reading manual_day2_enable
attr VenusE obj-h43109-set 1
attr VenusE obj-h43109-type unsigned short big
attr VenusE obj-h44000-expr $val/10
attr VenusE obj-h44000-polldelay 300
attr VenusE obj-h44000-reading battery_charging_cutoff_capacity
attr VenusE obj-h44000-set 1
attr VenusE obj-h44000-setexpr $val*10
attr VenusE obj-h44000-type unsigned short big
attr VenusE obj-h44001-expr $val/10
attr VenusE obj-h44001-polldelay 300
attr VenusE obj-h44001-reading battery_discharging_cutoff_capacity
attr VenusE obj-h44001-set 1
attr VenusE obj-h44001-setexpr $val*10
attr VenusE obj-h44001-type unsigned short big
attr VenusE obj-h44002-polldelay 30
attr VenusE obj-h44002-reading max_charge_power
attr VenusE obj-h44002-set 1
attr VenusE obj-h44002-type unsigned short big
attr VenusE obj-h44003-polldelay 30
attr VenusE obj-h44003-reading max_discharge_power
attr VenusE obj-h44003-set 1
attr VenusE obj-h44003-type unsigned short big

Gruß,
Mirko


joachimS

Danke Mirko,
habe von der Modbus Integration gelesen.
Ja, ist interessant, speziell wenn man mehr als eine Venus E hat, was ich mir für 2026 überlege. Allerdings ist die Alternative DC am Wechselrichter wegen der geringeren Verluste.
Mich interessiert aber auch die Tibber KI. Marstek hat heute einen Fix für das 15m Interval geliefert, aber ich vermute einige SChwächen bleiben, speziell dass die Venus E mit dem Entladen nicht wartet bis die Verluste geringer als die Preis Differenz sind und auch mehrmals am Tag laden.
Die Logik für bessere Tibber Integration würde mich interessieren.
Übrigens, die Einheiten in deinem Screenshot, sollten die nicht kW sein?

LG
Joachim
Gruss
Joachim

(fhem auf Synology DS209, CUL, FS20, FHT, EM, HM, Keymatic, Hue, OpenDTU)