question

splecner avatar image
splecner asked

Huawei Wechselrichter Modbus TCP einbinden

Hallo,

Ich habe einen Huawei Sun2000 8ktl-m1 wechselrichter und einen Multiplus 2 mit Venus os auf einem raspi und einem shelly 3em.

Da Huawei ja mit dem neuen Updates den Modbus TCP freigeschalten hat müsste es doch jetzt möglich sein diese Wechselrichter, genau so wie z.b. fronius, in das Victron System einzubinden oder?

Ist es mit node red möglich einen Inverter zu generieren den man dann in die victron oberfläche einbaut?

Ich bin da leider noch nicht sehr begabt, versuche mich da aber gerade etwas zu bilden.


Vielleicht kann die Community da ja gemeinsam was Basteln.


Gruß der Neue

Modbus TCP
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

21 Answers
s-i-t avatar image
s-i-t answered ·

gibt´s diesbezüglich schon neues?

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Sven Bluege avatar image
Sven Bluege answered ·

Ich habe am Wochenende ein wenig gebaut. Resultat: der Cerbo kann jetzt das EnergyMeter und den PVInverter sehen. Damit ist auch ESS ohne extra Shelly 3EM möglich.

Nachteil: der Modbus TCP-Endpoint von Huawei ist sehr langsam und antwortet nicht zuverlässig. Damit sind die Messwerte vom Zähler nur auf ~2-5 Sekunden genau. Ich teste das jetzt und schaue, ob man doch noch den Shelly 3EM wieder installieren muss.

Wie funktioniert es?

Ich habe https://github.com/RalfZim/venus.dbus-fronius-smartmeter als Ausgang für einen Service benutzt, mit https://github.com/olivergregorius/sun2000_modbus die Daten geholt und mit von https://github.com/fabian-lauer/dbus-shelly-3em-smartmeter abgeschaut, wie man den PVInverter sichtbar macht. Es kann nur eine Verbindung zum Modbus-Interface gleichzeitig geben, daher laufen Inverter und SmartMeter in einem Service.

Fazit: es geht! Der Code ist gruselig, daher kein öffentliches Repo.

2 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

sunnysingh84 avatar image sunnysingh84 commented ·

Hi, I would love to understand how you get the Cerbo to read and report the Huawei Energy Meter, have you got it reporting as grid meter?


To date I have installed the @kcbam dbus driver which is amazing and am able to see Huawei inverter output but need grid stats to complete ESS. I was thinking about using the Multiplus-II CT clamp but I feel Huawei Energy Meter would be a cleaner install.

0 Likes 0 ·
Sven Bluege avatar image Sven Bluege sunnysingh84 commented ·
Yes, I got the Huawei Smartmeter as a grid meter into the Cerbo. But it is pretty slow.


The idea is simple, I power two devices with one service. The published script on this page can read the solar inverter. I did the same but created a second instance for the bus and feed the smart meter data to it. The opendtu or shelly 3em script is a good source for example code. So my service is a combination of the inverter and the smart meter. This is because only one device can connect to the modbus port and I wanted to avoid conflicts caused by two services.

Today I use the new Victron energy meter and got rid of this self-build solution... and is very fast.

0 Likes 0 ·
kcbam avatar image
kcbam answered ·

Hallo,

ich hab da mal was zusammen gebastelt. Es funktioniert so einigermaßen, bis auf Kleinigkeiten. Die Dokumentation ist doch leider sehr lückenhaft.

Es kann aber gerne verwendet und verbessert werden! :)

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

Viele Grüße

3 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Sven Bluege avatar image Sven Bluege commented ·

@kcbam Nice! Wie oft bekommst Du mit dem Adapter neue Verbrauchswerte? Ich konnte via ModbusTCP nur alle 5s-10s frische Werte bekommen. Das ist für das Auslesen des SmartMeters etwas langsam.

0 Likes 0 ·
sunnysingh84 avatar image sunnysingh84 Sven Bluege commented ·
I'm using a modbus-proxy addon in Home Assistant and polling every second without issue


Note - my proxy is connecting to the huawei inverter via the local ip 192.168.1.x , in future im looking to explore fetching data via the huawei inverter ap 192.168.200.1 or even better may attempt to read data via the rs485 pins.

0 Likes 0 ·
sunnysingh84 avatar image sunnysingh84 commented ·
Amazing work!
0 Likes 0 ·
mich-ael avatar image
mich-ael answered ·

Hallo,


Vielen Dank das du dir die Mühe gemacht hast etwas für die Huawei Nutzer unter uns zu machen.

Ich habe dein Tool gestern installiert, komme aber nicht soweit das Daten per Modbus übertragen werden.

Vielleicht hast du einen Hinweis den ich berücksichtigen muss??

Ich bekomme die Info das die Verbindung erfolgreich hergestellt wurde, aber es kommen keine Datenpakete an.

Per Node Red kann ich die Daten per Modbus vom Huawei auslesen.


Zu meinem Setup:

Huawei Sun 2000-20KTL-M5

Huawei WLAN FE Dongle

Cerbo GX

Verbindung per LAN, keine Möglichkeit für Wlan am Huawei


Gruß Michael

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

kcbam avatar image
kcbam answered ·

Hallo,

sorry ich hab deinen Beitrag gerade erst gesehen. Hast du zum Testen die connector datei ausgeführt?

python /data/dbus-huaweisun2000-pvinverter/connector_modbus.py
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

mich-ael avatar image
mich-ael answered ·

Hallo,

ich habe mittlerweile einiges ausprobiert, aber ganz läuft das ganze noch nicht.

Im Vergleich zu meinem ersten Setup wo ich die Verbindung über den Dongle/Lan aufbauen wollte, habe ich jetzt das interne Wlan vom Wechselrichter direkt mit dem Cerbo verknüpft.


Das hat jetzt dazu geführt das ich auf die Abfrage mit dem von Dir geposteten Link eine Antwort erhalte, allerdings sind darin alle Werte auf Null gesetzt.

Im VRM Portal wird der Wechselrichter genau wie in den Fotos die Du angefügt hast angezeigt, aber es fließen keine Werte.

Zum Testen habe ich mla die Abfrage von Node Red beendet und den Wechselrichter vom Lan getrennt, hatte aber leider auch kein anderes Ergebnis gebracht.


Kann es sein das ich einen gewissen Softwarestand auf den Geräten brauche damit das funktioniert??

Was auch nicht funktioniert ist der Befehl zum Restart des Scripts, die genaue Fehlermeldung könnte ich heute Abend noch einmal posten.


Gruß Michael





2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

kcbam avatar image
kcbam answered ·

Hey, also wenn das Testscript arbeitet, aber keine richtigen Werte zurück kommen, dann klingt das für mich nach einem Problem am Wechselrichter. Hast du die Möglichkeit ein Firmwareupdate durchzuführen. Vielleicht kannst du mal notieren mit welcher Firmware du es probiert hast. Dann kann man sowas in die Readme vom Skript schreiben. Dass der Restart nicht funktioniert wurdert mich. Mit ner Fehlermeldung finden wir bestimmt raus wieso :)

VG

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

kcbam avatar image
kcbam answered ·

in den befehlen war ein kleiner fehler drin. probiers noch mal

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

mich-ael avatar image
mich-ael answered ·

Hallo,


ich hatte leider heute erst Zeit wieder ein paar Sachen auszuprobieren. Wegen der Softwareversion,

ich habe aktuell die V200R022C010SPC102 installiert. In der Fusion Solar App wird auch kein Update angezeigt, wenn es was hilft wäre wohl die Version V200R022C010SPC104 verfügbar.

Ich habe stabil Verbindung zum Wechselrichter, kann aber keine Befehle mit sh ausführen, es kommt häufig die Fehlermeldung das kein Verzeichnis gefunden wurde. Ich habe mal von zwei Befehlen Screenshots gemacht, ich hoffe daraus lässt sich etwas ableiten.

fehler-2.jpg

fehler-3.jpg

Ich wollte dann probiere die Software komplett zu löschen, und neu zu installieren, aber auch diese Befehle lassen sich nicht ausführen.


Gruß Michael


fehler-2.jpg (24.3 KiB)
fehler-3.jpg (68.8 KiB)
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

mich-ael avatar image
mich-ael answered ·

Ich habe das Script nochmal neu installiert und die Befehle der Reihe nach eingegeben:

screenshoot1.jpg

screenshot2.jpg


Kann es sein das es zwischen den einzelnen Huawei Wechselrichtern unterschiedliche Modbus Register gibt die abgefragt werden müssen??


Gruß Michael


screenshoot1.jpg (105.6 KiB)
screenshot2.jpg (133.4 KiB)
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

kcbam avatar image
kcbam answered ·

Hallo Michael,

ich hatte die Pfade mal geändert und in der Readme scheinbar teilweise vergessen das zu verbessern. das sollte jetzt aber passen.

Die Register sollten denke ich gleich geblieben sein. Ich hab keinen Dongle, weshalb ich das nur mit dem internen Wifi getestet habe. Ich hab mal gelesen, dass Modbus über Dongle erst alktiviert werden muss (mit der FUSION app). Aber das scheinst du ja schon gemacht zu haben, wenn du per NodeRED drauf zugreifen kannst.

Ich selbst habe einen Sun2000-20KTL-M2. Ich wüsste echt keinen Grund wieso man die Adressen ändern sollte..

Irgendwas scheint auch noch nicht mit dem logging bei dir zu funktionieren.

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

mich-ael avatar image
mich-ael answered ·

Hallo,


ich habe die Register mit meinen bisher verwendeten Registern aus Node Red verglichen, das deckt sich soweit. Welchen Softwarestand verwendest du auf deinem Wechselrichter?

Um auszuschließen das der Dongle etwas beeinflusst habe ich auch schon den Dongle entfernt und den Wechselrichter neu gestartet, das Ergebnis ist aber das gleiche geblieben.

Verbindet sich dein Cerbo automatisch mit dem Wlan vom Huawei, oder musst du das manuell starten?

screenshot.png

Wird bei dir die Verbindung zum Wechselrichter in irgendeiner Form angezeigt, ausser im Hauptmenü der Remote-Konsole(z.B. im Untermenü PV Welchselrichter)?

Bei verbundenen Fronius Wechselrichtern z.B. wird in der Ansicht von dem Screenshot die IP Adresse usw. mit angezeigt, ist das bei dir der Fall??


Vielen Dank!



screenshot.png (158.0 KiB)
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Klaus Naumann avatar image
Klaus Naumann answered ·

Hallo zusammen,


ich steige hier mal mit ein :-) Danke an @kcbam fuer die Umsetzung und das github repo. Ich habe dir mal drei Pull Requests geschickt. Einer davon ist evtl. auch fuer @mich-ael interessant.


Ich hatte beim ersten Test den gleichen Effekt wie @mich-ael, naemlich dass alles mit 0-Werten zurueck kam. Das lag bei mir daran, dass ich einen SmartLogger benutze und daran zwei SUN2000 haengen. Das geht dann so, dass der SmartLogger die modbus unit 0 hat, der erste SUN2000 die 1 und der Zweite die 2. Deshalb hab ich die modbus unit mal konfigurierbar gemacht. Wenn @kcbam die PRs merged, kann @mich-ael es ja nochmal probieren und mal schauen ob mit unit 1 werte kommen. Das kannst du aber auch im Node-Red in deiner modbus config sehen, also ob es daran liegt.


Ganz generell waere es wahrscheinlich gut auch mehr als einen SUN2000 zu unterstuetzen, weil es ja doch gut sein kann, dass manche Leute mehr als einen haben.


Evtl. sollte man die Konfig auch ueber die Victron Remote Console machen koennen. Das muss ich mir mal anschauen. Und man koennte dann das ganze in SetupHelper integrieren und dann waere die installation auch ohne root ssh moeglich. Mal sehen wie ich Zeit habe die naechsten Tage :-)


Klaus

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

kcbam avatar image
kcbam answered ·

Hallo Klaus.

Vielen Dank für deinen Beitrag. Ich selbst kam noch nicht dazu weiter zu machen, aber ich habe soeben deine Pull Requests gemergt. Ich hoffe sie helfen Michael weiter.

Freut mich sehr, dass das Projekt noch mehr gebrauchen können! :) Deine Vorschläge klingen interessant - ich bin da ganz offen! :)

VG

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Klaus Naumann avatar image
Klaus Naumann answered ·

Ich habe dir einen neuen PR geschickt. Das ist eine ziemlich grosse Aenderung, aber ich denke ein guter Schritt hin zu besserer Benutzbarkeit.

Man kann jetzt alle Parameter im GUI konfigurieren. Naechste Schritte waeren die integration in SetupHelper, das logging zu fixen, den Code etwas huebscher zu machen (flake8 compatibilitaet).
Wenn das mit SetupHelper gemacht ist, kann man das ganze dann tatsaechlich ohne root und ssh installieren. D.h. dann koennen auch weniger technisch Versierte das ganze benutzen (da man den SetupHelper einfach ueber einen USB Stick installieren kann).

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

kcbam avatar image
kcbam answered ·

Habe soeben gemergt. Vielen Dank für dein Arbeit. Das mit der GUI finde ich sehr gut! Weißt du auch wie wir neue Felder zum Anzeigen von Werten anlegen können? Dann könnte man sowas wie Effizienz und Stringspannung anzeigen lassen. Im MQTT ist das teilweise schon drin.

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

jenda avatar image
jenda answered ·

Hallo zusammen,

sehr tolles Projekt. Vielen Dank!

Mein Vorhaben: Einbindung des Cerbo GX und Multiplus in meine vorhanden PV Anlage (29,4 kWp, SUN2000 33KTL-A, Smartlogger 3000 und Smartmeter DTSU666-H).

Grund: Anzeige des Wechselrichter in Venus und Nutzung des vorhanden Smartmeter: Kosteneinsparung und die Verteilung ist recht voll.

Mir werden als Werte auch nur Null wieder gegeben. Das könnte an den Modbus Adressen liegen. Die Adressen des Smartlogger liegen im 40000 Bereich und nicht wie im Code im 30000: https://support.huawei.com/enterprise/en/doc/EDOC1100050690

Weiter könnte es auch an der Konfiguration der Modbus TCP liegen. Es steht "Komm. Adresse" und "Logische Adresse". Weiß einer was gewählt werden muss?1699471882657.pngAn der Stelle lässt sich auch die Logger-Adresse einstellen.


1699471882657.png (52.3 KiB)
1 comment
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Klaus Naumann avatar image Klaus Naumann commented ·

Ich fange mal an :-)


Ob der DTSU666-H als Zaehler (anstelle des normalerweise noetigen Carlo Gavazzi bzw. EM540) fungieren kann, ist noch die naechste Frage - aktuell ist das im Code nicht implementiert und waere auf jeden Fall etwas Arbeit.


Grundsaetzlich ist es so, dass man ueber den SmartLogger (ich habe den 1000A, also auch nur Erfahrung damit) "alles" sehen kann. Was meine ich:

Alle Wechselrichter die am SmartLogger haengen, kann man ueber den SmartLogger ueber ModbusTCP auslesen. Deine Frage erklaert sich, wenn man unter "Maintenence" (ich habe bei mir Englisch eingestellt, bei dir heisst das "Wartung") dann Device Mgmt und dann Device List nachschaut. Da sieht man dann die "Komm. Adresse" und die Logische Adresse.

screenshot-from-2023-11-08-21-07-33.png

Der Unterschied ist mMn, dass man die "Komm. Adresse" selbst aendern kann, waehrend die Logische Adresse fix vergeben ist. Schlussendlich denke ich ist es vollkommen egal was man nimmt, solange man eben dann die richtige Modbus Unit zum Auslesen benutzt.

Und das ist der naechste Punkt: Man kann den selbst SmartLogger ueber ModbusTCP auslesen, und zwar mit der Unit Nummer die man in der in deinem Screenshot gezeigten Maske eingibt - dabei bekommt man dann Werte fuer alle Wechselrichter zusammen die an dem SmartLogger dran haengen (zum Beispiel "Active Power" dann unter der 40525). Man kann aber auch jeden Wechselrichter selbst auslesen, indem man die IP + Port vom SmartLogger nimmt und dann die Unit Nummer vom entsprechenden Wechselrichter.


Jetzt kommt das andere Problem. Du hast einen 33KTL-A (so wie ich auch einen habe, also Unit 1 bei mir - der speist bei mir aber voll ein und ich brauche den nicht im VRM). Tatsaechlich ist es so, dass der 33KTL-A andere Modbus Adressen benutzt als der 30KTL-M3. Das ist eine sehr fragwuerdige Entscheidung von Huawei mMn, aber da werden wir nichts dran aendern. Das ganze ist uebrigens auch dokumentiert, fuer jeden Wechselrichter kann man im Huawei support Bereich das "Modbus Interface Definitions" PDF herunterladen. Beim 33KTL ist zum Beispiel "Active power" unter der 32290 und beim 30KTL-M3 unter der 32080. Wenn du willst, kannst du das fuer deinen 33KTL richtige PDF mal runterladen und dann in der sun2000_modbus/registers.py die register anpassen. Dann sollte es erstmal gehen...


Dein Problem richtig zu loesen benoetigt aber einen Code change und ich bin mir ehrlich gesagt nicht so 100% sicher wie man das am Besten loesen wuerde (mir fallen einige Moeglichkeiten ein, alle sind relativ aufwaendig). Man muesste eigentlich mal von "allen" SUN2000 die Modbus Interface Definitions runterladen und dann schauen ob es da 2...3 unterschiedliche gibt oder 20. Je nachdem koennte man entscheiden wie man das am schlausten implementiert.

0 Likes 0 ·
rrg avatar image
rrg answered ·

Hallo Zusammen,

Sehr interessantes Projekt, habe es gleich mal ausprobiert.


Meine Umgebung:

PV-Inverter: SUN2000-30KTL-M3

SW-Version PV-Inverter: V100R001C20SPC127

Dongle: SDongleA-05

SW-Version Dongle: V200R022C10SPC108

VenusOS on Raspberry 3B

SW-Version VenusOS: 3.12


Das Raspberry ist per LAN im Netzwerk.

Der Dongle ist ebenfalls per LAN im Netzwerk.

Die Konfig übers GUI hat tip top funktioniert.

Habe die PV-Inverter Daten über den Dongle ausgelesen, hat gut geklappt. Den Zeitintervall habe ich auf 5000ms gesetzt.

Musste allerdings mein Solaranzeige (https://solaranzeige.de/) stopen damit ich die Werte bekommen habe, scheint als nur ein "Leseclient" auf einmal die Werte per Modbus lesen kann.

Im Moment lese ich die Werte noch per Solaranzeige aus und übermittelt sie in eine Iobroker Instanz und in eine InfluxDB.

Könnet mir vorstellen, dass ich die Datenerfassung vom Huawei PV-Inverter mittels Solaranzeige, mit dem Projekt hier ablösen werde.

Freue mich auf die Weiterentwicklung des Projektes und auf weiter Tests.

1 comment
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

mpuff avatar image mpuff commented ·

kann man auf solaraneige.de die werte von einem Victron einbinden? ich habe auch so ein Problem, nutze 2 smarthome Applikationen, homeassistant für die neue Energie anzeige und openhab für die ganze Steuerung, per Modus kann ich nur 1 von beiden die werte abfragendem Huawei, aber beide haben ein victron plug in, da können mehrere Applikationen die werte abfragen.

das wäre dann ein weiterer Vorteil von diesem plugin, dann ist ja der Wechselrichter mit allen werten direkt im Venus OS und kann von mehreren Applikationen abgefragt werden.

0 Likes 0 ·
mpuff avatar image
mpuff answered ·

bin auch sehr interessiert und gespannt auf dieses plugin :)

wie wird das verhalten sein, wenn man bereits einen ET340 Stromzähler verbaut hat für die PV Leistungsabfrage? Dieser ist zb per RS484 angeschlossen an das VenusOS.


Sind die Daten per RS484 schneller und zuverlässiger als das ModbusTCP?


2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

kcbam avatar image
kcbam answered ·

Also der Stromzähler sollte auf dieses Plugin keine Auwirkung haben. Es macht ja nichts anderes als die Modbus registers des Inverters über Netzwerk abzufragen.

Mit dem Abfragen via RS484 habe ich keine Erfahrung an diesesm Gerät.

VG

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

pv-steg10 avatar image
pv-steg10 answered ·

Das, was hier beschrieben ist, klingt genau nach dem, was ich suche.
Ich habe folgendes Setup:

PV-Inverter: SUN2000-30KTL-M3

SW-Version PV-Inverter: V100R001C20SPC122

Dongle: SDongleA-05

SW-Version Dongle: V100R001C00SPC125

VenusOS on Raspberry 4B

SW-Version VenusOS: 3.14

Ich habe den Pi bzw. Venus OS mit dem WiFi des Sun2000 verbunden (IP Adressen sind andere als die im Script hinterlegten)

Ich würde gerne auch den Sun 2000 in der GUI von Venus OS sehen und anzeigen lassen. Weiterhin könnte ich auch die SmartMeter Werte des DTSU666, der den Hausverbrauch misst für die Steuerung meiner Batterie gebrauchen.
Ich habe das Plugin auf meinem Pi per Putty installiert.
Jetzt ist für mich die Beschreibung der Installation etwas kryptisch...

zu Pkt. 2: Was muss ich denn in der config.py editieren?
zu Pkt. 3: Was muss ich denn checken?
Wenn ich es ausführe bekomme ich folgende Meldung in der Konsole:
screenshot-2024-03-09-001916.pngIn einem vorherigen Kommentar wird auch etwas von der Einstellung in einer GUI gesprochen. Welche GUI ist denn gemeint.
Ich bitte um Unterstützung. Danke


2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Related Resources