Einbinden eines Huawei Sun 2000 in die Victron-Umgebung bzw. Venus OS

Hallo PV-Freunde,

ich wollte nur mal eben mein kleine Lösung für das Einbinden eines Huawei Sun-2000 Wechselrichters in den Cerbo GX / Venus OS vorstellen.

Ich habe einen Victron Multiplus II und eine DIY Batterie und ein EM24 zur Strommessung, welche über den Cerbo GX kommunizieren. Der Cerbo ist per Ethernet-Kabel ins Hausnetzwerk eingebunden. Das VRM Portal bietet dafür ja bekannterweise eine schöne Visualisierung an. Soweit Standard. Der Hauptwechselrichter ist ein Huawei Sun 2000-20KTL. Dieser hat bei Auslieferung keine Netzwerkschnittstelle und muss per Dongle erweitert werden - so möchte es der Hersteller.

Mit hat es a.) nicht gefallen, dass ich noch Hardware kaufen muss und b) dass der Wechselrichter im FUSION Portal eingebunden werden sollte. Ich möchte die Kontrolle über das Gerät nicht nach China abgeben.

Meine Lösung ist, den Cerbo GX per Wlan mit dem internen Wifi des Wechselrichters zu verbinden, welches eigentlich nur für die Konfiguration mit der Fusion Solar / SUN2000 App vorgesehen ist. Allerdings erlaubt das interne Wifi mit einer neueren Firmware auch Zugriff auf die Modbus Register. Ich habe einen Treiber geschrieben, welcher die Daten ausliest und per DBUS in der Victronumgebung integriert. Bekannt ist ähnliches das von der serialbattery, mit der die DIY Batterien eingebunden werden.

https://github.com/kcbam/dbus-huaweisun2000-pvinverter

Ich würde mich freuen, wenn ich hiermit anderen helfen kann und vielleicht auch noch Verbesserungsvorschläge gemacht werden.

Viel Spaß damit! :slight_smile: /p>

Christian

3 „Gefällt mir“

@kcbam

Hi,

vielen Dank für die Arbeit und das Teilen des GitHub Repos.

Ich werde mir das zeitnah anschauen, weil ich mir vorhin einen Sun2000-4KTL-L1 in der Bucht geschossen habe. Ich hoffe, dass sich bei dem kleineren, einphasigen ebenfalls Modbus TCP auf dem WLAN Interface aktivieren lässt. Falls nicht, muss ich halt noch eine PE-11H an die RS485-Schnittstelle hängen und es dann probieren.

Der Huawei soll meinen nervigen Kaco Wechselrichter ersetzen, dessen Modbus Interface leider immer nur sehr sporadisch antwortet und ich gezwungen war den entsprechenden Venus OS Service von Modbus auf das HTTP-CSV-Interface umzubauen, da dies relativ zuverlässig antwortet. Relativ, weil der Kaco nach einer gewissen Zeit ohne Enspeisung über keines der Interfaces mehr antwortet bzw. keine Werte mehr ausgibt. In diesem Fall läuft der Service in einen Fehler, der abgefangen wird aber nicht wie bei anderen Services, die als Beispiel dienten, mittels Aufruf von exit() den selbigen beendet, so dass wiederum einen neue Instanz gestartet wird, sondern dass auf den dbus dann halt 0-Werte für Power, Voltage, Current, Temperature und Total Energy geschrieben werden.

@kcbam

Hi,

ich hatte mir am Wochenende den Code angeschaut und finde ihn gut, sehr schön strukturiert.
Darf ich fragen, warum du für die "Power"-Werte der drei Phasen die Enums der Klasse "MeterEquipmentRegister" und nicht die von "InverterEquipmentRegister", so wie Voltage und Current.
Meine Befürchtung wäre, dass die Register unter "MeterEquipmentRegister" nur bei an den SUN2000 angeschlossenem Zähler zur Verfügung stehen und das werde ich so nämlich nicht haben.

Bzgl. deines ToDos "Temperature" werde ich mal ein wenig testen, sobald meine Installation läuft. Für meinen Kaco schreibe ich diese Werte mittels eigenem dbus Service unter com.victronenergy.temperature.

Gruß,
Alex

@wes_winters

Hallo! Tut mir leid, wegen der späten Antwort. Wenn ich nichts übersehen habe, dann steht die Leistung der Phasen nicht im Inverteregister drin. Dann müsste man sie selber ausrechnen. Müsste man mal testen ob die Werte passen.

Ich werde später noch mal die Modbusspezifikation aufschlagen.

VG

@kcbam
Zwischenzeitlich habe ich meinen SUN2k in Betrieb genommen. Allerdings musste ich deinen Service leicht anpassen, weil meiner einphasig ist und aktuell auf L2 einspeist. Somit habe ich Voltage und Current Werte von L1 entsprechend für L2 gesetzt und für die anderen Phasen entsprechend "0"-Werte. Für /Ac/Power und /Ac/L2/Power nehme ich aktuell ActivePower aus InverterEquipmentRegister. Das passt bisher sehr gut zu den Werten bei Grid und AC Loads. Ich werde aber ebenfalls am Wochenende nochmals schauen, ob eine Kalkulation anhand von Spannung, Stromstärke und anderen Faktoren besser geeignet wäre.

Ich Frage die Werte aktuell per Modbus TCP ab, allerdings nicht über das interne WiFi, sondern über einen Protoss PE11-H an der RS485 Schnittstelle.

Vergangenes Wochenende hatte ich das Venus OS meines Multiplus von v2.94 auf v3.12 upgegraded. Leider funktioniert der Service mit dieser Version für mich nicht länger. Er läuft, loggt keine Fehler, schreibt aber keine Werte auf den dbus (geprüft mit dbus-spy). Der Modbus Test mittels des Connector Scripts war ebenfalls erfolgreich. Nachdem ich wieder in die verherige Version gebootet hatte lief es wieder sofort.

Auf welcher Version von Venus OS lässt du denn den Service laufen?

Gruß

@wes_winters

Ja, das ActivePower liefert die gesamte Inverter Leistung. Das kann man bei 1-Phasig natürlich machen. Ich verwende aktuell die Firmware 3.12 und die funktioniert bei mir. Ich hatte auch mit vorherigen Versionen keine Probleme.

Gibt es neue Erkenntnisse?

Gruß

Hey,

habe dein Script installiert, viel Dank dafür!
funktioniert soweit für den PvInverter.
Allerdings fehlt mir noch das Smartmeter für die Rolle „Grid“. Ich wollte dies über Dbus-MQTT-Grid von MrManuel implementieren und das über Nodered mit den Daten aus dem MQTT-Broker füttern. Leider werden im MQTT nur „current“ und „Power“ für die 3 Phasen gepublished (unter Grid). Das sind exakt die gleichen Werte, die für „current“ und „Power“ unter pvinverter gepublished werden, nur invertiert (Grid positiv, pvinverter negativ). Weitere Werte werden nicht gepublished, und die Daten unter „Grid“ sind wie gesagt nicht die vom smartmeter sondern die gleichen wie vom inverter. Ich hab alle Werte per „keepalive abgefragt und mit MQTT Explorer geloggt. Die genannten Werte sind die einzigen die aktualisiert werden.
Ich nutze V3.22 large.

Soll das so sein (works as designed)?

mach ich was falsch?

vielen Dank im Voraus!

@kcbam

Sorry für die extrem späte Antwort. Ich habe eine neuere Version deines Huawei Moduls adaptiert und das funktioniert seither sehr gut, mittlerweile sogar mit 2x dem gleichen einphasigen Huawei jeweils an AC-IN und AC-OUT1.

Hallo an alle die sich mit dem Script auskennen.
Es funktioniert bei mir sehr gut.
Gibt es einen Möglichkeit, auf gleiche Weise einen 2.ten Huawei einzubinden? Z.B. dass man die beschriebenen Punkte zur Installation nochmal, aber mit geänderten Namen macht, damit sich die 2te nicht mit der ersten Installation ins Gehege kommt?

Vielen Dank

hat jemand eine Lösung für folgendes Problem / Fehler ??

kann keine Verbindung (langfristig) aufbauen der meldet immer einen Fehler.
Bzw. jemand eine Idee was ich falsch mache ?
Habe mich eigtl. an die Anleitung gehalten.
Zwar taucht der Sun2000 auf und auch hatte ich mal zwischenzeitlich kurz Werte angezeigt bekommen, aber dann ging wieder alles flöten.
Weil ein Fehler aufgetaucht ist.

@kbcam

Hallo und vielen Dank für die Möglichkeit den Huawei Sun2000 in Venus OS einzubinden.

Auch ich bin auf der Suche nach weiteren Werten, die per ModBus vom Sun 2000 zu Verfügung gestellt werden.

Ich würde gerne die Leistung je Phase vom Smartmeter (Huawei dtsu666 100a) zum Ansteuern eines Shelly pro3

benutzen, der bei 2000 Watt Überschuss je Phase die Elemente des Heizstabes an P1-3 im Warmwasserbereiter freischaltet.

@kbcam

Hallo Christian
Vielen Dank für die zur Verfügungstellung deines Scriptes zum Einbinden eines Huawei Wechselrichters.
Meine Infrastruktur:
Huawei Sun2000 10Kw Wechselrichter inkl. Dongle. Ich habe den Installer Account und Modbus TCP freigeschaltet. IP Adress ist eine 192.168.178.xx, Port ist aber 502.
Die Firmware des Wechselrichter & Dongles ist auf dem aktuellsten Stand.
Venus OS in der Version 3.34 Large auf einem Raspberry Pi3b. Setuphelper und diverse Packages installiert.
JKBMS für den 280Ah Akku mittels "mr-manuel's dbus-serialbattery" integriert.
Einen Shelly 1PM Plus mittels "dbus-shelly-1pm-pvinverter and shelly pm 1 plus multi-instance" von halmand integriert.
Mit diesem Shelly schalte ich, in Abhängigkeit des SOC's eines selbst gebauten 280Ah Lifepo4 Akkus, ein Netzbetriebenes 40A Ladegerät ein. Der Akku dient zusammen mit einem 200W Wechselrichter als USV mit welcher mein IT-Rack versorgt wird.
Um das Einschalten diese Netzgerät zusätzlich noch in Abhängigkeit der vom Huawei Wechselrichters gelieferten Energie zu machen, möchte ich diesen mit deinem Script in's Venus OS integrieren.
Die Installation des Scripts funktioniert grundsätzlich.
Das Überprüfen der Modbus TCP Verbindung zum Huawei mit dem Befehl "python Link entfernt " erscheint folgende Meldung:
INFO:root:Setting /Settings/HuaweiSUN2000/ModbusHost does not exist yet or must be adjusted
INFO:root:Setting /Settings/HuaweiSUN2000/CustomName does not exist yet or must be adjusted
INFO:root:Setting /Settings/Devices/HuaweiSUN2000/ClassAndVrmInstance does not exist yet or must be adjusted
ERROR:pymodbus.client.sync:Connection to (192.168.200.1, 6607) failed: timed out
ERROR:root:Connection to inverter failed
Frage zu Unklarheiten:
Im Punkt 2. deiner Installationsbeschreibung soll die config.py editiert werden ohne das du näher darauf eingehst, was dort editiert werden soll? Was also soll editiert, angepasst oder geändert werden?
Die IP Adress 192.168.200.1 habe ich in der Datei "connector_modbus.py" und "settings.py"gefunden. Leider ändert sich auch nach Anpassen dieser IP auf die IP meines Huawei und dem Port 502 nichts an der Fehlermeldung.
Ein Test mit nmap -p 6607 192.168.178.xx bringt folgendes Resultat:
Starting Nmap 7.93 ( Link entfernt ) at 2024-10-12 14:23 Mitteleuropõische Sommerzeit
Nmap scan report for Huawei2000.wahalupe.ipv64.net (192.168.178.xx)
Host is up (0.0013s latency).
PORT STATE SERVICE
6607/tcp closed unknown
MAC Address: BC:99:30:18:E2:97 (Huawei Technologies)
Nmap done: 1 IP address (1 host up) scanned in 9.32 seconds
Derselbe Test mit dem Port 502 bringt folgendes Resultat:
Starting Nmap 7.93 ( Link entfernt ) at 2024-10-12 14:26 Mitteleuropõische Sommerzeit
Nmap scan report for Huawei2000.wahalupe.ipv64.net (192.168.178.xx)
Host is up (0.00050s latency).
PORT STATE SERVICE
502/tcp open mbap
MAC Address: BC:99:30:18:E2:97 (Huawei Technologies)
Nmap done: 1 IP address (1 host up) scanned in 7.95 seconds
Bei einem Test mit der BOPV.INI ( Link entfernt ) funktioniert der Zugriff via Modbus auch nur mit dem Port 502.
Für eine klärende, konstruktive Information bedanke ich mich bereits jetzt.
Beste Grüsse Peter

Links, Anhänge und Profil erst ab dem Dritten Beitrag:

Links, Programmcode, PN und Anhänge sowie der Zugang zum eigenen Profil sind wegen Spamabwehr für die ersten 3 Posts nicht freigeschaltet.

Lesenswert:

https://www.akkudoktor.net/forum/postid/206307/

Links und Code werden aus dem Beitrag automatisch entfernt, dabei gibt es gelegentlich ganz korrupte Fäden, deren Herstellung uns viel Arbeit macht und nicht ohne Verluste abgeht.

1 „Gefällt mir“

Hallo zusammen,

die Entwicklung des Treibers liegt inzwischen eine Weile zurück und es läuft bei mir bis heute einwandfrei. Ich bekomme hin und wieder Anfragen für Support und Erweiterung des Skripts. An der Stelle muss ich sagen, dass ich leider weder die Zeit habe mich damit länger zu beschäftigen, noch die Hardware um dies zu prüfen. Ich habe eben noch die Info hinzugefügt, dass die Einstellungen in der Remote Console eingestellet werden können.

Gerne stehe ich zur Verfügung, wenn jemand das Skript erweitert, testet und der neuen Code noch in das Repo gemergt werden muss.

Ansonsten freue ich mich, wenn so viele das Skript brauchen konnten :slight_smile:

VG

Christian

Ich hätte den gleichen bedarf! Ich hab noch keine Antwort auf @schweizer72 frage gefunden daher Stelle ich seine Frage jetzt auch nochmal :wink:

Würde meine 18kWp Anlage, welche bereits mit dem Script ausgerüstet ist und prima läuft, weiter aufrüsten und nochmal etwa 5kWp dazu bauen.

Ich würde also gern nen weiteren SUN2000 dazu packen und das Skript auch für diesen WR nutzen.

Hallo, ich hab in der Zwischenzeit für den ersten (alten)Sun2000-15KTL-M0 ein EM24 eingebaut, auch weil für diesen das Script nicht funktioniert. Beim 2ten Sun2000, ein 10KTL-M5 funtionierts einwandfrei.