Skip to content
  • 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
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Test Adapter Growatt v3.3.1

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.2k

Test Adapter Growatt v3.3.1

Geplant Angeheftet Gesperrt Verschoben Tester
adaptergrowattpv-anlageshinesolartesttester
808 Beiträge 72 Kommentatoren 355.3k Aufrufe 63 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.
  • W Online
    W Online
    Wildbill
    schrieb am zuletzt editiert von Wildbill
    #218

    @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 Antwort Letzte Antwort
    0
    • J Offline
      J Offline
      jaridian
      schrieb am zuletzt editiert von jaridian
      #219

      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 Antwort Letzte Antwort
      1
      • PLCHome 0P PLCHome 0
        Aktuelle Test Version 3.3.1
        Veröffentlichungsdatum 13.08.2024
        Github Link https://github.com/PLCHome/ioBroker.growatt

        Hallo,

        ich habe einen Growatt SPH4000 Solar Wechselrichter mit ACCU.
        Growatt bietet zum Überwachen seiner Solarsysteme eine Webseite und eine App an.
        Ich habe die API benutzt, um einen Adapter für ioBroker zu erstellen.

        Zu Installation: Der Adapter kann über den ioBroker mit der Einstellung Beta (latest) installiert werden.

        Der Adapter fragt alle 30sec. die Werte des Wechselrichters ab und legt diese als einzelne Objekte ab.
        Die Werte ändern sich wie in der Shine App und im Webportal nur alle 5min.

        Leider sind alle Gerätetypen bei Gowatt mit einer anderen API ausgestattet. Ich habe versucht, so viele wie möglich zu Implementieren.

        Wäre nett wenn ihr den Adapter testen könntet damit ich mit der 0.0.14 in die Stable (default) komme.

        Hello,

        I have a Growatt SPH4000 solar inverter with ACCU.
        Growatt offers a website and an app for monitoring its solar systems.
        I used the API to create an adapter for ioBroker.

        To installation: The adapter can be installed via the ioBroker with the setting Beta (latest).

        The adapter asks every 30sec. saves the values ​​of the inverter and saves them as individual objects.
        As in the Shine app and in the web portal, the values ​​change only every 5 minutes.

        Unfortunately, all device types at Gowatt have a different API. I tried to implement as many as possible.

        Would be nice if you could test the adapter so that I can get into the stable (default) with 0.0.14.

        chucky666C Online
        chucky666C Online
        chucky666
        schrieb am zuletzt editiert von
        #220

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

        1 Antwort Letzte Antwort
        0
        • W Offline
          W Offline
          warp735
          schrieb am zuletzt editiert von
          #221

          @plchome-0

          Vielen Dank, bei mir auch wieder grün 👍

          1 Antwort Letzte Antwort
          0
          • W Online
            W Online
            Wildbill
            schrieb am zuletzt editiert von
            #222

            @PLCHome-0 Der Adapter scheint nun stabiler zu laufen. Bis auf den obligatorischen Fehler pünktlich um 03:57 Uhr gab es keine Logeinträge:

            	2022-09-01 03:57:15.166	error	Growatt exception: AxiosError: Request failed with status code 500
            

            Dafür hat mich die Growatt-Site eben beim testweisen Besuch mal wieder mit einer Fehlermeldung begrüßt, dieses Mal Code 500:

            945474f3-1c4e-4a3d-b99f-013bd74479a3-image.png

            Da die lokale Variante via grott so schön problemlos läuft und ich doppeltes Gemoppel eigentlich nicht brauche und auch die Web-Site bzw. App außer zu Testzwecken nie öffne (wobei Grott die Dten ja dennoch dahin spiegelt), werde ich den Versuch mit dem Adapter dennoch erst einmal wieder beenden. Ich bleibe aber dennoch hier mit am Ball und bin gespannt, was noch kommt. Wenn Du mal einen gezielten Test oder so benötigst, dann kann ich da auch gerne mitmachen, der Adapter bleibt erst einmal installiert und nur beendet.

            Gruss, Jürgen

            W 1 Antwort Letzte Antwort
            0
            • W Wildbill

              @PLCHome-0 Der Adapter scheint nun stabiler zu laufen. Bis auf den obligatorischen Fehler pünktlich um 03:57 Uhr gab es keine Logeinträge:

              	2022-09-01 03:57:15.166	error	Growatt exception: AxiosError: Request failed with status code 500
              

              Dafür hat mich die Growatt-Site eben beim testweisen Besuch mal wieder mit einer Fehlermeldung begrüßt, dieses Mal Code 500:

              945474f3-1c4e-4a3d-b99f-013bd74479a3-image.png

              Da die lokale Variante via grott so schön problemlos läuft und ich doppeltes Gemoppel eigentlich nicht brauche und auch die Web-Site bzw. App außer zu Testzwecken nie öffne (wobei Grott die Dten ja dennoch dahin spiegelt), werde ich den Versuch mit dem Adapter dennoch erst einmal wieder beenden. Ich bleibe aber dennoch hier mit am Ball und bin gespannt, was noch kommt. Wenn Du mal einen gezielten Test oder so benötigst, dann kann ich da auch gerne mitmachen, der Adapter bleibt erst einmal installiert und nur beendet.

              Gruss, Jürgen

              W Offline
              W Offline
              warp735
              schrieb am zuletzt editiert von warp735
              #223

              @wildbill
              Hab mir den Docker auch mal installiert. Vielen Dank für die Info. Ist eigentlich super, dass man so lokal und gleichzeitig die Cloud noch hat.

              41fc7541-ce5b-432e-9495-d820fea6dbfe-grafik.png

              1 Antwort Letzte Antwort
              0
              • W Wildbill

                @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

                W Offline
                W Offline
                warp735
                schrieb am zuletzt editiert von
                #224

                @wildbill sagte in Test Adapter Growatt v1.0.0:

                Anscheinend sendet der Stick auch nur, wenn er Kontakt zum Server aufbauen kann

                Das würde ja bedeuten, wenn der Growatt Server down ist, steht man wieder ohne Daten da?

                W 1 Antwort Letzte Antwort
                0
                • W warp735

                  @wildbill sagte in Test Adapter Growatt v1.0.0:

                  Anscheinend sendet der Stick auch nur, wenn er Kontakt zum Server aufbauen kann

                  Das würde ja bedeuten, wenn der Growatt Server down ist, steht man wieder ohne Daten da?

                  W Online
                  W Online
                  Wildbill
                  schrieb am zuletzt editiert von
                  #225

                  @warp735 Ja, deshalb gibt es (momentan nur beim Docker) ja auch die Variante grottserver.py. Damit "simuliert" grott wohl den Growatt-Server und der Stick sendet klaglos lokal seine Daten obwohl man ihm sogar das Internet abdrehen kann.
                  Wobei ich aber sagen muss, dass es seit April 2021, seit mein Growatt läuft, das Problem noch nie hatte, dass der Stick seine Daten nicht los wurde. Wenn, gab es immer nur Probleme mit der Website oder eben dem Adapter beim Zugriff auf den Server.
                  Der Stick soll wohl auch die Daten von bis zu 30 Tagen intern speichern können und dann eben später mit passenden Timestamps abliefern, wenn er zwischendurch mal den Server nicht erreicht. OK, bringt lokal nicht viel, da ja dann erst wieder ein MQTT-Paket kommt, wenn der Server wieder da wäre und die Daten dazwischen lokal nicht verwurstet werden.
                  Aber wie gesagt, grottserver.py soll das umgehen, oben hatte ich es ja bereits mal verlinkt.

                  Gruss, Jürgen

                  W 1 Antwort Letzte Antwort
                  0
                  • H Offline
                    H Offline
                    heinzie
                    schrieb am zuletzt editiert von
                    #226

                    Hallo,

                    bin auf der Suche nach dem Parameter für den Wirkungsgrad.
                    Gibt es den im dem Adapter nicht oder übersehe ich den?

                    1 Antwort Letzte Antwort
                    0
                    • W Wildbill

                      @warp735 Ja, deshalb gibt es (momentan nur beim Docker) ja auch die Variante grottserver.py. Damit "simuliert" grott wohl den Growatt-Server und der Stick sendet klaglos lokal seine Daten obwohl man ihm sogar das Internet abdrehen kann.
                      Wobei ich aber sagen muss, dass es seit April 2021, seit mein Growatt läuft, das Problem noch nie hatte, dass der Stick seine Daten nicht los wurde. Wenn, gab es immer nur Probleme mit der Website oder eben dem Adapter beim Zugriff auf den Server.
                      Der Stick soll wohl auch die Daten von bis zu 30 Tagen intern speichern können und dann eben später mit passenden Timestamps abliefern, wenn er zwischendurch mal den Server nicht erreicht. OK, bringt lokal nicht viel, da ja dann erst wieder ein MQTT-Paket kommt, wenn der Server wieder da wäre und die Daten dazwischen lokal nicht verwurstet werden.
                      Aber wie gesagt, grottserver.py soll das umgehen, oben hatte ich es ja bereits mal verlinkt.

                      Gruss, Jürgen

                      W Offline
                      W Offline
                      warp735
                      schrieb am zuletzt editiert von
                      #227

                      @wildbill
                      Geht bei dir der Datenpunkt Powerout mal auf Null? Bei mir bleibt der die ganze Nacht mit dem zuletzt gemessenen Wert stehen 😞
                      Beim Growatt Adapter ging der Punkt pac abends auf Null.
                      Jetzt hat man im Chart die ganze Nacht eine Erzeugung von ~5W Irgendwie nicht so schön.

                      W 1 Antwort Letzte Antwort
                      0
                      • W warp735

                        @wildbill
                        Geht bei dir der Datenpunkt Powerout mal auf Null? Bei mir bleibt der die ganze Nacht mit dem zuletzt gemessenen Wert stehen 😞
                        Beim Growatt Adapter ging der Punkt pac abends auf Null.
                        Jetzt hat man im Chart die ganze Nacht eine Erzeugung von ~5W Irgendwie nicht so schön.

                        W Online
                        W Online
                        Wildbill
                        schrieb am zuletzt editiert von Wildbill
                        #228

                        @warp735 Nein, die Werte können sich aber logischerweise auch nicht mehr ändern: Der Shinestick sendet (bei mir minütlich) seine Daten, solange er Strom bekommt. Wenn der Wechselrichter abends irgendwann abschaltet, dann ist der Shinestick ohne Strom und sendet nichts mehr. Folglich steht im iobroker so lange der letze empfangene Wert bis ein neues MQTT-Paket kommt, was dann morgens passiert. Woher sollte iobroker oder der MQTT-Adapter wissen, dass nun nichts mehr kommt und die Werte auf 0 gesetzt werden müssen? Der Shinestick würde gerne noch senden, dass nun alles 0 ist, kann aber nicht, weil er just in dem Moment bereits stromlos war.
                        Wenn Dich das stört, dann könntest Du da eventuell mit Alias-Datenpunkten arbeiten und diese tracken und die eben per Script manuell auf 0 setzen, wenn vom Stick so und so lange (zum Bsp. 5 min) kein Paket mehr empfangen wurde. Der Growatt-Server macht im Hintergrund wohl genau so etwas Ähnliches.

                        Gruss, Jürgen

                        1 Antwort Letzte Antwort
                        0
                        • W Offline
                          W Offline
                          warp735
                          schrieb am zuletzt editiert von
                          #229

                          @wildbill
                          Ich ging bisher schon davon aus, dass es sich abends um ein "kontrolliertes runterfahren" handelt und nicht stumpf "Strom weg"
                          Ok, dann muss ich mir die Variable manuell auf Null setzen.

                          W 1 Antwort Letzte Antwort
                          0
                          • W warp735

                            @wildbill
                            Ich ging bisher schon davon aus, dass es sich abends um ein "kontrolliertes runterfahren" handelt und nicht stumpf "Strom weg"
                            Ok, dann muss ich mir die Variable manuell auf Null setzen.

                            W Online
                            W Online
                            Wildbill
                            schrieb am zuletzt editiert von
                            #230

                            @warp735 Nein, der Shinestick wird vom Wechselrichter mit Strom versorgt, solange dieser noch irgendwie Strom aus den Solarmodulen pressen kann. Irgendwann kommt da halt nichts mehr und er schaltet einfach ab. Hört man auch, wenn man in der Nähe ist, so ähnlich wie ein Relais oder Schütz. Ab da ist der Stick dann aus und sendet nix mehr.

                            Gruss, Jürgen

                            1 Antwort Letzte Antwort
                            0
                            • W Offline
                              W Offline
                              warp735
                              schrieb am zuletzt editiert von
                              #231

                              @wildbill Ich schau mit m Unifi Adapter ob der Shinestick noch online ist, wenn nicht hau ich die Variable auf 0. Sieht ganz gut aus.

                              1 Antwort Letzte Antwort
                              1
                              • M Offline
                                M Offline
                                moonsorrox
                                schrieb am zuletzt editiert von moonsorrox
                                #232

                                Hallo wer hat denn Grott auf einem LXC und Proxmox installiert.
                                Welche Befehle werden dafür gebraucht und wo landet der Grott dann in welchem Verzeichnis.
                                Ich hatte einen Versuch bin aber nirgend an die Grott.ini rangekommen die war immer leer.
                                Habt ihr das mit wget installiert. Bitte mir einmal den Installationsbefehl senden.
                                Vielen Dank

                                PLCHome 0P W 2 Antworten Letzte Antwort
                                0
                                • M moonsorrox

                                  Hallo wer hat denn Grott auf einem LXC und Proxmox installiert.
                                  Welche Befehle werden dafür gebraucht und wo landet der Grott dann in welchem Verzeichnis.
                                  Ich hatte einen Versuch bin aber nirgend an die Grott.ini rangekommen die war immer leer.
                                  Habt ihr das mit wget installiert. Bitte mir einmal den Installationsbefehl senden.
                                  Vielen Dank

                                  PLCHome 0P Offline
                                  PLCHome 0P Offline
                                  PLCHome 0
                                  Developer
                                  schrieb am zuletzt editiert von
                                  #233

                                  @moonsorrox said in Test Adapter Growatt v1.0.0:

                                  Habt ihr das mit wget installiert.

                                  nö: docker pull

                                  PLCHome 0P M 2 Antworten Letzte Antwort
                                  0
                                  • PLCHome 0P PLCHome 0

                                    @moonsorrox said in Test Adapter Growatt v1.0.0:

                                    Habt ihr das mit wget installiert.

                                    nö: docker pull

                                    PLCHome 0P Offline
                                    PLCHome 0P Offline
                                    PLCHome 0
                                    Developer
                                    schrieb am zuletzt editiert von PLCHome 0
                                    #234

                                    Also bei dem Grott hatte ich gestern auch Aussetzer, fast zeitgleich zur Cloud. Er hatt dann die Daten mit "bufferd=yes" nachgesendet.

                                    Ich suche nich nach ein paar Bezeichnungen:

                                    'ipf? (#)'
                                    'realoppercent? (#)'
                                    'opfullwatt? (#)'
                                    'deratingmode? (#)'
                                    'ipm? (#)'
                                    'temperature batterie? (#)'
                                    'spdsp status?'
                                    
                                    createSt('0_userdata.0.grott.device','device','','string')           
                                    createSt('0_userdata.0.grott.time','time','','string')           
                                    createSt('0_userdata.0.grott.buffered','buffered','','string')
                                    createSt('0_userdata.0.grott.values.recortype','recortype','','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.pvstatus','pvstatus','','number')           
                                    createSt('0_userdata.0.grott.values.pvpowerin','power strings','W','number')
                                    createSt('0_userdata.0.grott.values.pv1voltage','voltage string 1','V','number')
                                    createSt('0_userdata.0.grott.values.pv1current','current string 1','A','number')
                                    createSt('0_userdata.0.grott.values.pv1watt','power string 1','W','number')
                                    createSt('0_userdata.0.grott.values.pv2voltage','voltage string 1','V','number')
                                    createSt('0_userdata.0.grott.values.pv2current','current string 1','A','number')
                                    createSt('0_userdata.0.grott.values.pv2watt','power string 1','W','number')
                                    createSt('0_userdata.0.grott.values.pvpowerout','pv power out','W','number')
                                    createSt('0_userdata.0.grott.values.pvfrequentie','grid frequency','Hz','number')
                                    createSt('0_userdata.0.grott.values.pvgridvoltage','grid voltage','V','number')
                                    createSt('0_userdata.0.grott.values.pvgridcurrent','grid current','A','number')
                                    createSt('0_userdata.0.grott.values.pvgridpower','grid power','W','number')
                                    createSt('0_userdata.0.grott.values.pvgridvoltage2','grid voltage L2','V','number')
                                    createSt('0_userdata.0.grott.values.pvgridcurrent2','grid current L2','A','number')
                                    createSt('0_userdata.0.grott.values.pvgridpower2','grid power L2','W','number')
                                    createSt('0_userdata.0.grott.values.pvgridvoltage3','grid voltage L3','V','number')
                                    createSt('0_userdata.0.grott.values.pvgridcurrent3','grid current L3','A','number')
                                    createSt('0_userdata.0.grott.values.pvgridpower3','grid power L3','W','number')
                                    createSt('0_userdata.0.grott.values.totworktime','totworktime inverter','sec','number')
                                    //deleteSt('0_userdata.0.grott.values.pvenergytoday','pvenergytoday','kWh','number')//alt 2022.09.08
                                    //deleteSt('0_userdata.0.grott.values.pvenergytotal','pvenergytotal','kWh','number')//alt 2022.09.08
                                    createSt('0_userdata.0.grott.values.eactoday','generated grid energy today','kWh','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.eactotal','generated grid energy total','kWh','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.epvtotal','generated solar energy total','kWh','number')
                                    createSt('0_userdata.0.grott.values.epv1today','generated solar energy string 1 today','kWh','number')
                                    createSt('0_userdata.0.grott.values.epv1total','generated solar energy string 1 total','kWh','number')
                                    createSt('0_userdata.0.grott.values.epv2today','generated solar energy string 2 today','kWh','number')
                                    createSt('0_userdata.0.grott.values.epv2total','generated solar energy string 2 total','kWh','number')
                                    createSt('0_userdata.0.grott.values.pvtemperature','temperature inverter','°C','number')
                                    createSt('0_userdata.0.grott.values.pvipmtemperature','temperature IPM','°C','number')
                                    createSt('0_userdata.0.grott.values.pvboosttemp','temperature boost','°C','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.bat_dsp','bat DSP','V','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.pbusvolt','p-bus voltage','V','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.nbusvolt','n-bus voltage (#)','V','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.ipf','ipf? (#)','','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.realoppercent','realoppercent? (#)','','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.opfullwatt','opfullwatt? (#)','W','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.deratingmode','deratingmode? (#)','','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.eacharge_today','battery charged energy today','kWh','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.eacharge_total','battery charged energy total','kWh','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.batterytype','type of battery','','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.uwsysworkmode','uw sys work mode','','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.systemfaultword1','systemfault word 1','','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.systemfaultword2','systemfault word 2','','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.systemfaultword3','systemfault word 3','','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.systemfaultword4','systemfault word 4','','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.systemfaultword5','systemfault word 5','','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.systemfaultword6','systemfault word 6','','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.systemfaultword7','systemfault word 7','','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.pdischarge1','battery power discharge','W','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.p1charge1','battery power charge','W','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.vbat','battery voltage','V','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.SOC','battery level','%','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.pactouserr','import from grid L1','W','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.pactousers','import from grid L2(#)','W','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.pactousert','import from grid L3(#)','W','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.pactousertot','import from grid total','W','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.pactogridr','export to grid L1','W','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.pactogrids','export to grid L2 (#)','W','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.pactogridt','export to grid L3 (#)','W','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.pactogridtot','export to grid total','W','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.plocaloadr','local load consumption L1','W','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.plocaloads','local load consumption L2 (#)','W','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.plocaloadt','local load consumption L3 (#)','W','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.plocaloadtot','local load consumption total','W','number') //neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.ipm','ipm? (#)','','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.battemp','temperature batterie? (#)','°C','number')
                                    createSt('0_userdata.0.grott.values.spdspstatus','spdsp status?','','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.etouser_tod','to user today','kWh','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.etouser_tot','to user total','kWh','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.etogrid_tod','grid energy today','kWh','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.etogrid_tot','grid energy total','kWh','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.edischarge1_tod','battery discharge energy today','kWh','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.edischarge1_tot','battery discharge energy total','kWh','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.eharge1_tod','battery charge energy today','kWh','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.eharge1_tot','battery charge energy total','kWh','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.elocalload_tod','loacl load energy today','kWh','number')//neu 2022.09.08
                                    createSt('0_userdata.0.grott.values.elocalload_tot','loacl load energy total','kWh','number')//neu 2022.09.08
                                    
                                    
                                    async function createSt(state,name,unit,t) {
                                        if(! (await existsObjectAsync(state))) {
                                            await createStateAsync(state, {
                                                            type: t, 
                                                            role: 'value', 
                                                            "name": name,
                                                            read: true,
                                                            write: false,
                                                            "unit": unit
                                                        });
                                        } else {
                                            let objG = await getObjectAsync(state)
                                            if ( objG.common.type != t ||
                                                 objG.common.name != name ||
                                                 objG.common.unit != unit) {
                                                objG.common.type = t
                                                objG.common.name = name
                                                objG.common.unit = unit
                                                setObjectAsync(state,objG);
                                            }
                                        }
                                    }
                                    
                                    async function deleteSt(state) {
                                        if((await existsObjectAsync(state))) {
                                            await deleteStateAsync(state)
                                        }
                                    }
                                    
                                    
                                    on({id: 'mqtt.1.energy.growatt'/*energy/growatt*/, change: "any"},(obj)=>{
                                        let values=JSON.parse( obj.state.val )
                                        
                                        setState('0_userdata.0.grott.device',values.device,true)
                                        setState('0_userdata.0.grott.time',values.time,true)
                                        setState('0_userdata.0.grott.buffered',values.buffered,true)
                                        if (values.buffered == "no") {
                                            setState('0_userdata.0.grott.values.recortype',values.values['#recortype'],true) //neu 2022.09.08
                                            setState('0_userdata.0.grott.values.pvstatus',values.values.pvstatus,true)
                                            setState('0_userdata.0.grott.values.pvpowerin',values.values.pvpowerin/10,true)
                                            setState('0_userdata.0.grott.values.pv1voltage',values.values.pv1voltage/10,true)
                                            setState('0_userdata.0.grott.values.pv1current',values.values.pv1current/10,true)
                                            setState('0_userdata.0.grott.values.pv1watt',values.values.pv1watt/10,true)
                                            setState('0_userdata.0.grott.values.pv2voltage',values.values.pv2voltage/10,true)
                                            setState('0_userdata.0.grott.values.pv2current',values.values.pv2current/10,true)
                                            setState('0_userdata.0.grott.values.pv2watt',values.values.pv2watt/10,true)
                                            setState('0_userdata.0.grott.values.pvpowerout',values.values.pvpowerout/10,true)
                                            setState('0_userdata.0.grott.values.pvfrequentie',values.values.pvfrequentie/100,true)
                                            setState('0_userdata.0.grott.values.pvgridvoltage',values.values.pvgridvoltage/10,true)
                                            setState('0_userdata.0.grott.values.pvgridcurrent',values.values.pvgridcurrent/10,true)
                                            setState('0_userdata.0.grott.values.pvgridpower',values.values.pvgridpower/10,true)
                                            setState('0_userdata.0.grott.values.pvgridvoltage2',values.values.pvgridvoltage2/10,true)
                                            setState('0_userdata.0.grott.values.pvgridcurrent2',values.values.pvgridcurrent2/10,true)
                                            setState('0_userdata.0.grott.values.pvgridpower2',values.values.pvgridpower2/10,true)
                                            setState('0_userdata.0.grott.values.pvgridvoltage3',values.values.pvgridvoltage3/10,true)
                                            setState('0_userdata.0.grott.values.pvgridcurrent3',values.values.pvgridcurrent3/10,true)
                                            setState('0_userdata.0.grott.values.pvgridpower3',values.values.pvgridpower3/10,true)
                                            setState('0_userdata.0.grott.values.totworktime',values.values.totworktime/2,true)
                                            //setState('0_userdata.0.grott.values.pvenergytoday',values.values.pvenergytoday/10,true)//alt 2022.09.08
                                            //setState('0_userdata.0.grott.values.pvenergytotal',values.values.pvenergytotal/10,true)//alt 2022.09.08
                                            setState('0_userdata.0.grott.values.eactoday',values.values.eactoday/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.eactotal',values.values.eactotal/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.epvtotal',values.values.epvtotal/10,true)
                                            setState('0_userdata.0.grott.values.epv1today',values.values.epv1today/10,true)
                                            setState('0_userdata.0.grott.values.epv1total',values.values.epv1total/10,true)
                                            setState('0_userdata.0.grott.values.epv2today',values.values.epv2today/10,true)
                                            setState('0_userdata.0.grott.values.epv2total',values.values.epv2total/10,true)
                                            setState('0_userdata.0.grott.values.pvtemperature',values.values.pvtemperature/10,true)
                                            setState('0_userdata.0.grott.values.pvipmtemperature',values.values.pvipmtemperature/10,true)
                                            setState('0_userdata.0.grott.values.pvboosttemp',values.values.pvboosttemp/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.bat_dsp',values.values.bat_dsp/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.pbusvolt',values.values.pbusvolt/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.nbusvolt',values.values['#nbusvolt']/10,true) //neu 2022.09.08
                                            setState('0_userdata.0.grott.values.ipf',values.values['#ipf'],true) //neu 2022.09.08
                                            setState('0_userdata.0.grott.values.realoppercent',values.values['#realoppercent'],true) //neu 2022.09.08
                                            setState('0_userdata.0.grott.values.opfullwatt',values.values['#opfullwatt']/10,true) //neu 2022.09.08
                                            setState('0_userdata.0.grott.values.deratingmode',values.values['#deratingmode'],true) //neu 2022.09.08
                                            setState('0_userdata.0.grott.values.eacharge_today',values.values.eacharge_today/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.eacharge_total',values.values.eacharge_total/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.batterytype',values.values.batterytype,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.uwsysworkmode',values.values.uwsysworkmode,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.systemfaultword1',values.values.systemfaultword1/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.systemfaultword2',values.values.systemfaultword2/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.systemfaultword3',values.values.systemfaultword3/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.systemfaultword4',values.values.systemfaultword4/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.systemfaultword5',values.values.systemfaultword5/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.systemfaultword6',values.values.systemfaultword6/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.systemfaultword7',values.values.systemfaultword7/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.pdischarge1',values.values.pdischarge1/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.p1charge1',values.values.p1charge1/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.vbat',values.values.vbat/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.SOC',values.values.SOC,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.pactouserr',values.values.pactouserr/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.pactousers',values.values['#pactousers']/10,true) //neu 2022.09.08
                                            setState('0_userdata.0.grott.values.pactousert',values.values['#pactousert']/10,true) //neu 2022.09.08
                                            setState('0_userdata.0.grott.values.pactousertot',values.values.pactousertot/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.pactogridr',values.values.pactogridr/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.pactogrids',values.values['#pactogrids']/10,true) //neu 2022.09.08
                                            setState('0_userdata.0.grott.values.pactogridt',values.values['#pactogridt']/10,true) //neu 2022.09.08
                                            setState('0_userdata.0.grott.values.pactogridtot',values.values.pactogridtot/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.plocaloadr',values.values.plocaloadr/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.plocaloads',values.values['#plocaloads']/10,true) //neu 2022.09.08
                                            setState('0_userdata.0.grott.values.plocaloadt',values.values['#plocaloadt']/10,true) //neu 2022.09.08
                                            setState('0_userdata.0.grott.values.plocaloadtot',values.values.plocaloadtot/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.ipm',values.values['#ipm'],true) //neu 2022.09.08
                                            setState('0_userdata.0.grott.values.battemp',values.values['#battemp']/10,true) //neu 2022.09.08
                                            setState('0_userdata.0.grott.values.spdspstatus',values.values.spdspstatus,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.etouser_tod',values.values.etouser_tod/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.etouser_tot',values.values.etouser_tot/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.etogrid_tod',values.values.etogrid_tod/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.etogrid_tot',values.values.etogrid_tot/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.edischarge1_tod',values.values.edischarge1_tod/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.edischarge1_tot',values.values.edischarge1_tot/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.eharge1_tod',values.values.eharge1_tod/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.eharge1_tot',values.values.eharge1_tot/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.elocalload_tod',values.values.elocalload_tod/10,true)//neu 2022.09.08
                                            setState('0_userdata.0.grott.values.elocalload_tot',values.values.elocalload_tot/10,true)//neu 2022.09.08
                                        }
                                    });
                                    
                                    1 Antwort Letzte Antwort
                                    0
                                    • W Offline
                                      W Offline
                                      warp735
                                      schrieb am zuletzt editiert von
                                      #235

                                      @plchome-0

                                      @wildbill sagte in Test Adapter Growatt v1.0.0:

                                      Anscheinend sendet der Stick auch nur, wenn er Kontakt zum Server aufbauen kann

                                      Also Server down, dann funktioniert auch grott nicht.

                                      1 Antwort Letzte Antwort
                                      0
                                      • M moonsorrox

                                        Hallo wer hat denn Grott auf einem LXC und Proxmox installiert.
                                        Welche Befehle werden dafür gebraucht und wo landet der Grott dann in welchem Verzeichnis.
                                        Ich hatte einen Versuch bin aber nirgend an die Grott.ini rangekommen die war immer leer.
                                        Habt ihr das mit wget installiert. Bitte mir einmal den Installationsbefehl senden.
                                        Vielen Dank

                                        W Online
                                        W Online
                                        Wildbill
                                        schrieb am zuletzt editiert von
                                        #236

                                        @moonsorrox HIER steht eigentlich alles bezüglich Docker. Da ist auch direkt in den Docker-Hub verlinkt und da steht der Befehl zum Installieren.

                                        @warp735 So ist es. Der Stick sendet nur (auch per MQTT) wenn er Verbindung zum Growatt-Server hat. Fehlt das, wird im Stick gepuffert und bei Verbindung dann alles nachgesendet. Siehe Beitrag von @PLCHome-0 . Deshalb gibt es ja bei grott auch den grottserver.py (siehe oben). Der simuliert den Growatt-Server, so dass der Stick denkt, er ist damit verbunden und brav seine Daten per MQTT los wird. Allerdings landen dann keine Daten mehr direkt auf dem Growatt-Server. Soweit ich mich erinnere könnte das aber in einer zukünftigen Version kommen.

                                        Gruss, Jürgen

                                        PLCHome 0P 1 Antwort Letzte Antwort
                                        0
                                        • W Wildbill

                                          @moonsorrox HIER steht eigentlich alles bezüglich Docker. Da ist auch direkt in den Docker-Hub verlinkt und da steht der Befehl zum Installieren.

                                          @warp735 So ist es. Der Stick sendet nur (auch per MQTT) wenn er Verbindung zum Growatt-Server hat. Fehlt das, wird im Stick gepuffert und bei Verbindung dann alles nachgesendet. Siehe Beitrag von @PLCHome-0 . Deshalb gibt es ja bei grott auch den grottserver.py (siehe oben). Der simuliert den Growatt-Server, so dass der Stick denkt, er ist damit verbunden und brav seine Daten per MQTT los wird. Allerdings landen dann keine Daten mehr direkt auf dem Growatt-Server. Soweit ich mich erinnere könnte das aber in einer zukünftigen Version kommen.

                                          Gruss, Jürgen

                                          PLCHome 0P Offline
                                          PLCHome 0P Offline
                                          PLCHome 0
                                          Developer
                                          schrieb am zuletzt editiert von
                                          #237

                                          @wildbill Der Stick sendet per Modbus, Grott mach daraus MQTT

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          734

                                          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
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe