Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. [How-To] Goodwe Wechselrichter und Modbus TCP

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [How-To] Goodwe Wechselrichter und Modbus TCP

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      DatzerF @Michi_Pi last edited by

      @michi_pi
      Danke, gleiche ich bei Gelegenheit mit den vorhandenen Registern ab und ergänze was fehlt. Wenn sinnvoll werde ich eine Spalte mit einfügen die festlegt ob für ET10 oder andere Geräte der ET-Serie.
      Franz

      1 Reply Last reply Reply Quote 0
      • D
        DatzerF last edited by

        Hallo in die Runde,

        hier die Doku zu den Modbus-Registern.
        Die Spalten A - O können per copy und paste für die Import-Funktion des Modbus Adapters genutzt werden.
        Die Spalte P definiert ob das Register RO oder RW ist.
        Die Spalte Q habe ich mit Commentaren versehen, da einige Register nicht funktionieren.
        Auffällig ist, das der Adapter viele Fehler wirft, obwohl die einzelnen Register alle gelesen werden können:
        "Can not set value: The value of "offset" is out of range. It must be >= 0 and <= 2. Received 30"

        goodwe_modbus.csv

        Viel Spass damit.

        Franz

        1 Reply Last reply Reply Quote 0
        • D
          DatzerF @Achim last edited by

          Hi @achim,
          hilf bitte mal einem "DAU" auf die Sprünge.
          Ich habe mir das Python-Script auch geladen bin aber zu blöd es zu startet. Wo muss ich die Parameter eintragen und wie dann das Python-Script auf der Konsole starten?

          Vielen Dank im Voraus
          Franz

          1 Reply Last reply Reply Quote 0
          • J
            JayJay 0 last edited by

            Sagt auf was is den bei euch die BYD Batterie mit einem Ladestrom eingestellt. Ich hab hier 12A stehen.. kann das stimmen ???

            1 Reply Last reply Reply Quote 0
            • R
              revilo1337 @JayJay 0 last edited by

              Kleiner Zwischenruf: Ich teste gerade einen bisher vielversprechenden Ansatz mit einer Modbus zu MQTT-Bridge (modbus-2-mqtt-bridge, auch fertig als Container für ARM, also z.B. Raspi, zu haben)

              Damit kann ich einzelne Register zu unterschiedlichen Intervallen abfragen (Leistungswerte z.B. häufig, Fehlerzustände z.B. minütlich, andere Sachen nur einmal am Tag oder seltener), teilweise Codes direkt auf Strings mappen (z.B. einen Fehlermeldungscode direkt auf einen Text) und kann das u.a. in iobroker direkt weiterverwerten, aber z.B. auch in evcc und sonst wo.

              Die Konfiguration für meinen GW20K-ET (also neuere ET-Serie) funktioniert.

              Voraussetzung ist allerdings Modbus TCP, also das passende WiFi/LAN-Kit. Bei Interesse poste ich gerne mehr, ggf. in eigenem Thread.

              1 Reply Last reply Reply Quote 0
              • E
                enti123 @xReactz last edited by

                @xreactz Sehr gute Beschreibung - aber ich verzweifele trotzdem!

                Ich fange mal von hinten an: Die Kommunikation grundsätzlich funktioniert offenbar, aber ich bekomme keine Werte.

                Das Protokoll sieht so aus:
                47789732-fa6e-4ba5-8276-8766a2a46484-image.png

                Die Konfiguration:
                481d2ba9-777d-4809-8c9c-87e95fc13d58-image.png
                0952ac3f-a576-40cc-8380-13ae10a3f542-image.png
                a09f8b7a-f3c8-4d5d-b050-cad971f87921-image.png

                Das Ergebnis:
                5f0a4739-3f9d-44a0-a5f9-f8c244b93d1c-image.png

                Mein ioBroker läuft auf einem Rpi4, dort läuft auch der Goodwe-Adapter ohne Probleme.

                Im Keller hängt ein Goodwe GW8K-ET.

                Mit den Einstellungen habe ich intensiv herumprobiert (TCP vs. RTU, Port, Geräte ID, den verschiedenen Zeitparametern). Entweder änderte sich nichts, oder die Fehlermeldungen werden noch gravierender.

                Ich halte "Socket closed with error" und "Clearing timeout of the current request" für die Übeltäter, finde aber leider keine weitere Informationen. Eine Vervielfachung des Timeout-Parameters bringt keine Änderung, gefühlt wird auch gar nicht gewartet.

                Was kann ich noch machen?

                1 Reply Last reply Reply Quote 0
                • S
                  Stromy last edited by

                  Hallo in die Runde,

                  ich hoffe ihr könnt mir weiterhelfen.

                  Habe hier einen Goodwe GW3648-EM mit LX U5.4-L dem ich gerne seine Daten über RS485 seriell entlocken möchte (nicht über TCP).
                  Was man vom WR so abrufen konnte:
                  FW Version 3121217
                  ARM FW 02034.00
                  BMS Version 27136

                  Ich versuche die RS485 über einen Waveshare Adapter (FTDI) RS485 to USB abzufragen.
                  Der Adapter hängt via USB an einem Raspberry 4B mit IOBroker und Modbus Adapter.

                  An der RS485 habe ich sowohl die Pins 1 und 2, 3 und 6 sowie 1 mit 3 und 2 mit 6 verbunden getestet
                  und auch jeweils + und - vertauscht, leider jeweils ohne Erfolg (im Forum gab's mal einen Tip bezüglich der Parallelschaltung von Pin 1+3 und 2+6. Deswegen auch dies ausprobiert!).

                  Die Kommunikation ist konfiguriert mit 9600bit/s, 8/N/1, Geräte-ID mit 247

                  Bekomme in keinem Fall eine brauchbare Kommunikation zustande.

                  Der Modbus Adapter startet, wird kurz grün und geht dann wieder auf gelb.

                  Ich hoffe, dass Ihr mir evtl. auf die Sprünge helfen könnt!

                  Hier mal die Meldungen nach Start der Modbus Instanz mit debug:

                  modbus.0
                  2024-06-05 20:08:22.053 error Error response: Data address of some or all the required entities are not allowed or do not exist in slave

                  modbus.0
                  2024-06-05 20:08:22.052 error Error response for FCx3: Illegal Data Address

                  modbus.0
                  2024-06-05 20:08:21.779 debug [DevID_247/holdingRegs] Poll address 35103 - 6 registers

                  modbus.0
                  2024-06-05 20:08:21.779 debug Initialization of scale factors done!

                  modbus.0
                  2024-06-05 20:08:21.777 debug [DevID_247] Poll start ---------------------

                  modbus.0
                  2024-06-05 20:08:21.776 info Connected to slave

                  modbus.0
                  2024-06-05 20:08:21.762 debug connect to serial /dev/ttyUSB0 with 9600

                  modbus.0
                  2024-06-05 20:08:21.482 debug Add holdingRegisters.35108_PV2Current: {"_id":"holdingRegisters.35108_PV2Current","type":"state","common":{"name":"","role":"","type":"number","read":true,"write":true,"def":0,"unit":"A"},"native":{"regType":"holdingRegs","address":35108,"deviceId":247,"type":"uint16be","len":1,"offset":0,"factor":1,"poll":true}}

                  modbus.0
                  2024-06-05 20:08:21.482 debug Add holdingRegisters.35107_PV2_Voltage: {"_id":"holdingRegisters.35107_PV2_Voltage","type":"state","common":{"name":"","role":"","type":"number","read":true,"write":true,"def":0,"unit":"V"},"native":{"regType":"holdingRegs","address":35107,"deviceId":247,"type":"uint16be","len":1,"offset":0,"factor":1,"poll":true}}

                  modbus.0
                  2024-06-05 20:08:21.482 debug Add holdingRegisters.35104_PV1_Current: {"_id":"holdingRegisters.35104_PV1_Current","type":"state","common":{"name":"","role":"","type":"number","read":true,"write":true,"def":0,"unit":"A"},"native":{"regType":"holdingRegs","address":35104,"deviceId":247,"type":"uint16be","len":1,"offset":0,"factor":1,"poll":true}}

                  modbus.0
                  2024-06-05 20:08:21.481 debug Add holdingRegisters.35103_PV1_Voltage: {"_id":"holdingRegisters.35103_PV1_Voltage","type":"state","common":{"name":"","role":"","type":"number","read":true,"write":true,"def":0,"unit":"V"},"native":{"regType":"holdingRegs","address":35103,"deviceId":247,"type":"uint16be","len":1,"offset":0,"factor":1,"poll":true}}

                  modbus.0
                  2024-06-05 20:08:21.481 debug Initialize Objects for holdingRegs: [{"_address":35103,"name":"PV1 Voltage","description":"","unit":"V","type":"uint16be","len":1,"factor":1,"offset":0,"formula":"","role":"","room":"","poll":true,"wp":"","cw":"","isScale":"","address":35103,"deviceId":247,"id":"holdingRegisters.35103_PV1_Voltage"},{"_address":35104,"name":"PV1 Current","description":"","unit":"A","type":"uint16be","len":1,"factor":1,"offset":0,"formula":"","role":"","room":"","poll":true,"wp":"","cw":"","isScale":"","address":35104,"deviceId":247,"id":"holdingRegisters.35104_PV1_Current"},{"_address":35107,"name":"PV2 Voltage","description":"","unit":"V","type":"uint16be","len":1,"factor":1,"offset":0,"formula":"","role":"","room":"","poll":true,"wp":"","cw":"","isScale":"","deviceId":247,"address":35107,"id":"holdingRegisters.35107_PV2_Voltage"},{"_address":35108,"name":"PV2Current","description":"","unit":"A","type":"uint16be","len":1,"factor":1,"offset":0,"formula":"","role":"","room":"","poll":true,"wp":"","cw":"","isScale":"","deviceId":247,"address":35108,"id":"holdingRegisters.35108_PV2Current"}]

                  modbus.0
                  2024-06-05 20:08:21.480 debug Initialize Objects for inputRegs: []

                  modbus.0
                  2024-06-05 20:08:21.479 debug Initialize Objects for coils: []

                  modbus.0
                  2024-06-05 20:08:21.479 debug Initialize Objects for disInputs: []

                  modbus.0
                  2024-06-05 20:08:21.326 info starting. Version 6.1.0 in /opt/iobroker/node_modules/iobroker.modbus, node: v20.14.0, js-controller: 5.0.19

                  modbus.0
                  2024-06-05 20:08:20.894 debug Plugin sentry Initialize Plugin (enabled=true)

                  modbus.0
                  2024-06-05 20:08:20.856 debug States connected to redis: 127.0.0.1:9000

                  modbus.0
                  2024-06-05 20:08:20.796 debug States create User PubSub Client

                  modbus.0
                  2024-06-05 20:08:20.795 debug States create System PubSub Client

                  modbus.0
                  2024-06-05 20:08:20.787 debug Redis States: Use Redis connection: 127.0.0.1:9000

                  modbus.0
                  2024-06-05 20:08:20.768 debug Objects connected to redis: 127.0.0.1:9001

                  modbus.0
                  2024-06-05 20:08:20.759 debug Objects client initialize lua scripts

                  modbus.0
                  2024-06-05 20:08:20.742 debug Objects create User PubSub Client

                  modbus.0
                  2024-06-05 20:08:20.739 debug Objects create System PubSub Client

                  modbus.0
                  2024-06-05 20:08:20.728 debug Objects client ready ... initialize now

                  modbus.0
                  2024-06-05 20:08:20.688 debug Redis Objects: Use Redis connection: 127.0.0.1:9001
                  host.raspberrypi
                  2024-06-05 20:08:19.378 info instance system.adapter.modbus.0 started with pid 3270
                  host.raspberrypi
                  2024-06-05 20:08:19.252 info "system.adapter.modbus.0" enabled

                  1 Reply Last reply Reply Quote 0
                  • H
                    Hochgern last edited by

                    Hallo, ich bin neu hier und habe folgendes Problem.
                    Wechselrichter Goodwe ET29.9
                    Kann via Modbus RTU Daten lesen und auch schreiben.
                    Nur finde ich nicht raus, wie ich den Wechselrichter gezielt sagen kann, dass die Batterie jetzt mit einem Strom von xA geladen werden soll.
                    Kann mir jemand weiterhelfen?

                    M 1 Reply Last reply Reply Quote 0
                    • M
                      Michi_Pi @Hochgern last edited by

                      Hi @hochgern, es gibt verschiedene Möglichkeiten den Speicher zu laden. Ich selbst steuere das über die Schnelllade Funktion, das sind die Register 47545 = Fast chargin aktivieren, 47646 = SOC Stop und 47603 = Ladeleistung in %. Früher hab ich einfach den SOC minimum 45346 auf den gewünschten SOC wert eingestellt und dann wieder zurück bis der gewünschte Ladezustand erreicht wurde. Das funktioniert nur noch bedingt bei mir, da nur noch mit 450W geladen wird, wieso auch immer. Über die Register 47511 und 47512 würde auch gehen.

                      G 2 Replies Last reply Reply Quote 0
                      • G
                        Guzzi-Charlie @Michi_Pi last edited by

                        @michi_pi
                        ich habe auch das Problem das richtige Register für die Steuerung des SoC zu finden. Ich habe einen GW25 und auch die aktuelle Registerbelegung von Goodwe (hoffe ich zumindest), aber ich finde einfach nicht das Register für die Werte die in der PV-Master APP mit "Entladungstiefe Netz/netzunabhängig" einstellbar sind. Der Zugriff über Modbus funktioniert.

                        1 Reply Last reply Reply Quote 0
                        • G
                          Guzzi-Charlie @Michi_Pi last edited by

                          Update:
                          Kaum habe ich mich extra angemeldet um die Frage zu stellen, schon habe ich die Register nun doch gefunden. Es sind die Register 45356 für "Entladungstiefe am Netz" und 45358 für "Entladungstiefe netzunabhängig". Beachten muß man nur, daß man im Unterschied zur APP den SoC eingeben muß. Der Wert für die Entladungstiefe ist also 100-gewünschte Entladungstiefe.

                          G 1 Reply Last reply Reply Quote 0
                          • G
                            Guzzi-Charlie @Guzzi-Charlie last edited by

                            @michi_pi said in [How-To] Goodwe Wechselrichter und Modbus TCP:

                            Hi @hochgern, es gibt verschiedene Möglichkeiten den Speicher zu laden. Ich selbst steuere das über die Schnelllade Funktion, das sind die Register 47545 = Fast chargin aktivieren, 47646 = SOC Stop und 47603 = Ladeleistung in %. Früher hab ich einfach den SOC minimum 45346 auf den gewünschten SOC wert eingestellt und dann wieder zurück bis der gewünschte Ladezustand erreicht wurde. Das funktioniert nur noch bedingt bei mir, da nur noch mit 450W geladen wird, wieso auch immer. Über die Register 47511 und 47512 würde auch gehen.

                            Jetzt habe ich doch noch ein Problem. Die von mir genutzte Lösung mit dem Register 45356 für "Entladungstiefe am Netz" funktioniert zwar perfekt, aber leider wirkt dieses Register nur auf die Batterie 1. Die Batterie 2 hat einen eigenen Einstellwert (siehe SolarGo-APP), für den ich das zugehörige Register aber bisher nicht gefunden habe. Falls Jemand eine Idee hat, dann immer her damit.

                            1 Reply Last reply Reply Quote 0
                            • S
                              Sandmanyz last edited by

                              Bei mir erscheinem im Log jede Minute diese Meldungen obwohl der Datenpunkt (aktuell nur einer) richtig aktualisiert wird...

                              modbus.0	2025-03-04 15:51:09.572	info	Disconnected from slave 192.168.178.45
                              modbus.0	2025-03-04 15:51:08.572	warn	[DevID_247] Poll error count: 1 code: {"err":"timeout","timeout":5000}
                              modbus.0	2025-03-04 15:51:08.571	error	Client in error state.
                              modbus.0	2025-03-04 15:51:08.571	error	Request timed out.
                              modbus.0	2025-03-04 15:51:08.571	warn	Error: undefined
                              modbus.0	2025-03-04 15:47:08.839	info	Connected to slave 192.168.178.45
                              

                              Was ist die Ursache?

                              M 1 Reply Last reply Reply Quote 0
                              • M
                                Michi_Pi @Sandmanyz last edited by

                                @sandmanyz Hast du die die Abfragezeit schon mal etwas erhöht? Ich frage direkt über den EMS Port ab mit 8sekunden, das ist da Minimum das bei mir funktioniert.
                                Mit dem WIFI/LAN Dongle musste ich mindestens 12 Sekunden einstellen.

                                S 1 Reply Last reply Reply Quote 0
                                • S
                                  Sandmanyz @Michi_Pi last edited by

                                  @michi_pi

                                  Welchen Wert muss ich ändern? Datenabfrageintervall (schon mit 10000ms getestet) unde/oder Leseintervall (auch schon mit 10000ms getestet).
                                  Habe auch mal auf Serial gewechselt aber da erscheinen auch Warnungen...

                                  modbus.0	2025-03-13 18:14:24.716	info	Disconnected from slave
                                  modbus.0	2025-03-13 18:14:24.666	warn	[DevID_247] Poll error count: 8 code: "App Timeout"
                                  modbus.0	2025-03-13 18:14:19.465	info	Connected to slave
                                  modbus.0	2025-03-13 18:13:19.451	info	Disconnected from slave
                                  modbus.0	2025-03-13 18:13:19.399	warn	[DevID_247] Poll error count: 7 code: "App Timeout"
                                  modbus.0	2025-03-13 18:13:14.198	info	Connected to slave
                                  modbus.0	2025-03-13 18:12:14.182	info	Disconnected from slave
                                  modbus.0	2025-03-13 18:12:14.130	warn	[DevID_247] Poll error count: 6 code: "App Timeout"
                                  modbus.0	2025-03-13 18:11:58.878	warn	[DevID_247] Poll error count: 5 code: "App Timeout"
                                  modbus.0	2025-03-13 18:11:43.625	warn	[DevID_247] Poll error count: 4 code: "App Timeout"
                                  modbus.0	2025-03-13 18:11:28.372	warn	[DevID_247] Poll error count: 3 code: "App Timeout"
                                  modbus.0	2025-03-13 18:11:13.120	warn	[DevID_247] Poll error count: 2 code: "App Timeout"
                                  modbus.0	2025-03-13 18:10:57.867	warn	[DevID_247] Poll error count: 1 code: "App Timeout"
                                  modbus.0	2025-03-13 18:10:52.664	info	Connected to slave
                                  modbus.0	2025-03-13 18:10:52.196	info	starting. Version 6.3.2 in /opt/iobroker/node_modules/iobroker.modbus, node: v20.18.2, js-controller: 7.0.6
                                  

                                  Hier meine aktuelle Konfiguration:
                                  e94abf7f-22d9-4983-bc60-eaf205d0928d-grafik.png
                                  9c037be0-91db-437a-90c4-6435902e08f9-grafik.png
                                  4a09cb36-9949-4b23-a171-a0314c209701-grafik.png

                                  M 1 Reply Last reply Reply Quote 0
                                  • M
                                    Michi_Pi @Sandmanyz last edited by

                                    @sandmanyz hier meine Einstellung 7be1c752-8345-4997-853a-870175d2b880-image.png

                                    Zu den Verbindungsparameter kann ich jetzt nichts sagen, weil ich nicht weis mit welchem Gerät du abfrägst.

                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    934
                                    Online

                                    31.7k
                                    Users

                                    79.7k
                                    Topics

                                    1.3m
                                    Posts

                                    goodwe modbus tcp tcpip
                                    40
                                    144
                                    44889
                                    Loading More Posts
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                    The ioBroker Community 2014-2023
                                    logo