Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Growatt SPH3000-RS485-ESP32-MQTT #96

Open
eckhard58 opened this issue Nov 26, 2024 · 177 comments
Open

Growatt SPH3000-RS485-ESP32-MQTT #96

eckhard58 opened this issue Nov 26, 2024 · 177 comments

Comments

@eckhard58
Copy link

Good morning Tobias,
i managed to register here on GitHub. I'm not very good at English.

I use the ESP32 on a Growatt SPH3000. (Year of manufacture 10/24, ShineWiFi is now on the USB port)
The connection is only established if I disconnect the RS485 connection and reconnect it after the MQTT connection has been established.

Here is the desired HTerm output from the ESP32
mit WR.txt
ohne WR.txt
If I see it correctly, there are a few ERRORs

Regards, Eckhard

@eckhard58
Copy link
Author

eckhard58 commented Nov 26, 2024

PS
After an indefinite period of time, the MQTT connection goes offline. After briefly disconnecting the RS485 connection, the MQTT connection goes back online.
In HTerm, however, the ESP32 runs through.

This makes the file easier to read.
m WR.txt

I have now tested it with a HW-0519 board. Unfortunately with the same result as already described. It only works for a certain time.

@tobiasfaust
Copy link
Owner

Aus den Logs kann ich leider keinen Fehler herauslesen, sieht alles normal aus. Ich finde auch kein Hinweis auf einen MQTT dis- oder reconnect.
Wie sieht es aus wenn RS485 steckt und der ESP neu startet? Es gibt eigentlich keine Abhängigkeit zwischen WLAN/MQTT und der RS485 Verbindung

@eckhard58
Copy link
Author

eckhard58 commented Nov 28, 2024 via email

@tobiasfaust
Copy link
Owner

nein, der ESP ist nicht überfordert, bei mir läuft es im 3sec Intervall sauber seit Monaten durch.

  • Hast du einen "normalen" ESP32? Also keinen S2, S3, C3 o.ä.?
  • Das WLAN Signal ist stabil und stark genug? (RSSI < 75)
  • Poste mal ein Log mit Loglevel 4 von einem ESP Neustart und angesteckten RS485. (bitte lesbar, die ersten beiden Logs waren nicht wirklich lesbar)
  • Poste mal Screenshots der Baseconfig und der Modbusconfig.
  • Ist GND zwischen WR und ESP32 verbunden? Ist eher optional, bei Problemen sollte man es aber verbinden.

Ich habe keine Ahnung was bei dir herum zickt :(

@eckhard58
Copy link
Author

eckhard58 commented Nov 28, 2024

die nenne sich ESP32-WROOM-32. ich habe zwei verschiedene davon.
Wo hast du deine her bezogen?
Und beim flashen habe ich auch die normalen Dateien genommen.

Das werde ich mal probieren, leider will gerade mein HTerm nicht mehr connecten auf dem Laptop. Einmal abgestürzt und nun spinnt das HTerm.

Ich weis auch nicht was da zickt

@MagicSven81
Copy link

hängen bei dir "Wlan Repeater" zwischen Router und Modbus Modul?
Falls ja, Intervall einmal testweise auf 10s stellen.
Evtl. liegt es auch an deinem MQTT Server.

Ich benutze ebenalls den ESP32-WROOM-32 (ESP32) seit über 1,5 Jahren ohne Probleme.
Außer, dass er sich alle 20-30 Tage mal neu startet - aber das stört mich nicht.

@eckhard58
Copy link
Author

eckhard58 commented Nov 29, 2024

ja es ist ein Repeater dazwischen.
Den Intervall habe ich schon auf 20s stehen.
Der MQTT2 Server ist der von Fhem.
Ich werde mal paar LOGs machen.

@tobiasfaust
Copy link
Owner

Probier mal testweise den Test.mosquitto.org zu benutzen

@eckhard58
Copy link
Author

eckhard58 commented Nov 29, 2024

Hm, das mit Test.mosquitto.org haut bei mir nicht hin, hab ich noch nie benutzt.
Da muss ich mich erst noch besser belesen.

hier noch mal die LOGs
WR 131.txt
FhemLOG 131.txt

@tobiasfaust
Copy link
Owner

Der esp stürzt ein paar mal ab bevor er läuft. Häng mal ein stärkeres Netzteil dran.

@eckhard58
Copy link
Author

Die Netzteile haben alle mindestens 3A bei 5V.
Die ESP`s brauchen maximal 70mA.
Es kann sein das ich noch mal Reset gemacht habe.
Ich hab jetzt auch mal GND mit durchgezogen.
Abschlußwiderstand von 120 Ohm hab ich auch noch eingebaut.

Es will einfach nicht durchlaufen.
Der ESP hängt sich irgend wann auf und es hilft nur ein kurzes trennen der RS485 Verbindung. Genau so verhält es sich bei Spannug einschalten und Reset.

@tobiasfaust
Copy link
Owner

Ich habe ein Vermutung, kannst du den esp mal ohne Repeater direkt in die Nähe deines AP bringen? Ggf. Die RS-485 Verbindung über ein Netzwerkkabel verlängern.

Es kann sein das der Webserver starten will, die Wifi Verbindung aber noch nicht steht.

@eckhard58
Copy link
Author

eckhard58 commented Dec 3, 2024

Hallo Tobias,
gestern habe ich mal auf einen Test RbPi5 den Home Assistent installiert und MQTT eingebunden. Der ESP32 verhält sich genau so wie mit dem Fhem MQTT Server.
Sobald ich den Growatt mit dem ESP32 verbinde läuft er nur noch eine gewisse Zeit.
Ich hab mittlerweile für mein neueren Growatt SPH 3000 die Einstellungen für den Growatt MOD 4000 verwendet. Damit ist der ESP32 seit 17 Stunden am laufen. Leider sind da paar Einstellungen nicht ganz richtig. z.B. werden die Batteriewerte nicht angezeigt, die Anteige PV1 und PV2 müssten angepasst werden und drei Phasen hat mein WR auch nicht.
Ich hab mal in den Files gestöbert. Wo und was ich da tun kann endzieht sich zur Zeit meiner Kenntnis. Dafür bin ich leider nur ein Anwender.
Wenn Du dazu noch einen Tip hast? Wie ich welche Progamme anpassen könnte/müsste . Und was brauche ich für Daten von meinem WR?

Gruß Eckhard

@tobiasfaust
Copy link
Owner

Hier findest du eine Anleitung: https://github.com/tobiasfaust/SolaxModbusGateway/wiki/adding-new-inverters-or-items#find-out-live-data-get-new-items

Probier mal bitte die neueste Development version über den web-installer: https://tobiasfaust.github.io/SolaxModbusGateway/
Jetzt wird (hoffentlich) der webserver erst gestartet wenn der ESP mit dem WLAN verbunden ist.

Anscheinend liefert sein WR irgendetwas zurück was den ESP zum Absturz bringt, deshalb brauche ich ein Log mit Loglevel 4 zum Zeitpunkt des Absturzes um die Antworten des WR zu sehen.

@eckhard58
Copy link
Author

eckhard58 commented Dec 3, 2024

Deine Anleitung hab ich schon gelesen. Für mich noch etwas verwirrend.

Das Release: 3.3.0 läuft jetzt auf einem ESP32. schauen wir mal obs das ist.

Welchen Log meinst Du? Den über ESP32-USB mit HTerm?
Oder den neuen log via webserial?

@tobiasfaust
Copy link
Owner

Ja, mit hterm.
Wenn die Anleitung für dich verwirrend ist wäre super wenn du diese anpassen könntest das jemand der nicht im Thema steckt diese auch versteht. Da bin ich wohl etwas betriebsblind:(

@eckhard58
Copy link
Author

eckhard58 commented Dec 3, 2024

Dazu muss ich erstmal erfolgreich zusätzliche Werte hinzu gefügt haben, dann ist ein anpassen der Anleitung möglich. Es geht schon los, dass ich fünf verschiedene Datenbankschemen und Register habe. Welches passt zu meinem neuen WR.
Ja ich werde mir das angucken.

Bis jetzt sieht es aber schon mal besser aus,
Release 3.2.2 startet und läuft mit Growatt-MOD
Release 3.3.0 startet und läuft mit Growatt-SVG

Wie bekomme ich die Datei "Growatt-SPH-neu.json" und Andere zum Test in den ESP32? Im ESP32 lässt sich keine Datei ändern.
Damit hatte ich ein Problem:
wo ist die Seite "handlefiles"? => "Files"
"modbu" muss bestimmt "Modbus Config" heißen
"5. Laden Sie die neue Datei auf der Seite „handlefiles“ hoch, starten Sie einmal neu, wählen Sie den neuen Wechselrichter auf der Seite „modbu“ aus und überwachen Sie die serielle Ausgabe. "

@eckhard58
Copy link
Author

Hallo Tobias,

ich habe deinen neuen Installer benutzt, funktioniert super.
Wie kann ich darüber einen ESP32-S3 flashen? Erkennt der Installer automatisch welcher ESP32 angeschlossen ist?
Wäre vielleicht noch ein Hinweis in der Beschreibung wert.

Meine ESP32ger laufen inzwischen mit der neuen Version bis jetzt ohne Ausfälle.
Wie ich die neuen Dateien in den ESP bekomme habe ich irgendwann auch gefressen. Aber erst als mir in Files die Datei "handlefiles.html" ins Auge fiel. Ich konnte auch nur ganze Dateien laden und löschen, nicht ändern. Ist das so?
Ich hab jetzt eine neue "Growatt-SPH-2024d.json" wenn dich das File interessiert, wie kann ich es dir zukommen lassen?
Da ich noch keine passende MODBUS-Registerdaten von meinem WR habe ist es zwar noch nicht komplett aber schon mehr enthalten als die Vorgängerdatei. Geholfen hat mir die "Growatt-MOD.json" Datei, die zeigte Werte an die ich mit meinen WR-Daten Vergleichen konnte.

Gruß
Eckhard

@eckhard58
Copy link
Author

eckhard58 commented Dec 5, 2024

Hmmm, jetzt hab ich dich zu getextet, tut mit leid.
Bin schon ein bisschen weiter gekommen.

Eine Frage habe ich noch.
Wo kann man das machen?

  • request: 01 03 00 00 00 07 08 04
  • Response: 01 03 .....

Ich hab die Inverter SerialNumber im Status nur einmal gesehen und weis aber nicht wie so.

Eckhard

@tobiasfaust
Copy link
Owner

tobiasfaust commented Dec 5, 2024

In der files section kannst du natürlich auch anpassen .
Einfach die gewünschte Datei in der Navileiste anklicken, dann wird der Inhalt ins textfenster geladen.
Dann ändern und unten wieder auf den Speicherbutton klicken.
also wirklich einfach

dein letzter Post kann man mit den examples machen

@eckhard58
Copy link
Author

Wo mache ich das examples?

@eckhard58
Copy link
Author

eckhard58 commented Dec 8, 2024

Zur Info:
in der neuen Release 3.3.0 werden in Raw Data keine Raw Data of ID-Data angezeigt. Deswegen fehlt wohl auch die Anzeige "Inverter SerialNumber" im Staus.
Die alte Releases 3.2.2 tut es noch.

@eckhard58
Copy link
Author

Hast du nicht noch eine Idee zum den nicht vorhandenen Raw Data of ID-Data?

@StefanNouza
Copy link

Moin !

Das Schlüsselwort für mich fiel letzte Woche: „fhem“. Diese Heimautomatisierung nutze ich auch (und gern), Probleme wie die hier beschriebenen hatte ich auch.
Für mich konnte ich das lösen und wollte es (neben einigen anderen Kleinigkeiten) hier auch gern an Tobias zurückgeben - nur so richtig Zeit hatte ich nicht gefunden und mit git(hub) kenn ich mich (noch) nicht aus. Ich hab halt das ZIP geladen (3.2.0) und lokal mit PlatformIO gearbeitet.
Deshalb hier meine Frage: kann mir einer von Euch ein kurzes Rezept geben, wie ich meine Anpassungen in dies Projekt einbringen kann?

Grüße,
Stefan

@eckhard58
Copy link
Author

eckhard58 commented Dec 9, 2024

Hallo Stefan,
ich habe schon die Release 3.3.0.. Im Grunde funktioniert alles auch stabil, nur das mir die ID-Daten vom WR nicht mehr angezeigt werden.
Thobias hat seit kurzen auch einen Web Installer. Damit ist das flashen vom ESP32 recht einfach. (siehe aktuelle Wiki-Beschreibung.
Habe auch die Growatt-SPH.json mittlerweile etwas für meinen WR (Live-Data) erweitert. Lokal nehme ich auch PlatformIO und git(hub) ist auch recht neu für mich.
Was hast du für einen WR? Siehst du die ID-Daten?

Gruß
Eckhard

@StefanNouza
Copy link

StefanNouza commented Dec 9, 2024

Hallo Eckhard!

Das hatte ich vergessen, zu schreiben… tatsächlich auch einen Growatt, hier den SPH10000TL. Ich hab mich reichlich lang mit dessen Modbus-Schnittstelle auseinandergesetzt. Laut mehrerer Quellen soll die Spezifikation V1.24 am vollständigsten sein, bei mir passt die auf mein 2024er Gerät, ich verwende 40 Datenpunkte von den ca.70, die ich definiert habe - läuft super.
Auch den Datensatz wollte ich Tobias zukommen lassen.

Gruß,
Stefan

@eckhard58
Copy link
Author

eckhard58 commented Dec 9, 2024

Ich habe beide Growatt .json(MOD und SPH) benutzt und daraus meinen Datensatz erstellt. Mein WR hatte von beiden was und ich weiß noch nicht welche Spezifikation passt. Ich habe auch eine V1.24 und bin da noch am durchfitzen. Ist alles noch neu für mich. Woher hast du deine Growatt Modbus Doku?
Die Problemchen die ich hatte, liest du weiter oben.
Mein Sohn hat einen zwei Jahre alten Growatt SPH3000, meiner hat schon wieder andere Hardwareanschlüsse. Ging schon mit den RS485 PIN's los.

@tobiasfaust
Copy link
Owner

Hast du nicht noch eine Idee zum den nicht vorhandenen Raw Data of ID-Data?

Ich gehe mal davon aus das es einen Impact hierzu gibt:
new feature: defining multiple requests for id-data (thanks to @Lazgar) (#89)

muss ich mir ansehen, ich bin gerade mit dem WebInstaller und OTA komplett beschäftigt.

@tobiasfaust
Copy link
Owner

Das Schlüsselwort für mich fiel letzte Woche: „fhem“. Diese Heimautomatisierung nutze ich auch (und gern), Probleme wie die hier beschriebenen hatte ich auch. Für mich konnte ich das lösen und wollte es (neben einigen anderen Kleinigkeiten) hier auch gern an Tobias zurückgeben - nur so richtig Zeit hatte ich nicht gefunden und mit git(hub) kenn ich mich (noch) nicht aus. Ich hab halt das ZIP geladen (3.2.0) und lokal mit PlatformIO gearbeitet. Deshalb hier meine Frage: kann mir einer von Euch ein kurzes Rezept geben, wie ich meine Anpassungen in dies Projekt einbringen kann?

Dazu muss man mit seinem eigenen Github-Account angemeldet sein, von meinem Development Branch einen Fork ziehen. Ein Fork ist praktisch nur eine Repository Kopie im eigenen account. Danach in seinem eigenen Account in dem Fork die Anpassungen machen. Anschließend über die eigene Github Website einen PullRequest erstellen.
Wichtig ist, das kein Spezial-Code der nur für das eigene Projekt funktioniert eingebaut wird. Es muss generalistisch für alle nutzbar sein.

@Lazgar
Copy link
Contributor

Lazgar commented Dec 10, 2024

Hast du nicht noch eine Idee zum den nicht vorhandenen Raw Data of ID-Data?

Ich gehe mal davon aus das es einen Impact hierzu gibt: new feature: defining multiple requests for id-data (thanks to @Lazgar) (#89)

muss ich mir ansehen, ich bin gerade mit dem WebInstaller und OTA komplett beschäftigt.

Damit die ID-Daten wieder ausgelesen werden können, muss man die abzufragenden Register in ein Array packen.

@tobiasfaust wenn du möchtest kann ich das gerne anpassen und pushen

@tobiasfaust
Copy link
Owner

Ich habe mal 2 Buttons eingefügt. Der erste schaltet entweder alle ON oder OFF, der zweite ist ein echter "Toggle"

In der ModbusConfig war der Schalter zur (De-)Aktivierung der Set commands schon immer enthalten. Nur hat das Setzen des Buttons jetzt eine größere Auswirkung bekommen. @Lazgar hat die Set Commands in die ItemConfigSeite integriert und je nach globaler Einstellung in der ModbusConfig Seite werden diese nun angezeigt, oder eben nicht.
Hat der gewählte Inverter keine Set-Items definiert, gibt es ebenfalls einen Hinweis

Unterbrechungen in der MQTT Übertragung sind bisher keine bekannt. I.d.R. sind diese auf eine schwierige WLAN Verbindung zurückzuführen, oder der MQTT Server beendet die Verbindung

@eckhard58
Copy link
Author

eckhard58 commented Jan 29, 2025

Ich habe die Updates noch mal gemacht und seit dem läuft auch MQTT Übertragung wieder.
Vieleicht sollte man in einer Beschreibung der Update-Funktion erklären, wann man Firmware oder Filesystem updaten sollte.
Ich glaube das war mein Fehler.

Wo sind die zwei Buttons die du gemacht hast?

@eckhard58
Copy link
Author

Und nach den Updates ging alles wieder nur ein paar Stunden, dann fängt er an zu stottern.
In beiden ESP´s die gleichen Einstellungen mit der jeweiligen dazugehörigen Firmware.
Nach einem Reboot läuft er erstmal wieder.

Image

@tobiasfaust
Copy link
Owner

tobiasfaust commented Feb 3, 2025

habe gerade festgestellt das die Änderungen mit den beiden ToggleButtons nicht ins Repo eingecheckt wurde. Habe ich jetzt mit Build 118 nachgeholt. Das "Stottern" kann ich leider nicht nachvollziehen

@eckhard58
Copy link
Author

stell ich mich zu doof an?
Ich sehe die Buttons nach dem Update auch nicht.

@tobiasfaust
Copy link
Owner

Die Buttons sind eigentlich in der Überschrift, da wo „Active“ steht.

@eckhard58
Copy link
Author

Da ist nix zu sehen.

Image

@tobiasfaust
Copy link
Owner

Den Browser Cache hast du vorher geleert?

@eckhard58
Copy link
Author

Ja, hab ich gemacht.

@eckhard58
Copy link
Author

eckhard58 commented Feb 5, 2025

Also jetzt sind die Buttons da.
Keine Ahnung wie so die nun auf einmal da sind.
Gestern habe ich auch noch mal alles neu gemacht, auch noch mal den Browser Cache geleert und nix hatte sich verändert.
Heute Mittag war dann auf einmal alles so wie es sein sollte.
Hast du noch irgend etwas gemacht?

@tobiasfaust
Copy link
Owner

nein, nix gemacht. Bei mir läuft es auch absolut stabil, keine Aussetzer seit einer Woche.
Wenn alles io ist würde ich den aktuellen Stand als stable setzen

@eckhard58
Copy link
Author

eckhard58 commented Feb 6, 2025

Ist ja komisch , ich weiß auch nicht warum die Buttons nun da sind.
Und JA , seit der Neuinstallation läuft auch alles ohne Aussetzer.

Mit dem Bedienen aus Fhem heraus hab ich noch Probleeme.
Da muss ich noch bisschen lesen und probieren.

tobiasfaust added a commit that referenced this issue Feb 7, 2025
* update ElegantOTA, fix custom firmware upload

* Update modbus.cpp

* ID Daten per MQTT

* Create Solax-X3-PRO.json

* Update Solax-X3.json

* fix null-termination of string handling  (#96)

* some additional infos per mqtt with debuglevel > 4

some additional infos per mqtt with debuglevel > 4
- memory in kB
- uptime in sec
- wifi ssid

* Update mqtt.cpp

* Update mqtt.cpp

* Update modbus.cpp

* support for OpenWB 2.0 Api (#100)

* update

* remove unused buffer and improve clarity

* Update modbus.cpp

* minor fixes

* add optional WIFISSID/WIFIPASSWORD

* change ESP32-S2 board

* adjust openWB topics

* fix

* priorize requesting ID Data higher than LiveData (#76)

* update WiFi credentials in platformio.ini to use fixed values

* some fixes

* Update modbus.cpp

* Update modbus.cpp

* delete unnecessary newlines, fix serial-pins

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.cpp

* use checkbox for selection instead of radiobuttons

* Revert "use checkbox for selection instead of radiobuttons"

This reverts commit 04f39f9.

* prevent watchdog timer event

* update

* Update modbus.cpp

* add TotalEnergyPV for GroWatt (#100)

* bugfix: fix esp crash for /getitems if using an huge register table (#76)

* use internal logging method

* fix register id definition (#113)

* remove unnecessary webserver in mqtt class

* remove unnecessary webserver in mqtt class

* handle out-of-range crash (#96 #113)

* correct unit from kVarh to kWh in Deye_SUN_SG04LP3.json

* add bitwise mappings

* datatype "binary" now available for json register definitions (PR #115)

* fix openwb topic (#114)

* fix array access direction for datatype binary (PR #115)

* fix: 1 item less than map size, because last item is default value

* fix: resolve CORS issue when downloading a stable release

* fix: update button elements for actions and add confirmation dialogs (Sicherheitsabfrage beim Reset #120)

* add confirmation dialog for ESP reset or Wifi-Reset (#120)

* feature: add confirmation dialog for file deletion

* Enhance WebSocket and JSON handling with new features (#126)

* Visualisierung der Settopics (#127)

* Visualisierung der Settopics (#124)

* Update modbusitemconfig.html

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.h

* Update modbus.h

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.h

* Update modbus.h

* Update modbus.h

* Update modbus.cpp

* Update modbus.cpp

* Update MyWebServer.cpp

* Update MyWebServer.h

* Update modbus.cpp

* Update modbus.h

* Update modbus.h

* Update MyWebServer.cpp

* Update MyWebServer.cpp

* Update MyWebServer.cpp

* Update MyWebServer.cpp

* Update MyWebServer.cpp

* Update modbusitemconfig.js

* Update modbusitemconfig.js

* Update MyWebServer.cpp

* Update modbus.cpp

* Update modbus.h

* Update modbus.h

* Update modbusitemconfig.html

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.cpp

* Update modbusitemconfig.html

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.cpp

* Update modbus.h

* Update modbus.cpp

* Update modbus.h

* Update modbusitemconfig.html

* update

* refactor: initialize subscription fields with default values and clean up comments

* refactor: remove unnecessary headers from handleGetSetterJson response

* fix per cpplint

* fix: update WebSocket connection to use dynamic origin

* change setter handling to regfile

* refactor: update setter handling and improve JSON response structure

* fix: debugmode with Solax-X1 data, fix SetActiveStatus handling

* refactor: change Setters type to setter_t and tidy up code

* add setter info-box, remove /getregister, add setter mapping info to WebUI

* refactor: update info descriptions in Solax-X1 JSON and clean up unused server routes

---------

Co-authored-by: Lazgar <[email protected]>

* add "newUpdate available" info in WebUI header (#129)

* Update Solax-X3.json (#128)

* fix: correct update availability message in WebUI

* refactor: update subscription field to MQTT topic and enhance tooltip handling

* fix: normalize case for mapped values in modbus mapping function

* Correct bootloader offsets as not all ESP32 variants use 0x1000 (#130)

* add toggle buttons at ModbusItems WebUI to change all items at once (#96)

* add Growatt-SPH-V124 register file (thanks to @StefanNouza) (#109)

* add support for additional file types in BuildAndDeploy workflow

* add toggle functionality for Modbus items

* add titles to toggle icons for better accessibility in Modbus item configuration

---------

Co-authored-by: Lazgar <[email protected]>
Co-authored-by: Naomi Rennie-Waldock <[email protected]>
@StefanNouza
Copy link

Moin @eckhard58 , hallo @tobiasfaust !

Heute habe ich meine vorbereitete Growatt-V12x.json mal testen können - bei mir klappt alles. Verbesserungen sind:

  • Werte-Skalierungen für v1.20 und v1.24 zusammengeführt, man kann sich nun das passende auswählen
  • die gesamte Spec von Growatt nochmal durchgesehen und ein paar Werte gefunden, die interessant sein können
  • ein paar Set-Befehle hinzugefügt (unten in der JSON) - sind bisher ungetestet

@eckhard58 : magst Du bitte damit mal einen Test bei Dir machen, ob die Werte bei Dir passen?

@tobiasfaust : kann ich Set-Befehle ohne Parameter nutzen, d.h. einen Set-Befehl „RemoteOn“ und einen Set-Befehl „RemoteOff“ definieren, die im Hexstring identisch sind bis auf die letzten 2 Byte, die im Befehl fest mit 0x0000 bzw 0x0001 definiert sind? Oder hängt das Set-Kommando immer einen 2Byte-Parameter an?

Getrennte Kommandos fände ich syntaktisch schöner („RemoteOn“, „RemoteOff“) als ein Kommando mit Schaltparameter („RemoteOn 1“ für ein, „RemoteOn 0“ für aus). Wenn der Parameter zwangsweise ist, muß ich nochmal an meine Setter ran…

Hier erstmal die JSON:

Growatt-SPH-V12x-r240207.json

@tobiasfaust
Copy link
Owner

Hi Stefan,
Du gibst im Set Befehl immer nur die Register Adresse an die du beschreiben willst. Der Wert dahinter ist variabel.
Um ein on/off zu realisieren würde ich die Mapping Funktionalität empfehlen. Dann kannst du ein „on“ senden und der esp gibt dem WR ein 0001.
Schau dir dazu mal das Solax-x3 json an.

@StefanNouza
Copy link

Hallo Eckhard, hallo Tobias!

Die Growatt-JSON habe ich nochmal ergänzt:

  • Setter nun im Stile des Solax-x3 -> schöne Funktion, Dein Mapping!
  • man kann über den Growatt-Wechselrichter seinen Einspeise-Energiemonitor SDR630 erreichen. Der Befehl ist eingebaut und getestet, d.h. es gibt noch einige neue Werte.

Ob mit dieser JSON auch andere Energiemonitor-Typen abfragbar sind (weil der WR evtl. "übersetzt"), weiß ich nicht.

Die Version heißt nun "Growatt-SPH-V12x-SDR", also Wechselrichter Growatt SPH, Version 1.20 oder 1.24, mit (oder ohne) Energiemonitor SDR. Mir fällt nun wirklich nichts mehr ein - wenn nicht noch Probleme / Wünsche auftauchen, betrachte ich diese Version

Growatt-SPH-V12x-SDR.json

als final.

@eckhard58 : gerne einmal testen und zurückmelden, ob sie auch bei Dir arbeitet.

@eckhard58
Copy link
Author

Hallo Stefan,
werd ich machen, bin bis jetzt unterwegs gewesen.
Ich melde mich

@tobiasfaust
Copy link
Owner

Könntest du das JSON auch einmal ohne SDR bereitstellen? Für die User die kein SDR haben ;)

@eckhard58
Copy link
Author

Guten Morgen in die Runde

Seit heute morgen läuft die Json von Stefan bei mit und ich kann fast keine Fehler entdecken.
Bei mir ist ein DTSU666 verbaut, scheint also auch zu klappen, zumindestens sind die Werte plausiebel.
Aber, obwohl der MQTT Status connectet anzeigt, holpert die Übertragung zu Fhem stark.
Nach einem Reboot ist nach paar Minuten schluß. Das erkennt man auch daran, dass die Werte im Status nicht mehr rot werden.

@tobiasfaust
Copy link
Owner

schau mal bitte ob du auf der esp seriellen Konsole Fehler entdeckst. Erstmal bei LogLevel 3, falls nichts ungewöhnliches gezeigt wird, stell auf loglevel 4.

Parallel dazu beobachte mal die Browser Konsole ob auf JavaScript Ebene auch Fehler geloggt werden.

Eventuell ist auch das Intervall für diese Menge an Items zu klein, stell mal auf 10min

@eckhard58
Copy link
Author

Den Intervall lasse ich schon immer mit 15s laufen.
Loglevel 4 zeigt in der Browser JavaScript Ebene diese Auffälligkeiten ... was ich da so sehen kann.

Image

Was ich allerdings vorher noch einmal gemacht habe, ist ein wiederhohltes Update der Firmware.
Wie so läuft es nun jetzt erst richtig? Trotz der drei Fehler.
Irgend wie bin ich da immer unsicher. Im Prinziep habe ich damit ja nichts geändert.

@eckhard58
Copy link
Author

eckhard58 commented Feb 9, 2025

Zu Steffan mal gesagt,
ist ja Super das man dem SmartMeter so auslesen kann.
So kann ich, trotz dass ich nur einen einphasigen Growatt habe, alle drei Phasen sehen.
Mein Growatt gibt sonst keine Auskunft über L2 und L3

@tobiasfaust
Copy link
Owner

tobiasfaust commented Feb 9, 2025

Wenn du das Browserfenster nicht mehr im Vordergrund hast, oder das Fenster wechselt, stoppt die Aktualisierung im Browser. Via MQTT werden natürlich weiter aktuellen Daten gesendet und auch sauber in FHEM ankommen. Ich kann mir nicht erklären warum es bei dir am Anfang holpert.

Bzgl. L2/L3: einfach die Items nicht aktivieren. Dafür gibt es extra den Active Schalter.

@StefanNouza
Das item Inverter_FaultCodeText kannst du auf den Datentype binary umstellen, dann sparst du dir die Auflistung der einzelnen integerwerte und mehrere Fehler werden auch korrekt ausgegeben. Ggf kannst du nanalog dazu auch andere Items noch umstellen.

@eckhard58
Copy link
Author

Ja das meine und mache ich auch so. Wollte nur sagen dass mein Growatt nicht, aber der Smartmeter die Daten her gibt.

@StefanNouza
Copy link

Moin!

Schön, daß andere EnergyMeter auch klappen - und Dir, @eckhard58 auch Dank, daß Du so schnell testen konntest. Deinen Anwendungsfall - 3phasiges Netz bei 1phasigem WR - hatte ich garnicht gesehen, ist aber sicherlich interessant für Dich.

Da der Wechselrichter die EnergyMeter-Werte in seinem Registersatz bereitstellt, sollte die „große“ JSON auch ohne EM arbeiten, die Register bleiben dann vermutlich auf 0. Da @tobiasfaust gerne wenige, umfassende JSONs hätte, habe ich alle Fälle zusammengefasst. Gerne stelle ich die nocheinmal mit und ohne EM getrennt zur Verfügung - möchtest Du beide, Tobias?

Zum „binary“: hatte ich gesehen, ist auch der elegantere und bessere Weg. Dazu zwei Fragen

  • beim Growatt ist es ein Doppelregister, also 32Bit - kann ich binary darauf anwenden?
  • in welcher Reihenfolge definiere ich die 32 Einträge? Bit0 zuerst, dann Bit1… bis Bit31, oder Bit31 zuerst und dann absteigend?

Mit der nächsten Version warte ich noch auf Deine Antwort, zu viele Stände machen es auch nicht schöner und die aktuelle ist ja soweit fehlerfrei…

@tobiasfaust
Copy link
Owner

tobiasfaust commented Feb 10, 2025

@StefanNouza , bis zu 32 Stellen sind aktuell benutzbar.
Es startet von links, mit dem höchsten Bit

String modbus::MapBitwise(JsonArray map, String value) {

Ein zweites json ohne EM macht auch nur Sinn wenn man mindestens ein Request sparen kann.

@eckhard58
Copy link
Author

Hallo Stefan,
wie sehen die Befehle in Fhem bei dir aus? z.B. UPS ein- ausschalten
Bei meiner Heizung EMS-ESP funktioniert es aber am Wechselrichter EMS bekomme ich das noch nicht hin.

WwSollT:44,46,48,50,52,54,56,58,60 ems-esp/boiler {"cmd":"dhw/seltemp", "data":$EVTPART1}
UPS:0,1 home/Growatt_0/set {"cmd":"setUPS", "data":$EVTPART1}

@StefanNouza
Copy link

StefanNouza commented Feb 12, 2025

Moin @eckhard58 !

Die Setter habe ich selbst noch nicht getestet, Du findest sie unten in der JSON:

    "name": "setUPS",
    "realname": "UPS Status",
    "info": "accepted values:",
    "mapping": [
      ["Disable", 0],
      ["Enable",  1]
    ],

im Prinzip sieht das schon ganz gut aus, Cmd ist „setUPS“, Data ist aber „Disable“ bzw. „Enable“.
Daraus ergibt sich dann:
UPS:‘Disable’,‘Enable’ home/Growatt_0/set/setUPS $EVTPART1
…ungetestet….

@eckhard58
Copy link
Author

eckhard58 commented Feb 14, 2025

Moin Stefan,

das habe ich nun alles durchprobiert,

UPS3:uzsuSelect,‘Disable’,‘Enable’ home/Growatt_0/set/setUPS $EVTPART1
UPS2:uzsuSelect,Disable,Enable cmnd/home/Growatt_0/set/setUPS $EVTPART1
UPS1:Disable,Enable home/Growatt_0/set {"cmd":"setUPS", "data":$EVTPART1}
UPS_off:noArg cmnd/home/Growatt_0/set/setUPS Disable
UPS_on_:noArg cmnd/home/Growatt_0/set/setUPS Enable

leider funktioniert keines der SET-Befehle.
Könnte es sein, dass man nur mit dem Growatt-Passwort an die Einstellungsänderung ran kommt?

Mal noch eine andere Frage zum Growatt WR.
Hast du auch morgens ,wenn es hell wird, dass der WR nicht weiß was er machen soll?
So schaltet da auch ein Relais hin und her im WR.

Image

Ich hab letzte Woche schon mal eine Anfrage an Growatt gesendet ... Antwort kann dauern.

Schönes Wochenende
Eckhard

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants