Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Script zum Laden/Entladen von Zendure Solarflow

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Script zum Laden/Entladen von Zendure Solarflow

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @Murphy 0 last edited by

      @murphy-0 sagte: das geänderte Blockly

      Den beiden "stop" ist eine falsche Variable zugewiesen.

      M 1 Reply Last reply Reply Quote 0
      • M
        Murphy 0 @paul53 last edited by

        @paul53

        timeout4 ?

        paul53 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @Murphy 0 last edited by paul53

          @murphy-0 sagte: timeout4 ?

          Ja, das ist die einzige Timer-Variable im gezeigten Skript.

          EDIT: Um sicher zu gehen, dass die Stop auch funktionieren, würde ich eine Timer-Sperre ergänzen:

          Blockly_temp.JPG

          M 2 Replies Last reply Reply Quote 0
          • M
            Murphy 0 @paul53 last edited by

            @paul53

            Ja, die ist doch den beiden Stop zugewiesen.

            IMG_3546.jpeg

            paul53 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @Murphy 0 last edited by

              @murphy-0 sagte: die ist doch den beiden Stop zugewiesen.

              output ist die falsche Variable!

              M 1 Reply Last reply Reply Quote 0
              • M
                Murphy 0 @paul53 last edited by

                @paul53
                Ok, wie wäre es richtig?

                Wegen der Trennung auf Tag und Nacht braucht es ja eigentlich keine Umschaltpause?

                1 Reply Last reply Reply Quote 0
                • M
                  Murphy 0 @paul53 last edited by

                  @paul53 said in Script zum Laden/Entladen von Zendure Solarflow:

                  @murphy-0 sagte: timeout4 ?

                  Ja, das ist die einzige Timer-Variable im gezeigten Skript.

                  EDIT: Um sicher zu gehen, dass die Stop auch funktionieren, würde ich eine Timer-Sperre ergänzen:

                  Blockly_temp.JPG

                  Ok, zu spät gesehen!

                  C 1 Reply Last reply Reply Quote 0
                  • C
                    cordobadb @Murphy 0 last edited by cordobadb

                    @lesiflo : Vielen Dank für deine Arbeit und deine geteilten Erfahrungen!
                    Ich beginne auch gerade mich mit der Steuerung des Hypers zu befassen. Als Basis hätte ich gerne deinen Ansatz verwendet.
                    In Blockly müsste ich mich einarbeiten, was bestimmt geht, bin aber eher der Fan von Codezeilen. Wärst du vielleicht bereit dein neuesten Java-Script Code mit uns zu teilen?

                    Vielen Dank!

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

                      @cordobadb Kann ich gerne machen. Mein Script geht aber weit über das Blockly hinaus. Ich kann es ja mal einstellen und kurz beschreiben. Was du dann davon verwenden kannst must du schauen.

                      M 1 Reply Last reply Reply Quote 0
                      • M
                        Murphy 0 @lesiflo last edited by Murphy 0

                        Als absoluter Anfänger in iobroker habe ich eine Möglichkeit gesucht Einstellungen im Skript zu ändern und Überblick über die wichtigsten Hperdaten am Handy zu bekommen.
                        Quasi als Ersatz für die Zendure App.

                        Das habe ich nun mit Iqontrol für meine Bedürfnisse umgesetzt.

                        Lade und Entladegrenzen, Zeitfenster für Laden und Einspeisen habe ich damit umgesetzt.

                        IMG_0660.png

                        Alle Auswertungen rund um Photovoltaik und Hyper2000 mache ich mit openhab. Da bin ich halt schon länger dabei.

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

                          @cordobadb Moin, hier mal das Script. Ist aber sehr stark an meine Bedürfnisse angepasst und auch noch nicht ganz fehlerfrei.

                          hems.txt

                          Das ioBroker-JavaScript ist eine komplexe und intelligente Steuerung für zwei Zendure Hyper-Batteriespeicher (Hyper1 und Hyper2). Es berücksichtigt:

                          • PV-Produktion
                          • Strompreis (Tibber)
                          • Hausverbrauch
                          • SOC der Akkus
                          • Sonnenauf- und -untergang
                          • Auto-Ladevorgang
                          • VIS-Log-Ausgabe für visuelle Rückmeldung

                          Zentrale Aufgaben & Ziele des Skripts

                          1. Optimale Ladung/Entladung der Akkus
                            Priorisiert PV-Überschuss-Laden.
                            Nutzt günstigen Strompreis für zusätzliches Laden.
                            Verhindert Entladen bei günstigen Strompreisen oder Vorrang fürs Auto.
                            Erlaubt Entladung bei teurem Strompreis.

                          2. Speicher-Priorisierung:
                            Wenn der Speicher lädt und sein SOC unter einer definierten Schwelle ist, haben Speicher-Ladevorgänge Vorrang.

                          3. Strompreis-Integration (Tibber):
                            Laden bei günstigem Preis (aggressiv oder konservativ je nach Einstellung).
                            Entladen bei teurem Preis.

                          4. PV-Forecast-Nutzung:
                            Verwendet pvforecast-Daten für Tages- und Restprognose.

                          5. Nachtbedarf-Absicherung (AmountHours):
                            Nutzt SOC und Sonnenuntergangs-/aufgangszeit zur Berechnung von Tibber’s AmountHours.
                            Stellt sicher, dass genug Akkuenergie für die Nacht verbleibt.

                          6. Leistungsaufteilung zwischen Hyper1 und Hyper2:
                            Dynamisch je nach SOC-Differenz.
                            Leistung ist begrenzt auf xxx W je Gerät.

                          7. Hysterese und Modusverzögerung:
                            Verhindert zu schnelles Umschalten zwischen Lade- und Entlademodus (20s Delay).

                          8. VIS-kompatibles Logging:
                            Ausgabe der Vorgänge (PV, SOC, Ladeleistung, Preisstatus etc.) in einem HTML-Log-Table im VIS

                          C SchaafAlexander 2 Replies Last reply Reply Quote 0
                          • C
                            cordobadb @lesiflo last edited by

                            @lesiflo : Vielen Dank für das Sktipt und deine Erklärung! Ich werde mich mal durchwühlen, nach der Beschreibung scheint es aber einiges umzusetzten was ich auch vorhatte.

                            C 1 Reply Last reply Reply Quote 0
                            • C
                              cordobadb @cordobadb last edited by

                              @lesiflo : Gibt es einen physikalischen Grund für die 20s-Verzögerung?
                              Geht es um das potentielle E²PROM-Problem beim zu häufigen Schreiben des AC-Modus, oder siehst du noch andere Probleme in der HW, Akku, etc?

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

                                @cordobadb sagte in Script zum Laden/Entladen von Zendure Solarflow:

                                HW, Akku, etc

                                Die 20 Sekunden habe ich eingebaut um ein häufiges Schalten des Relais beim Laden/Entladen zu verhindern. Erst wenn länger als die 20 Sekunden Leistung aus den Akkus benötigt wird auf Entladen umgeschaltet. Am besten ausprobieren was bei dir passt. Zudem möchte ich verhindern, das das Auto aus dem Akku geladen wird. Wenn ich den Wert zu klein mache geht kurzfristig Leistung vom Akku ins eAuto, da die Regelung vom eAuto laden träger ist. Hierfür nutze ich noch die externe Software openWB.

                                M 2 Replies Last reply Reply Quote 0
                                • M
                                  Murphy 0 @lesiflo last edited by

                                  Ich verhindere auch dass der Hyper einspeist wenn das Auto geladen wird.
                                  Da ich aber eine ältere Heidelberg Home eco WB habe steuere ich das mit iobroker über den Mercedes.me Adapter.

                                  1 Reply Last reply Reply Quote 0
                                  • M
                                    Murphy 0 @lesiflo last edited by Murphy 0

                                    @lesiflo
                                    Welche unterste Zellspannung würdest du beim Einspeisen empfehlen.
                                    Ich glaube etwas über 3,1 Volt als Abschaltgrenze gelesen zu haben, finde es aber nicht mehr.

                                    3,2 bis 3,4 habe ich als Arbeitsbereich.

                                    Wildshunter 1 Reply Last reply Reply Quote 0
                                    • Wildshunter
                                      Wildshunter @Murphy 0 last edited by

                                      Halloechen,
                                      jetzt schaue ich seit längerem mal wieder in meine Scripte bzw. die Automatisiation (Script wie oben beschrieben lief 1a) und mir fällt leider folgendes auf, vielleicht hat jemand eine Idee:
                                      sobald mein Akku nun voll ist, schaltet er meine Solarmodule ab und kurz danach (alle 3-4 Sekunden) wieder auf Bypass, somit wieder kurzzeitig die Module dazu. Das geht bis Abends, bis sich der Akku entleert und am nächsten Tag genau das gleiche, Akku wird geladen und sobald er voll ist, schaltet Bypass "hin und her".
                                      Echt komisch, auch wenn ich das Script hier anhalte, bleibt es bei dem Verhalten (zyklische Bypass schalten / wieder aus).
                                      Neustes Firmware Update von Hyper 2000 wurde noch nicht durchgeführt. Ich ueberlege jetzt ob ich jetzt den ganzen lokalen MQTT wieder auf die Zendure Cloud lege und danach das Firmware Update durchführe.... um zu sehen, ob das irgendwie am Hyper 2000 liegt oder nicht...
                                      Gibt es sonst Ideen (Zendure Adapter nicht ganz aktuell, kann aber momentan wegen aelterer node Version nicht updaten)? Danke!
                                      (1.13.1 - zendure Adapter)

                                      M 1 Reply Last reply Reply Quote 0
                                      • M
                                        Murphy 0 @Wildshunter last edited by Murphy 0

                                        @wildshunter

                                        Wenn du auf deinem lokalen Broker bist kannst du deine Hardware jederzeit durch eine Bluetooth Verbindung updaten. Soll sogar stabiler sein als über die Zendure Cloud.

                                        Solange ich auf Fehlersuche bin setze ich nach jedem Schritt im Blockly wo ich mir im geringsten unsicher bin einen debug output.
                                        So komme ich dann den kleinsten Fehlern auf die Schliche.

                                        Ich bin im Moment dabei die Schreibzugriffe ins Flash zu minimieren.
                                        Der Debuglog sieht dann so aus:IMG_3588.png

                                        1 Reply Last reply Reply Quote 0
                                        • SchaafAlexander
                                          SchaafAlexander @lesiflo last edited by

                                          @lesiflo said in Script zum Laden/Entladen von Zendure Solarflow:

                                          @cordobadb Moin, hier mal das Script. Ist aber sehr stark an meine Bedürfnisse angepasst und auch noch nicht ganz fehlerfrei.

                                          hems.txt

                                          Das ioBroker-JavaScript ist eine komplexe und intelligente Steuerung für zwei Zendure Hyper-Batteriespeicher (Hyper1 und Hyper2). Es berücksichtigt:

                                          • PV-Produktion
                                          • Strompreis (Tibber)
                                          • Hausverbrauch
                                          • SOC der Akkus
                                          • Sonnenauf- und -untergang
                                          • Auto-Ladevorgang
                                          • VIS-Log-Ausgabe für visuelle Rückmeldung

                                          Zentrale Aufgaben & Ziele des Skripts

                                          1. Optimale Ladung/Entladung der Akkus
                                            Priorisiert PV-Überschuss-Laden.
                                            Nutzt günstigen Strompreis für zusätzliches Laden.
                                            Verhindert Entladen bei günstigen Strompreisen oder Vorrang fürs Auto.
                                            Erlaubt Entladung bei teurem Strompreis.

                                          2. Speicher-Priorisierung:
                                            Wenn der Speicher lädt und sein SOC unter einer definierten Schwelle ist, haben Speicher-Ladevorgänge Vorrang.

                                          3. Strompreis-Integration (Tibber):
                                            Laden bei günstigem Preis (aggressiv oder konservativ je nach Einstellung).
                                            Entladen bei teurem Preis.

                                          4. PV-Forecast-Nutzung:
                                            Verwendet pvforecast-Daten für Tages- und Restprognose.

                                          5. Nachtbedarf-Absicherung (AmountHours):
                                            Nutzt SOC und Sonnenuntergangs-/aufgangszeit zur Berechnung von Tibber’s AmountHours.
                                            Stellt sicher, dass genug Akkuenergie für die Nacht verbleibt.

                                          6. Leistungsaufteilung zwischen Hyper1 und Hyper2:
                                            Dynamisch je nach SOC-Differenz.
                                            Leistung ist begrenzt auf xxx W je Gerät.

                                          7. Hysterese und Modusverzögerung:
                                            Verhindert zu schnelles Umschalten zwischen Lade- und Entlademodus (20s Delay).

                                          8. VIS-kompatibles Logging:
                                            Ausgabe der Vorgänge (PV, SOC, Ladeleistung, Preisstatus etc.) in einem HTML-Log-Table im VIS

                                          Hallo @lesiflo ,

                                          vielen Dank für das Skript und die Erklärungen.
                                          Sind die Screenshots aus Post 1 noch aktuell zu dem hier erwähnten Umfang?
                                          Leider kann ich das txt nicht importieren und würde es gerne anhand der Screenshots in etwa nachbauen.

                                          Habe ein ähnliche Ausgangslage.

                                          • PV (SolarEdge mit 9.2kWh Batterie)
                                          • Tibber
                                          • OpenWB
                                          • Zendure 2400 AC (1-3 je nachdem wie gut das läuft 😄 )

                                          Vielen lieben Dank und weiterhin einen schönen Tag!

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

                                            @schaafalexander Das neue ist ein Java Script und hat mit dem ursprünglichen Blockly Script nichts mehr zu tun. Am besten das Blockly aus dem ersten Post nehmen. Das sollte klappen. Ansonsten das neue als Java Script importieren.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            837
                                            Online

                                            32.0k
                                            Users

                                            80.4k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            122
                                            9381
                                            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