Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Regelung eines Hoymiles Solarinverters (Nulleinspeisung)

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Regelung eines Hoymiles Solarinverters (Nulleinspeisung)

    This topic has been deleted. Only users with topic management privileges can see it.
    • Duffy
      Duffy @TomDerBasler last edited by Duffy

      @tomderbasler

      Wo bei dir Web UI-Adresse drin steht habe ich die IP meiner opendtu.

      Mqtt ist bei mir abgeschaltet. Wenn du den openDTU Adapter verwendest benötigst du das Mqtt nicht.

      bb5c4abc-398c-437a-81db-e9373e0a9a54-grafik.png

      Hier noch mal der genaue Pfad zu dem Datenpunkt.

      Wenn du weiter nichts über mqtt laufen hast schalte den Adapter mal ab nicht das der vielleicht den opendtu Adapter stört.

      Ich bin aber auch bei weitem kein Profi und kann dir nur sagen wie es bei mir funktioniert.

      Gruß Duffy

      T 2 Replies Last reply Reply Quote 0
      • T
        TomDerBasler @Duffy last edited by

        @duffy : Herzlichen Dank, morgen werde ich das gleich mal ausprobieren; schönen Abend

        1 Reply Last reply Reply Quote 0
        • T
          TomDerBasler @Duffy last edited by

          @duffy super ! es hat geklappt; danke für den Tipp
          IOB 240117-04.png

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

            Hier ist noch mein Script für die Nulleinspeisung über Opendtu und Hoymiles HM1500. Den Strom lese ich mit einem Hichi Lesekopf am Stromzähler.
            Funktioniert wunderbar. Ich speise fast nichts ein.
            Immer wenn sich der Strom ändert - wird alle 10 Sekunden vom Hichi gemeldet, da brauche ich keinen CRON Job - wird das Limit neu gesetzt sofern die WR Stromerzeugung >300 Watt ist. Die OpenDTU schalte ich ca. 1h nach Sonnenaufgang an und mit Sonnenaufgang ab. Die dauerhafte Limitierung liegt bei 600W. Damit startet der WR jeden Morgen und bleibt da auch, wenn es keine Regelung gibt.

            c3573fbb-227a-4dff-9bba-65ed927de52b-grafik.png

            Die Steuerung erfolgt über die Prozentangabe der Wechselrichterleistung in den Limits von 30% bis 100%
            Am Anfang gab es die Fehlermeldung es würde kein Number-Value übertragen, durch die Value Funktion hat sich das erledigt.

            Codierknecht A 2 Replies Last reply Reply Quote 0
            • Codierknecht
              Codierknecht Developer Most Active @Carsaab last edited by

              @carsaab sagte in Regelung eines Hoymiles Solarinverters (Nulleinspeisung):

              Die dauerhafte Limitierung liegt bei 600W

              Warum?
              Seit Januar sind 800W zulässig.

              Funktioniert wunderbar. Ich speise fast nichts ein.

              Darf ich auch hier fragen, warum?

              Samson71 1 Reply Last reply Reply Quote 0
              • Samson71
                Samson71 Global Moderator @Codierknecht last edited by

                @codierknecht sagte in Regelung eines Hoymiles Solarinverters (Nulleinspeisung):

                Seit Januar sind 800W zulässig.

                Noch nicht. Das war zwar der Plan, aber die Lesung und Abstimmung dazu wurden verschoben. Daher gilt aktuell leider immer noch die 600W Grenze in D.

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

                  Es sind nur 600W erlaubt in Schland. 800W ist in Österreich gestattet. Die Ampel hat mal wieder auf Rot geschaltet.
                  Warum keine Einspeisung - nun ja. Ein Balkon-PV mit 600W erzeugt im Jahr sehr-grob 600kWh mit 70% Eigenverbrauch, 10%Verlust und 20% Einspeisung = ca. 120kWH auf dem Zähler Einspeisung pro Jahr. Das entspräche auch der Anmeldung.
                  Ein unlimitiertes 1500W Balkon-PV erzeugt im Jahr sehr-grob 1500kWh mit 50% Eigenverbrauch, 10%Verlust und 40% Einspeisung = ca. 600kWH auf dem Zähler Einspeisung pro Jahr. Mit mehr PV Leistung sinkt ohne Speicher zwangsweise die Eigenverbrauchquote und die Einspeisequote steigt.
                  Das fällt dann im Zweifel auch Mangelbegabten bei einer Zählersichtung in unter 1 Minute auf.

                  Mir ging es eher darum ein Beispiel für ein Nulleinspeise Blockly zu teilen, das auch funzt.

                  968655de-892b-4e8d-b99a-1b4e28d8b561-grafik.png
                  Es wird jedes mal neu berechnet wenn sich der Stromverbrauch ändert - enweder durch einen Verbraucher oder die Schwankung der PV Leistung, die ja unmittelbar den Stromverbauch ändert. Also reicht das als Trigger.
                  Der "Constraint" Befehl limiert die % zwischen den Grenzen 30% und 100%, damit keine Werte über 100% an die OpenDTU geschickt werden.

                  Ich habe in den Blogs sonst nur lange Diskussionen zum Fehler finden gefunden.
                  Das hier funktioniert, den Zeittakt gibt der Lesekopf auf dem Zähler automatisch vor. Ich habe hier 10sekunden eingestellt, minimal 5 sind möglich, 3 Sekunden nutzt der Zähler. 10 Sekunden reichen mir.

                  Mir ist auch klar, dass das nur beim saldierenden Zähler geht. Wenn die einzelnen Phasen überwacht werden, dann sieht man das natürlich trotzdem, falls nicht die Phasen einzeln angesteuert werden können. Falls jemand also einen Shelly 3 EM hat und jede einzelne Phase überwacht und zusätzlich noch 3 BalkonPV - pro Phase eins, dann kann das natürlich noch optimiert werden. Also 3 OpenDTU, 3 Scripte und 3 bzw. 6 oder 9 Wechselrichter. Ob das dann noch als 9 oder 11,5 kWP Balkon-PV gilt, würde eine interessante Diskussion sein. Ich hätte da Zweifel. Einspeisen würde man dennoch nur sehr wenig.

                  U G 2 Replies Last reply Reply Quote 0
                  • U
                    uk68 @Carsaab last edited by

                    @carsaab kannst Du bitte das Script mal hochladen, ich würde es gerne mal testen. Danke

                    1 Reply Last reply Reply Quote 0
                    • G
                      Gonzokalle @Carsaab last edited by

                      @carsaab
                      Finde ich auch interessant.
                      Dein Blockly sieht so denglisch aus. Schreibt man das so? Meine sehen ganz anders aus.

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

                        Null-Einspeiseregelung.json
                        Die json Datei,

                        Das Blockly ist Englisch, weil ich beruflich 90% auf Englisch arbeite. Also sind in der Familie alle Computer und jede Software in Englisch installiert. Auch IOBroker und Blockly.
                        (Meine Familie hat dazu eine Meinung, die aber ignoriere. Inzwischen habe sich alle dran gewöhnt.)

                        2ab7d9df-684f-4c3d-8680-a36aaf459085-grafik.png
                        Nochmal das Bild,

                        Wenn Ihr die OpenDTU per Plug über Nacht abschaltet, braucht Ihr eine Zeitschaltung dafür. Das ist der Start und das Ende.
                        In der Mitte die Betriebsdauer der Regelung nach dem Sonnenauf- und -untergang. Trigger ist die Änderung des Stromverbrauchs geliefert alle 10 Sekunden vom Hichi Lesekopf gekauft bei Ebay.
                        Die OpenDTU meldet alle 5 sekunden die Erzeugung.
                        Geschrieben wird nur der "non-persistent relative value" (nicht-dauerhafte Relativwert). Der dauerhafte Wert steht bei 600W.
                        Die Einstellung bei Stromverbrauch<300W enspricht 450W WR Leistung. ich habe ihn mit den 600W angemeldet. Also lasse ich ihn da stehen. Ausserdem will ich einen Puffer haben und es ist konform zu Anmeldung. Einen Akku habe ich derzeit nicht.

                        hier der Code.

                        </>
                        js code schedule({ astro: 'sunrise', shift: 0 }, async () => {
                          setStateDelayed('hue.0.Hue_smart_plug_3.on' /* Hue smart plug 3.on */, true, 1000000, false);
                        });
                        if (compareTime(getAstroDate('sunrise', undefined, 60), getAstroDate('sunset', undefined, -1), 'between', null)) {
                          on({ id: [].concat(['alias.0.Energie-Strom.Stromverbrauch']), change: 'any' }, async (obj) => {
                            let value = obj.state.val;
                            let oldValue = obj.oldState.val;
                            if (getState('alias.0.Energie-Strom.Hoymiles').val <= 300) {
                              setStateDelayed('alias.0.Energie-Strom.non_persistent', 30, false, parseInt(((0) || '').toString(), 10), false);
                            } else {
                              setStateDelayed('alias.0.Energie-Strom.non_persistent', (Math.min(Math.max(Math.round(((getState('alias.0.Energie-Strom.Stromverbrauch').val + 30 + getState('alias.0.Energie-Strom.Hoymiles').val) / 15) * 10) / 10, 30), 100)), false, parseInt(((0) || '').toString(), 10), false);
                            }
                          });
                        }
                        schedule({ astro: 'sunset', shift: 1 }, async () => {
                          setStateDelayed('alias.0.Energie-Strom.non_persistent', 40, false, parseInt(((0) || '').toString(), 10), false);
                          setStateDelayed('hue.0.Hue_smart_plug_3.on' /* Hue smart plug 3.on */, false, 1000000, false);
                        });
                        </>
                        

                        MOD-EDIT: Code in code-tags gesetzt!

                        Kenne mich mit der Plattform hier nicht so aus. Hoffe, das hier hilft.

                        Codierknecht 1 Reply Last reply Reply Quote 0
                        • Codierknecht
                          Codierknecht Developer Most Active @Carsaab last edited by

                          @carsaab
                          Bitte Code auch in Code-Tags </> einbetten.

                          Carsaab 1 Reply Last reply Reply Quote 0
                          • Carsaab
                            Carsaab @Codierknecht last edited by Carsaab

                            @codierknecht

                            sorry - ich bin No/Low-Code Fan. Den Code den Blockly produziert, verstehe ich selber nicht.
                            Ich habe den Code, den Blockly generiert nur rauskopiert und habe keine Ahnung was Code-Tags sind. Parallel zu Blockly noch von Hand coden möchte ich nicht.
                            Das Script funktioniert bei mir, mehr brauche ich nicht.
                            Eigentlich müsste das json file nur importiert werden, so meine Annahme. Es ist in dem Post ja angehängt und kann heruntergeladen werden.
                            https://forum.iobroker.net/assets/uploads/files/1710753872630-null-einspeiseregelung.json
                            Funktioniert das nicht?

                            A Samson71 Homoran 3 Replies Last reply Reply Quote 0
                            • A
                              andi_grafa @Carsaab last edited by

                              @carsaab
                              Du hättest den Code einfach zwischen </> reinkopieren sollen, damit in deinem Beitrag alles besser lesbar wird!

                              js code schedule({ astro: 'sunrise', shift: 0 }, async () => {
                              setStateDelayed('hue.0.Hue_smart_plug_3.on' /* Hue smart plug 3.on /, true, 1000000, false);
                              });
                              if (compareTime(getAstroDate('sunrise', undefined, 60), getAstroDate('sunset', undefined, -1), 'between', null)) {
                              on({ id: [].concat(['alias.0.Energie-Strom.Stromverbrauch']), change: 'any' }, async (obj) => {
                              let value = obj.state.val;
                              let oldValue = obj.oldState.val;
                              if (getState('alias.0.Energie-Strom.Hoymiles').val <= 300) {
                              setStateDelayed('alias.0.Energie-Strom.non_persistent', 30, false, parseInt(((0) || '').toString(), 10), false);
                              } else {
                              setStateDelayed('alias.0.Energie-Strom.non_persistent', (Math.min(Math.max(Math.round(((getState('alias.0.Energie-Strom.Stromverbrauch').val + 30 + getState('alias.0.Energie-Strom.Hoymiles').val) / 15) * 10) / 10, 30), 100)), false, parseInt(((0) || '').toString(), 10), false);
                              }
                              });
                              }
                              schedule({ astro: 'sunset', shift: 1 }, async () => {
                              setStateDelayed('alias.0.Energie-Strom.non_persistent', 40, false, parseInt(((0) || '').toString(), 10), false);
                              setStateDelayed('hue.0.Hue_smart_plug_3.on' / Hue smart plug 3.on */, false, 1000000, false);
                              });
                              
                              1 Reply Last reply Reply Quote 0
                              • Samson71
                                Samson71 Global Moderator @Carsaab last edited by

                                @carsaab sagte in Regelung eines Hoymiles Solarinverters (Nulleinspeisung):

                                Ich habe den Code, den Blockly generiert nur rauskopiert und habe keine Ahnung was Code-Tags sind.

                                Um Code für Mitlesende hier im Forum entspannter lesbar zu machen, bettet man ihn nach dem Reinkopieren in sog. Code-Tags ein. Es geht also gar nicht um den Code an sich.

                                Das findest Du als Menüpunkt bei der Erfassung des Beitrags.

                                b598d876-a074-44e1-8b4a-17ba0e9d617c-image.png

                                1 Reply Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators @Carsaab last edited by

                                  @carsaab sagte in Regelung eines Hoymiles Solarinverters (Nulleinspeisung):

                                  ich bin No/Low-Code Fan.

                                  hat damit nichts zu tun, sondern hiermit:
                                  https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1

                                  Carsaab 1 Reply Last reply Reply Quote 1
                                  • Carsaab
                                    Carsaab @Homoran last edited by

                                    @homoran
                                    Danke - sorry für die lange Leitung, jetzt habe auch ich es verstanden.
                                    Ich habe ja auch kein Problem, ich wollte nur eine funktionierende Lösung teilen, damit andere Zeit sparen.
                                    Das Script läuft bei mir wie geölt.

                                    1 Reply Last reply Reply Quote 0
                                    • A
                                      andi_grafa @Carsaab last edited by

                                      @carsaab sagte in Regelung eines Hoymiles Solarinverters (Nulleinspeisung):

                                      Hier ist noch mein Script für die Nulleinspeisung über Opendtu und Hoymiles HM1500. Den Strom lese ich mit einem Hichi Lesekopf am Stromzähler.
                                      Funktioniert wunderbar. Ich speise fast nichts ein.
                                      Immer wenn sich der Strom ändert - wird alle 10 Sekunden vom Hichi gemeldet, da brauche ich keinen CRON Job - wird das Limit neu gesetzt sofern die WR Stromerzeugung >300 Watt ist. Die OpenDTU schalte ich ca. 1h nach Sonnenaufgang an und mit Sonnenaufgang ab. Die dauerhafte Limitierung liegt bei 600W. Damit startet der WR jeden Morgen und bleibt da auch, wenn es keine Regelung gibt.

                                      c3573fbb-227a-4dff-9bba-65ed927de52b-grafik.png

                                      Die Steuerung erfolgt über die Prozentangabe der Wechselrichterleistung in den Limits von 30% bis 100%
                                      Am Anfang gab es die Fehlermeldung es würde kein Number-Value übertragen, durch die Value Funktion hat sich das erledigt.

                                      Nur mal so zum Verständnis, du regelst die Einspeisung mittels OpenDTU auf eine Nulleispeisung. Ich sehen in deinem Programm aber z.B. nichts von einer Akkuspannungsüberwachung. Eine Nulleinspeisung macht meiner Meinung nach nur Sinn bei der Verwendung eines Akku. Hast du einen Akku, wenn ja, entlädst du den Akku, bis das BMS anspricht?

                                      Samson71 1 Reply Last reply Reply Quote 0
                                      • Samson71
                                        Samson71 Global Moderator @andi_grafa last edited by

                                        @andi_grafa sagte in Regelung eines Hoymiles Solarinverters (Nulleinspeisung):

                                        Eine Nulleinspeisung macht meiner Meinung nach nur Sinn bei der Verwendung eines Akku.

                                        Einfach mal Weiterlesen! Er hat doch 3 Beiträge weiter ausführlich dargelegt warum er das macht.

                                        A 1 Reply Last reply Reply Quote 0
                                        • A
                                          andi_grafa @Samson71 last edited by

                                          @samson71
                                          Hallo Markus,

                                          vielen Dank und ich habe es jetzt gelesen.

                                          Er hat einen HM-1500 und begrenzt ihn auf 600W Leistung. Mehr habe ich nicht gefunden oder habe es einfach leider übersehen. Aber so ganz schlau bin ich aus den diversen Beiträgen nicht geworden und von einem Akku habe ich auch nichts gelesen. Vielleicht wird es aber zu sehr OT. Wichtig ist, dass es funktioniert....

                                          Carsaab Samson71 2 Replies Last reply Reply Quote 0
                                          • Carsaab
                                            Carsaab @andi_grafa last edited by

                                            @andi_grafa
                                            Nochmal zu Klarstellung:
                                            Ich begrenze den WR auf 600W als persistent limit. Mit diesem Limit startet der WR jeden Morgen neu. Zwischen Sonnenaufgang und Untergang folgt er mit einem non-persistent Limit dem Verbrauch zwischen 30% (von mir willkürlich gesetzt, da geht auch jeder andere Wert) und 100% (die setze ich um Fehlermeldungen zu vermeiden, wenn der WR mit über 100% angesteuert wird) seiner Leistung. Ziel ist dabei die minimale Einspeisung. Sollte irgendwann einmal ein Akku dazukommen, muss ich das Script natürlich anpassen.
                                            Wenn der IOBroker mal ausfällt dann läuft er auf 600W, bzw. startet am nächsten Morgen damit und bleibt da, bis das Script wieder regelt.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            681
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            35
                                            202
                                            45974
                                            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