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

      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
                • S
                  Schimi last edited by

                  @unterums wenn ich aus das richtig verstehe, macht mein Javascript genau das... Du musst nur Tibber und evcc auf "false" setzen und deinen Stromzähler angeben (z.B. shelly oder Tibber Pulse.. es gehen auch alle anderen die ein + für bezug und - für einspeisung liefern)

                  U 1 Reply Last reply Reply Quote 0
                  • U
                    Uberga @Schimi last edited by

                    @schimi Danke, aber wo "baue" ich das Java Script ein ?
                    Sorry, aber ich bin da absolut unbewandert 🙂

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

                      @uberga

                      Hi,
                      das script von @Schimi kommt im Iobroker hier hin, einfach anclicken:
                      7bd0e407-5adb-4d08-a5ff-3dd3e535a135-grafik.png

                      Dann clickst du hier auf das PLUS:
                      0b2149f3-0f2b-40d1-90d4-63e6b90e7075-grafik.png

                      Wählst das hier aus:
                      0946d761-da16-42a9-926b-1a694a9930a3-grafik.png

                      Vergibst einen Namen (Verzeichnis würde ich erstmal nicht ändern):
                      528fe866-598d-4f9a-8511-1ff4736e7eab-grafik.png

                      Und fügst den kopierten Text aus dem ersten Post in den Editor ein, dann SPEICHERN

                      Sollte dann so aussehen (Name kann abweichen)
                      7e7e7982-230d-42ea-b2a5-25deeca43722-grafik.png

                      Mit dem Play/Pause startet das script bzw stoppt.

                      ABER.... ich würde Dir nicht empfehlen als Anfänger gleich mit Javascripten zu arbeiten.
                      Ehrlich, schreib ein paar kleine Blocklys, verstehe wie Datenpunkte angelegt, angesprochen und manipuliert werden und dann kannst du auch Deinen Akku selber steuern mit einem kleinen script und Erfahrung.
                      Die Akkus sind keine Spielzeuge. Du solltest wirklich verstehen wie du die scripte überwachst und dann reagierst.

                      Schau mal, ich arbeite seit Wochen an einem Akku-Script... es gibt idz. X-Versionen und ganz glücklich bin ich aktuell immer noch nicht mit dem Ergebnis (wobei das nun eher Schönbauerei ist als reale technische Verbesserung idZ.)
                      13464734-e50a-4776-8d4a-d0c982e6c69d-grafik.png

                      1 Reply Last reply Reply Quote 1
                      • S
                        Schimi last edited by

                        es kann definitiv nicht schaden sich mal mit blockly auseinander zu setzen...

                        Mein Skript braucht zwar nur konfiguriert werden und sollte funktionieren... aber ein grundverständnis schadet nie 🙂

                        PS: es gab wieder ein Update (siehe ersten post)

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        552
                        Online

                        32.4k
                        Users

                        81.3k
                        Topics

                        1.3m
                        Posts

                        5
                        24
                        483
                        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