Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Script PV-Prognoseabhängiger Verbraucherstart

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

Script PV-Prognoseabhängiger Verbraucherstart

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
7 Beiträge 2 Kommentatoren 509 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • B Offline
    B Offline
    bastian-m
    schrieb am zuletzt editiert von bastian-m
    #1

    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

    HomoranH 1 Antwort Letzte Antwort
    0
    • B 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

      HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von Homoran
      #2

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

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      B 1 Antwort Letzte Antwort
      0
      • HomoranH Homoran

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

        B Offline
        B Offline
        bastian-m
        schrieb am zuletzt editiert von
        #3

        @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.

        HomoranH 1 Antwort Letzte Antwort
        0
        • B bastian-m

          @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.

          HomoranH Nicht stören
          HomoranH Nicht stören
          Homoran
          Global Moderator Administrators
          schrieb am zuletzt editiert von
          #4

          @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

          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          1 Antwort Letzte Antwort
          1
          • B Offline
            B Offline
            bastian-m
            schrieb am zuletzt editiert von
            #5

            Das Blockly PrognoseSimulation in Wort und Bild :-)

            PrognoseSimulation.txt

            verbrauchersteuerung1.png
            verbrauchersteuerung2.png
            verbrauchersteuerung3.png

            1 Antwort Letzte Antwort
            0
            • B Offline
              B Offline
              bastian-m
              schrieb am zuletzt editiert von
              #6

              Blockly PrognoseStatAusAdapter

              PrognoseStatAusAdapter.txt

              StatAusAdapter.png

              1 Antwort Letzte Antwort
              0
              • B Offline
                B Offline
                bastian-m
                schrieb am zuletzt editiert von
                #7

                CRON_Morgens_Ausgangsprognose_Heizung.txt

                ausgangsprognose.png

                1 Antwort Letzte Antwort
                0
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                493

                Online

                32.4k

                Benutzer

                81.5k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Anmelden

                • Du hast noch kein Konto? Registrieren

                • Anmelden oder registrieren, um zu suchen
                • Erster Beitrag
                  Letzter Beitrag
                0
                • Home
                • Aktuell
                • Tags
                • Ungelesen 0
                • Kategorien
                • Unreplied
                • Beliebt
                • GitHub
                • Docu
                • Hilfe