Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Script PV-Prognoseabhängiger Verbraucherstart

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Script PV-Prognoseabhängiger Verbraucherstart

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      bastian-m last edited by bastian-m

      Moin,
      ich bin kein Programmierer, klicke mir aber gerne auch größere Blocklys zusammen. Ich habe mich schon vor 1,5 Jahren mit dem Thema befasst, wie man auf Basis der PV-Ertrags-Prognose von Soulcast den ioBroker gezielt zum optimalen Zeitpunkt Verbraucher einschalten lassen kann, um einen möglichst hohen Anteil des mit meiner PV-Anlage produzierten Stroms direkt zu verbrauchen. Herausgekommen ist mit der Zeit eine völlig unprofessionell zusammengezimmerte, gruselig umgesetzte Lösung mit Blockly-Scripten, die für mich aber tatsächlich funktionieren.
      Ich stelle euch hier meine Lösung vor, vielleicht will daraus ja jemand ein Stück saubere Software basteln.

      Ich benutze den pvforecast-Adapter, um die Ertragsprognose von solcast (Auflösung in 30min-Intervallen) abzuholen.

      Für meine Scripte habe ich folgende Datenpunkte angelegt. Erklärungen folgen.
      datenpunkte.png

      Das Script "PrognoseStatAusAdapter" triggert das Abholen einer frischen Prognose durch Neustart der pvforecast-Instanz. Die Prognose-Daten werden in einen String mit # als Trennzeichen überführt und im Datenpunkt "Ausgangsprognose" abgespeichert.
      (Blocklycode und Screenshots siehe weiter unten)

      Das eigentliche Script, welches dann den optimalen Startzeitpunkt für den Verbraucher ermittelt, nimmt über einen Datenpunkt die Eigenschafte des Verbrauchers entgegen. Ich ermittle z.B. für meine Wärmepumpe, ob es sich lohnt, die für ein bestimmtes 3-Stunden-Intervall am Tag hochzufahren und "Wärme auf Vorrat" zu produzieren. Die Wärmepumpe hat eine konstante Leistungsaufnahme von ca 3kwh. Ich übergebe das in 30min-Intervallen aufgelöst an das Script, indem der Datenpunkt, der die Heizung beschreibt ("Heizung-Leistungsaufnahme"), von mir auf 3#3#3#3#3#3 gesetzt ist. Man kann damit dann tatsächlich für andere Verbraucher auch nicht konstante Leistungsaufnahmen setzen. Meine Spülmaschine läuft z.B. 3h und verbraucht am Anfang für das Aufheizen und am Ende für das Trocken mehr als dazwischen. Dann könnte ein entsprechender Datenpunkt z.B. so aussehen: 2#0.5#0.5#0.5#1#1

      Das Blockly des Todes, in dem die eigentliche Prognose-Logik abläuft, simuliert im Grunde für jeden möglichen Einschaltzeitpunkt, wie viel der Verbraucher vom selbsterzeugten Strom verbrauchen würde und gibt dann die Einschaltzeit mit dem höchsten Eigenverbrauch zurück. Das alles tut jenes Script:
      (Blocklycode und Screenshots siehe weiter unten)

      Um jetzt z.B. für meine Wärmepumpe den optimalen Zeitpunkt zu bestimmen, wird der Datenpunkt "ausgangsprognose-datenpunkt-name" auf "Ausgangsprognose" gesetzt, weil sich in jenem die Ausgangsprognose für den Tag von Solcast befindet (siehe oben das Script PrognoseStatAusAdapter). verbraucher-datenpunkt-name ist "Heizung". Damit sucht das Scipt nach einem Datenpunkt namens Heizung-Leistungsaufnahem wo ich die Leistungsaufnahme beschrieben habe. Das Script gibt nach seinem Durchlauf dann drei Informationen in Datenpunkten zurück:

      Heizung-Startzeit - Die optimale Starzeit in der Form "11:30:00" - diese verwende ich dann in einem Cron-Script weiter um die Wärmepumpe hochzufahren.
      Heizung-Eigenverbrauch - Zu rein informativen Zwecken der prognostizierte Eigenverbrauch in kwh.
      Heizung-Restprognose - Ein String im Format der Ertragsprognose für den kompletten Tag, aber abzüglich dessen was an Stromübrig bleibt, wenn die Wärmepumpe zum berechneten Zeitpunkt eingeschaltet wird. Diesen Prognose-String verwende ich dann weiter, um z.B. im nächsten Schritt den besten Zeitpunkt zu ermitteln, wann sich auch noch die Spülmaschine einschalten soll. (dafür würden dann ausgangsprognose-datenpunkt nicht auf Ausgangsprognose sondern auf Heizung-Restprognose gesetzt und verbraucher-datenpunkt-name auf Test_Verbraucher-1)

      Um konkret meine Wärmepumpe zu managen, läuft folgendes Blockly:
      (Blocklycode und Screenshots siehe weiter unten)

      Jeden Morgen eine Stunden nach Ende des Sonnenaufgangs wird das schon gezeigte Script PrognoseStatAusAdapter gestartet, um eine frische Ausgangsprognose von Solcast abzuholen. ausgangsprognose-datenpunkt-name wird auf "Ausgangsprognose" und verbraucher-datenpunkt-name auf "Heizung" gesetzt. Das Hauptscript "Prognosesimulation" wird ausgeführt. (ich schicke mir die Ergebnisse per Signal zur Beobachtung aufs Handy). Dann wird das vierte und letzte Script meiner Sammlung startet: CRON_Heizungsstart. Es nimmt die ermittelte Uhrzeit aus dem Datenpunkt Heizung-Startzeit und triggert dann entsprechend die Wärmepump. Ich sehe gerade, ich habe die alte Version des Blocklys kopiert. Ich mache noch eine Abfrage, ob der prognostizierte Eigenverbrauch überhaupt hoch genug ist, damit sich das Hochfahren lohnt. An einem trüben Wintertag mit 2kwh Eigenverbrauch lasse ich die Wärmepumpe natürlich lieber kontinuierlich durchlaufen.

      Tja...ich glaube das war es an Material. Verständnisfragen könnt ihr gerne stellen, ich rechne nicht damit, dass ich in nächster Zeit die Kapazitäten für eine echte Weiterentwicklung habe, um das ganze in ein sauberes, für jedermann gut nutzbares Format oder gar einen echten Adapter zu überführen.
      Vielleicht fühlt sich jemand mit Skills ja dazu berufen.
      @haus-automatisierung - vielleicht was für Matthias, wenn der unwahrscheinliche Fall eintritt, dass du dich langweilst.

      Schönes Wochenende,
      Bastian

      Homoran 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @bastian-m last edited by Homoran

        @bastian-m bitte keinen externen Hoster nutzen!
        Bilder mit der Upload Funktion des Forums hochladen.

        B 1 Reply Last reply Reply Quote 0
        • B
          bastian-m @Homoran last edited by

          @homoran Das sind keine verlinkten Bilder, das ist Programmcode für die Blocklys. Die waren viel zu lang, um sie hier über die code-Tags einzubinden.

          Homoran 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @bastian-m last edited by

            @bastian-m sagte in Script PV-Prognoseabhängiger Verbraucherstart:

            das ist Programmcode für die Blocklys.

            auch diese hier dann über die uploadfunktion als .txt hochladen

            @bastian-m sagte in Script PV-Prognoseabhängiger Verbraucherstart:

            Das sind keine verlinkten Bilder

            Bilder von den Blocklys wären aber sehr sinnvoll, da der xml-Code alleine z.B. auf dem Handy nichts bringt, und nicht jeder fremden Code in seine Installation spülen wird.

            dieses und mehr wird hier erklärt
            https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1

            1 Reply Last reply Reply Quote 1
            • B
              bastian-m last edited by

              Das Blockly PrognoseSimulation in Wort und Bild 🙂

              PrognoseSimulation.txt

              verbrauchersteuerung1.png
              verbrauchersteuerung2.png
              verbrauchersteuerung3.png

              1 Reply Last reply Reply Quote 0
              • B
                bastian-m last edited by

                Blockly PrognoseStatAusAdapter

                PrognoseStatAusAdapter.txt

                StatAusAdapter.png

                1 Reply Last reply Reply Quote 0
                • B
                  bastian-m last edited by

                  CRON_Morgens_Ausgangsprognose_Heizung.txt

                  ausgangsprognose.png

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  980
                  Online

                  31.7k
                  Users

                  79.8k
                  Topics

                  1.3m
                  Posts

                  2
                  7
                  324
                  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