Weiter zum Inhalt
  • Home
  • Aktuell
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Steuerung zweiter Hausakku (Victron Multi Plus)

NEWS

  • Monatsrückblick Oktober 2026 ist online!
    BluefoxB
    Bluefox
    11
    1
    293

  • Mitmachen: Sprich „ioBroker“ ein – für ein lokales Aktivierungswort
    BluefoxB
    Bluefox
    6
    1
    481

  • Neuer Blogbeitrag: KI in ioBroker, vom Helfer im Admin bis zum eigenen Smart Assistant
    BluefoxB
    Bluefox
    4
    1
    531

Steuerung zweiter Hausakku (Victron Multi Plus)

Geplant Angeheftet Gesperrt Verschoben Blockly
21 Beiträge 4 Kommentatoren 761 Aufrufe 2 Beobachtet
  • Ä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.
  • B Bock.Johannes

    @paul53 Positiv heißt die Batterien werden geladen, Negativ, die Batterie wird entladen. Mit den drei Multi Plus geht das bei 10800W je Richtung

    paul53P
    paul53P
    paul53
    schrieb am zuletzt editiert von paul53
    #10

    @Bock.Johannes [sagte: 10800W je Richtung

    image.jpeg

    Xp muss wahrscheinlich größer sein (80000 ? ausprobieren), da die Regelung sonst instabil wird (schwingt).

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: Asus PN42: N100 / 8 GB / 500 GB; Proxmox mit 2 VM (ioBroker / openCCU)

    1 Antwort Letzte Antwort
    0
    • BluefoxB Bluefox

      @Bock.Johannes Ja, die Schleife ist das Problem. Ein Skript im JavaScript-Adapter darf nie aktiv warten, sonst blockiert es den ganzen Adapter. Lös das Skript stattdessen über einen Trigger aus (Änderung der Netzleistung) oder per Zeitplan alle paar Sekunden.

      Zum Schwingen: Setz den Victron-Sollwert nicht direkt auf die gemessene Netzleistung. Korrigier den letzten Sollwert jedes Mal nur um einen Teil der Abweichung (Integral-Regler) und lass ein Totband stehen. Weil Kostal/BYD am selben Zähler auch regeln, muss der Victron deutlich langsamer sein, sonst arbeiten die beiden gegeneinander.

      Etwa so (IDs anpassen, Vorzeichen: Netz positiv = Bezug, Victron positiv = Entladen):

      const ID_NETZ    = 'xxx.netzleistung';      // B-Control, W
      const ID_BYD_SOC = 'xxx.byd_soc';           // %
      const ID_VICTRON = '0_userdata.0.victron_soll'; // bzw. dein Victron-Sollwert
      const ZIEL = 0, TOTBAND = 50, K = 0.4, MAX = 2500;
      
      let soll = 0;
      
      schedule('*/5 * * * * *', async () => {
          const netz = (await getStateAsync(ID_NETZ)).val;
          const soc  = (await getStateAsync(ID_BYD_SOC)).val;
          const fehler = netz - ZIEL;
          if (Math.abs(fehler) < TOTBAND) return;
      
          soll += fehler * K;
      
          // Victron nur arbeiten lassen, wenn BYD leer (entladen) bzw. voll (laden)
          if (soll > 0 && soc > 10) soll = 0;
          if (soll < 0 && soc < 98) soll = 0;
      
          soll = Math.max(-MAX, Math.min(MAX, Math.round(soll)));
          setState(ID_VICTRON, soll);
      });
      

      In Blockly geht das genauso: Block "Zeitplan" mit Cron, eine Variable für den Sollwert außerhalb des Triggers, dann "Sollwert = Sollwert + (Netz - Ziel) * 0.4", danach begrenzen. K und das Intervall musst du ausprobieren. Schwingt es noch, K kleiner machen oder das Intervall verlängern.

      Wie schreibst du den Sollwert zum Multiplus (Modbus, MQTT, welcher ESS-Modus)? Und hat der Victron einen eigenen Zähler? Wenn ja, kann der Victron die Regelung selbst übernehmen, und du schreibst nur noch den Grid-Setpoint.

      paul53P
      paul53P
      paul53
      schrieb am zuletzt editiert von paul53
      #11

      @Bluefox hat einen reinen I-Regler programmiert.
      Wenn die Bezugs- bzw. Einspeiseleistung zyklisch aktualisiert werden, ist es besser, diese als Trigger zu verwenden.
      I-Regler als Blockly:

      Blockly_temp.JPG

      Die kurze Verzögerung verhindert eine Doppelauslösung, wenn Bezug und Einspeisung unmittelbar nacheinander aktualisiert werden.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: Asus PN42: N100 / 8 GB / 500 GB; Proxmox mit 2 VM (ioBroker / openCCU)

      B 4 Antworten Letzte Antwort
      0
      • paul53P paul53

        @Bluefox hat einen reinen I-Regler programmiert.
        Wenn die Bezugs- bzw. Einspeiseleistung zyklisch aktualisiert werden, ist es besser, diese als Trigger zu verwenden.
        I-Regler als Blockly:

        Blockly_temp.JPG

        Die kurze Verzögerung verhindert eine Doppelauslösung, wenn Bezug und Einspeisung unmittelbar nacheinander aktualisiert werden.

        B
        B
        Bock.Johannes
        schrieb am zuletzt editiert von Bock.Johannes
        #12

        @paul53 das probiere ich mal aus, das sieht doch etwas besser aus als das was ich aktuell programmiert habe.....

        1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @Bluefox hat einen reinen I-Regler programmiert.
          Wenn die Bezugs- bzw. Einspeiseleistung zyklisch aktualisiert werden, ist es besser, diese als Trigger zu verwenden.
          I-Regler als Blockly:

          Blockly_temp.JPG

          Die kurze Verzögerung verhindert eine Doppelauslösung, wenn Bezug und Einspeisung unmittelbar nacheinander aktualisiert werden.

          B
          B
          Bock.Johannes
          schrieb am zuletzt editiert von
          #13

          @paul53 ich habe mal den neuen Akku gestern voll gemacht um auch etwas zu probieren. Das Skript funktioniert zum laden super, jedoch jetzt wo der BYD heute Nacht leer war und das Victron System liefert habe ich das Phänomen das sich das ganze aufschaukelt, der BYD geladen wird und dann wieder entlädt, so das ich ein hoch und runterfahren der beiden Systeme habe. Ich habe auch schon das Totband erhöht aber es wirkt noch nicht so....

          paul53P BluefoxB 2 Antworten Letzte Antwort
          0
          • B Bock.Johannes

            @paul53 ich habe mal den neuen Akku gestern voll gemacht um auch etwas zu probieren. Das Skript funktioniert zum laden super, jedoch jetzt wo der BYD heute Nacht leer war und das Victron System liefert habe ich das Phänomen das sich das ganze aufschaukelt, der BYD geladen wird und dann wieder entlädt, so das ich ein hoch und runterfahren der beiden Systeme habe. Ich habe auch schon das Totband erhöht aber es wirkt noch nicht so....

            paul53P
            paul53P
            paul53
            schrieb am zuletzt editiert von
            #14

            @Bock.Johannes [sagte: der BYD geladen wird

            Das muss nachts verhindert werden.

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: Asus PN42: N100 / 8 GB / 500 GB; Proxmox mit 2 VM (ioBroker / openCCU)

            1 Antwort Letzte Antwort
            0
            • B Bock.Johannes

              @paul53 ich habe mal den neuen Akku gestern voll gemacht um auch etwas zu probieren. Das Skript funktioniert zum laden super, jedoch jetzt wo der BYD heute Nacht leer war und das Victron System liefert habe ich das Phänomen das sich das ganze aufschaukelt, der BYD geladen wird und dann wieder entlädt, so das ich ein hoch und runterfahren der beiden Systeme habe. Ich habe auch schon das Totband erhöht aber es wirkt noch nicht so....

              BluefoxB
              BluefoxB
              Bluefox
              schrieb am zuletzt editiert von
              #15

              @Bock.Johannes Zur Ergänzung von paul53: Das Aufschaukeln entsteht, weil beim Entladen auch auf 50 W Einspeisung geregelt wird. Der Kostal sieht diese Einspeisung als Überschuss und lädt damit den BYD. Danach fehlt die Leistung, der Victron legt nach, und so arbeiten beide Regler gegeneinander.

              Drei Dinge helfen:

              1. Asymmetrisches Ziel: Beim Laden auf etwa 50 W Einspeisung regeln, beim Entladen (Sollwert negativ) auf etwa 50 bis 100 W Bezug. Dann sieht der Kostal nie einen Überschuss, den er in den BYD stecken könnte.
              2. Den Victron-Regler einfrieren, solange der BYD lädt oder entlädt (Batterieleistung vom Kostal abfragen, z. B. abs(Leistung) > 100 W). Dann wird der Sollwert nicht weiter angepasst. So regelt immer nur ein System.
              3. Wenn möglich, das Laden des BYD sperren, solange keine PV-Leistung da ist. Kannst du das beim Kostal per Modbus vorgeben? Dann ist das Problem in der Nacht grundsätzlich weg.

              Das Totband zu erhöhen hilft dabei kaum, weil sich die Systeme gegenseitig hochschaukeln. Eine Störung durch Messrauschen ist das nicht.

              1 Antwort Letzte Antwort
              0
              • B
                B
                Bock.Johannes
                schrieb am zuletzt editiert von
                #16

                Ohne den Kostal auf externe Steuerung umzustellen, kann ich die Ladung im Modbus für die BYD Batterie nicht unterbinden. Das möchte ich eigentlich nicht umstellen.
                Das Aufschaukeln ist nicht nur während der Phase in der die BYD Batterie leer ist, sondern auch in der Phase in der die PV Produktion langsam wieder startet bis Sie dann letztlich den Hausverbrauch überschreitet.
                Was ich jedoch steuern könnte, anhand einer Bedingung ist über den Plenticore Adapter die Entladung der Batterie zu unterbinden bis PV Produktion einen Gewissen Wert überschritten hat. Das könnte vielleicht helfen. Diese Funktion nutze ich wenn ich die Wallbox ohne entladen der Batterie betreiben möchte.
                Das würde ich dann aber mal in einem extra Skript unterbringen.

                BluefoxB 1 Antwort Letzte Antwort
                0
                • B Bock.Johannes

                  Ohne den Kostal auf externe Steuerung umzustellen, kann ich die Ladung im Modbus für die BYD Batterie nicht unterbinden. Das möchte ich eigentlich nicht umstellen.
                  Das Aufschaukeln ist nicht nur während der Phase in der die BYD Batterie leer ist, sondern auch in der Phase in der die PV Produktion langsam wieder startet bis Sie dann letztlich den Hausverbrauch überschreitet.
                  Was ich jedoch steuern könnte, anhand einer Bedingung ist über den Plenticore Adapter die Entladung der Batterie zu unterbinden bis PV Produktion einen Gewissen Wert überschritten hat. Das könnte vielleicht helfen. Diese Funktion nutze ich wenn ich die Wallbox ohne entladen der Batterie betreiben möchte.
                  Das würde ich dann aber mal in einem extra Skript unterbringen.

                  BluefoxB
                  BluefoxB
                  Bluefox
                  schrieb am zuletzt editiert von
                  #17

                  @Bock.Johannes Die Entladesperre des BYD hilft, weil dann morgens nur noch der Victron die Last deckt und die beiden sich nicht mehr die Arbeit teilen. Das Laden des BYD verhindert sie aber nicht. Sobald der Victron auf Einspeisung regelt, sieht der Kostal Überschuss und lädt den BYD trotzdem. Deshalb würde ich das asymmetrische Ziel zusätzlich einbauen: Ist der Sollwert negativ (Victron entlädt), regelst du auf etwa 50 bis 100 W Bezug statt auf Einspeisung. Hast du das schon drin?

                  Zwei Punkte für das extra Skript:

                  1. Die PV-Schwelle braucht eine Hysterese, sonst schaltet die Sperre bei wechselnder Bewölkung dauernd hin und her. Zum Beispiel sperren unter 1500 W, freigeben erst über 2000 W, und das Ganze erst, wenn der Wert ein paar Minuten anliegt. Die Werte sind nur Beispiele, die musst du an euren Grundverbrauch anpassen.
                  2. Beim Umschalten (BYD gesperrt bzw. freigegeben) springt die Last sprunghaft von einem System auf das andere. Der I-Anteil im Victron-Skript braucht dann eine Weile, bis er nachgezogen hat. Es hilft, den Victron-Regler beim Umschalten kurz einzufrieren oder den Sollwert gezielt zu setzen, statt ihn von irgendeinem alten Wert aus weiterlaufen zu lassen.

                  Ein eigenes Skript ist dafür in Ordnung. Wichtig ist nur, dass es keinen Sollwert für den Victron schreibt. Das darf nur ein Skript machen.

                  B 1 Antwort Letzte Antwort
                  0
                  • BluefoxB Bluefox

                    @Bock.Johannes Die Entladesperre des BYD hilft, weil dann morgens nur noch der Victron die Last deckt und die beiden sich nicht mehr die Arbeit teilen. Das Laden des BYD verhindert sie aber nicht. Sobald der Victron auf Einspeisung regelt, sieht der Kostal Überschuss und lädt den BYD trotzdem. Deshalb würde ich das asymmetrische Ziel zusätzlich einbauen: Ist der Sollwert negativ (Victron entlädt), regelst du auf etwa 50 bis 100 W Bezug statt auf Einspeisung. Hast du das schon drin?

                    Zwei Punkte für das extra Skript:

                    1. Die PV-Schwelle braucht eine Hysterese, sonst schaltet die Sperre bei wechselnder Bewölkung dauernd hin und her. Zum Beispiel sperren unter 1500 W, freigeben erst über 2000 W, und das Ganze erst, wenn der Wert ein paar Minuten anliegt. Die Werte sind nur Beispiele, die musst du an euren Grundverbrauch anpassen.
                    2. Beim Umschalten (BYD gesperrt bzw. freigegeben) springt die Last sprunghaft von einem System auf das andere. Der I-Anteil im Victron-Skript braucht dann eine Weile, bis er nachgezogen hat. Es hilft, den Victron-Regler beim Umschalten kurz einzufrieren oder den Sollwert gezielt zu setzen, statt ihn von irgendeinem alten Wert aus weiterlaufen zu lassen.

                    Ein eigenes Skript ist dafür in Ordnung. Wichtig ist nur, dass es keinen Sollwert für den Victron schreibt. Das darf nur ein Skript machen.

                    B
                    B
                    Bock.Johannes
                    schrieb am zuletzt editiert von
                    #18

                    @Bluefox Guten Morgen,
                    nein das Asymmetrische Ziel habe ich noch nicht eingebaut, mir ist aber auch noch nicht klar an welcher Stelle.
                    Ich habe jetzt mal mit einem Zustäzlichen Skript probiert was die Entladesperre setzt. Trotzdem schaukel es sich noch auf was wahrscheinlich mit der steigenden PV Leistung zu tun hat. Ganz verstehen kann ich das verhalten noch nicht. Das laden was in die BYD Batterie erfolgt ist mit 20-100w schwankend für mich nicht störend.
                    Mein aktuelles Skript blockt auch wieder die Java Engine, ich glaube da muss ich nochmal ran...

                    1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @Bluefox hat einen reinen I-Regler programmiert.
                      Wenn die Bezugs- bzw. Einspeiseleistung zyklisch aktualisiert werden, ist es besser, diese als Trigger zu verwenden.
                      I-Regler als Blockly:

                      Blockly_temp.JPG

                      Die kurze Verzögerung verhindert eine Doppelauslösung, wenn Bezug und Einspeisung unmittelbar nacheinander aktualisiert werden.

                      B
                      B
                      Bock.Johannes
                      schrieb am zuletzt editiert von
                      #19

                      @paul53 wenn ich es richtig sehe fängt der Victron erst an zu laden, wenn die BYD Batterie bei 98% ist? Hier würde ich noch eine oder Bedingung mit einbauen, denn er lädt nur mit maximal 6500W, die restliche Energie verschenke ich ja im Moment. Würde draus mal testweise ein oder machen und auf PV-Erzeugung größer 7500W abfragen....

                      1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

                        @Bluefox hat einen reinen I-Regler programmiert.
                        Wenn die Bezugs- bzw. Einspeiseleistung zyklisch aktualisiert werden, ist es besser, diese als Trigger zu verwenden.
                        I-Regler als Blockly:

                        Blockly_temp.JPG

                        Die kurze Verzögerung verhindert eine Doppelauslösung, wenn Bezug und Einspeisung unmittelbar nacheinander aktualisiert werden.

                        B
                        B
                        Bock.Johannes
                        schrieb am zuletzt editiert von
                        #20

                        @paul53 Leider schwingt das Skript beim Entladen wenn nur die Victron Batterie tätig ist und der BYD gesperrt ist. Das Verhalten ist mir noch unklar... EIne Idee? Den Speed habe ich auf 1 gesetzt

                        paul53P 1 Antwort Letzte Antwort
                        0
                        • B Bock.Johannes

                          @paul53 Leider schwingt das Skript beim Entladen wenn nur die Victron Batterie tätig ist und der BYD gesperrt ist. Das Verhalten ist mir noch unklar... EIne Idee? Den Speed habe ich auf 1 gesetzt

                          paul53P
                          paul53P
                          paul53
                          schrieb am zuletzt editiert von
                          #21

                          @Bock.Johannes [sagte: Leider schwingt das Skript beim Entladen ... Den Speed habe ich auf 1 gesetzt

                          Dann verringere den Speed.

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: Asus PN42: N100 / 8 GB / 500 GB; Proxmox mit 2 VM (ioBroker / openCCU)

                          1 Antwort Letzte Antwort
                          0

                          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                          Registrieren Anmelden
                          Antworten
                          • In einem neuen Thema antworten
                          Anmelden zum Antworten
                          • Älteste zuerst
                          • Neuste zuerst
                          • Meiste Stimmen


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          404

                          Online

                          33.1k

                          Benutzer

                          84.2k

                          Themen

                          1.4m

                          Beiträge
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2026
                          logo
                          • Anmelden

                          • Du hast noch kein Konto? Registrieren

                          • Anmelden oder registrieren, um zu suchen
                          • Erster Beitrag
                            Letzter Beitrag
                          0
                          • Home
                          • Aktuell
                          • Ungelesen 0
                          • Kategorien
                          • Unreplied
                          • Beliebt
                          • GitHub
                          • Docu
                          • Hilfe