Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Test Adapter Growatt v3.3.1

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Test Adapter Growatt v3.3.1

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Solardach @warp735 last edited by

      @warp735

      Nicht sicher, kann sich auch zufällig überschnitten haben.

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

        Ich habe mal eine Verständisfrage und hoffe auf eine Antwort.
        Wieso bleibt der Adapter bei dem US Server grün und bei dem China Server wird er seit kurzem gelb?
        Vor allem, gibt es da eine Lösung ohne nach den US Server umziehen zu müssen?
        Da der US Server die Daten nicht übernimmt, fängt man da quasi wieder von Null an und das möchte ich nicht.

        W 1 Reply Last reply Reply Quote 0
        • W
          warp735 @jaridian last edited by

          @jaridian sagte in Test Adapter Growatt v1.0.0:

          fängt man da quasi wieder von Null an und das möchte ich nicht.

          Ich auch nicht.... seit Tagen die Charts verhagelt 😞
          Da muss unbedingt ne lokale Lösung her. Mittels Cloud läuft das ja keine 2 Wochen am Stück zuverlässig.

          W 1 Reply Last reply Reply Quote 0
          • W
            Wildbill @warp735 last edited by

            @warp735 Die lokale Lösung existiert. Nennt sich Grott und ist HIER bei Github zu finden. Ist quasi wie eine MITM-Attacke. Der Grott-Server empfängt direkt vom Growatt-WR und schickt die Daten lokal an einen MQTT-Server und parallel an den Growatt-Server. Somit hat man die Daten direkt lokal und bei Bedarf auch in China. Das lässt sich auch abstellen.
            Ich habe den Umzug heute erfolgreich vollzogen. Die Daten kommen schön im Minutentakt per MQTT-Json. Das Log bleibt ruhig, seit ich den Growatt-Adapter beendet habe. Und im Forum gab es eine Anleitung, wie man eine bestehende Sourceanalytix-Struktur auf einen anderen Datenpunkt umzieht. Einzig in der Influx-DB fehlen jetzt die Daten der Vergangenheit. Aber die Gelegenheit hab ich gleich genutzt und eine passende Struktur unter userdata.0 erzeugt, so dass bei künftigen Anpassungen alle Daten erhalten bleiben.

            Gruss, Jürgen

            W 1 Reply Last reply Reply Quote 1
            • W
              warp735 @Wildbill last edited by

              @wildbill
              Cool 👍
              Hast das als Docker irgendwo laufen oder wie?

              W 1 Reply Last reply Reply Quote 0
              • W
                Wildbill @warp735 last edited by

                @warp735 Läuft bei mir als LXC unter Proxmox. Aktuelles Debian-Template.

                Gruss, Jürgen

                W 2 Replies Last reply Reply Quote 0
                • W
                  warp735 @Wildbill last edited by

                  @wildbill
                  Super, schau ich mir mal an

                  1 Reply Last reply Reply Quote 0
                  • W
                    warp735 @Wildbill last edited by

                    @wildbill

                    Bei mir muss das Ganze unter unraid laufen. Was muss ich denn alles übergeben? So richtig schlau werd ich aus den Dokus nicht 😞

                    IP vom mqtt Server/ioBroker?
                    Muss ich am Growatt auch was umstellen?
                    Nach welcher Anleitung bist du vorgegangen?

                    W 1 Reply Last reply Reply Quote 0
                    • W
                      Wildbill @warp735 last edited by

                      @warp735 Wegen unraid kann ich Dir nicht sagen, was Du da beachten musst. Anleitung zum Installieren von grott ist DIESE HIER.

                      Eigentlich ganz simpel:

                      • VM, LXC, Raspi oder was auch immer mit System nach Wahl aufsetzen (ich hab Debian 11).
                      • Schauen, dass Python3 installiert ist (Debian bringt das schon mit).
                      • grott mit git clone runterladen und die grott.ini anpassen (z.B. IP und Port des MQTT-Broker oder MQTT-Adapter von iobroker)
                      • Evtl. service einrichten, damit grott beim Booten automatisch startet

                      Am Growatt musst Du natürlich auch umstellen. Dort musst Du dann die IP von DEINEM Grott-Server eintragen. Das kannst Du auch direkt via server.growatt.com machen. Steht HIER beschrieben. Oder eben direkt auf Deinem Shinestick in dessen WLAN einloggen und da ändern. Einfach bei IP die IP des grott-Server (lokale IP) eintragen.
                      Anschließend kommt dann ein JSON-String in iobroker unter mqtt.0 an, den man dann per Script oder Node red in einzelne Datenpunkte zerpflücken kann, die man eben möchte.

                      Gruss, Jürgen

                      W 1 Reply Last reply Reply Quote 1
                      • W
                        warp735 @Wildbill last edited by

                        @wildbill
                        Super, danke dir erstmal. Muss mal schauen wie ich das einrichte. Aktuell hab ich den Growatt nicht im "sicheren" Netz (will ich auch nicht haben)
                        Aber liest sich ganz vielversprechend das Ganze 👍

                        Schade das sich der Adapterentwickler hier auch nicht mehr meldet. Das Growatt Portal an sich funktioniert ja reibungslos. Nur der Adapter nicht.

                        W 1 Reply Last reply Reply Quote 0
                        • W
                          Wildbill @warp735 last edited by Wildbill

                          @warp735 Ich glaube (oder vermute), dass @PLCHome-0 hier gar nicht so viel ändern kann. Ich habe die letzten Tage öfter parallel die Site server.growatt.com offen gehabt um zu vergleichen und bekam da auch oft genug Fehlermeldungen beim Anklicken der verschiedenen Zeiträume und auch mal so zwischendurch. Fehler 588 wurde auch da im Browser öfter angezeigt. Scheint also doch schon der Server zu zicken.
                          Du könntest auch auf den US-Server wechseln. Weiter oben hatte @mane ja geschrieben, dass es bei ihm stabiler läuft. Nur ist halt die Historie bei Growatt direkt weg, da man sich da komplett neu anmelden muss. Auf den Shinestick musst Du da aber auch zugreifen und die IP bzw. den Server ändern.
                          Von grott gibt es im Übrigen auch einen fertigen Docker-Container. Ist hier beschrieben. Vielleicht fällt Dir das damit leichter? Aber auch da musst Du im Stick die IP anpassen, darum kommst Du nicht herum. 😊
                          Und natürlich muss der Stick dann so ins WLAN, dass er und Dein MQTT-broker (iobroker) sich gegenseitig sehen können. Ohne geht lokal halt nicht.

                          Gruss, Jürgen

                          EDIT: Für grott gibt es auch eine Version, die komplett auf den Growatt-Server verzichtet und alles lokal handelt. Da braucht der Stick also keine Internetverbindung mehr. HIER steht was dazu.

                          EDIT2: Für den, der es braucht, hier noch das Script, um aus dem MQTT-JSON Datenpunkte unter userdata.0 zu befüllen:

                          
                          
                          //MQTT Json to Objekt
                          
                           
                          
                          // var setzen
                          
                           
                          
                          // Create States
                          
                          //createState('0_userdata.0.Solaranlage.XGD3A293M6.time', 0,{type: 'number',name: 'time', read: true,write: true,role: 'value.time'})
                          //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvstatus', 0,{type: 'number',name: 'pvstatus', read: true,write: true,role: 'value'})
                          //createState('0_userdata.0.Solaranlage.XGD3A293M6.pv1watt', 0,{type: 'number',name: 'pv1watt', read: true,write: true,role: 'value'})
                          //createState('0_userdata.0.Solaranlage.XGD3A293M6.pv1voltage', 0,{type: 'number',name: 'pv1voltage', read: true,write: true,role: 'value'})
                          //createState('0_userdata.0.Solaranlage.XGD3A293M6.pv1current', 0,{type: 'number',name: 'pv1current', read: true,write: true,role: 'value'})
                          //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvpowerin', 0,{type: 'number',name: 'pvpowerin', read: true,write: true,role: 'value'})
                          //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvpowerout', 0,{type: 'number',name: 'pvpowerout', read: true,write: true,role: 'value'})
                          //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvfrequentie', 0,{type: 'number',name: 'pvfrequentie', read: true,write: true,role: 'value'})
                          //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridvoltage', 0,{type: 'number',name: 'pvgridvoltage', read: true,write: true,role: 'value'})
                          //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridcurrent', 0,{type: 'number',name: 'pvgridcurrent', read: true,write: true,role: 'value'})
                          //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridpower', 0,{type: 'number',name: 'pvgridpower', read: true,write: true,role: 'value'})
                          //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvenergytoday', 0,{type: 'number',name: 'pvenergytoday', read: true,write: true,role: 'value'})
                          //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvenergytotal', 0,{type: 'number',name: 'pvenergytotal', read: true,write: true,role: 'value'})
                          //createState('0_userdata.0.Solaranlage.XGD3A293M6.epvtotal', 0,{type: 'number',name: 'epvtotal', read: true,write: true,role: 'value'})
                          //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvtemperature', 0,{type: 'number',name: 'pvtemperature', read: true,write: true,role: 'value'})
                          //createState('0_userdata.0.Solaranlage.XGD3A293M6.pvipmtemperature', 0,{type: 'number',name: 'pvipmtemperature', read: true,write: true,role: 'value'})
                          //createState('0_userdata.0.Solaranlage.XGD3A293M6.totworktime', 0,{type: 'number',name: 'totworktime', read: true,write: true,role: 'value'})
                          
                          
                           
                          
                          // Script beginning
                          
                          on({id: "mqtt.0.energy.growatt"/*Growatt*/, change: "any"}, function (obj) {
                          
                           
                          
                             //variabele erstellen 
                          
                          	
                              //    var time;
                          		var pvstatus;
                          		var pv1watt;
                          		var pv1voltage;
                          		var pv1current;
                          		var pvpowerin;
                          		var pvpowerout;
                          		var pvfrequentie;
                          		var pvgridvoltage;
                          		var pvgridcurrent;
                          		var pvgridpower;
                          		var pvenergytoday;
                          		var pvenergytotal;
                          		var epvtotal;
                          		var pvtemperature;
                          		var pvipmtemperature;
                          		var totworktime;
                          		
                          
                                 
                          
                             //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object
                          
                             try {obj = JSON.parse(getState("mqtt.0.energy.growatt"/*Growatt*/).val);
                          
                             } catch (e) {
                          
                                     console.error('Cannot parse: ' + getState("mqtt.0.energy.growatt"/*Growatt*/).val);
                          
                                     return;
                          
                              }
                          
                              //hier schreien wir die daten des json strings in die variabelen, links die variable und rechts der name im json. obj bedeuten halt lese den wert nach :
                          
                          
                             //time = obj.values.time;
                             pvstatus = obj.values.pvstatus;
                             pv1watt = parseFloat((obj.values.pv1watt)) /10;
                             pv1voltage = parseFloat((obj.values.pv1voltage)) /10;
                             pv1current = parseFloat((obj.values.pv1current)) /10;
                             pvpowerin = parseFloat((obj.values.pvpowerin)) /10;
                             pvpowerout = parseFloat((obj.values.pvpowerout)) /10;
                             pvfrequentie = parseFloat((obj.values.pvfrequentie)) /100;
                             pvgridvoltage = parseFloat((obj.values.pvgridvoltage)) /10;
                             pvgridcurrent = parseFloat((obj.values.pvgridcurrent)) /10;
                             pvgridpower = parseFloat((obj.values.pvgridpower)) /10;
                             pvenergytoday = parseFloat((obj.values.pvenergytoday)) /10;
                             pvenergytotal = parseFloat((obj.values.pvenergytotal)) /10;
                             epvtotal = parseFloat((obj.values.epvtotal)) /10;
                             pvtemperature = parseFloat((obj.values.pvtemperature)) /10;
                             pvipmtemperature = parseFloat((obj.values.pvipmtemperature)) /10;
                             totworktime = obj.values.totworktime;
                          
                          
                          
                          //
                          
                           
                          
                          //setState('0_userdata.0.Solaranlage.XGD3A293M6.time', (time),true);
                          setState('0_userdata.0.Solaranlage.XGD3A293M6.pvstatus', (pvstatus),true);
                          setState('0_userdata.0.Solaranlage.XGD3A293M6.pv1watt', (pv1watt),true);
                          setState('0_userdata.0.Solaranlage.XGD3A293M6.pv1voltage', (pv1voltage),true);
                          setState('0_userdata.0.Solaranlage.XGD3A293M6.pv1current', (pv1current),true);
                          setState('0_userdata.0.Solaranlage.XGD3A293M6.pvpowerin', (pvpowerin),true);
                          setState('0_userdata.0.Solaranlage.XGD3A293M6.pvpowerout', (pvpowerout),true);
                          setState('0_userdata.0.Solaranlage.XGD3A293M6.pvfrequentie', (pvfrequentie),true);
                          setState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridvoltage', (pvgridvoltage),true);
                          setState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridcurrent', (pvgridcurrent),true);
                          setState('0_userdata.0.Solaranlage.XGD3A293M6.pvgridpower', (pvgridpower),true);
                          setState('0_userdata.0.Solaranlage.XGD3A293M6.pvenergytoday', (pvenergytoday),true);
                          setState('0_userdata.0.Solaranlage.XGD3A293M6.pvenergytotal', (pvenergytotal),true);
                          setState('0_userdata.0.Solaranlage.XGD3A293M6.epvtotal', (epvtotal),true);
                          setState('0_userdata.0.Solaranlage.XGD3A293M6.pvtemperature', (pvtemperature),true);
                          setState('0_userdata.0.Solaranlage.XGD3A293M6.pvipmtemperature', (pvipmtemperature),true);
                          setState('0_userdata.0.Solaranlage.XGD3A293M6.totworktime', (totworktime),true);
                          
                          
                          
                          
                          });
                          
                          

                          0_userdata.0.Solaranlage.XGD3A293M6 kann beliebig angepasst werden. Zum Anlegen der Datenpunkte einmalig ganz oben vor den createState jeweils die // entfernen. Pfade zu mqtt und userdata dann jeweils anpassen.

                          EditEDIT: Um den Datenpunkt time zu befüllen fehlt noch ein kleines Script. Kann man auch in das obige unten mit anhängen:

                          on({id: [].concat(['mqtt.0.energy.growatt']), change: "ne"}, async function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                            setState("0_userdata.0.Solaranlage.XGD3A293M6.time"/*time*/, (obj.state ? obj.state.ts : ""), true);
                          });
                          
                          B PLCHome 0 2 Replies Last reply Reply Quote 1
                          • B
                            bassface @Wildbill last edited by

                            @wildbill
                            Herzlichen Dank für deine Ausführungen und das Skript 😊 🤗

                            Hab nun Grott als Docker im Proxy-Modus laufen 👍

                            Funktionierte eigentlich direkt und ohne Probleme.
                            MQTT-Adapter installiert, Docker eingerichtet, IP der Servers auf dem Stick geändert - Fertig

                            ioBroker hat die Daten nun direkt und Grott meldet auch brav an Growatt weiter...

                            1 Reply Last reply Reply Quote 0
                            • W
                              Wildbill last edited by

                              @bassface So soll es sein. Läuft bei mir auch von Start an nun völlig problemlos. 👍

                              Gruss, Jürgen

                              1 Reply Last reply Reply Quote 0
                              • PLCHome 0
                                PLCHome 0 Developer @Wildbill last edited by

                                @wildbill Danke, dass du das mit der Webseite analysiert hast.
                                Ich hatte die 588 Antworten noch nicht gesehen. Ich dachte, es liegt am Header...
                                Der Fehler ist echt schwer zu fassen, da er scheinbar nicht ständig auftaucht.
                                Ich denke, ich muss bei 588 einfach erneut anfragen.

                                Zu dem Umleiten der Modbus-Ip-Nachricht an die Cloud.
                                Ich werde mal probieren, ob ich die Nachrichten auch mit dem ioBroker umleiten kann.
                                Dann könnte der Adapter das zusätzlich machen und sie evtl. auch an die US-Cloud schicken ....
                                Ich hab mir die Python Programmierung noch nicht angeschaut, sind da alle Daten entschlüsselt?

                                Allerdings sollte es über die Konfiguration des Docker auch möglich sein, sie an beide Clouds zu senden ...

                                W 1 Reply Last reply Reply Quote 2
                                • W
                                  Wildbill @PLCHome 0 last edited by

                                  @plchome-0 sagte in Test Adapter Growatt v1.0.0:

                                  @wildbill
                                  Zu dem Umleiten der Modbus-Ip-Nachricht an die Cloud.
                                  Ich werde mal probieren, ob ich die Nachrichten auch mit dem ioBroker umleiten kann.
                                  Dann könnte der Adapter das zusätzlich machen und sie evtl. auch an die US-Cloud schicken ....
                                  Ich hab mir die Python Programmierung noch nicht angeschaut, sind da alle Daten entschlüsselt?

                                  Allerdings sollte es über die Konfiguration des Docker auch möglich sein, sie an beide Clouds zu senden ...

                                  Das kann ich Dir gar nicht sagen, wie das intern genau läuft bei Grott. Da würde ich Dich einfach nochmal an die Github-Site verweisen. Da steht auch einiges an technischem Hintergrund und auch in den Issues ist der Entwickler sehr aktiv mit dabei. Eventeull kann er Dich ja direkt unterstützen, um den iobroker-Adapter in ähnlicher Manier anzupassen und auch quasi als MITM zwischen Shinestick und Server zu packen und die Daten direkt vom Stick abzugreifen bzw. sie sich halt vom Stick direkt schiocken lassen und danach an den Server zu senden. Anscheinend sendet der Stick auch nur, wenn er Kontakt zum Server aufbauen kann, wobei es da mit grottserver wohl auch was gibt, wo das nicht mehr nötig ist.
                                  Wie gesagt, ich nutze es nur, und fand es völlig unkompliziert und problemlos, habe mich aber nicht groß um die Technik dahinter gekümmert. Aber wenn Dein Adapter die Funktion vielleicht irgendwann selbst kann, umso besser.

                                  Gruss, Jürgen

                                  PLCHome 0 W 2 Replies Last reply Reply Quote 0
                                  • PLCHome 0
                                    PLCHome 0 Developer @Wildbill last edited by

                                    @wildbill Ich habe jetzt etwas an den Header geändert. Die Anfrage sehen der Webseite ähnlicher. Bei mir kommt jetzt keine 588 mehr. Oder hat auch growatt etwas unternommen?

                                    W 1 Reply Last reply Reply Quote 0
                                    • W
                                      Wildbill @PLCHome 0 last edited by

                                      @plchome-0 Ich habe eben die 1.1.17 nochmal gestartet und sofort den 588. bekommen. Dann die 1.1.19 von Github geholt und die lief sofort ohne Fehler an. Ich lasse mal bis morgen parallel mitlaufen, ob noch Fehler auftauchen.
                                      Da ich den Fehler aber auch schon auf der Site selbst hatte vermute ich nach wie vor, der Server ist einfach etwas schwach auf der Brust. Ich werde zukünftig die Lösung per MQTT direkt vom Stick bevorzugen.

                                      Ob Growatt da was auf dem Server oder der Site geändert hat, kann ich Dir nicht sagen. Da müsstest Du schon direkt dort nachfragen. Aber ob da eine Antwort kommt…..

                                      Gruss, Jürgen

                                      1 Reply Last reply Reply Quote 0
                                      • W
                                        Wildbill last edited by Wildbill

                                        @PLCHome-0 Leider tauchen nach wie vor Fehler im Log auf, auch wenn sich der Adapter seither zumindest immer wieder gefangen und weiterhin Daten gesammelt hat:

                                        	2022-08-31 18:14:54.634	error	Growatt exception: TypeError: Converting circular structure to JSON --> starting at object with constructor 'TLSSocket' | property '_httpMessage' -> object with constructor 'ClientRequest' --- property 'socket' closes the circle
                                        
                                        growatt.0
                                        2022-08-31 18:11:54.547	error	Growatt exception: TypeError: Converting circular structure to JSON --> starting at object with constructor 'TLSSocket' | property '_httpMessage' -> object with constructor 'ClientRequest' --- property 'socket' closes the circle
                                        
                                        growatt.0
                                        2022-08-31 18:09:53.058	error	Growatt exception: TypeError: Converting circular structure to JSON --> starting at object with constructor 'TLSSocket' | property '_httpMessage' -> object with constructor 'ClientRequest' --- property 'socket' closes the circle
                                        
                                        growatt.0
                                        2022-08-31 18:06:52.917	error	Growatt exception: AxiosError: Request failed with status code 500
                                        
                                        growatt.0
                                        2022-08-31 16:16:23.273	error	Growatt exception: AxiosError: Request failed with status code 588
                                        

                                        Lokal kamen die Daten minütlich per MQTT ohne Aussetzer an, wie es um die Growatt-Site server.growatt.com während der Zeiten im Log stand kann ich nicht sagen, hab nicht geschaut. Aber zumindest eben ging alles und die Werte entsprechen denen, die per MQTT kamen und die Dein Adapter auch geholt hat.
                                        Ich werde ihn mal bis morgen weiterlaufen lassen und schauen, wie der "Start" morgen früh klappt, wenn die ersten Watt erzeugt werden.

                                        Gruss, Jürgen

                                        EDIT: Den 588 muss ich wieder "abziehen". Der war noch, als ich die 1.1.17 heute Mittag vor dem Update gestartet hatte. Den also nicht beachten. Aber die ab 18:00 mit dem Code 500 waren mit der 1.1.19.

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

                                          Gottseidank hat uns @PLCHome-0 nicht verlassen. Alter wir brauchen Dich! 😇 Und großen Dank das Du dran bleibst. 👏
                                          Seit der 1.1.19. ist der Adapter durchgehend grün und keine Fehlermeldungen bisher. Schaun mer mal ob es so bleibt?
                                          Grott ist vielleicht zwar eine Alternative, aber da muss man sich erst einmal reinarbeiten. Das geht, jedenfalls bei mir, nicht so auf die schnelle.

                                          1 Reply Last reply Reply Quote 1
                                          • chucky666
                                            chucky666 @PLCHome 0 last edited by

                                            @plchome-0 danke für das Update , du bist der beste

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            976
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            adapter growatt pv-anlage shine solar test tester
                                            71
                                            799
                                            296336
                                            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