Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
hardware sungrow sgh10rt modbu
895 Beiträge 132 Kommentatoren 363.9k Aufrufe 126 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • O ostseeskipper

    @drurob
    mit 2 Geräten im Parallelmodus ist nicht mein Case. Kann ich nichts zu sagen.

    D Offline
    D Offline
    DRUROB
    schrieb am zuletzt editiert von
    #253

    @ostseeskipper
    neeeee :-) hab nur einen WR. Den SH10RT. Ich wollte mir nur das eine LAN Kabel sparen. Mann muss ja nicht 2 Stück dran haben wenn eines reicht um die Daten abzugreifen. Jetzt ist ja eins am WINET und das andere am "alten " Steckplatz dahinter.

    O 1 Antwort Letzte Antwort
    0
    • D DRUROB

      @ostseeskipper
      neeeee :-) hab nur einen WR. Den SH10RT. Ich wollte mir nur das eine LAN Kabel sparen. Mann muss ja nicht 2 Stück dran haben wenn eines reicht um die Daten abzugreifen. Jetzt ist ja eins am WINET und das andere am "alten " Steckplatz dahinter.

      O Offline
      O Offline
      ostseeskipper
      schrieb am zuletzt editiert von
      #254

      @drurob
      Habe an meinem SH10RT nur die feste LAN Buchse belegt. Darüber hol ich mir die Infos per Modbus zum IBroker. Zur isolarcloud wird auch darüber übertragen(5Minuten Intervall)

      I 1 Antwort Letzte Antwort
      0
      • O ostseeskipper

        @drurob
        Habe an meinem SH10RT nur die feste LAN Buchse belegt. Darüber hol ich mir die Infos per Modbus zum IBroker. Zur isolarcloud wird auch darüber übertragen(5Minuten Intervall)

        I Offline
        I Offline
        iobrokerFhemPiUser
        schrieb am zuletzt editiert von
        #255

        @ostseeskipper: Wie hast Du das gemacht, dass iSolarCloud über den LAN-Port übertragen wird? Hast Du am WiNet-S-Port noch den WiNet-S Stick, aber ohne LAN-Kabel und der WiNet-S nimmt dann automatisch den LAN-Port für die Internetverbindung?

        O 1 Antwort Letzte Antwort
        0
        • I iobrokerFhemPiUser

          @ostseeskipper: Wie hast Du das gemacht, dass iSolarCloud über den LAN-Port übertragen wird? Hast Du am WiNet-S-Port noch den WiNet-S Stick, aber ohne LAN-Kabel und der WiNet-S nimmt dann automatisch den LAN-Port für die Internetverbindung?

          O Offline
          O Offline
          ostseeskipper
          schrieb am zuletzt editiert von
          #256

          @iobrokerfhempiuser
          habe gar kein WiNet-S am WR.
          habe die isolarcloud app und ein neues gerät angemeldet. beim einlesen des QR Codes dann das QR Bild auf der rechten Seite des WR genommen.

          C 1 Antwort Letzte Antwort
          0
          • O ostseeskipper

            @iobrokerfhempiuser
            habe gar kein WiNet-S am WR.
            habe die isolarcloud app und ein neues gerät angemeldet. beim einlesen des QR Codes dann das QR Bild auf der rechten Seite des WR genommen.

            C Offline
            C Offline
            C1500
            schrieb am zuletzt editiert von
            #257

            Servus
            Gibt es denn auch Modbus Nachrichten die vom DTS666 kommen bzw. Werte der gesamten Anlage?
            Oder muss ich mit die meisten Gesamtwerte dann selber errechenen?
            z.B. aktuelle PV Leistung DC, die Einspeisung beider WR, Ertrag beider WR...

            Eine Andere Frage:
            Welcher Wert entspricht denn dem wirklichen Netzbezug?
            Da bekomme ich bei beiden WR´s unterschiedliche Werte.

            Und noch ne Frage:
            Gibt es schon eine Liste der verfügbaren 30xxx´er Nachrichten?

            Gruß C1500

            1 Antwort Letzte Antwort
            0
            • B burberry

              Hallo,
              SH10RT über Lankabel angeschlossen, nichts WiNet-S
              Bekomme beim register 13007 ab und an werte die mit "4294967" beginnen.
              22cc3d6e-e6c3-4b0e-b7ad-ce2e19e7b8b3-grafik.png
              Was dann natürlich später in Grafana nicht abbildbar ist.
              habt ihr das auch oder wie habt ihr das problem gelöst ?
              habe schon neues Iobroker + neu installation Modbus getestet, hat nichts funktioniert.

              Danke

              J Offline
              J Offline
              jh410
              schrieb am zuletzt editiert von
              #258

              @burberry said in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:

              Hallo,
              SH10RT über Lankabel angeschlossen, nichts WiNet-S
              Bekomme beim register 13007 ab und an werte die mit "4294967" beginnen.
              22cc3d6e-e6c3-4b0e-b7ad-ce2e19e7b8b3-grafik.png
              Was dann natürlich später in Grafana nicht abbildbar ist.
              habt ihr das auch oder wie habt ihr das problem gelöst ?
              habe schon neues Iobroker + neu installation Modbus getestet, hat nichts funktioniert.

              Danke

              Genau das Problem habe ich auch, seit der SG20RT neben dem SH10RT in Betrieb genommen wurde. Wie hast du das gelöst, @burberry?
              Hatte Modbus erst bei beiden über das WiNet-S laufen, allerdings ging der Running State nicht mehr beim SH10RT, bin dann wieder auf den normalen LAN-Port.

              D 1 Antwort Letzte Antwort
              0
              • L Offline
                L Offline
                LJSven
                schrieb am zuletzt editiert von
                #259

                Es gab ein Update beim Winet Adapter. Funktioniert es jetzt? Wenn ja, kann mir jemand sagen wie?

                O 1 Antwort Letzte Antwort
                0
                • L LJSven

                  Es gab ein Update beim Winet Adapter. Funktioniert es jetzt? Wenn ja, kann mir jemand sagen wie?

                  O Offline
                  O Offline
                  ostseeskipper
                  schrieb am zuletzt editiert von
                  #260

                  @ljsven said in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:

                  Es gab ein Update beim Winet Adapter. Funktioniert es jetzt? Wenn ja, kann mir jemand sagen wie?

                  Ja mit der aktuellen Firmware kannst Modbus mit dem WiNet-S am iobroker machen. Wie es geht steht hier im Thread.

                  L 1 Antwort Letzte Antwort
                  0
                  • O ostseeskipper

                    @ljsven said in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:

                    Es gab ein Update beim Winet Adapter. Funktioniert es jetzt? Wenn ja, kann mir jemand sagen wie?

                    Ja mit der aktuellen Firmware kannst Modbus mit dem WiNet-S am iobroker machen. Wie es geht steht hier im Thread.

                    L Offline
                    L Offline
                    LJSven
                    schrieb am zuletzt editiert von
                    #261

                    @ostseeskipper sagte in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:

                    @ljsven said in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:

                    Es gab ein Update beim Winet Adapter. Funktioniert es jetzt? Wenn ja, kann mir jemand sagen wie?

                    Ja mit der aktuellen Firmware kannst Modbus mit dem WiNet-S am iobroker machen. Wie es geht steht hier im Thread.

                    Im ersten Beitrag?
                    Geht auch nur lesend?

                    L 1 Antwort Letzte Antwort
                    0
                    • L LJSven

                      @ostseeskipper sagte in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:

                      @ljsven said in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:

                      Es gab ein Update beim Winet Adapter. Funktioniert es jetzt? Wenn ja, kann mir jemand sagen wie?

                      Ja mit der aktuellen Firmware kannst Modbus mit dem WiNet-S am iobroker machen. Wie es geht steht hier im Thread.

                      Im ersten Beitrag?
                      Geht auch nur lesend?

                      L Offline
                      L Offline
                      LJSven
                      schrieb am zuletzt editiert von LJSven
                      #262

                      Ich habe jetzt eine Verbindung. Ich bekomme aber nur Werte bei den Adressen im 5000er Bereich. Bei den anderen Werten verliert er die Verbindung. Woran liegt das?

                      6615218A-7DDC-4C13-836A-81079395A5C0.jpeg

                      1 Antwort Letzte Antwort
                      0
                      • L Offline
                        L Offline
                        LJSven
                        schrieb am zuletzt editiert von
                        #263

                        Kann mir jemand sagen, warum ich nicht alle Werte auslesen kann bzw. der Adapter im 16000er Bereich nicht mehr grün wird?

                        1 Antwort Letzte Antwort
                        0
                        • T Offline
                          T Offline
                          trouble
                          schrieb am zuletzt editiert von
                          #264

                          Hallo zs.

                          ich habe es nun auch geschaftt, den SH10RT per Modbus anzubinden. Leider bekomme ich aber keine Werte, alle bei 0:
                          Screenshot 2022-08-01 222749.png
                          hier meine Einstellungen, ich denke sollte passen.
                          Screenshot 2022-08-01 223058.png
                          Screenshot 2022-08-01 223147.png
                          Screenshot 2022-08-01 223220.png

                          Woran kann das noch liegen?

                          Danke

                          1 Antwort Letzte Antwort
                          0
                          • D Offline
                            D Offline
                            DRUROB
                            schrieb am zuletzt editiert von
                            #265

                            Hi!
                            Kann mir jemand sagen ob ich aus den Werten irgendwo den Status der DO bzw. D0 (O=oscar oder 0=null das weiß ich nicht so genau)Schnittstelle auslesen kann? Bin mir unsicher ob bei den Holding Registern unter 130xx das richtige für mich dabei ist.
                            Ziel ist, den Status zu tracken um zu sehen ob die Wärmepumpe korrekt auf die Schnittstelle reagiert bzw. überhaupt etwas macht.

                            @trouble
                            ich hatte zu anfang auch probleme. ich kann dir nicht sagen was das problem bei dir ist, aber ich hatte auch sorgen damit. Hatte viel mit dem Übertrag der Register im IObroker Adapter gespielt und irgendwann gings auf einmal.

                            1 Antwort Letzte Antwort
                            0
                            • A Atlantis

                              Kurzbeschreibung zur Anbindung der neuen Sungrow Hybrid WR
                              SGH5RT- SGH10RT (5-10 KW Hybrid), Markteinführung Sep./Okt. 2020

                              und lt. der Beschreibung auch für folgende Modelle (ungetestet)
                              SH5K-20 / SH3K6 / SH4K6 / SH5K-V13
                              SH5K-30 / SH3K6-30 / SH4K6-30
                              SH5.0RS / SH3.6RS / SH4.6RS / SH6.0RS
                              SH10RT / SH8.0RT / SH6.0RT / SH5.0RT

                              Die Anbindung zum IOBroker erfolgt per MODBUS.
                              Einen ganz großen Dank geht hiermit an die Adapter Entwickler des MODBUS und an das Technik Team der Fa. Sungrow Deutschland für die Bereitstellung der MODBUS Variablen. Das ist absolut vorbildlich!!!

                              Grundeinstellungen des MOD Bus Adapter:
                              Die Modbus- Settings im Modbus Adapter bitte wie folgt wählen
                              --> Dann passen die Copy Paste Files der Ein und Holding Register automatisch!, da das Registeradressen Offset (+1), welches sehr häufig für Probleme sorgt, bereits berücksichtigt ist:
                              1ecf9052-1e26-4602-a3aa-d823a04b12cd-grafik.png

                              Hier muss natürlich die IP Adresse Eures WR eingetragen werden!
                              Mit dem WLAN Direkt LOGIN (und dem 3D Code) des Aufklebers auf dem WR kann der eingebaute LAN Adapter des WR aktiviert und erstellt werden. Mit diesem LOGIN kann dieser sowohl als DHCP als auch mit fester IP eingestellt werden. Ich habe den Zugang per LAN gewählt, da ich kein Freund von WLAN bin...

                              Als Geräte ID ist die des WR selbst einzusetzen (also nicht des WLAN Adpaters) .
                              Diese findet man z.B. über den Cloudzugang hier:
                              ad93731f-bd6d-4287-a1a2-464cc708eb19-grafik.png

                              Einstellungen zum Lesen der Eingangsregister (Read Only Werte des WR)
                              Zum Lesen der WR Istwerte müssen die entsprechenden gewünschten Sollwerte aus der schon funktionsfähigen Copy/Paste Liste weiter unten ausgewählt werden. Alternativ können auch testweise mal einfach alle, die darin enthalten sind übenommen werden. (Hier ein Dank auch an alle Mitbefüller dieser Liste !!!)

                              Die zu lesenden Werte müssen per Eingangsregister angelegt werden.
                              Das geht über den Reiter Eingangsregister und im Eingangsregistermenü über das + Zeichen
                              6108b2b7-3dd7-40fb-a10c-bda2d62a44cf-grafik.png

                              Das leere Textfeld mit folgenden Werten des hier angehängten Textfiles befüllen:
                              Eingangsregister_STAND2021_02_02.txt neuster Stand
                              (ACHTUNG: Dazu das txt FIle zuerst downloaden und nicht aus dem Forum gleich per click öffnen, dann sind auch die Trennzeichen dabei. Nach dem DL mit Editor öffnen und per Copy & Paste einfügen)
                              Danach unten das Hakerl zum Übernehmen setzen und speichern!

                              Sollten Euch noch weitere Werte fehlen, die komplette MODBUS Beschreibung von Sungrow
                              hat m-fuchs in diesem threat am 15.12.20 gepostet, dort könnt Ihr das Original als pdf runterladen.

                              Schreiben der Modbus Werte via Holding Register.
                              Analog der Eingangsregister werden die Lese- und schreibefähigen (Holding Register) wie folgt angelegt:

                              Das geht über den Reiter Holdingsregister und im Holdingsregistermenü über das + Zeichen
                              Anbei die mittlerweile recht vollständige Copy & Paste Liste
                              (Einen großen Dank geht an alle, die hier im Forum dazu beigetragen haben, die Fehler zu elliminieren und fehlende Werte zu ergänzen!)
                              Holding-Register2021_02_04.txt

                              Jetzt kommt noch ein wichtiger Punkt!
                              Möchte man die Holdingregister beschreiben kann dies entweder von Hand in den Objects passieren oder per Skript/Blocky. Dazu ist aber anders als bei den JS Variablen eine andere Ansteuerung erforderlich. So funktioniert es:
                              mit Blocky:
                              0b40509a-b909-4834-9ac7-ea4eb5b1d6b9-grafik.png

                              Wichtig ist hier den Block Baustein "Steuere" zu nehmen und unter keinen Umständen den STD Baustein "aktualisiere"

                              So sieht es dann per JS aus:

                              setState("modbus.0.holdingRegisters.13049_EMS_mode selection", 3);
                              

                              Wenn man z.B. mit 500 W Laden/ Entladen möchte muss man folgende Holdings beschreiben:
                              EMS Mode = 2 (Quasi Handsteuerung)
                              13084 Einmalig mit einem Startwert versehen
                              EMS Charge/Discharge Comand13050 wie folgt setzen:
                              170 (Dezimal) = AA (Hexadezimal) <=> Charge/ Laden;
                              187 (Dezimal) = BB: <=> Discharge / Entladen;
                              204 (Dezimal) 0xCC <=> Stop (Anhalten/ Default );

                              Der Startwert 13084 muss nach meiner Erfahrung nur einmal gesetzt werden.
                              Um Ehrlich zu sein habe ich noch immer den Sinn dieses Registers nicht verstanden...

                              Sobald die Werte geschrieben sind dauert es kurz (ca. 1-2s) dann legt der WR los...

                              Anbei meine Intervalle wie ich das ganze kontinuierlich ansteuere:
                              Den EMS Mode schreibe ich jede h 1x
                              13051 Leistungssollwert schreibe ich ca. jede Sekunde
                              13050 Richtung Laden/Entladen schreibe ich ebenfalls jede Sekunde.
                              Das ist aber sicher nur bei Veränderung wirklich erforderlich-

                              Wenn Ihr hier Fehler in den Copy Paste Listen entdeckt oder weitere Infos zum Schreiben der Register herausgefunden habt bitte bei mir melden, ich teste dann und ergänze die Anleitung hier---

                              Habe einen neuen Post aufgemacht, um mit anderen zusammen eine Muster Energiemanagement Skript Lösung für die Sollwertvorgaben zu erarbeiten. Weiterlesen könnt Ihr hier:
                              https://forum.iobroker.net/topic/40990/batteriemanagement-energiemanagement-mit-iobroker

                              Allgemeines zum Sungrow WR (ohne Bezug zu IOBROKER)

                              Jetzt noch ein paar generelle Punkte zum WR selbst, da sich einige sicher Fragen, kann man den WR kaufen... ?

                              Habe ewig mit dem Webinterface und den diversen Zugangsmöglichkeiten per WLAN, APP, & Cloud gekämpft, bis ich endlich mal verstanden habe, auf welchem der 3 Wege man sich für welchen Zweck in den WR überhaupt einloggen muss. Hier besteht noch signifikantes Verbesserungspotential im User Manual um diese 3 Zugangs-Modi und deren Einschränkungen und Funktionen besser zu erklären.
                              Verbesserungspotential besteht auch in der Qualität der Smartphone APP und des Cloud Zugangs. Die PC APP habe ich nicht getestet.

                              Ich finde es Schade, dass der WR kein eigenes Webintgerface mehr besitzt und man nur per APP oder Cloud zugreifen kann. Wichtige Einstellungen lassen sich nur per direktem Einloggen per WLAN am WR direkt VORORT vornehmen.

                              Warum es dazu nicht ein einfaches Webinterface mit PW Zugang getan hat und man wahrscheinlich wegen dem aktuellen Trend jetzt so einen APP Murgs begonnen hat, kann nur Sungrow beantworten...

                              Aber wenn bei Euch mit MODBUS auch erstmal die Daten sprudeln, braucht das App Gelumpe eh keiner mehr... Bin da vielleicht etwas altmodisch...

                              Der WR selbst macht einen super soliden Eindruck. Gerät ist massiv, klasse verarbeitet, Montagematerial wie Dübel (Fischer), Steckverbinder (Weidhaus) sind entgegen der Erwartung nicht billig sondern sehr gehobener deutscher STD!
                              Schon die in die Montagehalterung integrierte Wasserwagenlibelle ist vorbildlich und zeigt, dass man bei SUNGROW mitgedacht hat.

                              Einer von meinen 2 WR brummt (Netzbrummen) auch Nachts im Standby recht laut, was ich von meinen bisherigen Kostal WR nur bei mittlerer und hoher Last kenne. In diesem Lastbereich sind die SUNGROW WR dagegen eher ruhig.

                              Was ich bisher beurteilen kann ist der Wirkungsgrad zumindest bei sehr geringen PV Leistungen im reinen PV Betrieb nicht der Beste, also gerade an Tagen, wo man auf jedes Watt angewiesen ist.

                              Der WR (10 KW) beginnt erst ab einer AC Leistung von ca. 150W seinen Dienst, wenn auf der DC Seite bereits 220 W Leistung anliegen und bei solch geringen Leistungen auch mit sehr bescheidenem Wirkungsgrad. Dieses Verhalten kann man aber auch bei anderen Hybrid WR bzw. Batteriespeichersystemen anderer Anbieter auch zu Hauf im Netz finden.
                              Ohne Batterie nimmt sich der Hybrid WR 23w im Standby bei Nacht.
                              Werde weitere Werte z.B. bei mittlerer und hoher Einspeisung und ab Dezember dann auch mit Batterie nachliefern, sobald vorhanden!!!

                              Jetzt bleibt nur zu hoffen, dass Sungrow Deutschland seiner aktuellen sehr offenen Philosophie treu bleibt. In Australien wo die WR mit leichten Änderungen (LCD Display) bereits seit geraumer Zeit verfügbar sind wurde der Zugang zum Modbus nach einem SW Updates ohne Vorwarnung plötzlich mit PW geschütz. Das wäre ein klares "DON´T BUY THIS PRODUCT " Signal !!!!!

                              Momentan halte ich aber an beiden Händen die DAUMEN HOCH !!!!!

                              Wer schon alles so weit umgesetzt hat und gerne den codierten WR Status als Variable haben möchte hier ein super unschöne Spaghetticode Lösung, welche aber funktioniert. Wer sich in JS oder Blocky besser auskennt und eine schönere Lösung findet bitte melden, dann übernehme ich diese für die anderen hier:

                              Als Zielvariablen habe ich diese hier per JS Variablen angelegt.
                              feea64be-bbbf-428d-b4ba-a095ae9287e3-grafik.png

                              Hier der Blocky Code für Copy/Paste:
                              Blocky_WR_STATUS.txt

                              Ich habe in der Zwischenzeit ein Energiemanagement für 2 WR mit 2Batterien recht stabil am laufen.
                              Nachdem sich die Sonne in den letzten Wochen leider nur sehr selten so stark zeigt, dass ich in den Überschuss komme würde ich das Ganze jedoch gerne noch etwas beobachten, bevor ich das teile.

                              Ich werde auf das Thema Energiemanagement hier nicht weiter eingehen sondern in dem oben genanten Post, da das Thema HIER nicht jeder braucht.

                              Dennoch vorab mal ein paar Impressionen.

                              Bevor jetzt gleich der Shitstorm losgeht....
                              Thema Estethik:
                              Momentan sind noch Werte mit in der Anzeige, die später natürlich rausfliegen, um die Übersichtlichkeit zu erhöhen. Aktuell aber zum Fehlers uchen mal mehr reingepackt als der Übersichtlichkeit dient und mehr als erforderlich...

                              Thema Ausregelung:
                              Ich habe sehr stark springende Lasten und sehr viele spontane Verbraucher, so dass ein Ausgleichen am Grid von 300-400 Watt für mich ein recht akzeptables Resultat darstellt.
                              Zwischen den Bildern (Screenshots) liegen natürlich weitere Sprünge im Energiebedarf.
                              Bei mir läuft eine Holhackschnitzelanlage, die sich im 2-10 Sekunden Rhytmus Holz aus dem Silo mit einem 1,5 KW Motor holt, da ist ständig was in Bewegung
                              EIgentlich müsste ich das Ganze als Video Posten, nur dabei ist zu sehen, wie der IO Broker ständig nachtarriert...
                              Entladen_B_IIIII.JPG Entladen_B_IIII.JPG Entladen_B_III.JPG Entladen_B_II.JPG Entladen_B.JPG

                              Die WR reagieren leider nicht ganz so spontan auf die Sollwerte, wie man das erhoffen würde... Hier läßt siche später in der Abfragefrequenz, dem Zeitpunkt der Abfrage von Energiemessgerät und WR usw. noch einiges optimieren. Dazu dann mehr im anderen Post...

                              Atlantis (Stand 18.11.20/ Letztes Update 03.02.21)

                              S Offline
                              S Offline
                              Smokey
                              schrieb am zuletzt editiert von
                              #266

                              @atlantis sagte in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:

                              **Kurzbeschreibung zur Anbindung der neuen Sungrow Hybrid WR

                              Herzlichen Dank @Atlantis . Es war zwar auch im Sommer 2022 noch kein Selbstläufer, aber jetzt klappt alles.
                              Ich habe den Wechselrichter zwar letztendlich doch über die "richtige" LAN Buchse verbunden. Aber am längsten habe ich mit dem WiNet-S rumgemacht. Ich hab ihn schlicht in meinem (sehr großen) WLAN Netzwerk nicht gefunden weil die Hinweise auf die Sungrow MAC Adresse (beginnt mit AC:xx) halt für den WiNet nicht zutreffen. Wenn das also jemand ein Problem macht: MAC des WiNet-S Adapters beginnt bei mir mit 94:xx und er ist mit dem Namen "espressif" aufgetaucht.. hab ewig gesucht :) Vielleicht schont es die Nerven des einen oder anderen es zu wissen.

                              1 Antwort Letzte Antwort
                              0
                              • M Offline
                                M Offline
                                mihas
                                schrieb am zuletzt editiert von mihas
                                #267

                                Kann jemand kurz mein log schauen:

                                logs - iobroker 2022-08-17 10-08-20.png

                                Was ist FC 132?
                                Meine Anlage SH5.0RT.

                                P.S. GELÖST.

                                1 Antwort Letzte Antwort
                                0
                                • J jh410

                                  @burberry said in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:

                                  Hallo,
                                  SH10RT über Lankabel angeschlossen, nichts WiNet-S
                                  Bekomme beim register 13007 ab und an werte die mit "4294967" beginnen.
                                  22cc3d6e-e6c3-4b0e-b7ad-ce2e19e7b8b3-grafik.png
                                  Was dann natürlich später in Grafana nicht abbildbar ist.
                                  habt ihr das auch oder wie habt ihr das problem gelöst ?
                                  habe schon neues Iobroker + neu installation Modbus getestet, hat nichts funktioniert.

                                  Danke

                                  Genau das Problem habe ich auch, seit der SG20RT neben dem SH10RT in Betrieb genommen wurde. Wie hast du das gelöst, @burberry?
                                  Hatte Modbus erst bei beiden über das WiNet-S laufen, allerdings ging der Running State nicht mehr beim SH10RT, bin dann wieder auf den normalen LAN-Port.

                                  D Offline
                                  D Offline
                                  Davipet
                                  schrieb am zuletzt editiert von
                                  #268

                                  @jh410
                                  Das Selbe habe ich auch. Leider keine Lösung dafür. Hast du das inzwischen gefixt bekommen?

                                  Woran seht ihr eigentlich ob der Batteriespeicher geladen oder entladen wird? Strom und Leistung wechseln nicht wie ich erwartet hatte die Vorzeichen...

                                  Gruß

                                  David

                                  1 Antwort Letzte Antwort
                                  0
                                  • D Offline
                                    D Offline
                                    Daniel
                                    schrieb am zuletzt editiert von Daniel
                                    #269

                                    Hallo zusammen,
                                    starre seit Monaten immer mal wieder auf diesen Thread und versuche meinen WR via Modbus in Iobroker auszuwerten. Hatte auch immer wieder das Problem mit reconnects und Fehlern.
                                    Heute hat es endlich geklappt. Keine Ahnung, woran es am Ende lag… hier meine letzten Schritte:

                                    1. Modbus-Adapter komplett deinstalliert und neu installiert

                                    2. Geräte ID 1, IP, Master, kein Alias. Rest wie vorkonfiguriert 86fd6bbc-6ffb-4488-b9c9-e8d38d533b6a-image.png

                                    3. Ich habe nicht den WiNet-Dongle benutzt (weder Wifi noch den LAN Port des Dongles) sondern den fest verbauten separaten LAN-Port des WRs

                                    4. Die IP findet ihr bspw. in Fritzbox unter Heimnetz->Netzwerk. Wenn ihr oben rechts über den Button "+/-" die Spalte Mac-Adresse einblendet, sollte ihr die richtige IP recht fix finden, die dazugehörige Mac-Adresse beginnt mit "AC" (Achtung: das ist aber auch beim WiNet-Dongle der Fall)

                                    5. Um zu checken ob die Kommunikation grundsätzlich funktioniert kann man bspw. Tools wie modbus-cli nutzen:

                                      modbus 192.168.YYY.ZZ:502 -s 1 4999/H
                                      Parsed 0 registers definitions from 1 files
                                      4999: 2022 0x7e6

                                      Hier wird bspw. das aktuelle Jahr zurück gegeben. Wenn das schon nicht funktioniert, habt ihr vermutlich schon ein Problem mit der Verbindung (Client-ID falsch, IP falsch...). Aber Achtung: Verschwendet aber nicht zu viel Zeit darauf, damit "richtige" Werte wie aktuellen Ertrag auszulesen. Über das CLI-Tool habe ich bis heute keine oder unplausible Werte, man kann da mit Word Swap etc pp. viel falsch machen und denkt dann, es funktioniert irgendwas grundlegendes nicht, obwohl man nur die Datentypen falsch hat

                                    6. Den Fehler On error: {"errno":-104,"code":"ECONNRESET","syscall":"read"} habe ich anfänglich immer wieder gehabt - und jetzt innerhalb weniger Tage mehrfach. Einmal hat ein Firmware-Update des WR das Problem gelöst (vll. aber auch nur wg. des damit zusammenhängenden Neustarts); gerade eben habe ich in meinem Zyxel-Switch das vom WR kommende LAN-Kabel in einen anderen Port gesteckt - und direkt wieder eine funktionierende Verbindung gehabt. Arbeitshypothese wäre in dem Fall, dass der Switch auf dem Port dicht gemacht hat??

                                    7. Das TSV Format bzgl. der Register hat sich wohl verändert mittlerweile. Hier der Stand, der bei mir funktioniert hat: https://gist.github.com/dnoegel/543c72ef722365a3934bbad0bb43e222. Wenn ihr dort auf "Raw" klickt, kommt ihr direkt zur Datei.

                                    8. Versucht nicht zu lange von Hand drei handverlesene Register zum Laufen zu bringen, wenn ihr euch nicht sicher seit, dass ihr die Datentypen richtig getroffen habt: Die TSV funktioniert, bringt das Ding erstmal rein und schaut dann, welche Werte ihr bekommt.

                                    9. In der Sungrow App kann man wunderbar sehen, welche Ströme von wo nach wo fließen. In den Modbus-Daten sieht man eher, welche Ströme an welche Quelle anliegen. Möchte man sehen, ob die Batterie geladen oder entladen wird, muss man den "Running State" interpretieren (Register 13000). Die Information ist binary, d.h. das Checken á la "Wenn Wert = 25" kann man sich sparen. Hier mein Ansatz in Blockly:


                                      <xml xmlns="https://developers.google.com/blockly/xml">
                                      <variables>
                                      <variable id="Wu=u[10[PLwu)p_g$2ZM">number</variable>
                                      <variable id="u?6#BJh2Bp((1W3u)Vnf">bitPosition</variable>
                                      <variable id="Kl3S0K7)wS:E#~kmp_|">dec</variable> </variables> <block type="comment" id="dl.~:*si1DA:Ep6wYJ[%" x="-863" y="-137"> <field name="COMMENT">Run whenever state is changed</field> <next> <block type="on_ext" id="c;*|gCMP^+7VyIN]qj^">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                                      <field name="CONDITION">ne</field>
                                      <field name="ACK_CONDITION"></field>
                                      <value name="OID0">
                                      <shadow type="field_oid" id="jk{31$NENu@o]pNzRU">
                                      <field name="oid">modbus.0.inputRegisters.13000_Running_State</field>
                                      </shadow>
                                      </value>
                                      <statement name="STATEMENT">
                                      <block type="procedures_callnoreturn" id="~dii,d.PsDx8L!{#5e4G">
                                      <mutation name="run">
                                      <arg name="dec"></arg>
                                      </mutation>
                                      <value name="ARG0">
                                      <block type="on_source" id="NE|H~0.b4VGmM[GnS2~?">
                                      <field name="ATTR">state.val</field>
                                      </block>
                                      </value>
                                      </block>
                                      </statement>
                                      <next>
                                      <block type="comment" id="W}Mu1vp1F6~uBlmI|.C">
                                      <field name="COMMENT">Run once after script is started</field>
                                      <next>
                                      <block type="procedures_callnoreturn" id="/+j6gN2NZ:bV+X~x0ur"> <mutation name="run"> <arg name="dec"></arg> </mutation> <value name="ARG0"> <block type="get_value" id="?)Snd}*[?TT^E)h(x^I#"> <field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.13000_Running_State</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> <block type="procedures_defcustomreturn" id=")7@7$^bI?;9JiXb,CqbC" x="-437" y="-88"> <mutation statements="false"> <arg name="number" varid="Wu=u[10[PLwu)p_g$2ZM"></arg> <arg name="bitPosition" varid="u?6#BJh2Bp((1W3u)Vnf"></arg> </mutation> <field name="NAME">getBit</field> <field name="SCRIPT">ICByZXR1cm4gKG51bWJlciAmICgxIDw8IGJpdFBvc2l0aW9uKSkgPT09IDAgPyAwIDogMTsK</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_defcustomnoreturn" id="lz{Fy{/wE{2-%uVacZd0" x="-437" y="-37"> <mutation statements="false"> <arg name="dec" varid="Kl3S0K7)wS:E#~kmp_|"></arg>
                                      </mutation>
                                      <field name="NAME">extractRunningStates</field>
                                      <field name="SCRIPT">ZnVuY3Rpb24gZGVjVG9CaXQoZGVjLCBiaXRQb3NpdGlvbikgewogICAgcmV0dXJuIChkZWMgJiAoMSA8PCBiaXRQb3NpdGlvbikpID09PSAwID8gZmFsc2UgOiB0cnVlOwp9CgoKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5QVi5Qb3dlckdlbmVyYXRlZEZyb21QViIsIGRlY1RvQml0KGRlYywgMCksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlBWLkJhdHRlcnlDaGFyZ2luZyIsIGRlY1RvQml0KGRlYywgMSksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlBWLkJhdHRlcnlEaXNjaGFyZ2luZyIsIGRlY1RvQml0KGRlYywgMiksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlBWLkxvYWRBY3RpdmUiLCBkZWNUb0JpdChkZWMsIDMpLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5QVi5Qb3dlckZlZWRJbnRvR3JpZCIsIGRlY1RvQml0KGRlYywgNCksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlBWLlBvd2VySW1wb3J0RnJvbUdyaWQiLCBkZWNUb0JpdChkZWMsIDUpLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5QVi5Qb3dlckdlbmVyYXRlZEZyb21Mb2FkIiwgZGVjVG9CaXQoZGVjLCA3KSwgdHJ1ZSk7Cg==</field>
                                      <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                      </block>
                                      <block type="procedures_defnoreturn" id="vv(U!g(@pnn)8_.{bCV|" x="-388" y="163">
                                      <mutation>
                                      <arg name="dec" varid="Kl3S0K7)wS:E#~kmp_|"></arg> </mutation> <field name="NAME">debug output</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="comment" id="4Kc|yjIOj/d!+rX^eB8k"> <field name="COMMENT">create some debug messages so we can check state changes in the log after the fact</field> <next> <block type="debug" id="KOrPE~?_|7q-iX+hf9B7"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="qi6ijIzs)8YkGt3mXbyd"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="sQoBJpPXUR}I,yDnYLzU"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="@[Qr;#TN3?QNNtRdBFJb"> <field name="TEXT">Power generation</field> </block> </value> <value name="ADD1"> <block type="procedures_callcustomreturn" id="[di$veE=W)etZ1N1csD!"> <mutation name="getBit"> <arg name="number"></arg> <arg name="bitPosition"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="!.K$T:bqj+}ijHEBEu1O"> <field name="VAR" id="Kl3S0K7)wS:E#~kmp_|">dec</field>
                                      </block>
                                      </value>
                                      <value name="ARG1">
                                      <block type="math_number" id="[?#(KLA~d_4od@i%HKRE">
                                      <field name="NUM">0</field>
                                      </block>
                                      </value>
                                      </block>
                                      </value>
                                      </block>
                                      </value>
                                      <next>
                                      <block type="debug" id=".tDzA6hZ]hWm/Q1Ki+C}">
                                      <field name="Severity">log</field>
                                      <value name="TEXT">
                                      <shadow type="text">
                                      <field name="TEXT">test</field>
                                      </shadow>
                                      <block type="text_join" id="9_lIMrC@kQZHlIS.BX5"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="+0Y)usl;k0!LReL=@1TA"> <field name="TEXT">Battery charging</field> </block> </value> <value name="ADD1"> <block type="procedures_callcustomreturn" id="l-(+Hf/C:1.Pr$1TME!">
                                      <mutation name="getBit">
                                      <arg name="number"></arg>
                                      <arg name="bitPosition"></arg>
                                      </mutation>
                                      <value name="ARG0">
                                      <block type="variables_get" id="]k8{NSg3:qwE6y~~PPUG">
                                      <field name="VAR" id="Kl3S0K7)wS:E#~kmp_|">dec</field> </block> </value> <value name="ARG1"> <block type="math_number" id="f|p*H^X]~uRfJ4zwy{V]"> <field name="NUM">1</field> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="#o:4EZCjL=5M?Gw+0O.i"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="OIyVbASBmVYSEM=oZSMm"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="YkP-(f;KKjkroM[%{a;?"> <field name="TEXT">Battery discharging</field> </block> </value> <value name="ADD1"> <block type="procedures_callcustomreturn" id="pGmRj}_+$eQxsP,i1O@L"> <mutation name="getBit"> <arg name="number"></arg> <arg name="bitPosition"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="VZ2rjX0pe@PD-b0EK.@n"> <field name="VAR" id="Kl3S0K7)wS:E#~kmp_|">dec</field>
                                      </block>
                                      </value>
                                      <value name="ARG1">
                                      <block type="math_number" id="^/WwB;Scl3(cF8[3jylF">
                                      <field name="NUM">2</field>
                                      </block>
                                      </value>
                                      </block>
                                      </value>
                                      </block>
                                      </value>
                                      <next>
                                      <block type="debug" id="2=ESEy@?o=2!#~*4.[p"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="SrIP5yY+X.D22D[VrlP$"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="M5Sk=a6?/W8mc@|rtDHZ"> <field name="TEXT">Positive load</field> </block> </value> <value name="ADD1"> <block type="procedures_callcustomreturn" id="UCHG|NH^a829VlS_FOc["> <mutation name="getBit"> <arg name="number"></arg> <arg name="bitPosition"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="Mrs-RQx3Z0}OX1FVc!+c"> <field name="VAR" id="Kl3S0K7)wS:E#~kmp_|">dec</field>
                                      </block>
                                      </value>
                                      <value name="ARG1">
                                      <block type="math_number" id="3oaU:Voj|5J0Fn$KdP=^">
                                      <field name="NUM">3</field>
                                      </block>
                                      </value>
                                      </block>
                                      </value>
                                      </block>
                                      </value>
                                      <next>
                                      <block type="debug" id="8
                                      ~@Ywry?/piw*O}+,=]">
                                      <field name="Severity">log</field>
                                      <value name="TEXT">
                                      <shadow type="text">
                                      <field name="TEXT">test</field>
                                      </shadow>
                                      <block type="text_join" id="K,z(Z;tM4v-MVT)=sh"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="QsKlyP=k#wB.!q2W+XJ">
                                      <field name="TEXT">Power feed into the grid</field>
                                      </block>
                                      </value>
                                      <value name="ADD1">
                                      <block type="procedures_callcustomreturn" id="aknN
                                      P^vup+EdTLM6/yn">
                                      <mutation name="getBit">
                                      <arg name="number"></arg>
                                      <arg name="bitPosition"></arg>
                                      </mutation>
                                      <value name="ARG0">
                                      <block type="variables_get" id="0QUz2T3lebdal%Stjha^">
                                      <field name="VAR" id="Kl3S0K7)wS:E#~kmp_|">dec</field> </block> </value> <value name="ARG1"> <block type="math_number" id="d5~PH;7@M7kTud**ES.">
                                      <field name="NUM">4</field>
                                      </block>
                                      </value>
                                      </block>
                                      </value>
                                      </block>
                                      </value>
                                      <next>
                                      <block type="debug" id="s[=~4,hPHDd0]0YAO8|u">
                                      <field name="Severity">log</field>
                                      <value name="TEXT">
                                      <shadow type="text">
                                      <field name="TEXT">test</field>
                                      </shadow>
                                      <block type="text_join" id="X9{#rK3QZb$[550!GD$"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="Oe-,=fU/6IGKG3v,/t+0"> <field name="TEXT">Power from the grid</field> </block> </value> <value name="ADD1"> <block type="procedures_callcustomreturn" id="EGn+kHA^EQ1XRJhx!Vhb"> <mutation name="getBit"> <arg name="number"></arg> <arg name="bitPosition"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="}2agbC4wrjiK^REZrT={"> <field name="VAR" id="Kl3S0K7)wS:E#~kmp_|">dec</field>
                                      </block>
                                      </value>
                                      <value name="ARG1">
                                      <block type="math_number" id=":fd,9cSXwq[{cx76A-+}">
                                      <field name="NUM">5</field>
                                      </block>
                                      </value>
                                      </block>
                                      </value>
                                      </block>
                                      </value>
                                      <next>
                                      <block type="debug" id="hOK+$jW(m-QrUr#W|/n@">
                                      <field name="Severity">log</field>
                                      <value name="TEXT">
                                      <shadow type="text">
                                      <field name="TEXT">test</field>
                                      </shadow>
                                      <block type="text_join" id="QJDY}eje)+|3SUH(BZyM">
                                      <mutation items="2"></mutation>
                                      <value name="ADD0">
                                      <block type="text" id="hj9k)mHycGoRx9vHO]Q{">
                                      <field name="TEXT">Power from load</field>
                                      </block>
                                      </value>
                                      <value name="ADD1">
                                      <block type="procedures_callcustomreturn" id="Rk4r]0=rc#(qd]Nqjds$">
                                      <mutation name="getBit">
                                      <arg name="number"></arg>
                                      <arg name="bitPosition"></arg>
                                      </mutation>
                                      <value name="ARG0">
                                      <block type="variables_get" id="m,$d6J}Ic:=mV:|i0B58">
                                      <field name="VAR" id="Kl3S0K7)wS:E#~kmp_|">dec</field> </block> </value> <value name="ARG1"> <block type="math_number" id=":^V4s@UVYMGm/ada=3N">
                                      <field name="NUM">7</field>
                                      </block>
                                      </value>
                                      </block>
                                      </value>
                                      </block>
                                      </value>
                                      </block>
                                      </next>
                                      </block>
                                      </next>
                                      </block>
                                      </next>
                                      </block>
                                      </next>
                                      </block>
                                      </next>
                                      </block>
                                      </next>
                                      </block>
                                      </next>
                                      </block>
                                      </statement>
                                      </block>
                                      <block type="procedures_defnoreturn" id="ILxxz6e}u[fcDIeO6oXT" x="-812" y="212">
                                      <mutation>
                                      <arg name="dec" varid="Kl3S0K7)wS:E#~kmp_`|"></arg>
                                      </mutation>
                                      <field name="NAME">run</field>
                                      <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                      <statement name="STACK">
                                      <block type="procedures_callcustomnoreturn" id="j|y@bpDyP5[;xE)~RRQ[">
                                      <mutation name="extractRunningStates">
                                      <arg name="dec"></arg>
                                      </mutation>
                                      <value name="ARG0">
                                      <block type="variables_get" id="Q=XjjZ?bay6J1^X4EO)2">
                                      <field name="VAR" id="Kl3S0K7)wS:E#~kmp_`|">dec</field>
                                      </block>
                                      </value>
                                      <next>
                                      <block type="procedures_callnoreturn" id="-0-R2zP[?Peo2o)AH{B0">
                                      <mutation name="debug output">
                                      <arg name="dec"></arg>
                                      </mutation>
                                      <value name="ARG0">
                                      <block type="variables_get" id=")ehVkoDs8KN([lz_?.j.">
                                      <field name="VAR" id="Kl3S0K7)wS:E#~kmp_`|">dec</field>
                                      </block>
                                      </value>
                                      </block>
                                      </next>
                                      </block>
                                      </statement>
                                      </block>
                                      </xml>

                                    Hoffe das hilft etwas weiter. Vielen Dank auch nochmal an @Atlantis fürs Zusammentragen der Infos + alle anderen die mitüberlegt und mitrecherchiert haben!

                                    Daniel

                                    T F R 3 Antworten Letzte Antwort
                                    0
                                    • D Daniel

                                      Hallo zusammen,
                                      starre seit Monaten immer mal wieder auf diesen Thread und versuche meinen WR via Modbus in Iobroker auszuwerten. Hatte auch immer wieder das Problem mit reconnects und Fehlern.
                                      Heute hat es endlich geklappt. Keine Ahnung, woran es am Ende lag… hier meine letzten Schritte:

                                      1. Modbus-Adapter komplett deinstalliert und neu installiert

                                      2. Geräte ID 1, IP, Master, kein Alias. Rest wie vorkonfiguriert 86fd6bbc-6ffb-4488-b9c9-e8d38d533b6a-image.png

                                      3. Ich habe nicht den WiNet-Dongle benutzt (weder Wifi noch den LAN Port des Dongles) sondern den fest verbauten separaten LAN-Port des WRs

                                      4. Die IP findet ihr bspw. in Fritzbox unter Heimnetz->Netzwerk. Wenn ihr oben rechts über den Button "+/-" die Spalte Mac-Adresse einblendet, sollte ihr die richtige IP recht fix finden, die dazugehörige Mac-Adresse beginnt mit "AC" (Achtung: das ist aber auch beim WiNet-Dongle der Fall)

                                      5. Um zu checken ob die Kommunikation grundsätzlich funktioniert kann man bspw. Tools wie modbus-cli nutzen:

                                        modbus 192.168.YYY.ZZ:502 -s 1 4999/H
                                        Parsed 0 registers definitions from 1 files
                                        4999: 2022 0x7e6

                                        Hier wird bspw. das aktuelle Jahr zurück gegeben. Wenn das schon nicht funktioniert, habt ihr vermutlich schon ein Problem mit der Verbindung (Client-ID falsch, IP falsch...). Aber Achtung: Verschwendet aber nicht zu viel Zeit darauf, damit "richtige" Werte wie aktuellen Ertrag auszulesen. Über das CLI-Tool habe ich bis heute keine oder unplausible Werte, man kann da mit Word Swap etc pp. viel falsch machen und denkt dann, es funktioniert irgendwas grundlegendes nicht, obwohl man nur die Datentypen falsch hat

                                      6. Den Fehler On error: {"errno":-104,"code":"ECONNRESET","syscall":"read"} habe ich anfänglich immer wieder gehabt - und jetzt innerhalb weniger Tage mehrfach. Einmal hat ein Firmware-Update des WR das Problem gelöst (vll. aber auch nur wg. des damit zusammenhängenden Neustarts); gerade eben habe ich in meinem Zyxel-Switch das vom WR kommende LAN-Kabel in einen anderen Port gesteckt - und direkt wieder eine funktionierende Verbindung gehabt. Arbeitshypothese wäre in dem Fall, dass der Switch auf dem Port dicht gemacht hat??

                                      7. Das TSV Format bzgl. der Register hat sich wohl verändert mittlerweile. Hier der Stand, der bei mir funktioniert hat: https://gist.github.com/dnoegel/543c72ef722365a3934bbad0bb43e222. Wenn ihr dort auf "Raw" klickt, kommt ihr direkt zur Datei.

                                      8. Versucht nicht zu lange von Hand drei handverlesene Register zum Laufen zu bringen, wenn ihr euch nicht sicher seit, dass ihr die Datentypen richtig getroffen habt: Die TSV funktioniert, bringt das Ding erstmal rein und schaut dann, welche Werte ihr bekommt.

                                      9. In der Sungrow App kann man wunderbar sehen, welche Ströme von wo nach wo fließen. In den Modbus-Daten sieht man eher, welche Ströme an welche Quelle anliegen. Möchte man sehen, ob die Batterie geladen oder entladen wird, muss man den "Running State" interpretieren (Register 13000). Die Information ist binary, d.h. das Checken á la "Wenn Wert = 25" kann man sich sparen. Hier mein Ansatz in Blockly:


                                        <xml xmlns="https://developers.google.com/blockly/xml">
                                        <variables>
                                        <variable id="Wu=u[10[PLwu)p_g$2ZM">number</variable>
                                        <variable id="u?6#BJh2Bp((1W3u)Vnf">bitPosition</variable>
                                        <variable id="Kl3S0K7)wS:E#~kmp_|">dec</variable> </variables> <block type="comment" id="dl.~:*si1DA:Ep6wYJ[%" x="-863" y="-137"> <field name="COMMENT">Run whenever state is changed</field> <next> <block type="on_ext" id="c;*|gCMP^+7VyIN]qj^">
                                        <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                                        <field name="CONDITION">ne</field>
                                        <field name="ACK_CONDITION"></field>
                                        <value name="OID0">
                                        <shadow type="field_oid" id="jk{31$NENu@o]pNzRU">
                                        <field name="oid">modbus.0.inputRegisters.13000_Running_State</field>
                                        </shadow>
                                        </value>
                                        <statement name="STATEMENT">
                                        <block type="procedures_callnoreturn" id="~dii,d.PsDx8L!{#5e4G">
                                        <mutation name="run">
                                        <arg name="dec"></arg>
                                        </mutation>
                                        <value name="ARG0">
                                        <block type="on_source" id="NE|H~0.b4VGmM[GnS2~?">
                                        <field name="ATTR">state.val</field>
                                        </block>
                                        </value>
                                        </block>
                                        </statement>
                                        <next>
                                        <block type="comment" id="W}Mu1vp1F6~uBlmI|.C">
                                        <field name="COMMENT">Run once after script is started</field>
                                        <next>
                                        <block type="procedures_callnoreturn" id="/+j6gN2NZ:bV+X~x0ur"> <mutation name="run"> <arg name="dec"></arg> </mutation> <value name="ARG0"> <block type="get_value" id="?)Snd}*[?TT^E)h(x^I#"> <field name="ATTR">val</field> <field name="OID">modbus.0.inputRegisters.13000_Running_State</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> <block type="procedures_defcustomreturn" id=")7@7$^bI?;9JiXb,CqbC" x="-437" y="-88"> <mutation statements="false"> <arg name="number" varid="Wu=u[10[PLwu)p_g$2ZM"></arg> <arg name="bitPosition" varid="u?6#BJh2Bp((1W3u)Vnf"></arg> </mutation> <field name="NAME">getBit</field> <field name="SCRIPT">ICByZXR1cm4gKG51bWJlciAmICgxIDw8IGJpdFBvc2l0aW9uKSkgPT09IDAgPyAwIDogMTsK</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_defcustomnoreturn" id="lz{Fy{/wE{2-%uVacZd0" x="-437" y="-37"> <mutation statements="false"> <arg name="dec" varid="Kl3S0K7)wS:E#~kmp_|"></arg>
                                        </mutation>
                                        <field name="NAME">extractRunningStates</field>
                                        <field name="SCRIPT">ZnVuY3Rpb24gZGVjVG9CaXQoZGVjLCBiaXRQb3NpdGlvbikgewogICAgcmV0dXJuIChkZWMgJiAoMSA8PCBiaXRQb3NpdGlvbikpID09PSAwID8gZmFsc2UgOiB0cnVlOwp9CgoKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5QVi5Qb3dlckdlbmVyYXRlZEZyb21QViIsIGRlY1RvQml0KGRlYywgMCksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlBWLkJhdHRlcnlDaGFyZ2luZyIsIGRlY1RvQml0KGRlYywgMSksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlBWLkJhdHRlcnlEaXNjaGFyZ2luZyIsIGRlY1RvQml0KGRlYywgMiksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlBWLkxvYWRBY3RpdmUiLCBkZWNUb0JpdChkZWMsIDMpLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5QVi5Qb3dlckZlZWRJbnRvR3JpZCIsIGRlY1RvQml0KGRlYywgNCksIHRydWUpOwpzZXRTdGF0ZSgiMF91c2VyZGF0YS4wLlBWLlBvd2VySW1wb3J0RnJvbUdyaWQiLCBkZWNUb0JpdChkZWMsIDUpLCB0cnVlKTsKc2V0U3RhdGUoIjBfdXNlcmRhdGEuMC5QVi5Qb3dlckdlbmVyYXRlZEZyb21Mb2FkIiwgZGVjVG9CaXQoZGVjLCA3KSwgdHJ1ZSk7Cg==</field>
                                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                        </block>
                                        <block type="procedures_defnoreturn" id="vv(U!g(@pnn)8_.{bCV|" x="-388" y="163">
                                        <mutation>
                                        <arg name="dec" varid="Kl3S0K7)wS:E#~kmp_|"></arg> </mutation> <field name="NAME">debug output</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="comment" id="4Kc|yjIOj/d!+rX^eB8k"> <field name="COMMENT">create some debug messages so we can check state changes in the log after the fact</field> <next> <block type="debug" id="KOrPE~?_|7q-iX+hf9B7"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="qi6ijIzs)8YkGt3mXbyd"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="sQoBJpPXUR}I,yDnYLzU"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="@[Qr;#TN3?QNNtRdBFJb"> <field name="TEXT">Power generation</field> </block> </value> <value name="ADD1"> <block type="procedures_callcustomreturn" id="[di$veE=W)etZ1N1csD!"> <mutation name="getBit"> <arg name="number"></arg> <arg name="bitPosition"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="!.K$T:bqj+}ijHEBEu1O"> <field name="VAR" id="Kl3S0K7)wS:E#~kmp_|">dec</field>
                                        </block>
                                        </value>
                                        <value name="ARG1">
                                        <block type="math_number" id="[?#(KLA~d_4od@i%HKRE">
                                        <field name="NUM">0</field>
                                        </block>
                                        </value>
                                        </block>
                                        </value>
                                        </block>
                                        </value>
                                        <next>
                                        <block type="debug" id=".tDzA6hZ]hWm/Q1Ki+C}">
                                        <field name="Severity">log</field>
                                        <value name="TEXT">
                                        <shadow type="text">
                                        <field name="TEXT">test</field>
                                        </shadow>
                                        <block type="text_join" id="9_lIMrC@kQZHlIS.BX5"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="+0Y)usl;k0!LReL=@1TA"> <field name="TEXT">Battery charging</field> </block> </value> <value name="ADD1"> <block type="procedures_callcustomreturn" id="l-(+Hf/C:1.Pr$1TME!">
                                        <mutation name="getBit">
                                        <arg name="number"></arg>
                                        <arg name="bitPosition"></arg>
                                        </mutation>
                                        <value name="ARG0">
                                        <block type="variables_get" id="]k8{NSg3:qwE6y~~PPUG">
                                        <field name="VAR" id="Kl3S0K7)wS:E#~kmp_|">dec</field> </block> </value> <value name="ARG1"> <block type="math_number" id="f|p*H^X]~uRfJ4zwy{V]"> <field name="NUM">1</field> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="#o:4EZCjL=5M?Gw+0O.i"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="OIyVbASBmVYSEM=oZSMm"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="YkP-(f;KKjkroM[%{a;?"> <field name="TEXT">Battery discharging</field> </block> </value> <value name="ADD1"> <block type="procedures_callcustomreturn" id="pGmRj}_+$eQxsP,i1O@L"> <mutation name="getBit"> <arg name="number"></arg> <arg name="bitPosition"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="VZ2rjX0pe@PD-b0EK.@n"> <field name="VAR" id="Kl3S0K7)wS:E#~kmp_|">dec</field>
                                        </block>
                                        </value>
                                        <value name="ARG1">
                                        <block type="math_number" id="^/WwB;Scl3(cF8[3jylF">
                                        <field name="NUM">2</field>
                                        </block>
                                        </value>
                                        </block>
                                        </value>
                                        </block>
                                        </value>
                                        <next>
                                        <block type="debug" id="2=ESEy@?o=2!#~*4.[p"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="SrIP5yY+X.D22D[VrlP$"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="M5Sk=a6?/W8mc@|rtDHZ"> <field name="TEXT">Positive load</field> </block> </value> <value name="ADD1"> <block type="procedures_callcustomreturn" id="UCHG|NH^a829VlS_FOc["> <mutation name="getBit"> <arg name="number"></arg> <arg name="bitPosition"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="Mrs-RQx3Z0}OX1FVc!+c"> <field name="VAR" id="Kl3S0K7)wS:E#~kmp_|">dec</field>
                                        </block>
                                        </value>
                                        <value name="ARG1">
                                        <block type="math_number" id="3oaU:Voj|5J0Fn$KdP=^">
                                        <field name="NUM">3</field>
                                        </block>
                                        </value>
                                        </block>
                                        </value>
                                        </block>
                                        </value>
                                        <next>
                                        <block type="debug" id="8
                                        ~@Ywry?/piw*O}+,=]">
                                        <field name="Severity">log</field>
                                        <value name="TEXT">
                                        <shadow type="text">
                                        <field name="TEXT">test</field>
                                        </shadow>
                                        <block type="text_join" id="K,z(Z;tM4v-MVT)=sh"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="QsKlyP=k#wB.!q2W+XJ">
                                        <field name="TEXT">Power feed into the grid</field>
                                        </block>
                                        </value>
                                        <value name="ADD1">
                                        <block type="procedures_callcustomreturn" id="aknN
                                        P^vup+EdTLM6/yn">
                                        <mutation name="getBit">
                                        <arg name="number"></arg>
                                        <arg name="bitPosition"></arg>
                                        </mutation>
                                        <value name="ARG0">
                                        <block type="variables_get" id="0QUz2T3lebdal%Stjha^">
                                        <field name="VAR" id="Kl3S0K7)wS:E#~kmp_|">dec</field> </block> </value> <value name="ARG1"> <block type="math_number" id="d5~PH;7@M7kTud**ES.">
                                        <field name="NUM">4</field>
                                        </block>
                                        </value>
                                        </block>
                                        </value>
                                        </block>
                                        </value>
                                        <next>
                                        <block type="debug" id="s[=~4,hPHDd0]0YAO8|u">
                                        <field name="Severity">log</field>
                                        <value name="TEXT">
                                        <shadow type="text">
                                        <field name="TEXT">test</field>
                                        </shadow>
                                        <block type="text_join" id="X9{#rK3QZb$[550!GD$"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="Oe-,=fU/6IGKG3v,/t+0"> <field name="TEXT">Power from the grid</field> </block> </value> <value name="ADD1"> <block type="procedures_callcustomreturn" id="EGn+kHA^EQ1XRJhx!Vhb"> <mutation name="getBit"> <arg name="number"></arg> <arg name="bitPosition"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="}2agbC4wrjiK^REZrT={"> <field name="VAR" id="Kl3S0K7)wS:E#~kmp_|">dec</field>
                                        </block>
                                        </value>
                                        <value name="ARG1">
                                        <block type="math_number" id=":fd,9cSXwq[{cx76A-+}">
                                        <field name="NUM">5</field>
                                        </block>
                                        </value>
                                        </block>
                                        </value>
                                        </block>
                                        </value>
                                        <next>
                                        <block type="debug" id="hOK+$jW(m-QrUr#W|/n@">
                                        <field name="Severity">log</field>
                                        <value name="TEXT">
                                        <shadow type="text">
                                        <field name="TEXT">test</field>
                                        </shadow>
                                        <block type="text_join" id="QJDY}eje)+|3SUH(BZyM">
                                        <mutation items="2"></mutation>
                                        <value name="ADD0">
                                        <block type="text" id="hj9k)mHycGoRx9vHO]Q{">
                                        <field name="TEXT">Power from load</field>
                                        </block>
                                        </value>
                                        <value name="ADD1">
                                        <block type="procedures_callcustomreturn" id="Rk4r]0=rc#(qd]Nqjds$">
                                        <mutation name="getBit">
                                        <arg name="number"></arg>
                                        <arg name="bitPosition"></arg>
                                        </mutation>
                                        <value name="ARG0">
                                        <block type="variables_get" id="m,$d6J}Ic:=mV:|i0B58">
                                        <field name="VAR" id="Kl3S0K7)wS:E#~kmp_|">dec</field> </block> </value> <value name="ARG1"> <block type="math_number" id=":^V4s@UVYMGm/ada=3N">
                                        <field name="NUM">7</field>
                                        </block>
                                        </value>
                                        </block>
                                        </value>
                                        </block>
                                        </value>
                                        </block>
                                        </next>
                                        </block>
                                        </next>
                                        </block>
                                        </next>
                                        </block>
                                        </next>
                                        </block>
                                        </next>
                                        </block>
                                        </next>
                                        </block>
                                        </next>
                                        </block>
                                        </statement>
                                        </block>
                                        <block type="procedures_defnoreturn" id="ILxxz6e}u[fcDIeO6oXT" x="-812" y="212">
                                        <mutation>
                                        <arg name="dec" varid="Kl3S0K7)wS:E#~kmp_`|"></arg>
                                        </mutation>
                                        <field name="NAME">run</field>
                                        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                        <statement name="STACK">
                                        <block type="procedures_callcustomnoreturn" id="j|y@bpDyP5[;xE)~RRQ[">
                                        <mutation name="extractRunningStates">
                                        <arg name="dec"></arg>
                                        </mutation>
                                        <value name="ARG0">
                                        <block type="variables_get" id="Q=XjjZ?bay6J1^X4EO)2">
                                        <field name="VAR" id="Kl3S0K7)wS:E#~kmp_`|">dec</field>
                                        </block>
                                        </value>
                                        <next>
                                        <block type="procedures_callnoreturn" id="-0-R2zP[?Peo2o)AH{B0">
                                        <mutation name="debug output">
                                        <arg name="dec"></arg>
                                        </mutation>
                                        <value name="ARG0">
                                        <block type="variables_get" id=")ehVkoDs8KN([lz_?.j.">
                                        <field name="VAR" id="Kl3S0K7)wS:E#~kmp_`|">dec</field>
                                        </block>
                                        </value>
                                        </block>
                                        </next>
                                        </block>
                                        </statement>
                                        </block>
                                        </xml>

                                      Hoffe das hilft etwas weiter. Vielen Dank auch nochmal an @Atlantis fürs Zusammentragen der Infos + alle anderen die mitüberlegt und mitrecherchiert haben!

                                      Daniel

                                      T Offline
                                      T Offline
                                      toki1973
                                      schrieb am zuletzt editiert von
                                      #270

                                      Ich werde in absehbarer Zeit auch einen Sungrow WR bekommen. Mein Installateur möchte wohl das Techniker PW nicht rausrücken. Ist das ein Standard PW?
                                      Was soll ich den einstellen lassen sofern ich nicht an das PW komme, damit ich auf den Bus zugreifen kann?

                                      NUC, PROXMOX, Grafana, Influx, Unify

                                      S D 2 Antworten Letzte Antwort
                                      0
                                      • T toki1973

                                        Ich werde in absehbarer Zeit auch einen Sungrow WR bekommen. Mein Installateur möchte wohl das Techniker PW nicht rausrücken. Ist das ein Standard PW?
                                        Was soll ich den einstellen lassen sofern ich nicht an das PW komme, damit ich auf den Bus zugreifen kann?

                                        S Offline
                                        S Offline
                                        Smokey
                                        schrieb am zuletzt editiert von
                                        #271

                                        @toki1973 sagte in Sungrow WR SGH10RT erfolgreich mit MODBUS eingebunden:

                                        Ich werde in absehbarer Zeit auch einen Sungrow WR bekommen. Mein Installateur möchte wohl das Techniker PW nicht rausrücken. Ist das ein Standard PW?
                                        Was soll ich den einstellen lassen sofern ich nicht an das PW komme, damit ich auf den Bus zugreifen kann?

                                        Jetzt muss ich aufpassen, dass ich mich nicht falsch erinnere. Aber ich denke bei mir war es so, dass der Zugriff über das WiFi Modul auf dem Standard-PW belassen wurde. Viel wichtiger bei mir war aber im Nachhinein der Zugriff über das normale LAN Kabel auf den LAN Port (nicht der, in dem das Wifi Modul steckt). Denn dort hat der Zugriff mittels Modbus Adapter am besten funktioniert. Und soweit ich weiß, gibt es dafür kein Name/PWD sondern geht direkt immer. Nebenbemerkung: es ist Deine Anlage. "nicht herausrücken von Zugriff" würde ich nicht akzeptieren.

                                        1 Antwort Letzte Antwort
                                        0
                                        • T toki1973

                                          Ich werde in absehbarer Zeit auch einen Sungrow WR bekommen. Mein Installateur möchte wohl das Techniker PW nicht rausrücken. Ist das ein Standard PW?
                                          Was soll ich den einstellen lassen sofern ich nicht an das PW komme, damit ich auf den Bus zugreifen kann?

                                          D Offline
                                          D Offline
                                          Daniel
                                          schrieb am zuletzt editiert von
                                          #272

                                          @toki1973 Lt. Handbuch lauten die Standard-Zugangsdaten "admin / pw8888". Eigentlich(TM) brauchst du die Zugangsdaten aber nicht und solltest auch ohne das alles eingerichtet bekommen.

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          531

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe