AdapterRequests icon indicating copy to clipboard operation
AdapterRequests copied to clipboard

Adapter Huawei SUN2000-(3KTL-10KTL)-M1 LUNA2000-(5-30)-S0 DTSU666-H Photovoltaikkombination

Open RoHa78 opened this issue 3 years ago • 3 comments

What kind of device or service you would like to see an adapter for? Add name and company of the device, including links to the device and any additional informations[...] ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Photovoltaik Anlage inkl. Smart Power Sensor und Akkuspeicher von HUAWEI Wechselrichter SUN2000-(3KTL-10KTL)-M1 https://support.huawei.com/enterprise/de/fusionsolar/sun2000ma-pid-22755755 Akkuspeicher LUNA2000-(5-30)-S0 https://support.huawei.com/enterprise/de/fusionsolar/fusionsolardg-pid-23448309 Smart Power Sensor DTSU666-H https://support.huawei.com/enterprise/en/fusionsolar/sun2000l-pid-22027611?category=operation-maintenance ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Is an official API including documentation is available? If yes please add links and informations[...] ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Es handelt sich um eine ModBUS Schnittstelle https://support.huawei.com/enterprise/en/fusionsolar/smartlogger-pid-21294677?category=configuration-commissioning&subcategory=configuration-guide ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Are other libraries for an integration available? Ideally in JavaScript/npm, but also other programming languages are interesting, add Links please ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ https://library.loxone.com/detail/huawei-sun2000-inverter-with-smartdongle-modbus-tcp-332/overview ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Is this device already integrated in other Smart Home systems? Add Links please ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Home Assistant: https://github.com/Emilv2/huawei_solar https://community.home-assistant.io/t/integration-solar-inverter-huawei-2000l/132350/1300 As standalone: https://solaranzeige.de/phpBB3/viewtopic.php?t=170 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Is this device already integrated in homebridge? Might the ham adapter together with the homebridge plugin be sufficient? Please try it and add infos ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Hab hierzu leider nichts gefunden (Sorry no founds) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Additional context Add any other context or screenshots about the feature request here. If the topic was discussed in ioBroker forum please include the link too. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Diskussion im IOBroker-Forum https://forum.iobroker.net/topic/53005/huawei-sun2000-iobroker-via-js-script-funktioniert ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Vielen Dank!

After you created the issue vote for yourself in the first post of the issue using the "+1"/"Thumbs up" button

RoHa78 avatar Jul 24 '22 10:07 RoHa78

@RoHa78 Der Wechselrichter nutzt ModBus und kann darüber eingebunden werden (Google einmal nach SUN2000 ModBus)

stilicrafter avatar Jul 28 '22 08:07 stilicrafter

@RoHa78 Der Wechselrichter nutzt ModBus und kann darüber eingebunden werden (Google einmal nach SUN2000 ModBus)

Leider scheint der ModBus-Adaper vom IOBroker damit nicht zu funktionieren siehe https://forum.iobroker.net/topic/46048/huawei-sun2000-mit-modbus-adapter-in-iobroker-einbinden Und Scripting / NoteRed beherrsche ich leider nicht.

RoHa78 avatar Jul 28 '22 10:07 RoHa78

Wäre dennoch interessant ob das ein Problem/Fehler vom Modbus Adapter ist und mit einem zukünftigen Update gelöst werden könnte. Dazu müsste man aber mal mind (Debug)Logs, die Modbus Spec vom WR und die (Register)Einstellungen der Instanz liefern damit es sich ein Entwickler ansehen kann. Das ganze natürlich als Issue des Modbusadapters.

Edit: hier gibt es schon eines zu Huawei WR: https://github.com/ioBroker/ioBroker.modbus/issues/250

Diginix avatar Jul 28 '22 10:07 Diginix

Hi zusammen, nur zur info, falls jemand statt Modbus lieber die Cloud nehmen will (oder in Kombi, zwecks Anreicherung mit zusätzlichen Infos), ich habe gerade einen veröffentlicht:

https://github.com/KornSW/ioBroker.fusionsolar

https://forum.iobroker.net/topic/59422/new-adapter-huawei-fusionsolar-api

bei interesse gerne mal testen ;-)

Grüße, Tobias PS: habs mit Modbus leider auch nicht hinbekommen - würde es allerdings auch bevorzugen!

KornSW avatar Oct 28 '22 09:10 KornSW

Hallo zusammen, Ich habe mich recht ausführlich mit Modbus auseinander gesetzt. Und bin dabei einen Adapter zu schreiben, der die Interessanten Modbusregister in den ioBroker übernimmt. Aber ebend das Gerät an sich darstellt. Ist hier noch bedarf? Bzw. Bräuchte ich irgendeine Mitwirkung um die Geräte in den Adapter zu integrieren. Frage: Wir reden über Modbus TCP? Oder?

Grüße image

Icke-de avatar Jun 04 '23 09:06 Icke-de

@Icke-de Ja das ist korrekt, beim o.g. Wechselrichter handelt es sich um Modbus TCP. Der Befehlsatz sollte unter https://support.huawei.com/enterprise/en/fusionsolar/smartlogger-pid-21294677?category=configuration-commissioning&subcategory=configuration-guide downloadbar sein. Diverse Links zu diesem Wechselrichter (inkl. Akku) sind von mir im ersten Post vermerkt. Da ich softwaremäßig nicht allzugut bewandert bin kann ich diesbezüglich nur als Tester unterstützen. Eine Möglichkeit die ich aktuell nutze und ebenfalls auf Modbus TCP besteht ist das Projekt auf https://solaranzeige.de/phpBB3/viewtopic.php?t=170, ist aber standalone. IOBroker wäre mir jedoch deutlich sympatischer... Anbei ein "kleiner" Auszug aus der DB von Solaranzeige dieser Anlage: image

RoHa78 avatar Jun 04 '23 10:06 RoHa78

Testen reicht mir da völlig aus. Wenn du Lust und Zeit hast. Die Modbusintegration bei meinem Adapter kann zum Testen über ein NodeJS Projekt laufen, Um erst einmal zu schauen, ob die Werte richtig ankommen. So habe ich das mit meinem SMA TP 8 zumindest gemacht, bevor ich das Ganze im ioBroker eingebunden habe. Kannst du bitte einen direkten Link auf die Modbusbeschreibung setzen ? Ich habe oben bei Huawai geschaut, weiß aber nicht genau welches Dokument genau gemeint ist.

Icke-de avatar Jun 04 '23 10:06 Icke-de

Habe folgende direkte URL für die Beschreibung: https://support.huawei.com/enterprise/en/doc/EDOC1100050690?idPath=9452479%7C21439560%7C7921563%7C21102414%7C21294677 Sollte dann fogendes Dokument angezeigt werden, das dann runtergeladen werden kann: image Hab auch mal angefangen in NodeRed das Ganze umzusetzen, funktioniert zwar, bin aber hier noch nicht sehr weit: image

RoHa78 avatar Jun 04 '23 10:06 RoHa78

Ja, das habe ich auch gefunden. Was allerdings die Frage aufwirft willst du den Sun2000 oder den Smartlogger per Modus ansprechen? Das sind wenn ich das richtig geblickt habe, 2 verschiedene Geräte. Sorry, ich muss das für mich nur erst einmal rund haben. Zur Erklärung bei mir ist auch ein Smartmeter zusätzlich verbaut, was die Kommunikation zum SMA Portal (Sunny Portal) übernimmt, was grundsätzlich auch per Modbus abgefragt werden kann, habe aber den WR implementiert. Also spreche den direkt an. Bei Huawei gibt es in dem PDF (2.5) einen Verweis auf eine eigene Modbus Beschreibung für den Sun2000.

Icke-de avatar Jun 04 '23 11:06 Icke-de

So wie ich das verstehe, sammelt der Wechselrichter die Daten vom Smartlogger. Dieser wiederum ist mit einem sog. SDongle mit dem Netzwerk verbunden. Über diese Schnittstelle können dann die Daten allesamt sowohl von Wechselrichter, Akku und Smartmeter abgefragt werden. Habe hierzu noch folgenden Link gefunden https://photomate.zendesk.com/hc/en-gb/article_attachments/8560845348253/SDongle_V100R001C00SPC133_Release_Documents.zip Hierin enthalten ist ein kompletter Dokumentensatz von diesem SDongle. Darin befindet sich auch das Dokument SDongleA V100R001C00 MODBUS Interface Definitions.pdf. Mit diesen Angaben sollte man dann über diesen SDongle die kompletten Daten abfragen können. Wenn ich die wenigen Adressen, die ich in NodeRed verwendet habe, mit denen vergleiche, die in o.g. Doku stehen, stimmen die miteinander überein, und das scheint ja zu funktionieren ;)

RoHa78 avatar Jun 04 '23 11:06 RoHa78

Ok, dein NodeRed Script (nennt man das Script?) wirft auch Daten aus? Du hast also eine valide Datenausgabe, mit der du dann die Adapterwerte prüfen kannst?

Dann bau ich das was du brauchst in den Adapter ein. 😉

Zur Erläuterung: der Adapter bzw. Die Modbus Integration ist nicht fix, kann also auch erweitert werden, nur nicht so wie im Modbusadapter, dass man einzelne Register selber hinzufügen kann, dass passiert alles in dem NodeJS Modul (also im Java Script). Ich wollte keinen Adapter parallel zum Modbus Adapter. Meine Idee galt es die Modbusgeräte wie oben gezeigt in eine Struktur zu bringen die das Gerät an sich wieder spiegelt. Der Typ ist in der Config einzustellen.

Icke-de avatar Jun 04 '23 12:06 Icke-de

Super, das hört sich gut an. Habe mal die Daten zusammengestellt, die ich bisher über "www.Solaranzeige.de" geliefert bekomme. Huawei MEASUREMENTS.pdf

RoHa78 avatar Jun 04 '23 13:06 RoHa78

@RoHa78 : kennst du dich en bisschen mit NodeJS aus? Bitte teste mal folgendes: (installierte NodeJS 18.16.0 LTS vorausgesetzt) Clone dir bitte folgendes Repro mit: https://github.com/Icke-de/modbus_inverter.git git clone https://github.com/Icke-de/modbus_inverter.git Wechsle in das Verzeichnis: [dein Verzeichnis]\modbus_inverter npm install (Abhängigkeiten werden installiert) Wechsle in das Unterverzeichnis "examples". Öffne die Datei "test_modbusregister.ts" mit einem Editor deiner Wahl. Passe folgende Werte entsprechend deiner Konfiguration an: let ipAddress = ""; let modbusPort = 502; let unitId = 1; (Achtung: ipAddress ist ein string daher bitte in "", Port und unitId ist vom typ number) Datei speichern und in die Konsole wechseln: cmd oder powershell in einem Windows system Gehe wieder in das Verzeichnis cd [dein Verzeichnis]\modbus_inverter\examples führe ts-node test_modbusregister.ts aus.

Ich habe das Modul in TypeSript umgesetzt bzw. Erweitert (ist eine Implementierung für SMA Devices gewesen, das habe ich als Grundlage verwendet) In meinem Jugendlichem Leichtsinn würde ich meinen die Ausgabe zeigt dir die Werte an, die in deinem Node Red Script vorhanden sind. Ich bin gespannt was passiert.

Icke-de avatar Jun 04 '23 15:06 Icke-de

Bin gerade noch unterwegs, melde mich aber umgehend, wenn ich am testen bin.

RoHa78 avatar Jun 04 '23 15:06 RoHa78

Habe nun versucht, das Ganze zum Laufen zu bringen, leider nur mit mäßigem Erfolg: Bereits bei npm install sind etliche Fehler angezeigt worden (installierte NodeJS 18.16.0 sollte passen, siehe hierzu das angefügte LOG) habe mich hier nicht beirren lassen und weiter gemacht. Bei Punkt ts-node test_modbusregister.ts hat er die ts-node nicht gefunden: image

2023-06-04T17_15_27_422Z-debug-0.log

Hast Du eine Ahnung an was das liegen kann oder was ich hier falsch mache (mein IOBroker läuft auf einem Raspi, dort habe ich das Ganze auch getestet)?

RoHa78 avatar Jun 04 '23 17:06 RoHa78

Muss ich mir genauer anschauen. Wichtig ist, dass die DEV-dependencies mit installiert werden, da ts-Node ebenfalls ein Modul ist. Anderen falls könntest du ts-node auch separat installieren. npm install ts-node. Könnte aber auch sein, dass ich das bei mir (Windows) global mit -g installiert habe. Gleiches gilt für TypeScript. Das habe ich auch global installiert.

Icke-de avatar Jun 04 '23 20:06 Icke-de

Moin, ich habe gerade kurz das mit Node und npm auf einer leeren Ubuntu Maschine probiert. Was ich dabei gemerkt habe, ist das anscheinend ts-node nicht mit installiert wurde. Das dann bitte noch , wenn du im root Verzeichnis ([dein Verzeichnis]\modbus_inverter) bist mit npm install ts-node installieren. Das sollte soweit funktionieren. Alternativ kannst du schauen, mit tsc -v ob TypeScript installiert ist. Dann im Verzeichnis Examples tsc test_modbusregister.ts ausführen. Dadurch wird die .ts in eine .js konvertiert. die kannst du dann mit node test_modbusregister.js starten.

Icke-de avatar Jun 05 '23 05:06 Icke-de

Hallo @Icke-de, habe nun versucht ts-node w.o. zu installieren. Hat diesbezüglich keine Fehler angezeigt. Aufruf von tsc -v ist leider fehlgeschlagen. image Hab das Gefühl, das da was verbogen ist ...

RoHa78 avatar Jun 05 '23 14:06 RoHa78

Dann fehlt da noch TypeScript. Ich würde allerdings nicht deinen ioBroker nehmen, nicht da was kaputt geht ;-). Theoretisch sollte das funktionieren, aber zum Testen habe ich meinen Windows Rechner genommen. Und aber auch eine VM mit Ubuntu. Ich würde schau mal, dass ich einen Rechner nehme wo noch nichts weiter mit Node gemacht wurde. Das muss funktionieren. NodeJS und NPM verhalten sich ja erst einmal nicht unterschiedlich. Die genaue Reihenfolge bzw. Befehle schicke ich dann.

Icke-de avatar Jun 05 '23 14:06 Icke-de

Habe nun mittlerweile ein jungfräuliches Ubuntu 22.04 in einer VM. Wie soll ich weiter vorgehen?

RoHa78 avatar Jun 05 '23 17:06 RoHa78

OK, dann mal los:

  1. apt update
  2. apt upgrade
  3. apt install nodejs
  4. node -v (output: v18.7.0)
  5. apt install npm
  6. npm -v (output: 8.18.0)
  7. git -v (output: git version 2.37.2)
  8. cd /opt
  9. git clone https://github.com/Icke-de/modbus_inverter.git
  10. ls (output: root@test-node:/opt# ls modbus_inverter)
  11. cd modbus_inverter/
  12. npm install
  13. apt install ts-node
  14. ts-node -v (output: v10.9.1)
  15. cd examples
  16. ls (output: sunny_island6-0.ts sunny_tripower-8.ts test_modbusregster.ts)
  17. nano test_modbusregister.ts (IP Adresse eintragen in die "") mit Strg-o (speichern) Strg-x (beenden)
  18. ts-node test_modbusregister.ts

Ich habe das bei mir mit ts-node sunny_tripower-8.ts getestet, das kam dann raus. root@test-node:/opt/modbus_inverter/examples# ts-node sunny_tripower-8.ts Seriennummer wird ausgelesen! 3014711683 DeviceClass wird ausgelesen! Solar-Wechselrichter 2840.236 46.462 0 0 OK (ok)

Icke-de avatar Jun 05 '23 20:06 Icke-de

Achso wichtig ist vielleicht noch. Ich habe mit root gearbeitet. Daher brauchte ich sudo nicht immer vorschreiben. Möglicherweise musst du das machen. Bei dir funktioniert auch nur test_modbusregister.ts. Das sunny...ts Script ist natürlich auf meinen WR konfiguriert. Viel Erfolg.

Icke-de avatar Jun 05 '23 21:06 Icke-de

Sorry, dass ich mich jetzt erst wieder melde. Habe o.g. Schritte bis einschließlich Punkt 12 durchführen können, musste aber noch nodejs von Standardversion 12.22.9 auf die 18.7.0 updaten müssen. hat soweit ohne Fehler geklappt. Bei der Installation von ts-node hat er dann gestreikt weil anscheinend irgendwelche Pakete kaputt waren. ein apt update und apt upgrade haben hier aber keine neuen Dateien installiert. Ausgabe von apt install ts-node image Kann man das irgendwie beheben?

RoHa78 avatar Jun 06 '23 18:06 RoHa78

Weiß nicht so 100% ob das was hilft. Aber ein boot tut immer gut. Starte die Maschine einmal neu. Dann könntest du npm auf die latest version update. npm install -g npm@latest (bei mir hat er allerdings auch erst nach einem reboot die aktuelle Version angezeigt. node -v sollte dann 9.6.7 auswerfen. Schau mal ob du dann ts-node installieren kannst. Ist schon komisch bei meinem Ubuntu wurde npm in 8.18.0 installiert, bei dir 8.15.0. Dabei ist 9.6.7 aktuell. Ich komme eigentlich aus der Windows Welt, Hab mich auch nicht wirklich mit den ganzen Paketmanager und Repertoires befasst. (Was im übrigen bedeutet, dass ich mich noch damit befassen muss, wie man einen Adapter, wenn er funktional und fertig ist veröffentlicht, dass auch andere was davon haben ;-).) Aber alles zu seiner Zeit :) Probiere das mal bitte

Icke-de avatar Jun 06 '23 19:06 Icke-de

Hat leider nicht funktioniert, habe auch noch mal die Abhängigkeiten fixen lassen und sowohl nodejs als auch npm auf die aktuellsten stabilen Versionen aktualisiert, ts-node ließ sich dann leider immer noch nicht installieren. Werde morgen mal googlen oder vielleicht das Ganze mit einem Raspi ö.ä. aufsetzen. Melde mich wieder wenn ich da weitergekommen bin. Erstmal aber vielen Dank für Deine Unterstützung!

RoHa78 avatar Jun 06 '23 19:06 RoHa78

Mittlerweile bin ich etwas weiter, nachdem ich nun statt Ubuntu Debian in der VM habe (liegt auch näher am Raspbian ;)) Die Ganzen Pakete laufen soweit, ts-node "Hello world" läuft ebenfalls. IP vom Wechselrichter (DongleA) ist eingetragen, Parameter stimmen mit meinem funktionierenden NodeRed überein, sämtliche sonstigen Master sind deaktiviert.

image Bei test_modbusregister.ts fehlt noch das "i" im Name. Da nach ca. 5min Wartezeit noch keine Reaktion erfolgt ist, hab ich das Script abgebrochen. Entweder es kommen keine Daten oder irgendwas mit der Initialisierung ist noch nicht ganz i.O.

Viele Grüße

RoHa78 avatar Jun 08 '23 05:06 RoHa78

Hi, Das mit dem I habe ich gesehen, dachte aber ich hab das oben in der Beschreibung falsch geschrieben und da auch korrigiert. Jetzt sehe ich das ich die Datei schon falsch benannt habe. Pass ich dann auch mal an. Eigentlich ist es so, das zumindest eine response kommt 'kann keine Verbindung aufbauen' und das dann in einer Schleife. Ich schau nachher nochmal drauf, ob ich da einen groben Fehler gemacht habe. Was ich damit sagen will ist, dass eigentlich eine Reaktion kommen muss. Gleiches würde passieren, wenn du sunny_tripower8.ts starten würdest, außer auf der IP 192.168.178.123 antwortet ein Gerät auf Port 502. ;-). Wie gesagt ich schau nochmal und Push ggf. noch was in das Repro. So Remote Support ist echt schwierig ;-). Aber das passt schon. Ich brauch ne einfachere Art Geräte zu testen. Welche IP hat dein Gerät? Ich hab für meine Test einen Modbus Slave eingesetzt, dann würde ich das gleich so einstellen. Achso die UnitID / SlaveID müsste ggf. angepasst werden.

Icke-de avatar Jun 08 '23 16:06 Icke-de

Hallo, Unit-ID sollte passen, siehe Rückmeldung von NodeRed: "Client -> fsm connected after state init Get More About It By Logging [email protected]:502 default Unit-Id: 1" Was nimmst Du als Modbus Slave, ist das eine separate Hardware oder nur Software?

RoHa78 avatar Jun 08 '23 17:06 RoHa78

eine Software, EasyModbusTCP Server Simulator. Aber das Script sollte etwas ausgeben, Garnichts ist falsch. Wenn du beispielsweise die IP änderst kommt sowas hier.

PS C:\Work\node_projects\testHuawei\modbus_inverter\examples> ts-node .\test_modbusregister.ts Connect to: 192.168.178.90 Couldnt connect to 192.168.178.90:502 Couldnt connect to 192.168.178.90:502 Couldnt connect to 192.168.178.90:502 Couldnt connect to 192.168.178.90:502 PS C:\Work\node_projects\testHuawei\modbus_inverter\examples>

Ich hab das "Connect to:" hinzugefügt, ist eine Consolen Ausgabe in der Funktion die aufgerufen wird. Und das i im Dateinamen habe ich hinzugefügt ;-) bitte beachten.

Icke-de avatar Jun 08 '23 20:06 Icke-de

Hab's nun nochmals getestet, Connection kommt zustande, jedoch nach längerer Wartezeit (3-4min) hab ich abgebrochen (Script ist 2x gestartet worden -> siehe Screenshot). image Jetzt wäre interessant, ob überhaupt was kommt oder der Wechselrichter gar nicht reagiert.

RoHa78 avatar Jun 09 '23 05:06 RoHa78