Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Hausspeicher laden, dynamisch, tibberlink, Scripte

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Hausspeicher laden, dynamisch, tibberlink, Scripte

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      babl @MarKum last edited by

      @markum bitte das neuste pv forecast script runterladen, da es leider einen bug gibt, wenn der hausspeicher nur unter 10% geladen werden soll, da sich dann die beladedauer des speichers nicht mehr anpaßt und dadurch das ganze unberücksichtigt wird.

      es ist eigentlich nur ein trigger block dazu gekommen der den wert sollte er unter 10 eingetragen werden wieder auf 10 anhebt und somit sich die beladedauer zeit wieder ändert, damit sollte es passen.

      Pv-Forecast-Variable - version1.txt

      Sorry dafür.

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

        @diamand2k22 sagte in Hausspeicher laden, dynamisch, tibberlink, Scripte:

        @arteck

        Hallo Arteck, bin gerade am testen von mehreren Skripten, was für mich das beste ist! Gibt es sowas auch schon für den Fronius Gen24 WR? Ansonsten müsst ich mir mal dein Skript auf Fronius WR umschreiben. Ich denke, dass sollte nicht so kompliziert sein.

        Hallo,
        hast Du inzwischen was für die Kombi Gen24 + BYD erstellen können?

        1 Reply Last reply Reply Quote 0
        • A
          ArnoD last edited by

          Hallo in die Runde,
          ich will mein Script Charge-Control für den E3DC mit einer dynamischen Ladesteuerung mit Tibber erweitern.
          Ich habe mir hier alle Beiträge durchgelesen und mir einige Anregungen geholt, wie man so was programmieren könnte.
          Da ich gerne vorher ein Konzept haben will, um im Nachgang nicht wieder alles neu zu programmieren, habe ich mir was überlegt.
          Mich würde eure Meinung interessieren, ob das so funktionieren könnte, da ihr mit Tibber bereits mehr Erfahrung habt als ich.
          Da ein Bild mehr als tausend Worte sagt... 😉 :
          04f89fc9-8d5a-4737-858a-b198c670fde0-grafik.png

          Im Bild ist die Preisvorschau von Tibber für die nächsten zwei Tage dargestellt und blau umrandet die Reichweite der Batterie bei einer durchschnittlichen Grundlast von 1000 Wh (Diese wird vom Script berechnet)
          Die zugrunde gelegten Daten könnt ihr aus der Tabelle im Bild entnehmen.
          Ich habe mir jetzt folgende Logik überlegt:
          Jede Stunde wird innerhalb der Reichweite der Batterie der günstigste Preis ermittelt
          (im Beispiel 0,203 € ab 2:00 Uhr). Diese Überprüfung findet jede Stunde statt, aber nehmen wir mal an, dass bis 2:00 Uhr kein günstigerer Preis erreichbar ist und die Batterie bis dahin ziemlich leer ist.
          Um 2:00 Uhr wird geprüft, wann der Preis wieder günstiger ist als der aktuelle und über wie viel Stunden das der Fall ist.
          (In dem Beispiel hätten wir um 3 – 5 Uhr niedrigere Preise und ab 6 Uhr einen höheren Preis.)
          Da der Strompreis bereits um 3 Uhr günstiger ist und das bis 5 Uhr wird die Ladeleistung so berechnet, dass in 3 h (2-5 Uhr) der eingestellte SOC-Wert (im Beispiel 80%) erreicht wird.
          Das wären bei dem Speicher ca. 9000 W oder max. Ladeleistung der Batterie.
          Da jede Stunde geprüft wird, ob ein günstigerer Strompreis mit der Batteriereichweite erreicht werden kann, würde um ca. 3 Uhr das Laden aus dem Netz beendet werden, da der nächste günstigere Zeitpunkt um 10:00 Uhr in Reichweite rückt. Um 10:00 Uhr würde sich das ganze wiederholen.
          Bei jeder Ladung aus dem Netz merkt sich das Script den Strompreis und berechnet daraus den Batteriepreis anhand vom eingestellten Wirkungsgrad. Entladen der Batterie wird nur freigegeben, wenn der Netzpreis höher ist.
          Hoffe, ihr könnt mir so weit folgen.

          Jetzt kommt noch die Prognose ins Spiel:
          Von Sonnenaufgang bis 4 h vor Sonnenuntergang (wird über die Astro Funktionen automatisch übers Jahr angepasst) wird mit der prognostizierten PV-Leistung gerechnet und die Batterie aus dem Netz nur soweit geladen, dass in diesem Zeitraum die prognostizierte PV-Leistung gespeichert werden kann. Sollte die Prognose falsch sein, wird das nach einer Stunde bei der stündlichen Überprüfung vom Script festgestellt und nach der oberen Logik korrigiert.

          Was haltet ihr davon, habe ich noch was übersehen?

          arteck 1 Reply Last reply Reply Quote 0
          • B
            babl last edited by

            @arnod das klingt soweit gut, so ähnlich mache ich das auch aber glaub mir da kommen viele hürden auf dich noch zu, denn auf dem Blatt klingt das alles sehr gut, doch dass es dann praktisch so läuft, viel Spass.

            1 Reply Last reply Reply Quote 0
            • arteck
              arteck Developer Most Active @ArnoD last edited by arteck

              @arnod nimm mein script und pass die Datenpunkte an..

              das ding macht das was du willst..

              https://github.com/arteck/SMA_forecast_charging/blob/master/SUNNY_TRIPOWER _10.0_SE/bat_regelung.js

              A J A 3 Replies Last reply Reply Quote 0
              • A
                ArnoD @arteck last edited by

                @arteck
                Super, dann werde ich mir dein Script mal ansehen.
                Das würde mir jede Menge Arbeit sparen 🙂
                Danke.

                1 Reply Last reply Reply Quote 0
                • D
                  Diamand2k22 last edited by

                  @arnod

                  ich verwende selbst das Skript von @arteck.
                  alles was du oben beschrieben hast, bringt das Skript mit!
                  Musst es halt noch auf dein WR anpassen je nach Hersteller!

                  1 Reply Last reply Reply Quote 0
                  • B
                    babl last edited by

                    Für alle die PV Forecast benutzen, das geht nicht mehr so wie es einmal war, siehe https://github.com/iobroker-community-adapters/ioBroker.pvforecast/issues/177#issuecomment-2408964558

                    ich weiß nicht inwiefern es das script von @arteck betrifft aber meins auf jeden fall, entweder ihr switcht um auf die solarprognose und ändert alle werte oder ihr wartet ob es eine lösung von pv forecast geben wird, ich kann es momentan nicht sagen, ich bin auf jeden fall dran um was anderes zu installieren, wo wirklich nur ein paar konfig punkte ausgefüllt werden müssen und dann läuft das ding, aber leider bin ich noch nicht soweit.

                    michiproep created this issue in iobroker-community-adapters/ioBroker.pvforecast

                    closed Axios Error AxiosError: Request failed with status code 403 #177

                    arteck 1 Reply Last reply Reply Quote 0
                    • arteck
                      arteck Developer Most Active @babl last edited by

                      @babl wenn du genuer lesen würdes..

                      es steht dass die alte vorgehensweise nicht mehr unterstützt wird und man auf die Abholung der Daten pro Dachausrichtung wie es auch auf deren homepage angeben wird, umsteigen soll in der Api

                      mein script macht das ehh.. deshalb reichte mir der adapter nicht

                      1 Reply Last reply Reply Quote 0
                      • B
                        babl last edited by

                        @arteck dann ist es ja gut, wenn du das schon vorher so gemacht hast, ich habe ja auch nur geschrieben inwiefern dein Script betroffen ist, dass ich das nicht weiss nicht mehr und nicht weniger.

                        1 Reply Last reply Reply Quote 0
                        • J
                          james4711 @arteck last edited by

                          @arteck Hallo! Gibt es eventuell auch eine Version die mit Awattar bzw. Huawei (WR+Batterie) zusammenarbeitet?? Danke!

                          arteck 1 Reply Last reply Reply Quote 0
                          • arteck
                            arteck Developer Most Active @james4711 last edited by

                            @james4711 nope.. und von mir wird es keine geben..da es schon ein krampf war SMA da einzubinden so dass es funktioniert

                            1 Reply Last reply Reply Quote 0
                            • B
                              babl last edited by

                              So ich habe mich mal hingesetzt und anhand des PV Forecast Adapters und dem "Das Wetter" Adapter ein Javascript geschrieben, daß anhand der Bewölkung die PV Forecast optimiert. Bei 100% Bewölkung habe ich einen Korrekturfaktor von 0.2 angenommen.

                              Da ich bei mir viel mit Nebel zu kämpfen habe liegen die PV Vorhersage Adapter alle weit weit weg vom eigentlichen Ertrag, heute wurden 10 vorausgesagt aktuell sind wir bei 2.5, gestern waren es laut voraussage 15 das optimierte kam auf 10.4, reell waren es 10,2. Vielleicht kann es ja irgendjemand brauchen, es werden nur 2 Werte generiert, Summe today und summe tomorrow.

                              const minOutputFactor = 0.2; // Mindestprozentsatz an Leistung bei 100% Wolkenbedeckung
                              
                              // Funktion zur Erstellung von Datenpunkten, falls sie noch nicht existieren
                              function createStateIfNotExists(id, initialValue, callback) {
                                  if (!existsState(id)) {
                                      createState(id, initialValue, { type: 'number', unit: 'kWh', read: true, write: true }, callback);
                                  } else {
                                      callback();
                                  }
                              }
                              
                              // Funktion zur Berechnung und Anpassung der PV-Forecasts basierend auf Wolkenbedeckungswerten
                              function calculatePvForecast() {
                                  try {
                                      console.log('--- Sofortige Berechnung der PV Forecasts beim Skriptstart ---');
                              
                                      let totalAdjustedPvToday = 0;
                                      let totalAdjustedPvTomorrow = 0;
                              
                                      // Berechnung für heute (Stunden 5 bis 21)
                                      for (let hour = 5; hour <= 21; hour++) {
                                          const hourString = hour.toString().padStart(2, '0');
                                          const pvForecastToday = getState(`pvforecast.0.summary.energy.hoursToday.${hourString}:00:00`).val;
                                          const cloudsToday = getState(`daswetter.0.NextHours.Location_1.Day_1.Hour_${hour}.clouds_value`).val;
                              
                                          const adjustedPvToday = (pvForecastToday * Math.max(minOutputFactor, (1 - cloudsToday / 100))).toFixed(2);
                                          totalAdjustedPvToday += parseFloat(adjustedPvToday);
                                          console.log(`Heute, Stunde ${hour}: Wolkenbedeckung = ${cloudsToday}%, Originaler PV-Wert = ${pvForecastToday} kWh, Angepasster PV-Wert = ${adjustedPvToday} kWh`);
                                      }
                              
                                      // Speicherung des Gesamtwertes für heute
                                      createStateIfNotExists("0_userdata.0.PV-Forecast-optimiert.Heute_Gesamt", 0, () => {
                                          setState(`0_userdata.0.PV-Forecast-optimiert.Heute_Gesamt`, parseFloat(totalAdjustedPvToday.toFixed(2)));
                                          console.log(`Gesamter angepasster PV-Wert für heute: ${totalAdjustedPvToday.toFixed(2)} kWh`);
                                      });
                              
                                      // Berechnung für morgen (Stunden 5 bis 21)
                                      for (let hour = 5; hour <= 21; hour++) {
                                          const hourString = hour.toString().padStart(2, '0');
                                          const pvForecastTomorrow = getState(`pvforecast.0.summary.energy.hoursTomorrow.${hourString}:00:00`).val;
                                          const cloudsTomorrow = getState(`daswetter.0.NextHours.Location_1.Day_2.Hour_${hour}.clouds_value`).val;
                              
                                          const adjustedPvTomorrow = (pvForecastTomorrow * Math.max(minOutputFactor, (1 - cloudsTomorrow / 100))).toFixed(2);
                                          totalAdjustedPvTomorrow += parseFloat(adjustedPvTomorrow);
                                          console.log(`Morgen, Stunde ${hour}: Wolkenbedeckung = ${cloudsTomorrow}%, Originaler PV-Wert = ${pvForecastTomorrow} kWh, Angepasster PV-Wert = ${adjustedPvTomorrow} kWh`);
                                      }
                              
                                      // Speicherung des Gesamtwertes für morgen
                                      createStateIfNotExists("0_userdata.0.PV-Forecast-optimiert.Morgen_Gesamt", 0, () => {
                                          setState(`0_userdata.0.PV-Forecast-optimiert.Morgen_Gesamt`, parseFloat(totalAdjustedPvTomorrow.toFixed(2)));
                                          console.log(`Gesamter angepasster PV-Wert für morgen: ${totalAdjustedPvTomorrow.toFixed(2)} kWh`);
                                      });
                              
                                  } catch (error) {
                                      console.warn(`Fehler in der calculatePvForecast-Funktion: ${error.message}`);
                                      console.warn(error.stack);
                                  }
                              }
                              
                              // Sofortige Ausführung der Berechnung beim Start des Skripts
                              calculatePvForecast();
                              
                              // Geplante Ausführungen zur Aktualisierung der PV-Forecasts
                              schedule("5 0 * * *", calculatePvForecast);   // Tägliche Ausführung um 0:05 Uhr
                              schedule("5 5 * * *", calculatePvForecast);   // Tägliche Ausführung um 5:05 Uhr
                              schedule("5 12 * * *", calculatePvForecast);  // Tägliche Ausführung um 12:05 Uhr
                              
                              
                              A 1 Reply Last reply Reply Quote 3
                              • D
                                Diamand2k22 last edited by

                                @babl

                                interessantes Skript, danke! Werd ich mal bei mir testen.

                                1 Reply Last reply Reply Quote 0
                                • A
                                  Aiouh @arteck last edited by

                                  @arteck Frage vom dummy
                                  bevor ich in die falsche Richtung laufe... sehe ich das Richtig, dass ich alle vier scripts benötige und die darin vorhandenen Datenpunkte entsprechend meines setups (Victron,Pylontech,Tibber,Solcast) anpassen muss? Die View dann entsprechend auch (optional aber sehr hilfreich).
                                  7d36d1bf-da20-4f9c-862f-12f46a5c7360-image.png

                                  1 Reply Last reply Reply Quote 0
                                  • A
                                    Aiouh @babl last edited by

                                    @babl Da wir hier leider auch viel Nebel haben, habe ich das Skript auch mal installiert. PV Vorhersage für Heute war 10,4 kWh, das Skript hat 7,06 kWh prognostiziert, tatsächlich waren es 6,3 kWh. Die Richtung stimmt schon mal. Ich werde das in jedem Fall weiter laufen lassen und sehen wie es sich weiter verhält.
                                    DANKE für das Skript

                                    B 1 Reply Last reply Reply Quote 1
                                    • B
                                      bolliy Developer @Aiouh last edited by

                                      @babl würdest du deine letzte PV-forecast Version mit Beschreibung nochmal hochladen.
                                      So wie ich das verstanden habe hast du ein paar Änderungen später vorgenommen, die ich manuell nachziehen müsste.
                                      Vielen Dank für deine Mühen!

                                      LG Stephan

                                      B 1 Reply Last reply Reply Quote 0
                                      • B
                                        babl @bolliy last edited by

                                        @bolliy du musst nur den pv forecast wert mit dem pv forecast wert des scriptes austauschen wenn du das meinst. ansonsten habe ich nichts vorgenommen, die aktuelle version ist immer noch im post bereich 108 zu finden

                                        A 1 Reply Last reply Reply Quote 1
                                        • A
                                          Aiouh @babl last edited by Aiouh

                                          @babl Ich habe mal all deine Scripts zum dynamischen Laden auf meine Landschaft (Victron/Pylontech) angepasst und bin jetzt mächtig gespannt wie das läuft wenn ich ab 1.Dezember den Strom von Tibber bekomme. Werde berichten und/oder ggfs. nochmal um Unterstützung bitten 😊 . An der Stelle schon mal Vielen Dank für die tolle Arbeit

                                          1 Reply Last reply Reply Quote 0
                                          • M
                                            mik-le-kn70 last edited by

                                            Hallo,

                                            hat schon jemand das Script für einen Senec V3 angepasst und würde seine Versionen hier zur Verfügung stellen, ich bearbeite die Scripte gerade nach meinem Verständnis und werde weiter berichten.

                                            Vielen Dank für eure Antworten.

                                            VG Mike

                                            D icebear 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            770
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly
                                            28
                                            187
                                            25129
                                            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