tobiasfaust / SolaxModbusGateway

Modbus RTU to MQTT Gateway
GNU General Public License v3.0
54 stars 17 forks source link

Growatt 3000tl3 XH #40

Closed Maver2k closed 2 months ago

Maver2k commented 6 months ago

Moin zusammen, ich bin neu hier und versuche mein nächstes Projekt in FHEM. Ich habe den ESP32 so vorbereitet, dass ich den an den WR anklemmen kann. Wurde vlt. schon ein register.h für den MOD tl3 XH angepasst und könnte die mit zur Verfügung stellen?

wwwiesel commented 5 months ago

Hi, ich bin auch auf der Suche nach einer MOD Konfiguration... bzw. zumindest mal eine Basis. Das Beispiel aus dem Wiki funktioniert irgendwie nicht :(

tobiasfaust commented 5 months ago

Funktioniert denn einer der vordefinierten WR sodass irgendetwas auf der RawData Seite ausgegeben wird?

tobiasfaust commented 5 months ago

Hier steht’s aber…. Die Register starten ab 3000

New-Modbus.RS485.RTU.Protocal.Latest.Ver.pdf

tobiasfaust commented 5 months ago

Probier mal das…. Das ließt die live Register ab stelle 3000

"RequestLiveData": [ ["#ClientID", "0x04", "0x0B", "0xB8", "0x00", "0x77"] ]

wwwiesel commented 5 months ago

Der Chef persönlich! Vielen Dank für diese tolle Arbeit! Muss ich dies dann erst in einer neuen Firmware kompilieren? Hatte die bin genommen aus dem Release.

Und unter raw habe ich ein paar Daten, aber nicht alle denke ich.

Ich baue mir morgen mal eine neue Firmware.bin zusammen.

Muss ich dann 3000x2+3 für das jeweilige Register machen?

Maver2k commented 5 months ago

Funktioniert denn einer der vordefinierten WR sodass irgendetwas auf der RawData Seite ausgegeben wird?

Hallo Tobias, es wird was auf der RawData Seite angezeigt, aber scheint so auszusehen wie bei wwwiesel. Kann aber im Moment auch nicht drauf schauen, da ich für die nächsten Tage unterwegs bin.

@wwwiesel: Wenn du mit deiner .bin fertig wärst, würdest du die dann zur Verfügung stellen? Das wäre echt super.

tobiasfaust commented 5 months ago

Wichtig ist erstmal, das auf der RAWData Seite unter LiveData jede Menge angezeigt wird. In meinem Beispiel oben von Position 3000 genau 119 Register, also 3000 - 3119 Bitte dazu in der register.h eine neue Sektion erstellen "Growatt 3000 TL3 XH" Die korrekten Registernummern für die Register.h bekommt ihr am besten wie im Wiki beschrieben ebenfalls über die RawData seite heraus, darüber könnt ihr dann auch gleich testen ob der Wert plausibel ist.

Dann die Register.h erweitern, kompilieren, flashen und prüfen ob jetzt alles passt. Ggf das Spiel wiederholen um die register.h definition zu verfeinern.

Eigentlich ist das selbstständige Herausfinden der korrekten Register ein Kinderspiel wenn man die korrekte Modbus-Doku des WR hat ;)

wwwiesel commented 5 months ago

Natürlich werde ich, wenn ich es hinbekomme, alles zur Verfügung stellen.

@tobiasfaust Wie bist du auf

"RequestLiveData": [ ["#ClientID", "0x04", "0x0B", "0xB8", "0x00", "0x77"] ]

gekommen? ich will es ja verstehen, stehe aber etwas im Wald.

EDIT: Ah ich glaube ich bin eben selber drauf gekommen 0BB8 = 3000 einfach 0x Wegstrippen... wofür aber 00 77? = dezimal 119?

tobiasfaust commented 5 months ago

77 hex = 119 dez. Immer wenn ich mehr als 119 Register abfrage gab es einen Fehler. Kannst du aber ausprobieren ob du mehr abfragen kannst.

wwwiesel commented 5 months ago

Ich bin nun ein wenig weiter... Baud Rate muss 9600 Sein sonst sieht man da nichts... "Growatt-MOD-Type": { "config": { "RequestLiveData": [ ["#ClientID", "0x03", "0x00", "0x00", "0x00", "0x77"], ["#ClientID", "0x04", "0x0B", "0xB8", "0x00", "0x77"] ], "RequestIdData": ["#ClientID", "0x03", "0x00", "0x00", "0x00", "0x14"], "ClientIdPos": 0, "LiveDataFunctionCodePos": 1, "LiveDataFunctionCode": "0x04", "IdDataFunctionCodePos": 1, "IdDataFunctionCode": "0x03", "LiveDataStartsAtPos": 3, "IdDataStartsAtPos": 3, "LiveDataErrorPos": 1, "LiveDataErrorCode": "0x84", "IdDataErrorPos": 1, "IdDataErrorCode": "0x83", "LiveDataSuccessPos": 1, "LiveDataSuccessCode": "0x04", "IdDataSuccessPos": 1, "IdDataSuccessCode": "0x03"

sind diese Daten von Relevanz?

tobiasfaust commented 5 months ago

Ja die sind wichtig. Die steuern wie die Daten interpretiert werden müssen. Der erst live Data Eintrag ist falsch, der passt nicht. Live Data sind alle mit Funktion Code 0x04

wwwiesel commented 5 months ago

Ah ok, das würde auch erklöären warum ich das ganze teil abschieße sobald ich den neuen sketch update?

Edit: Ne liegt nicht da dran, sobald baud 9600 eingestellt ist und ich meinen fork compiliere, steigt der esp32 aus. Entferne ich den A Kanal ist dieser wieder erreichbar

wwwiesel commented 5 months ago

Nabend, ich habe es nicht zum laufen bekommen, jedoch eine Alternative gefunden die für mich besser passt. Danke für die Mühe

tobiasfaust commented 5 months ago

Moin, Ich verstehe leider nicht, die 9600 baue stellst du doch in der weboberfläche ein, nicht im Sketch. Im Sketch wird nur die Register.h angepasst. Ich nehme aber auch mal an das du die zu deinem ESP passende kompilierte Firmware ausgewählt hast.

Etwas tricky ist auch die korrekte Verkabelung zum WR sodass sowohl die RX als auch die TX LED des Rs485 Moduls blinkt.

Aber schade, ich hätte gerne die Register.h für deinen WR in mein Repo aufgenommen.

wwwiesel commented 5 months ago

Guten Morgen,

Okay. Dann helfe ich gerne, ich habe noch ein paar esp32 und rs452 Platinen rumliegen.

Die baudrate 9600 habe ich auf der Webseite eingestellt, korrekt, sobald ich aber eine von mit kompilierte Version mit den MOD settings verwendet habe konnte ich den modbus nicht mehr anschließen, da sonst der esp nur noch per ping erreichbar war.

Mal was anderes, kann man das ggf nicht anders lösen als immer neu kompilieren? Das würde es einfacher machen. Zudem ist es etwas unübersichtlich wenn alle Hersteller in einer Datei sind. Ich bin jetzt nicht der große Entwickler, ich kann Python 😂 dann hörts auf.

tobiasfaust commented 5 months ago

Um den Fehler auf den Grund zu gehen bitte beobachte die serielle Ausgabe welche Meldungen dort auftauchen, ggf das logLevel hochdrehen. Bitte vorher auch immer das gesamte json aus der Register.h incl der Änderungen einmal mit der Webseite jsonlint überprüfen. Kann ja sein das du da einen syntaxfehler mit reinbringst. Ist mir selbst auch schon sehr oft passiert.

Das aufteilen auf mehrer files steht auf meiner todo Liste ganz oben 🔝

wwwiesel commented 5 months ago

Ich werde die woche mir einen raspberry zusammen bauen, dann kann ich den Fernbedienen mit der seriellen schnittstelle...

Die Arduino Test datei werde ich dann auch ausprobieren...

tobiasfaust commented 5 months ago

Ich habe alles auf Files umgestellt, dafür muss ab sofort bei der Installation immer auch das littlefs.bin geflashed werden. Aber Achtung, die eigene Konfiguration ist danach wieder auf Werrkseinstallung zurückgesetzt. WikiSeite ist angepasst. Eine eigene Seite auf der Weboberfläche des ESP zur Pflege des Inhaltes der Dateien kommt noch

tobiasfaust commented 5 months ago

in der aktuellen Dev gibt es jetzt eine "Files" sektion, hier kann man via Web an den jsons arbeiten, lokal herunterladen und auch auf dem ESP wieder abspeichern

tobiasfaust commented 4 months ago

Gibt es hier Fortschritte?

wwwiesel commented 4 months ago

Hi. leider noch nicht, ich war die letzte Zeit etwas eingespannt, ich denke nächste Woche habe ich ein erstes Setup

nobbiman commented 4 months ago

Muss ich davon ausgehen, dass der Growatt 4600 TL-XH nicht ausgelesen werden kann oder hat meine Fehlermeldung beim Verbindungsaufbau im ioBroker On error: {"errno":-111,"code":"ECONNREFUSED","syscall":"connect","address":"192.168.2.197","port":502} eine andere Ursache? Hardwaremäßig habe ich einen ESP32 mit dem Breakout Board wie im Projekt vorgestellt verwendet.

tobiasfaust commented 4 months ago

Muss ich davon ausgehen, dass der Growatt 4600 TL-XH nicht ausgelesen werden kann oder hat meine Fehlermeldung beim Verbindungsaufbau im ioBroker On error: {"errno":-111,"code":"ECONNREFUSED","syscall":"connect","address":"192.168.2.197","port":502} eine andere Ursache? Hardwaremäßig habe ich einen ESP32 mit dem Breakout Board wie im Projekt vorgestellt verwendet.

Du versucht per Modbus-TCP drauf zu gehen. Mit dem Projekt funktioniert der Connect aber per Modbus-RTU

die Fehlermeldung kommt nicht aus meinem Projekt heraus ;)

nobbiman commented 4 months ago

Hallo, Danke für deine Rückmeldung.

Ja, ich verstehe zu wenig davon, will aber unbedingt Zugriff auf die Holdingregister des WR haben um gewisse Parameter steuern zu können.

Deshalb suche ich Hilfe.

Nach deiner Antwort habe ich in der Konfiguration meines ioBrokers die im Screenshot eingestellten Werte verändert (von TCP auf RTU over TCP), im Ergebnis erhalte ich die gleiche Fehlermeldung.

Andererseits versuche ich den Zugang auf das WebUI zu bekommen, weiß aber nicht wie ich darauf zugreifen kann.

Kannst du mir da weiterhelfen?

nobbiman commented 4 months ago

Nochmals, das vorhin Screenshot vergessen:

tobiasfaust commented 4 months ago

Bitte nicht per Email antworten!

einfach die ipadresse des esp im Router suchen und im Web aufrufen

nobbiman commented 4 months ago

Die IP-Adresse habe ich ja, leider kann ich das WebUI nicht erreichen, ein Ping ist aber erfolgreich! ??? Ist evtl. ein Aderntausch hilfreich?

wwwiesel commented 4 months ago

EDIT: jetzt kam der AP_ModbusGateway hoch...

nobbiman commented 3 months ago

So, der ESP ist über das UI erreichbar, Probleme hat offenbar die instabile WLAN-Verbindung produziert. Leider kommen noch keine Daten rüber, am COM-Stecker des WR habe ich die PINs 3+4 gewählt (s. Anhang) Die Configuration der Modbus-SS habe ich als Screenshot der Anlage beigefügt. Ob mir wohl jemand auf die Sprünge helfen kann? BaseConfig COM-Stecker Modbus Config Status

tobiasfaust commented 3 months ago

Eventuell die Modbus Adern tauschen, also nicht 3+4 sondern 4+3 Welchen Modbus Adapter hast du? Welche LEDs leuchten auf dem Adapter auf? Ist im growatt auch die Modbus-ID 01 eingestellt? Da hilft leider nur testen und probieren.

nobbiman commented 3 months ago

Bin wirklich fast am Ende mit meinen Nerven nach mehreren Stunden der Fehlersuche, da ich nun doch keine Verbindung mehr habe und einfach den Fehler nicht finde - ich befürchte, ich muss das Mosbus-Thema aufgeben. Ich habe alle Lötstellen und Jumperkabel überprüft, aber hardwaretechnisch keinen Fehler gefunden. Ich wollte nun nochmals den Adapter per ESP-Flashtool flashen, finde aber ums Verrecken nicht mehr die Dateien, die aufzuspielen sind (bootloader.bin, partitions.bin und firmware.bin). Im Moment geht gar nichts mehr :-( Ich habe einen ESP32 (32082A) mit dem Breakout Board HW-0519 wie im Projekt vorgestellt verwendet. LED: auf dem ESP-Board leuchtet nur die PWR-LED, am Breakout Board blinkt nach dem Anstecken der Spannungsversorgung anfangs TXD, dann aber nicht mehr. In den Settings des Inverters (MIN 4600 TL-XH) finde ich keine Einstellung zur Modbus-ID, wo finde ich diese Einstellung? Ist in der Configuration die Inverter SerialNumber relevant? Wenn JA, wo ist diese einzutragen bzw. zieht sich der Adapter diese selbst? Wer will mir helfen oder hat jemand einen alternativen Tipp, wo ich einen fertigen Adaper günstig erwerben kann.

tobiasfaust commented 3 months ago

Die Dateien bekommst du wenn du über gitpod kompilierst, siehe Wiki Schau auch mal in die FaQ‘s, da steht auch viel (hoffentlich) drin. Eine der LEDs muss alle 5sek aufleuchten wenn du ein Intervall von 5sek eingestellt hast. Wenn diese nun zyklisch leuchtet ist zumindest das Modbus Board korrekt am ESP angeschlossen.

Die Seriennummer zieht sich der esp selbst über Modbus. Da musst du nix machen. Nur die Einstellungen auf der Modbus Webseite sind wichtig bzw müssen passen zu den Modbus Einstellungen des WR

nobbiman commented 3 months ago

Nun bin ich doch noch einen Schritt weiter gekommen, habe aber nicht den Eindruck, als ob das Flashen klappt: beiliegender Screenshot zeigt keinen Fortschrittsbalken nach dem Starten per "SYNC", am Breakout Board blinkt nun (ohne an der COM-SS angeschlossen) die TXD-LED. Schließe ich das Board an die COM-Schnittstelle an, hört es auf zu blinken. COM3 ist der einzige Port (USB) der ausgewählt werden kann. Stelle ich mich nur zu dumm an? Screenshot Flashtool

tobiasfaust commented 3 months ago

Geh mal bei dir in den Geräte Manager. Ich wette das bei dir der Treiber für das Board fehlt. Dazu gibt aber Tonnen von Erklärungen im Netz ;)

und bitte nur eine Stromquelle, am besten erstmal nur per USB an den Rechner anschließen.