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 · 129 comments
Open

Growatt SPH3000-RS485-ESP32-MQTT #96

eckhard58 opened this issue Nov 26, 2024 · 129 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

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.20 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

tobiasfaust commented Jan 4, 2025

check mal die basisconfig, da hast du bestimmt die WebUI Authentifizierung aktiviert. Per default ist es aus, standarduser/pw ist aber "admin/admin" Steht auch so im Wiki ;)

Bzgl Aussetzer, kann ich mir nur vorstellen wenn du die ganze Zeit das WebUI des ESP geöffnet haben solltest. Oder du ständig /getitems abfragst.
Ich habe ausschliesslich die Funktion GetLiveDataAsJson bearbeitet die schlussendlich für /getitems oder für den 5 sekündlichen Reload der aktuellen Werte im WebUI (Status- und ModbusitemPage) verantwortlich ist.
Ich kann aus deinen Charts auch nichts wirklich ablesen. Das ganze Netzwerk beeinflussen geht eigentlich auch nicht da jeder ESP für sich alleine steht und nur ein paar Byte bis kb übertragen werden.

@saschoctm
Copy link

Hallo Tobias. ich kann das bestätigen von Eckhart mit dem Passwort und die WEBUI Authentifizierung ist deaktiviert.

@saschoctm
Copy link

So ich habe das ganze jetzt mal geloggt.
Aufgefallen ist das wenn Log Level größer 2, das es nicht mehr funktioniert das wenn ich das gateway starte ohne verbindung zum WR und dann einstecke das die Verbindung hergestellt wird zum WR. Ich kann das am WR sehen da dort ein Icon erscheint wenn verbunden. Jedenfalls anbei das Log
output_2025-01-04_10-36-20 5bmit.txt

@saschoctm
Copy link

Hier nochmal log level 4, da steht noch was von littlefs no permits, das war im anderen log nicht aufgeführt...

output_2025-01-04_10-34-41 4 mit.txt

attempting to start WebServer
WebServer has been started ...
WiFi connected with IP: 192.168.2.194
[Log 4] Query Live Data into Queue:
[Log 3] Request queue data to inverter:
[Log 3] 0x01 0x03 0x00 0x00 0x00 0x14 0x45 0xC5
[Log 3] Read Data from Queue:
0x01 0x03 0x28 0x00 0x01 0xA9 0x48 0x00 0x00 0x00 0x64 0x00 0x64 0x27 0x10 0x00 0x00 0x27 0x10 0x0E 0x10 0x59 0x41 0x31 0x2E 0x30 0x00 0x5A 0x44 0x41 0x41 0x00 0x0A 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x46 0x00 0x46 0x0E 0x38
[Log 4] ErrorCode passed, OK
[Log 4] Received CRC: 0x0E 0x38
[Log 4] Calculated CRC: 0x0E 0x38
[Log 4] Dataframe length should be: 40, is: 40 bytes
[Log 3] Dataframe valid, Dateframe size: 45 bytes
[Log 3] parse 45 bytes of data
[Log 4] identified datatype: id
[Log 4] parsing JSON ok
[ 5967][E][vfs_api.cpp:105] open(): /littlefs/web/index.html.gz does not exist, no permits for creation

abort() was called at PC 0x4016db13 on core 1

Backtrace: 0x400837d1:0x3ffb1a00 0x4008dc35:0x3ffb1a20 0x40093159:0x3ffb1a40 0x4016db13:0x3ffb1ac0 0x4016db5a:0x3ffb1ae0 0x4016dc53:0x3ffb1b00 0x4017b23f:0x3ffb1b20 0x400db64d:0x3ffb1dc0 0x400e1a82:0x3ffb1de0 0x400e2331:0x3ffb21d0 0x400e23ed:0x3ffb2250 0x400daf21:0x3ffb2270 0x400f909d:0x3ffb2290

ELF file SHA256: 7c63abb13917180d

Rebooting...

@eckhard58
Copy link
Author

Ich hab heute meinen Test ESP neu geflasht. Zur Zeit haut alles wieder hin.
Die WebUI Authentifizierung ist auch immer deaktiviert bei mir. Keine Ahnung wie das kam.
Der ESP lief sonst, Daten sind in Fhem eingegangen.

Was schon seit einigen Release immer wieder kommt ist das hier:

growatt3

Es lässt sich aber quittieren und alles funktioniert. Denke das liegt aber am G-Chrome.
Weiß aber nicht wie man das beheben kann.

@tobiasfaust
Copy link
Owner

@saschoctm
Beim parsen der Antwort der ID-Daten schmiert der esp ab. Mach dasselbe bitte nocheinmal mit LogLevel 5

@saschoctm
Copy link

der erste post mit dem anderen File 5bmit war mit loglevel 5

@saschoctm
Copy link

hier nochmal log level 5

output_2025-01-04_11-20-49 logl5.txt

@tobiasfaust
Copy link
Owner

Fehler gefunden, liegt am json….. ist auch logisch.
Es werden bei id Data 14 register abgefragt, also incl Header sind das 45 Bytes. Es wird aber bei der InverterSN bis Byte 55 gesucht, deshalb gibt es ein out-of-Range Fehler den der ESp mit einem reboot quittiert

[Log 4] Query Live Data into Queue:
[Log 3] Request queue data to inverter: 
[Log 3] 0x01 0x03 0x00 0x00 0x00 0x14 0x45 0xC5 
[Log 3] Read Data from Queue: 
0x01 0x03 0x28 0x00 0x01 0xA9 0x48 0x00 0x00 0x00 0x64 0x00 0x64 0x27 0x10 0x00 0x00 0x27 0x10 0x0E 0x10 0x59 0x41 0x31 0x2E 0x30 0x00 0x5A 0x44 0x41 0x41 0x00 0x0A 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x46 0x00 0x46 0x0E 0x38 
[Log 4] ErrorCode passed, OK
[Log 4] Received CRC: 0x0E 0x38
[Log 4] Calculated CRC: 0x0E 0x38
[Log 4] Dataframe length should be: 40, is: 40 bytes
[Log 3] Dataframe valid, Dateframe size: 45 bytes
[Log 3] parse 45 bytes of data
[Log 4] identified datatype: id
[Log 4] parsing JSON ok
{
  "position": [
    46,
    47,
    48,
    49,
    50,
    51,
    52,
    53,
    54,
    55
  ],
  "name": "InverterSN",
  "realname": "Inverter SerialNumber",
  "datatype": "string"
}
abort() was called at PC 0x4016db13 on core 1

@saschoctm
Copy link

okay bedeutet zu lang?
Hab gerade das hier versucht, geht auch nicht...
{
"position": [
49,
50,
51,
52,
53,
54

das hier ist übrigens die growatt sph doku..
daher sollten die Register 49-58 richtig sein...geht aber ebenso nicht
46-55 hatte ich nur getestet weil es so bei einer frühen Version des gateway funktionierte, ID wurde aber nie ausgelesen.

doku

@tobiasfaust
Copy link
Owner

Ok, dann musst du den requestIdData String im json höher setzen. aktuell steht dieser bei 0x14, prüfe mal ob 0x40 dein WR mitmacht. Eventuell reicht auch schon 0x20.
Falls nein, stückweise reduzieren

@saschoctm
Copy link

Jupp läuft beides 0x20 und 0x40 und die SN wird ausgelesen.
Jetzt läuft alles.

@saschoctm
Copy link

@tobiasfaust vielen Dank für die Hilfe, ich denke dann kann es so bleiben?
Dann lass ich das mal so laufen und schaue was passiert. OpenWB 2.0 teste ich auch jetzt.

Das was Eckhard aber hat mit der Passwort abfrage habe ich aber wie gesagt auch.

@eckhard58
Copy link
Author

Was ihr da grad repariert habt, läuft das dann auch mit meiner Json?

@tobiasfaust
Copy link
Owner

@saschoctm
Ihr müsst einmalig die basisconfig neu speichern.

@eckhard58
Probier es aus ;)

@eckhard58
Copy link
Author

Wie kommt die Basisconfig auf meinen ESP, muss ich da nicht was neu laden?
Wie gesagt, was ihr da macht entzieht sich meinem Wissensstand.
Ich kann es nur als Anwender testen. 8)

@saschoctm
Copy link

Hi Eckhard, also ich kenne deinen WR nicht aber wenn die SN richtig bei dir angezeigt wird sollte alles okay sein
falls nicht in der json einen wert erhöhen von 0x14 --> auf 0x20: habs unten fett markiert

"RequestIdData": [
[
"#ClientID",
"0x03",
"0x00",
"0x00",
"0x00",
"0x20"
]

@tobiasfaust
Copy link
Owner

Wie kommt die Basisconfig auf meinen ESP, muss ich da nicht was neu laden? Wie gesagt, was ihr da macht entzieht sich meinem Wissensstand. Ich kann es nur als Anwender testen. 8)

Damit meine ich in der Web-UI des ESP im Reiter baseconfig einfach nochmal den speicherbutton drücken ;)

@eckhard58
Copy link
Author

eckhard58 commented Jan 4, 2025

Aha, vielen Dank euch beiden.
So fress ich das auch :)

So sieht das bei mir aus:
Inverter SerialNumber ist OK => DTM4E5J00N

],
"RequestIdData": [
[
"#ClientID",
"0x03",
"0x00",
"0x00",
"0x00",
"0x20"
]
]

Zur Zeit läuft auch alles ohne Aussetzer 👍

tobiasfaust added a commit that referenced this issue Jan 4, 2025
@eckhard58
Copy link
Author

Moin,
mal so ein positiver Zwischenstand von mir.
Also so stabil lief noch keine Software wie diese.
growatt4
Absolut keine Aussetzer mehr, beide ESP, ob Growatt_0 = Build 87 oder Growatt_2 = Build 100.
Beide laufen mit LogLevel 5 und rund 45 LiveDaten. Der LiveDaten Interval steht allerdings bei 20s.

Schönen Sonntag 👍

@tobiasfaust
Copy link
Owner

@eckhard58 vielen Dank für die kleine Spende :)

wenn alles sauber läuft solltest du den LogLevel wieder zurückdrehen, maximal auf 2. das log kostet nämlich auch etwas Performance ;)

dann würde ich den aktuellen Stand als stabile-Version hochsetzen bevor meine nächsten Änderungen ins DEV gehen.

@eckhard58
Copy link
Author

eckhard58 commented Jan 5, 2025

So ist es aber ein guter Extremtest :)
Frag auch mal vorher die Anderen in der Runde.
Ich bin nicht das Maß der Dinge.

@eckhard58
Copy link
Author

eckhard58 commented Jan 5, 2025

Im neusten Build 103 haut was nicht hin. Laufen tut es aber es wird ein Passwort verlangt, admin admin geht nicht.

Growatt5

Und ich muss nach jedem Update meine Json immer wieder nachladen.

@tobiasfaust
Copy link
Owner

sorry, default ist es admin/password
Per default ist die Authentifizierung abgeschaltet, selbst mit einem frischen ESP ohne config ist es aus.
Hier habe ich aber nichts geändert, die Änderungen betrafen nur #115.

Eigene Jsons sind natürlich nicht im offiziellen Build enthalten und müssen nach einem Update immer manuell wieder eingeladen werden. Das ist auch so gewollt. Grundsätzlich möchte ich natürlich custom-definitions gerne vermeiden. Dafür nehme ich Erweiterungen und auch neue Definitionen für andere WR oder anderen Baureihen gerne entgegen um diese ins repo zu integrieren damit die gesamte Community davon profitieren kann

@eckhard58
Copy link
Author

Ich habe keine Problem wenn du meine Json mit aufnimmst.
Da sind jetzt fast alle Daten drin, die ein einphasiger Growatt SPH 3000 (u.a.) Wechselrichter (Baujahr 2024) übertragen kann.
Growatt-SPH4.json
Es ist ja eine Erweiterung bzw Anpassung von Thomas-99

Kannst Du /Ihr mir noch einen Tipp geben wie man Daten von Fhem zum WR senden kann?
Wie sieht so ein Befehl aus?
Z.B. Betriebsart des WR, Endladeleistung der Batterie usw.

@StefanNouza
Copy link

StefanNouza commented Jan 7, 2025

Hallo Stefan,

Moin @eckhard58!

Zuerst einmal auch Dir ein frohes neues Jahr!

sag mal wie steuerst du den das Verhalten des Wechselrichters im Fhem?

Tatsächlich: garnicht…

Zum Beispiel die Betriebsart umschalten oder ein- und ausschalten des USV-Ausgangs. Ich hab noch keine Ahnung wie so was geht. Wie sehen die Befehle in Fhem aus?

Die Betriebsart steht bei mir (vom Solateur) auf „Priority Load First“, d.h. Solarenergie geht zuerst in den Eigenverbrauch, der Rest in die Batterie. Da mein Stromtarif immer gleich ist, ist es auch egal, welchen Verbrauchsanteil ich einspare…

Zum Steuern des WR muß in der JSON eine Struktur „set“ aufgebaut werden - ein Beispiel steht unten in der „Solax-X1.JSON“. Dort steht unter „name“ ein Kommandoname und unter „request“ der zugehörige ModBus-Befehl, wie er in der (Growatt-)Wechselrichterdoku zu finden ist.

Beim Starten des ESPs werden am MQTT-Server die unter „set“ gefundenen „names“ (Kommandos) subscribed. FHEM kann dann auf diese Kommandos publishen. Ein paar Kommandos hatte ich in der alten 3.2.x-JSON drin, aber nie ausprobiert. Auch das Publishen aus FHEM habe ich bei dieSEm Projekt nie versucht.

Über die Feiertage lief mein ESP32 mit der neuen Version und meiner angepassten Json ohne Probleme durch.

Super - ich werde die nocheinmal mit meiner Growatt_V120 abgleichen.

Gruß, Stefan

@eckhard58
Copy link
Author

eckhard58 commented Jan 8, 2025

Hallo Stefan,

Dir auch ein gesundes und frohes neues Jahr.

In meiner Json Datei stehen ein paar Set Befehle drin.
Bestimmt sind das deine aus der alten Json. Ich werde mir das mal angucken und ausprobieren. Mal sehen wie weit ich komme. Wie ist der Bezug der Adressen zu dem Modus Registern?

"set": [
{
"name": "SetPriority",
"request": [
"#ClientID",
"0x06",
"0x04",
"0x14"
]
},
{
"name": "UPSenable",
"request": [
"#ClientID",
"0x06",
"0x04",
"0x24"
]
}

Vielleicht können wir ja aus deiner und meiner eine gemeinsame Json machen.
Ich habe aber festgestellt, dass die Growatt WR sich oft unterscheiden.
Mein Sohn hat einen 3 Jahre alten Growatt SPH 3600, der ist schon wieder anders.
Kannst ja mal nach deinem Abgleich berichten.

Gruß Eckhard

@tobiasfaust
Copy link
Owner

Es wird wohl am besten sein, jeder macht sein passendes Json. Bitte benennt dieses exakt nach eurem WR-Modell und tragt euch als "author" ein.. Wenn die einzelnen Modelle solch unterschiedliche Register haben kommen wir leider nicht drum herum.

Da sind die Solax echt einfacher....

@StefanNouza
Copy link

Hallo @eckhard58,

zusammenfassen hatte ich auch schon überlegt, noch liegen die beiden etwas auseinander…
Die Set-Befehle sind von mir, aber nie getestet.

Allen Set-Befehlen fehlt im Kommando der Parameter - bei UPSenable 1=enable/0=disable, bei SetPriority die Prio 0=load/1=bat/2=grid.
@tobiasfaust: kann das ModBus-Kommando aus dem MQTT-subscribe in der jetzigen Implementierung einen Parameter empfangen? Und kann ich den dann im JSON in das Set-Telegramm einbinden (analog zu #clientid)?

Das ist insoweit nicht wichtig, da ich die Set-Kommandos auch teilen kann, z.B. in UPSenable und UPSdisable. - Also @eckhard58 : so werden die Kommandos noch nicht laufen, da die nötigen Parameter fehlen im JSON. Die gerade angesprochenen Einzel-Sets hab ich schon fertig, ich hänge meine neue JSON hier mal an (komplett noch ungetestet!)..

Zu den Sets:
#clientid ist selbsterklärend
0x06 ist das Kommando zum Schreiben
0x04 0x14 ist das zu beschreibende Register, wie in der Growatt-Doku beschrieben 0414hex = 1044 setprio
0x00 0x01 zwei Bytes für den Parameter, 0001=1->prio batt

Growatt-SPH-V124-110.json

Berichte mal, ob die so geht!

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