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

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Test Adapter Growatt v3.3.1

    This topic has been deleted. Only users with topic management privileges can see it.
    • PLCHome 0
      PLCHome 0 Developer @dv1407 last edited by PLCHome 0

      @dv1407 ok, das erklärt es multipleBackflow hatte ich noch nicht.
      Ich hab da was von getMultipleBackflowMixEne..., da müsste ich den ganzen Namen von sehen und die Preview, Payload und auch müsstest du im Header den Pfad nachschauen ...

      Dann ist noch die Frage: Gibt es dort auch die History. Die ist aktuell mit Benutzer und Passwort nicht zugänglich nur mit Key, also wenn man einen Einladungslink an eine E-Mail versendet. Die Historie beinhaltet eigentlich die interessantesten Daten...

      Wenn das bekannt ist, müsstest du das Verzeichnis node_modules unterhalb deiner iobroker Installation suchen.
      Darin sollte ein Ordner growatt sein.
      Wenn der nicht dort ist, dann ist er unterhalb von iobroker.growatt.
      Darin ist ein Ordner lib und darin die Datei growatttype.js.

      Kannst mir die Pics von den Aufrufen per PN schicken, ich sage die dann, wie du die Datei growatttype.js zum Testen anpassen musst.

      Die Basisänderung ist schonmal:
      const SPA = 'spa';
      const HPS = 'hps';
      const MULTIPLEBACKFLOW = 'multipleBackflow';

      module.exports = {
      [MULTIPLEBACKFLOW] : {
      },

      [MAX]: {

      Nach einem Neustart des Adapters sollet er noch laufen 🙂

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

        @dv1407 so, ich habe ähnliche Anlagen in den Demodaten gefunden.
        Kannst du bitte die 3.2.0 Testen....

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

          @plchome-0 Guten Morgen, ich habe jetzt die Version 3.2 installiert. Jetzt werden mehr Devices, also WR und Shinemaster angezeigt, aber die Historydaten fehlen immer noch. Also anstatt Login-Daten mit dem Key abfragen?

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

            @PLCHome-0 Also auch mit dem Key bekomme ich die Historydaten nicht

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

              @dv1407 Dann ist das wohl alles was ich da abfragen kann.

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

                @plchome-0 okay, das wäre aber doof, obwohl die Daten doch auf der Homepage zu sehen sind. Kann ich die Daten irgendwie direkt vom Shinemaster auslesen ohne Cloud. Ich schicke Dir mal per PN noch den Key, vielleicht bekommst du doch noch was raus.

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

                  @dv1407 ok, das funktioniert bei dem Backflow anders ... Ich habe gesehen, was er da macht. Dafür muss ich aber viel umbauen. Das wird wohl einwenig dauern ....

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

                    @dv1407 so danke für der Key...
                    Ich hab da mal ne V3.2.1 gebastelt. Der holt jetzt viel ab....

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

                      @plchome-0 Perfekte Arbeit, ich bekomme wieder alle Daten. Vielen Dank

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

                        @plchome-0 said in Test Adapter Growatt v3.2.0:

                        Mit dem neuen Adapter im Test kannst du den Wechselrichter SPH... abschalten (in Standby schalten). Man muss nur daran denken, ihn morgens wieder einzuschalten. Da kann man über z.B. mit dem Adapter "Follow the sun" realisieren.

                        In den Einstellungen "Invertereinstellungen schreiben" einschalten.

                        das ist ja schon mal richtig geil. Wäre es auch möglich den Modus (LoadFirst, Gridfirst, Battfirst etc.) bzw. viel wichtiger den Min Discharge SOC der Batterie und evt. AC Charge ON/OFF zu setzen beim SPH.

                        Ich hab Tibber und da wären die Einstellungen zu automatisieren schon richtig, richtig gut.

                        Edit: Hab festgestellt das, das SOC setzen schon mal sehr gut geht. Den Rest teste ich auch noch. Dankeschön.

                        Viele Liebe Grüße LaFo

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

                          @laforge112 sagte in Test Adapter Growatt v3.2.0:

                          das ist ja schon mal richtig geil. Wäre es auch möglich den Modus (LoadFirst, Gridfirst, Battfirst etc.) bzw. viel wichtiger den Min Discharge SOC der Batterie und evt. AC Charge ON/OFF zu setzen beim SPH

                          Ich den SPH gibt es als MIX und TLXH Profil. Beim MIX geht das, für den TLXH müsste das mal jemand mitschneiden...

                          Für den Mix hab ich folgende implementiert:

                               time: {
                                  name: 'Time',
                                  type: 'pf_sys_year',
                                  paramId: 'pf_sys_time_mutli',
                                  parseRet: PARSERET.parseRetDate,
                                  param: { param1: { name: 'Time', type: 'DATETIME' } },
                                },
                                gridFirst: {
                                  name: 'Grid first',
                                  type: 'mix_ac_discharge_time_period',
                                  paramId: 'MIX_AC_DISCHARGE_TIME_MULTI',
                                  parseRet: PARSERET.parseGritFirst,
                                  param: {
                                    param1: { name: 'Discharge power rate', type: 'INUM_0_100', unit: '%' },
                                    param2: { name: 'Discharge stopped soc', type: 'INUM_0_100', unit: '%' },
                                    param3: { name: 'Time slot 1 start HH', type: 'INUM_0_24' },
                                    param4: { name: 'Time slot 1 start MI', type: 'INUM_0_60' },
                                    param5: { name: 'Time slot 1 end HH', type: 'INUM_0_24' },
                                    param6: { name: 'Time slot 1 end MI', type: 'INUM_0_60' },
                                    param7: { name: 'Time slot 1 on', type: 'BOOL' },
                                    param8: { name: 'Time slot 2 start HH', type: 'INUM_0_24' },
                                    param9: { name: 'Time slot 2 start MI', type: 'INUM_0_60' },
                                    param10: { name: 'Time slot 2 end HH', type: 'INUM_0_24' },
                                    param11: { name: 'Time slot 2 end MI', type: 'INUM_0_60' },
                                    param12: { name: 'Time slot 2 on', type: 'BOOL' },
                                    param13: { name: 'Time slot 3 start HH', type: 'INUM_0_24' },
                                    param14: { name: 'Time slot 3 start MI', type: 'INUM_0_60' },
                                    param15: { name: 'Time slot 3 end HH', type: 'INUM_0_24' },
                                    param16: { name: 'Time slot 3 end MI', type: 'INUM_0_60' },
                                    param17: { name: 'Time Slot 3 on', type: 'BOOL' },
                                  },
                                },
                                batteryFirst: {
                                  name: 'Battery first',
                                  type: 'mix_ac_charge_time_period',
                                  paramId: 'mix_ac_charge_time_multi',
                                  parseRet: PARSERET.parseBatteryFirst,
                                  param: {
                                    param1: { name: 'Charge power rate', type: 'INUM_0_100', unit: '%' },
                                    param2: { name: 'Charge stopped soc', type: 'INUM_0_100', unit: '%' },
                                    param3: { name: 'AC Charge on', type: 'BOOL' },
                                    param4: { name: 'Time slot 1 start HH', type: 'INUM_0_24' },
                                    param5: { name: 'Time slot 1 start MI', type: 'INUM_0_60' },
                                    param6: { name: 'Time slot 1 end HH', type: 'INUM_0_24' },
                                    param7: { name: 'Time slot 1 end MI', type: 'INUM_0_60' },
                                    param8: { name: 'Time slot 1 on', type: 'BOOL' },
                                    param9: { name: 'Time slot 2 start HH', type: 'INUM_0_24' },
                                    param10: { name: 'Time slot 2 start MI', type: 'INUM_0_60' },
                                    param11: { name: 'Time slot 2 end HH', type: 'INUM_0_24' },
                                    param12: { name: 'Time slot 2 end MI', type: 'INUM_0_60' },
                                    param13: { name: 'Time slot 2 on', type: 'BOOL' },
                                    param14: { name: 'Time slot 3 start HH', type: 'INUM_0_24' },
                                    param15: { name: 'Time slot 3 start MI', type: 'INUM_0_60' },
                                    param16: { name: 'Time slot 3 end HH', type: 'INUM_0_24' },
                                    param17: { name: 'Time slot 3 end MI', type: 'INUM_0_60' },
                                    param18: { name: 'Time Slot 3 on', type: 'BOOL' },
                                  },
                                },
                                loadFirst: {
                                  name: 'Load first',
                                  type: 'mix_load_flast_value_multi',
                                  paramId: 'mix_load_flast_value_multi',
                                  parseRet: PARSERET.parseRetNum,
                                  param: { param1: { name: 'Discharge Stopped Soc', type: 'INUM_0_100' } },
                                },
                                epsOn: {
                                  name: 'EPS on',
                                  type: 'mix_off_grid_enable',
                                  paramId: 'mix_off_grid_enable',
                                  parseRet: PARSERET.parseRetBool,
                                  param: { param1: { name: 'EPS On', type: 'BOOL' } },
                                },
                                failsafe: {
                                  name: 'Failsafe',
                                  type: 'setFailsafe',
                                  paramId: 'mix_failsafe',
                                  parseRet: PARSERET.parseRetBool,
                                  param: { param1: { name: 'Failsafe on', type: 'BOOL' } },
                                },
                                pvActivePRate: {
                                  name: 'PV active power rate',
                                  type: 'pv_active_p_rate',
                                  paramId: 'pv_active_p_rate',
                                  parseRet: PARSERET.parseRetNum,
                                  param: { param1: { name: 'Active power rate', type: 'INUM_0_100', unit: '%' } },
                                },
                                pvOnOff: {
                                  name: 'Inverter On/Off',
                                  type: 'pv_on_off',
                                  paramId: 'pv_on_off',
                                  parseRet: PARSERET.parseRetBoot,
                                  param: { param1: { name: 'Inverter On/Off', type: 'INUM_0_1', values: { 1: 'Boot', 0: 'Shut down' } } },
                                },
                                backflowSetting: {
                                  name: 'Backflow setting',
                                  type: 'backflow_setting',
                                  paramId: 'backflow_setting',
                                  parseRet: PARSERET.parseRetBool,
                                  param: { param1: { name: 'Exportlimit on', type: 'BOOL' }, param2: { name: 'Exportlimit', type: 'INUM_0_100', unit: '%' } },
                                  subRead: ['backflowSettingPower'],
                                },
                                backflowSettingPower: {
                                  name: 'Backflow setting',
                                  paramId: 'backflow_power',
                                  parseRet: PARSERET.parseRetNum2div10,
                                  isSubread: 'backflowSetting',
                                },
                          

                          Gerne F12 und mitschneiden... Anleitung gibt's weiter oben so um Nachricht 486....

                          paramId ist der Befehl zum Lesen,
                          type, der zum schreiben ...

                          • Reading and writing of inverter configuration settings
                            • mix
                              • Time
                              • Grid first
                              • Battery first
                              • LoadFirst
                              • Failsafe
                              • PV active power rate
                              • Backflow setting
                                • Backflow setting power
                              • EPSOn
                            • tlx/tlxh
                              • Time
                              • PV active power rate

                          Ich tibber damit regelmäßig. Bei negativen Preis erst vorher den Accu entladen und dann vollziehen, senkt nämlich die Stromrechnung 😊
                          Konnte noch mal -49ct oder mehr geben. An dem Tag hab ich für -10€ verbraucht war echt billig der Monat...
                          Aktuell muss man aber um die 50ct bis 60ct rum laden ...

                          Freue mich auf Bilder ....

                          Ist TLXH bei dir korrekt?

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

                            @plchome-0

                            Ja er meldet als DeviceTypName: mix

                            insofern müsste es gehen.

                            2 Fragen hätte ich aber dennoch:

                            • wie schalte ich denn von LoadFirst z.b. auf BattFirst, da scheint es ja keine Einstellung zu geben, oder geht das über die Time Einstellung?
                            • Kann das write:true stehen blieben oder ist der Weg immer write:true - Wert einstellen - write:false ?
                              Insbesondere wenn ich dann dafür Scripte schreibe.

                            Son Ding wie setze max DischargeSOC auf xx wenn SOCist auf <xx und erwarteter Solarertrag morgen >xx kwh......

                            Ganz lieben Dank und liebe Grüße

                            LaFo

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

                              @laforge112

                              Du setzt die Parameter und schreibst danach ein true mit ack = False (nicht bestätigt) auf write
                              Wenn das Schreiben geklappt hat, geht der wert von write auf ack = true (bestätigt).
                              Unter Meldung steht, was er gemacht hat.
                              Zusätzlich werden die Parameter wieder geladen. Wenn die auch mit ack = false geschrieben wurden, stehen die dann auch auf ack = true.
                              Write mus nicht zurückgesetzt werden.

                              Um den Accu von 15:00 bis 15:59 zu laden:
                              growatt.0. -xx- .devices. -yy- .settings.batteryFirst.values.param1 100
                              growatt.0. -xx- .devices. -yy- .settings.batteryFirst.values.param2 100
                              growatt.0. -xx- .devices. -yy- .settings.batteryFirst.values.param3 true
                              growatt.0. -xx- .devices. -yy- .settings.batteryFirst.values.param4 15
                              growatt.0. -xx- .devices. -yy- .settings.batteryFirst.values.param5 0
                              growatt.0. -xx- .devices. -yy- .settings.batteryFirst.values.param6 15
                              growatt.0. -xx- .devices. -yy- .settings.batteryFirst.values.param7 59
                              growatt.0. -xx- .devices. -yy- .settings.batteryFirst.values.param8 true
                              growatt.0. -xx- .devices. -yy- .settings.batteryFirst.values.param13 false
                              growatt.0. -xx- .devices. -yy- .settings.batteryFirst.values.param18 false

                              growatt.0. -xx- .devices. -yy- .settings.batteryFirst.write true

                              Load First ist die Standarteinstellung wenn batteryFirst 8, 13 und 18 off sind ist.

                              schedule('0 7 * * *', async ()=>{
                                  let [stat,stat2,stat3] = await Promise.all(
                                        [ getStateAsync('growatt.0. -xx- .devices. -yy- .settings.batteryFirst.values.param8'/*Time slot 1 on*/),
                                          getStateAsync('growatt.0. -xx- .devices. -yy- .settings.batteryFirst.values.param13'/*Time slot 2 on*/),
                                          getStateAsync('growatt.0. -xx- .devices. -yy- .settings.batteryFirst.values.param18'/*Time Slot 3 on*/) ]);
                                  if (stat.val == true || stat2.val == true || stat3.val == true) {
                                      await setStateAsync('growatt.0. -xx- .devices. -yy- .settings.batteryFirst.values.param8'/*Time slot 1 on*/,false,false);
                                      await setStateAsync('growatt.0. -xx- .devices. -yy- .settings.batteryFirst.values.param13'/*Time slot 2 on*/,false,false);
                                      await setStateAsync('growatt.0. -xx- .devices. -yy- .settings.batteryFirst.values.param18'/*Time slot 3 on*/,false,false);
                                      await setStateAsync('growatt.0. -xx- .devices. -yy- .settings.batteryFirst.write',true,false);
                                  }
                              })
                              

                              Da er jeden Tag lädt, hab ich ein Script laufen, dass das laden um 7:00 Uhr zurücksetzt.
                              Du kannst bis zu 3 Zeiten am Tag einstellen, in denen der WR lädt.
                              Param 4-8, 9-13 und 14-18
                              An den Param stet was sie bedeuten.

                              Die Entladeleistung lässt sich direkt nicht direkt begrenzen. Ein Begrenzen der Erzeugungsleistung wirkt sich auf PV-Produktion aus. Einstellbar ist den ACCU mit konstanter Leistung zu entladen.

                              Über backflowSetting kannst du die 70% Regel einstellen oder ausschalte. (Dieses ist im EEG Verhinderungs- und Unwirtschaftlichkeit Gesetz hinterlegt, es dürfen nur maximal 70% der PV Leistung das Haus verlassen.)

                              batteryFirst packt einen einstellbaren % Satz in den Accu, man kann einstellen, dass es auch aus dem Netz kommt.

                              gridFirst erzeugt eine eingestellte Leistung unter zuhilfenahme des Accus es wird nicht darauf geachtet wio der Hausverbrauch ist.

                              loadFirst legt eigentlich den minimalen ACCU% Satz fest, wenn gridFirst nicht aktiv ist.

                              pvActivePRate legt fest, wie viel seiner Leistung der Wechselrichter maximal zur Erzeugung nutzt. Wenn man keine Messung am WR hat, kann man damit die Entladung einstellen, damit der WR nicht alles ins Netzt pumpt.

                              Was gibts noch:
                              pvOnOff schaltet den WR aus.
                              epsOn schaltet die Notstromversorgung ein. Dann können die Accus allerdings nur bis 50% oder 70 % entladen werden, frag mich nicht nach dem genauen Prozentsatz. In Deutschland fällt der Strom allerdings so selten aus, dass es nur von Preppern benutzt wird.

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

                                @plchome-0

                                Alles verstanden vielen Dank.

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

                                  Falls es jemanden interessiert. Hier mein neuen Projet:

                                  ioBroker Adapter für Pylontech

                                  https://forum.iobroker.net/topic/68707

                                  1 Reply Last reply Reply Quote 0
                                  • LaForge112
                                    LaForge112 last edited by

                                    hi @PLCHome-0

                                    ganz lieben Dank nochmal.
                                    ich hätte aber noch eine Frage

                                    ich versuche den WR in Abhängigkeit des Vergleichs "SOC" kleiner gleich "max Discharge SOC" und ="Nacht", also zwischen Sonnenunter und Sonnenaufgang in Standby zu setzen.

                                    Würdest du dir das Blockly mal anschauen, evtl. per PN, wenn das okay ist poste ich das hier für die Nachwelt. Denke das Thema haben ja auch noch andere 🙂

                                    Viele Grüße LaFo

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

                                      @laforge112 sagte in Test Adapter Growatt v3.2.0:

                                      Blockly

                                      Hier oder da mir egal 🙂
                                      Wie du magst...

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

                                        @plchome-0 hab festgestellt im Chat gehen keine Bilder.

                                        Was hältst du so davon ?

                                        29103a51-6d73-432e-ace6-80a33bdff07a-image.png

                                        Oben im Cron fehlt im Bild noch das er das alle viertel Stunde checkt.

                                        Ganz unten müsste er das einschalten ja nur einmal morgens machen.
                                        Und würde das mit Wert umschalten bei Inverter On Off gehen da er ja nur 2 Zustände hat?
                                        Lieben Dank und VG LaFo

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

                                          @laforge112
                                          Ich muss gestehen, ich verstehe das nicht. Mit dem Blocky kann ich nichts anfangen. sorry. Das ist für mich ein Buch mit sieben Siegeln.

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

                                            @plchome-0 So eine Crownregel habe ich auch noch nie gesehen, normalerweise ist das, was in der Art */10 * * * * . Kann man da noch was anderes mitgeben?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            944
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

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