Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Zendure SolarFlow2400 AC (EVCC, Tibber und PV-Forecast)

    NEWS

    • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    Zendure SolarFlow2400 AC (EVCC, Tibber und PV-Forecast)

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Mabbi @Schimi last edited by Mabbi

      Mein Status:

      • 2x @maxclaudi script ist an(eins je Akku), Smartmodeinfo: 1 , mqttconnectinfo: 1
      • Meine 2x mqtt settings sind mit Deinen identisch
        3d45dd2e-0e76-45bc-8cba-4b2795fa27f3-grafik.png
      • Beide Akkus sthen keine 2 Meter von einem Accesspoint entfernt
      • Pings sind ok:
        34d4de44-9088-4740-b188-c25e24c1cd6e-grafik.png
      • Die 2 Akkus sind in der App alls offline vermerkt, HEMS bei beiden aus, Mqtt EInstellungen passen, bin aus der App abgemeldet.
      • Die 2 Akkus sind vom WAN ausgesperrt, der EcoTracker habe ich in der App abgemeldet und ihm dann WAN Zugang gesperrt. Sperre umfasst sowohl IP wie auch MAC-Adresse bei allen 3 Geräten.

      Hier: 0_userdata.0.zendure.XXXXXXXXXXXXXXX.solarFlow2400AC.version steht bei mir stumpf eine 2 drin
      Das ist wohl kaum die Firmware.
      @schimi : Wo sehe ich die Firmmware ?

      S 1 Reply Last reply Reply Quote 0
      • S
        Schimi @Mabbi last edited by

        @mabbi ich sehe die in der App...

        ich erlaube meinem den zugangs ins netz und durch das eingebaute Mqtt, kann man gleichzeitig die cloud Verbindung nutzen

        Screenshot_20251106-210931.png

        M 1 Reply Last reply Reply Quote 0
        • M
          Mabbi @Schimi last edited by Mabbi

          @schimi

          Ah ok, da bin ich auf der neusten Version, letztes Update kam vor ca. 2 Wochen.
          Hat Dein AC2400 irgendwo einen Hinweis auf die Hardwarerevision ?
          Meine sind vom Juni und von Oktober, nicht das sich da was geändert hat, weil die evtl. neuer sind als Deiner ?

          Btw...für alle Interessierten, Zendure verkauft den AC2400 plus 1x AB3000X (2.88 KWh) aktuell für 3 stellig.
          Ich war kurz geneigt den 3. zu kaufen, was ich eigentlich erst in 2026 machen wollte.

          S 1 Reply Last reply Reply Quote 0
          • S
            Schimi @Mabbi last edited by

            @mabbi nicht das ich wüsste...Falls ich dazu komme, schaue ich mal am we ob ich was am Gerät, direkt finde...

            hmmmmm

            M 1 Reply Last reply Reply Quote 0
            • M
              Mabbi @Schimi last edited by Mabbi

              Die Dämpfung, die ich eingebaut habe (fast ein Integral 🙂 ) führt im Wechselbetrieb der beiden AC2400 zu einem pumpen, und das nur bei der Enspeisung. Wenn ich die AC2400 synchron laufen lasse, dann ist es weg ... ?
              7c41d697-162e-442b-b58f-28b2742b13ac-grafik.png

              Das wechselseitig ansteuern der AC2400 ist komplexer als ich dachte, vor allem in dem dynamischen Bereich, wenn es gerade um die PV-Ertragsschwelle wo das Haus versorgt ist zwischen Laden und Entladen schwankt.
              Dafür war eigentlich die Dämpfung drin.... am WE nochmal an die Tastatur 🙂

              Nicht das ich schon 3 Loadbalancing/Dämpfungs-Funktionen in den letzten Wochen durch hätte...
              cd12e593-4509-4bcb-be34-60614fe1d6e4-grafik.png

              Nach dem check der Daten von heute habe ich die Nachts-Nicht-Laden Logik erweitert:
              f45d74ee-3369-45c5-b91b-99c002799376-grafik.png

              Wenn der durchschnittliche PV-Ertrag der letzten 5 Minuten unter 250 W fällt wird Akku-Laden nun auch verhindert.
              Diese Abfrage versetzt beide Akkus strikt in den output-Modus(Entladen) solange mindestens eines der beiden Argumente erfüllt ist.

              S 1 Reply Last reply Reply Quote 0
              • S
                Schimi @Mabbi last edited by

                @mabbi mal ne schnelle Überlegung am Handy...

                was ist, wenn du den wert nimmst und durch 2 teilst und jeweils an die beiden 2400AC schickst....

                theoretisch sollten die sich gleich ent bzw. beladen

                M 1 Reply Last reply Reply Quote 0
                • M
                  Mabbi @Schimi last edited by Mabbi

                  @schimi
                  45b59511-e8cb-4742-b1c8-daa897113185-grafik.png

                  genau das mache ich auch.
                  Aber wenn die Akkus nicht synchron sondern im Wechsel angesteuert werden, fängt der 'Regelkreis' manchmal an zu pumpen (nur bei Einspeisung), und das obwohl ich sowohl die Gesamtleistung plus/minus der Akkus heranziehe und auch die Einzelleistung pro Akku vergleiche und Loadbalancing zwischen den beiden mache, und das optional mit IST-Werten oder einem Delta über den Regelzeitraum der Akkus.

                  Die Problematik ist wohl, dass bei niedrigem PV-Ertrag, wo die Akkus theoretisch zwischen Laden und Entladen schalten würden, je nachdem welcher Verbraucher sich gerade zu oder abschaltet, die ganze Regellung in eine Schwingung versetzt wird, aus der Sie nicht mehr rauskommt.
                  Rein technisch habe ich die Regelung in .net mit simulierten Daten laufen lassen (ist halt viel einfacher zu debuggen), da bekomme ich ein relativ sauberes Verhalten, Schwingungen werden im Load-Balancing wieder eingefangen.
                  Aber ich habe hier gerade einen klassischen 'Theorie und Realität' Fall.
                  Im Augenblick habe ich die Trägheit der Steuerung im Verdacht, ich regel ja nur alle 15 Sekunden und genau an der PV-Ertrags Grenze können in dem Zeitraum auch in den Delta/Zeit Werten schon wilde Sachen passieren.
                  Ich will das aber nicht mit einer übermässig grossen Totzone erschlagen.

                  Wenn ich mit exakt der gleichen Steuerung auf die abwechselnde Ansterung der Akkus verzichte
                  6023692f-9852-40f2-be4b-fe2407282368-grafik.png

                  ist alle scool und ich kann ohne Totzone sauber regeln.

                  Ich werde mal alle relevanten Regel-Daten in Datenpunkte schreiben, die Historie aktivieren und mir das dann per Diagramm anschauen... im zeilenweisen Textdebugging komme ich hier aktuell nicht mehr wirklich weiter.

                  S 1 Reply Last reply Reply Quote 0
                  • S
                    Schimi @Mabbi last edited by

                    @mabbi was wäre wenn du entweder das regeln erst bei z.B. +-50 watt unterschied zum vorherigen wert erlaubst...

                    oder im bereich bis -+200 Watt nur kleine sprünge erlaubst (z.B. 20 Watt)... würe die Regelung in dem Bereich langsam machen....

                    hmm, sonst habe ich keine idee gerade..

                    1 Reply Last reply Reply Quote 0
                    • L
                      lesiflo Most Active last edited by

                      Hallo @Mabbi
                      ich habe hier mal mitgelesen und einen ähnlichen Aufbau, allerdings mit 2 Hyper und habe das mit Java-Script gelöst.
                      Die Akkus werden bei mir über die angeschlossenen PV-Panels und externer PV geladen. Ich steuere beide Hyper zusammen. Hier mal ein Auszug wie ich die Leistung ermittle. Bin aber in der Cloud.

                      const hyper1 = {
                          name:           'Hyper1',
                          inputLimitDP:   'zendure-solarflow.0.xxxxxx.yyyyyyyy.control.setInputLimit',
                          outputLimitDP:  'zendure-solarflow.0.xxxxxx.yyyyyyyy.control.setOutputLimit',
                          inputDP:        'zendure-solarflow.0.xxxxxx.yyyyyyyy.gridInputPower',
                          outputDP:       'zendure-solarflow.0.xxxxxx.yyyyyyyy.outputHomePower',
                          acModeDP:       'zendure-solarflow.0.xxxxxx.yyyyyyyy.control.acMode',
                          pvLeistungDP:   'zendure-solarflow.0.xxxxxx.yyyyyyyy.solarInputPower',
                          chargePowerDP:  'zendure-solarflow.0.xxxxxx.yyyyyyyy.outputPackPower',
                          socDP:          'zendure-solarflow.0.xxxxxx.yyyyyyyy.electricLevel',
                          setsocDP:       'zendure-solarflow.0.xxxxxx.yyyyyyyy.control.dischargeLimit',
                          ladenGesamtDP:  'zendure-solarflow.0.xxxxxx.yyyyyyyy.calculations.outputPackEnergyTodaykWh',
                      };
                      
                      const hyper2 = {
                          name:           'Hyper2',
                          inputLimitDP:   'zendure-solarflow.0.xxxxxx.zzzzzzzz.control.setInputLimit',
                          outputLimitDP:  'zendure-solarflow.0.xxxxxx.zzzzzzzz.control.setOutputLimit',
                          inputDP:        'zendure-solarflow.0.xxxxxx.zzzzzzzz.gridInputPower',
                          outputDP:       'zendure-solarflow.0.xxxxxx.zzzzzzzz.outputHomePower',
                          acModeDP:       'zendure-solarflow.0.xxxxxx.zzzzzzzz.control.acMode',
                          pvLeistungDP:   'zendure-solarflow.0.xxxxxx.zzzzzzzz.solarInputPower',
                          chargePowerDP:  'zendure-solarflow.0.xxxxxx.zzzzzzzz.outputPackPower',
                          socDP:          'zendure-solarflow.0.xxxxxx.zzzzzzzz.electricLevel',
                          setsocDP:       'zendure-solarflow.0.xxxxxx.zzzzzzzz.control.dischargeLimit',
                          ladenGesamtDP:  'zendure-solarflow.0.xxxxxx.zzzzzzzz.calculations.outputPackEnergyTodaykWh',
                      };
                      
                      const evuLeistungDP         = 'mqtt.0.openWB.evu.W';
                      const aktuelleEinspeisung   = Number(getStateVal(evuLeistungDP, 0));
                      
                      const hyper1Leistung = Number(getStateVal(hyper1.inputDP, 0)) - Number(getStateVal(hyper1.outputDP, 0));
                      const hyper2Leistung = Number(getStateVal(hyper2.inputDP, 0)) - Number(getStateVal(hyper2.outputDP, 0));
                      
                      const leistungAusAkkus = aktuelleEinspeisung - hyper1Leistung - hyper2Leistung; // wie im Original
                      
                      // PV-Überschuss-Erkennung: negative leistungAusAkkus = Überschuss? (behalte dein Vorzeichenmodell)
                      if (leistungAusAkkus < -ladenStartSchwelle && speicherMinSOC < zielSOC) {
                           ladenErlaubt = true;                
                           visLog('☀️ PV-Überschuss → Laden erlaubt', 'ok');
                      }
                      

                      Kann gerne mal das gesamte Script posten, ist aber sehr an meine Bedingungen angepasst.

                      1 Reply Last reply Reply Quote 0
                      • U
                        Unterums last edited by

                        Hallo,
                        ich suche jemanden der mir (auch gerne gegen Bezahlung) hilft,

                        einen Flow einzurichten in IO-Broker. Habe die Zendure Batterie mittels MQTT zum Luafen gebracht und würde nun gerne folgende Werte schreiben können:
                        1.) Laden über AC Ein / Aus
                        2.) Entladen über AC Ein / Aus
                        3.) Die Leistung für 1 oder 2

                        Ist hier jemand der Lust darauf hat ?

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        461
                        Online

                        32.4k
                        Users

                        81.3k
                        Topics

                        1.3m
                        Posts

                        4
                        20
                        277
                        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