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.
    • Carsaab
      Carsaab @andi_grafa last edited by

      @andi_grafa
      Das hier ist der Typ meines Stromzählers.
      https://emh-metering.com/produkte/haushaltszaehler-smart-meter/ehzm/

      Hier ist die Bedienungsanleitung zu meinem Stromzähler.
      Ich konnte da zur phasengenauen Messung nichts finden.
      https://emh-metering.com/wp-content/uploads/2022/11/eHZM-BIA-D-1.11.pdf
      Siehe Seite 12.

      Damit reicht die saldierende Datenerfassung des Zählers völlig aus. Der Hichi Lesekopf ist die billigste Möglichkeit, die Daten zur Steuerung zu nutzen.

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

        @carsaab
        Ich meine z.B. das hier. Du willst den WR mit 30% laufen lassen? Habe "schreibe Object ID" noch nie genommen.
        bb876e07-82c8-4eea-9c3c-308d98c6a339-image.png

        Ich hätte aus dem Bauch heraus "steuere" dafür genommen.
        07e70b98-1da7-4796-91ce-5fdbd1cfb700-image.png

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

          @gonzokalle
          Ich hatte denselben "Bauch" und nahm zunächst
          bd8211f2-b1f5-4597-a623-aeba5ca4ba2e-grafik.png

          Ergebnis: "Error: String value received, number value expected"
          Dann hat sich die OpenDTU auf gehängt und habe sie vom Strom getrennt und neu gestartet. Es lief einfach nicht - keine Ahnung warum - und irgendwann auch keine Lust mehr zu suchen - also griff ich zu alternativen Ansteuerungen.
          Mit dem Script wie ich es geteilt habe läuft alles wie geölt. Als Value wird eine Zahl übergeben - super.
          Nach weiteren Verbesserungen habe ich dann nicht mehr gesucht, gut genug ist gut genug oder auch "Stumpf ist Trumpf".
          Ich habe mir vorher selber in Blogs einen Wolf gesucht und viele Posts gesehen, die überhaupt nicht zielführend waren.
          Als alles lief, dachte ich, das hilft dem einen oder anderen vielleicht, wenn er oder sie ein Script bekommt, das zumindest bei einem erfolgreich läuft.

          Und mit den 30% läuft der WR ja nur solange, wie er weniger als 300W liefert. Ab da wird in den Grenzen zwischen 30 und 100% geregelt. Da kann man auch andere Zahlen reinschreiben.
          Das ist unterhalb der Anmeldung und ich schreibe nicht ständig in die DTU. Die 30% entsprechen 450W, also habe ich noch einen Puffer, für den Fall das der WR in der Annäherung zu gesetzten Grenze unpräzise regelt und ich dann die nötige Grenze nicht erreiche - z.B. 450W (30%) Grenze gesetzt und er liefert nur bis 448W wegen einer Ungenauigkeit im WR. Dann passiert halt nichts. Also ein Puffer um auf der sicheren Seite zu sein. In allen IT Themen gehen wir alle oft davon aus, das alles präzise läuft. Die Annahme ist aber leider oft falsch und wenn Mess- und Regelungenauigkeiten reinspielen, dann ist die Verzweiflung oft nicht weit weg. Also habe ich mich hier mit der groben Kelle zufrieden gegeben.
          Ich rede mir ein, daß es gut sein sollte, wenn ich so wenig wie möglich regel und soviel nötig, aber nicht mehr.
          Deshalb habe ich die Regelung gesetzt.

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

            @carsaab

            Alles richtig was du sagst.
            Ich habe nur nachgefragt, weil ich es nachbauen will.
            Beim importieren des Blocklys bekomme ich einen Fehler.

            2a7ff627-1510-4ee7-a5df-fea1fe9e5fa8-image.png

            Noch zwei Fragen.
            Warum schaltest du den WR über die Steckdose?
            Steuerst du über openDTU-Adapter oder Mqtt-Adapter?

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

              @gonzokalle

              Habe es mal mit "steuere" nachgebaut.
              "WR Erzeugung" ist bestimmt Watt in DC?

              2901cb6e-b36d-4536-927a-605b4c57c2ac-image.png

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

                @gonzokalle

                AC Leistung. ist korrekt, es geht um die Wechselstromeinspeisung - der Stromzähler misst ja auch nur den Wechselstrom AC.
                Den WR schalte ich nicht über die Steckdose. Nur die DTU hängt an einer Steckdose, weil sie im Wohnzimmer ist und mich die LED stört. Der WR ist ohne Solarenergie ohnehin aus.
                Die ";15" sind 1500W/100 also das WR Limit /100. Wenn der WR 800W hat, dann müsste da :8 stehen.
                Die OpenDTU hängt am mqtt adapter
                Screenshot 2024-03-19 105202_1.jpg

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

                  @carsaab
                  Deswegen habe ich mich gewundert, warum du den WR ausschalten willst.😊
                  Wie bist du auf die "durch 15" gekommen?

                  5921239b-5cc2-4c06-91f6-0ef54cdc301b-image.png

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

                    @gonzokalle
                    3e46cc04-5a77-43ba-9e37-c3d24fcc1947-grafik.png

                    Die beiden Formeln sind identisch - Ich habe nur die WR Leistung / 100 gerechnet.

                    Mein eigener Zuschlag sind +30W also Ziel ist 30W Einspeisung. Bei -30W wäre das Ziel 30W Verbrauch.
                    300W/100=3
                    600W/100=6
                    800W/100=8
                    1500W/100=15
                    1600W/100=16
                    2200W/100=22
                    30KW/100=30000W/100=300
                    usw. usw. usw.
                    Damit berechne ich das Limit in Prozent der WR Leistung und schreibe das über OpenDTU in den WR in den Limits von 30% (meine willkürliche Untergrenze) und 100% (um Fehlermeldungen zu vermeiden, falls der WR mit >100% angesteuert wird).

                    G Samson71 2 Replies Last reply Reply Quote 0
                    • MIC1981
                      MIC1981 last edited by

                      Man kann dafür auch den PID-Adapter nutzen. Min und Max der Wechselrichter einstellen, Parameter für die Regelung einstellen und den Setpoint 0 und aktual Value auf den aktuellen Verbrauch am Zähler. Der Adapter hat den Vorteil, dass man auch mehrere (unterschiedliche) Wechselrichter entsprechend auf den Hausverbrauch regeln kann.

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

                        @carsaab
                        Sehr interessant.
                        Wären bei einem 800 W WR also eine /8.

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

                          @mic1981
                          Pid-Adapter kann ich nicht finden. Ist der noch in der Entwicklung?

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

                            @gonzokalle
                            Den gibt es im latest-Repository.

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

                              @carsaab
                              Das hier funktioniert auch für mehrere WR parallel einwandfrei und ist ziemlich vielseitig konfigurierbar.

                              https://github.com/reserve85/HoymilesZeroExport

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

                                @samson71

                                Ich habe mir einen günstigen ASUS PN41 mit Intel Celeron 5100 (13W) und Win11 Lizenz und 1TB M2.SSD gekauft. Das Paket war deutlich billiger als ein RASPI mit Peripherie im März 2023.
                                Da läuft IOBroker drauf und möchte daneben nur ungern weitere Scripte laufen lassen. Ich hatte genug zu tun alles im IOBroker ans laufen zu bringen (the devel you now).
                                "This script does not use MQTT, it's based on webapi communication." Das schreckt mich schon etwas ab, wenn ich ehrlich bin.
                                In dem Script würde mich der Algoritmus interessieren, der da angewendet wird.
                                Das Phython Script unterstützt bis zu 16 Inverter, soweit ich das sehe, und kann auch auf IOBroker und andere Plattformen zugreifen.
                                Das ginge hier auch, allerdings würden alle dasselbe %limit bekommen was aber auch ginge. Ich weiß zwar noch nicht wie IOBroker für 16 WR das limit schreiben kann. Geht bestimmt über Listen oder Variablen definieren. Mal sehen of Blockly auch in eine Liste schreiben kann.
                                Für meine Zwecke läuft das Script super. Daher geniesse ich das erst einmal. Danke für den Hinweis. Der PID Adapter interessiert mich auch, ich finde ihn aber nicht.

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

                                  @carsaab
                                  Ich habe mal etwas gespielt.
                                  Mit dem openDTU-Adapter klappt es wunderbar. Alle Werte wurden nach 5-10 Sekunden im WR eingestellt.
                                  03cad449-dc00-4864-ad7c-e853911207d5-image.png

                                  Verstehe ich gerade nicht. Meinst du AC vom Zähler?
                                  ef0f3695-68b9-4782-8a83-e1414d8ea51c-image.png

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

                                    @gonzokalle
                                    Zur Formel hast Du recht ist AC habe es oben korrigiert.
                                    Deine Lösung mit der Liste sieht gut aus.
                                    Die Formel für mehrere WR sähe dann so aus. Das ist halt keine Batterieladung inkludiert. Nulleinspeisung ohne berücksichtigten Akku.
                                    64f57adf-2b8a-4057-a490-29556cb403fd-grafik.png
                                    habe noch die Worddatei mit der Formel hochgeladen.
                                    Der Formeleditor ist besser - ich nutze aber Textmaker privat.
                                    formel nulleinspeisung.docx

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

                                      @carsaab
                                      Ich habe dein Blockly mal nachgebaut.
                                      3035baf9-c395-457a-88e3-29a05800f066-image.png
                                      Der Stromverbrauch (Shelly 3EM) und das Limit von WR geht andauernd hoch und runter.
                                      Ist das bei dir auch so?

                                      @ alle
                                      Ich würde das Blockly vom Anfang des Threads gerne mal probieren.
                                      Kann jemand ein einfaches Blockly für nur einen WR mal posten?

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

                                        @gonzokalle
                                        Ja das ist bei mir auch so.
                                        Der Trigger ist immer die Änderung im Stromverbrauch. Dann setzt das Script ein neues Limit sofern die Solaranlage mehr als die 30% liefert. Bei mir dann 450W.
                                        Wenn der Stromverbrauch hochgeht, dann geht das Limit hoch und auch wieder runter, wenn der Verbrauch sinkt.
                                        Sollte dann die Solaranlage bei gleichem Verbrauch mehr liefern, dann sinkt der Stromverbrauch aber das Limit bleibt gleich, weil sich die Summe aus Solarenergie und Stromverbrauch nicht ändert.
                                        Ich habe auch nur einen WR.
                                        Weil aber mein Hichi nur alle 10sek einen neuen Wert schickt, ist das ganze natürlich nicht genau, aber für unsere Zwecke reicht es.
                                        Vom Shelly 3EM müsste ja der Gesamtverbrauch gemessen werden. Wenn der Shelly im Sekundentakt einen Wert liefert, dann schreibt das Script auch jede Sekunde.

                                        Aber das Prinzip ist das gleiche. Ich nehme an, Du hast einen 600W WR im Einsatz.

                                        G T 2 Replies Last reply Reply Quote 0
                                        • G
                                          Gonzokalle @Carsaab last edited by

                                          @Carsaab
                                          Ja, der Shelly liefert im Sekundentakt.
                                          So schnell kann ich die Werte aber nicht in den WR schreiben.
                                          Deswegen habe ich den Trigger auf alle 10 Sekunden gesetzt.
                                          Ja, habe 600 W WR.

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

                                            So - ich habe zu experimentellen Zwecken mir noch einen HM300 von einem Kumpel geliehen.
                                            Steuern tue ich alles über den MQTT Adapter. Der erkennt die openDTU und die dort eingebunden Wechselrichter. Damit die Steuerung funktioniert muß der MQTT Adapter ohne "retain" flag senden! Sonst geht es nicht.
                                            d981d238-4994-4502-81e3-8baefe2ee10e-grafik.png

                                            Dann muß für jeden Hoymiles noch manuell der channel "cmd" und der state "limit_nonpersistent_relative" angelegt werden.
                                            5041975c-363d-4686-b759-db2ee5caa8d0-grafik.png
                                            Die Befehle findet Ihr hier: https://www.opendtu.solar/firmware/mqtt_topics/#inverter-limit-specific-topics
                                            Unter Alias könnt Ihr Euch dann die wichtigen Objekte erstellen oder Ihr verweist im Script direkt auf die Objekte.

                                            Eine Sequenz von 10Sekunden reichen mir - das regel ich über den Hichi Lesekopf, der den Stromverbrauch nur alle 10 Sekunden verschickt. Der Versuch in Echtzeit zu reagieren ist meistens ohnehin zum Scheitern verurteilt. Zum einen kann unsere "billige" Hardware das sowieso nicht, und dann gibt es ja noch die Physik https://de.wikipedia.org/wiki/Nyquist-Shannon-Abtasttheorem. Ich beabsichtige nicht daran was zu ändern.

                                            Für 2 Wechselrichter und ohne Benutzung von Scriptvarialblen funktioniert mein Script wie folgt:
                                            7de00be4-3a29-4ca5-a7a1-6c37070f20c9-grafik.png

                                            Das lässt sich zur Not auch für eine 30KW-peak Anlage mit 70 Panelen und 35 MicroWR und 9 DTUen ausbauen. Dem Iobroker ist das egal. Nur die Stromerzeugung über alle DTUen müsste man adieren.

                                            Um Fragen vorzubeugen:

                                            • das Teilen durch 18 ist oben erklärt.
                                            • ich habe keinen Speicher und will eine Nulleinspeisung - auch oben erklärt
                                            • Ja - es geht bestimmt eleganter - ich berechne für jeden WR das Limit separat obwohl sie dasselbe Limit bekommen.
                                              Ein Script mir einer berechnete Variablen wie hier funktioniert auch.
                                              7e706079-169f-4913-b78b-beac0dff6a63-grafik.png
                                            • Es läuft wie geschmiert - bei mir. Es wird bei Euch ohne etwas Frickelei nicht direkt aus der Box laufen vermute ich.
                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            696
                                            Online

                                            31.8k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

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