NEWS
Geräte zu Stundenpreisen (EPEX) oder PV-Überschuss betreiben
-
@qlink Moin aus dem verregneten Norddeutschland nach Österreich und alles Gute im neuen Jahr .
Ich schaue mir die API mal an und melde mich dann. Wenn es nicht zu umfangreich wird, helfe ich gerne. -
-
@qlink Hi, wenn Du mal schauen möchtest...
Dieses Blockly-Script holt die Daten von APIS ab (1.Teil) und mit dem 2.Teil hast Du Zugriff auf die Stundenpreise.
- Teil speichert die Daten im Datenpunkt unter 0_userdata.0.APIS_AT.Preise_heute
APIS beschreibt ja, dass die Daten um 1700 für den Folgetag "mit enthalten" sind. Wie das dann aussieht müssen wir noch schauen.
Lässt Du das Blockly-Script vor 1700 laufen, erhälst Du schon mal die Daten des aktuellen Tages.Den 1.Teil würde ich nur 1mal aufrufen und dann mit dem Datenpunkt (2. Teil) arbeiten, damit die API-Quelle nicht unnötig belastet wird.
... vielleicht beschreibst Du mal, was Du genau machen möchtest...
... warum APIS die Preise 1/4stündlich anbietet erschließt sich mir nicht. Wie ist denn die Preisgestaltung des Anbieters? -
@thomkast Hi,
Habe dein erstelltes Skript (SmartEnergy) mal importiert- vielen Dank dafür. Skript funktioniert nach dem Anlegen des DP. Ich würde gerne meinen Warmwasserspeicher mit dem günstigsten Stundenpreis aufheizen. Zur Zeit geht das zwar mit meinem Skript aber dieses vergleicht nicht die kommenden Preise sonder) startet die WP beim unterschreiten der eingestellten Grenze. Hast du eine Idee wie ich das lösen könnte?
-
Vielen Dank für deinen Support !
Ich habe unter Objekte einen DP "0_userdata.0.APIS_AT.Preise_heute" vom Typ "json" erstellt und danach dein Script gestartet.
Daraufhin erhalte ich folgenden Inhalt in dem DP:
- {"tariff":"EPEXSPOTAT","unit":"ct/kWh","interval":15,"data":[{"date":"2024-01-04T00:00:00+01:00","value":6.876},{"date":"2024-01-04T00:15:00+01:00","value":6.876},{"date":"2024-01-04T00:30:00+01:00","value":6.876},{"date":"2024-01-04T00:45:00+01:00","value":6.876},{"date":"2024-01-04T01:00:00+01:00","value":6.055},{"date":"2024-01-04T01:15:00+01:00","value":6.055},{"date":"2024-01-04T01:30:00+01:00","value":6.055},{"date":"2024-01-04T01:45:00+01:00","value":6.055},{"date":"2024-01-04T02:00:00+01:00","value":4.800},{"date":"2024-01-04T02:15:00+01:00","value":4.800},{"date":"2024-01-04T02:30:00+01:00","value":4.800},{"date":"2024-01-04T02:45:00+01:00","value":4.800},{"date":"2024-01-04T03:00:00+01:00","value":3.058},{"date":"2024-01-04T03:15:00+01:00","value":3.058},{"date":"2024-01-04T03:30:00+01:00","value":3.058},{"date":"2024-01-04T03:45:00+01:00","value":3.058},{"date":"2024-01-04T04:00:00+01:00","value":4.200},{"date":"2024-01-04T04:15:00+01:00","value":4.200},{"date":"2024-01-04T04:30:00+01:00","value":4.200},{"date":"2024-01-04T04:45:00+01:00","value":4.200},{"date":"2024-01-04T05:00:00+01:00","value":6.928},{"date":"2024-01-04T05:15:00+01:00","value":6.928},{"date":"2024-01-04T05:30:00+01:00","value":6.928},{"date":"2024-01-04T05:45:00+01:00","value":6.928},{"date":"2024-01-04T06:00:00+01:00","value":8.718},{"date":"2024-01-04T06:15:00+01:00","value":8.718},{"date":"2024-01-04T06:30:00+01:00","value":8.718},{"date":"2024-01-04T06:45:00+01:00","value":8.718},{"date":"2024-01-04T07:00:00+01:00","value":10.202},{"date":"2024-01-04T07:15:00+01:00","value":10.202},{"date":"2024-01-04T07:30:00+01:00","value":10.202},{"date":"2024-01-04T07:45:00+01:00","value":10.202},{"date":"2024-01-04T08:00:00+01:00","value":10.976},{"date":"2024-01-04T08:15:00+01:00","value":10.976},{"date":"2024-01-04T08:30:00+01:00","value":10.976},{"date":"2024-01-04T08:45:00+01:00","value":10.976},{"date":"2024-01-04T09:00:00+01:00","value":11.304},{"date":"2024-01-04T09:15:00+01:00","value":11.304},{"date":"2024-01-04T09:30:00+01:00","value":11.304},{"date":"2024-01-04T09:45:00+01:00","value":11.304},{"date":"2024-01-04T10:00:00+01:00","value":10.985},{"date":"2024-01-04T10:15:00+01:00","value":10.985},{"date":"2024-01-04T10:30:00+01:00","value":10.985},{"date":"2024-01-04T10:45:00+01:00","value":10.985},{"date":"2024-01-04T11:00:00+01:00","value":10.794},{"date":"2024-01-04T11:15:00+01:00","value":10.794},{"date":"2024-01-04T11:30:00+01:00","value":10.794},{"date":"2024-01-04T11:45:00+01:00","value":10.794},{"date":"2024-01-04T12:00:00+01:00","value":10.355},{"date":"2024-01-04T12:15:00+01:00","value":10.355},{"date":"2024-01-04T12:30:00+01:00","value":10.355},{"date":"2024-01-04T12:45:00+01:00","value":10.355},{"date":"2024-01-04T13:00:00+01:00","value":10.315},{"date":"2024-01-04T13:15:00+01:00","value":10.315},{"date":"2024-01-04T13:30:00+01:00","value":10.315},{"date":"2024-01-04T13:45:00+01:00","value":10.315},{"date":"2024-01-04T14:00:00+01:00","value":11.053},{"date":"2024-01-04T14:15:00+01:00","value":11.053},{"date":"2024-01-04T14:30:00+01:00","value":11.053},{"date":"2024-01-04T14:45:00+01:00","value":11.053},{"date":"2024-01-04T15:00:00+01:00","value":11.834},{"date":"2024-01-04T15:15:00+01:00","value":11.834},{"date":"2024-01-04T15:30:00+01:00","value":11.834},{"date":"2024-01-04T15:45:00+01:00","value":11.834},{"date":"2024-01-04T16:00:00+01:00","value":12.499},{"date":"2024-01-04T16:15:00+01:00","value":12.499},{"date":"2024-01-04T16:30:00+01:00","value":12.499},{"date":"2024-01-04T16:45:00+01:00","value":12.499},{"date":"2024-01-04T17:00:00+01:00","value":12.592},{"date":"2024-01-04T17:15:00+01:00","value":12.592},{"date":"2024-01-04T17:30:00+01:00","value":12.592},{"date":"2024-01-04T17:45:00+01:00","value":12.592},{"date":"2024-01-04T18:00:00+01:00","value":12.348},{"date":"2024-01-04T18:15:00+01:00","value":12.348},{"date":"2024-01-04T18:30:00+01:00","value":12.348},{"date":"2024-01-04T18:45:00+01:00","value":12.348},{"date":"2024-01-04T19:00:00+01:00","value":12.593},{"date":"2024-01-04T19:15:00+01:00","value":12.593},{"date":"2024-01-04T19:30:00+01:00","value":12.593},{"date":"2024-01-04T19:45:00+01:00","value":12.593},{"date":"2024-01-04T20:00:00+01:00","value":12.012},{"date":"2024-01-04T20:15:00+01:00","value":12.012},{"date":"2024-01-04T20:30:00+01:00","value":12.012},{"date":"2024-01-04T20:45:00+01:00","value":12.012},{"date":"2024-01-04T21:00:00+01:00","value":11.186},{"date":"2024-01-04T21:15:00+01:00","value":11.186},{"date":"2024-01-04T21:30:00+01:00","value":11.186},{"date":"2024-01-04T21:45:00+01:00","value":11.186},{"date":"2024-01-04T22:00:00+01:00","value":10.892},{"date":"2024-01-04T22:15:00+01:00","value":10.892},{"date":"2024-01-04T22:30:00+01:00","value":10.892},{"date":"2024-01-04T22:45:00+01:00","value":10.892},{"date":"2024-01-04T23:00:00+01:00","value":10.634},{"date":"2024-01-04T23:15:00+01:00","value":10.634},{"date":"2024-01-04T23:30:00+01:00","value":10.634},{"date":"2024-01-04T23:45:00+01:00","value":10.634}]}
War das soweit korrekt ?
Wenn ja, bin ich mir jetzt nicht ganz sicher wie die nächsten Schritte ausschauen sollen ...Beste Grüße
-
@qlink Wenn Du meine Fragen beantworten und vor allem auf "... was Du genau machen möchtest..." eingehen würdest könnte ich vielleicht mitdenken...
-
@peter666666 dazu müsste ich Deinen Gedanken erst komplett verstanden haben...
Ich vermute mal:
- Du möchtest Deinen WW-Speicher zu den günstigsten Stundenpreisen aufheizen
- teils auch "überheizen", wenn "in absehbarer Zeit" keine günstige Stunde mehr ansteht
Sollte das stimmen, stellt sich die Frage, welche Wärmemenge über welche Zeit aus dem WW-Speicher entnommen werden soll. Und wie viel Energie zum Aufheizen wiederum benötigt wird.
Oder anders ausgedrückt... Wie lange es dauert bis die MIN-Temperatur (durch Wärmeentnahme) erreicht wird. Und wie lange es dauert bis die MAX-Temperatur wieder erreicht wird.
Und eine weitere Perspektive... Wie lange der Speicher auf MIN-Temperatur verbleiben darf, um auf eine günstige Stunde zu warten.
Daraus wiederum die Frage, ob bei zu langer Wartezeit - unabhängig des Stundenpreises - auf eine höhere Temperatur, aber kleiner MAX aufgeheizt werden soll.Dies sind konzeptuale Fragen, zu denen Du bitte Deine Absicht und Abhängigkeiten aufschreiben müsstest...
Ich bin gespannt
-
@thomkast Hallo Thomas,
meine WP (10 Jahre alt und hat keine Möglichkeit mit Netzwerkkabel oder ähnlichem diese zu steuern) ist zur Zeit so eingestellt das diese ab 40°C WW zu heizen beginnt auf 48°C unabhängig vom Strompreis. Im Sommer habe ich mir mit 2 Shelly1 die Möglichkeit geschaffen die Funktion "Extra Brauchwasser" anzusteuern wodurch die WP beginnt die WW Temp. auf 60°C zu erhitzen und mit dem 2 Shelly wir die Funktion wieder deaktiviert wenn genug PV Überschuss vorhanden ist was auch funktioniert.
Jetzt im Winter ist nicht viel mit PV Überschuss und möchte in einem neuen Skript die günstigsten Strompreise je Tag nutzen diese Funktion Extrabrauchwasser zu starten wenn die WWT unter z.b. 54°C ist. Überheizen oder so kann meine WP nicht. -
@peter666666 ok und interessant. Meine WP könnte ich von extern dazu bringen, auf unterscheidliche Temperaturen zu erhitzen. Ist also ähnlich... Allerdings habe ich dazu noch keine Logik realisiert.
Für mich bleibt die Frage unter welchen Bedingungen die WP bis zu welcher Temperatur aufheizen soll? Was wären denn Deiner Meinung nach die Möglichen Parameter oder eine Beschreibung für eine "planbare Aufheizung"... s.o.
-
@thomkast Bedingung wäre für mich wie in meinem bestehenden Skript (steht weiter oben), das das "Aufheizen mit billigem Strom" aktiv sein muss (DP wird manuell am Tablet unter VIS geschalten), die WWT unter einen Wert sinkt (z.Z. 54°C). Dann sollte das Skript die billigste Stunde suchen (wobei ich noch nicht ganz sicher bin in welchen Zeitraum gesucht werden soll vielleicht 6h) wo die WP dann startet. Bei dem Start (Shelly1 schaltet den Kontakt Anforderung "Extra Brauchwasser" durch eine billige Energiestunde bis auf ca. 58°C aufheizen. Wenn diese Temp. erreicht ist (wird durch einen Shelly1+ gemessen) schaltet ein anderer Shelly die WP aus indem ich für 5 Sek. den Kontakt "Tarif Steuerung" oder so ähnlich schalte wodurch der Verdichter ausgeschaltet und die Anforderung "Extra Brauchwasser" zurückgesetzt wird (ohne diesen zweiten Shelly würde die Anforderung "Extra Brauchwasser" nämlich 3h aktiv bleiben und diese lässt sich nicht anders zurück setzten.
Die Energiepreise bekomme ich über den Adapter Awattar in DP`s auch in aufsteigender Reihenfolge (billigste Stunde zuerst) und auch über dein Skript von meinem Energieanbieter "Smart Energy" wobei hier die Liste nicht aufsteigend sortiert ist.
-
@Peter666666 @Qlink Nur als kurzes Update. Ich bin noch an einem Lösungsansatz dran, hänge aber gerade etwas fest. Melde mich aber auf alle Fälle wieder/noch.
-
@Peter666666 @Qlink
Jetzt hat es doch etwas länger gedauert einen Lösungsansatz zu finden. Vielleicht hilft Euch folgende Umsetzung...Skript: 2024-01-07_APIS_EPEX_sortieren_und_Laden-Aufheizen.json
Dazu ist wieder der Datenpunkt zur Aufnahme der APIS EPEX Preise nötig ;-).
Idee und Ablauf sind wie folgt:
-
- Die APEX Daten werden (bitte nur 1malig am Tag) geladen.
Erfolgt dies nach ??:?? Uhr, stehen auch gleich die Daten des Folgetages bereit.
- Die APEX Daten werden (bitte nur 1malig am Tag) geladen.
-
- Die Daten werden in einem Array aufbereitet und nach Preis aufsteigend sortiert.
Somit stehen die Stunden mit den günstigsten EPEX-Preisen am Anfang des Arrays.
- Die Daten werden in einem Array aufbereitet und nach Preis aufsteigend sortiert.
-
- Mit dem Wert wird festgelegt, für wieviele Stunden eine Ladung/Aufheizung vorgenommen werden soll. Dies sind "NICHT" die "NÄCHSTEN" z.B. 5h, sondern erstmal nur 5 Stunden.
-
- Dann werden die günstigsten 5h wieder in die ursprüngliche Reihenfolge gebracht, da die günstigsten Stunden ja nicht unbedingt alle hintereinander liegen müssen.
-
- Dann wird ein Zeitplan gestartet, der zu jedem Stundenbeginn prüft, ob die aktuelle Stunde eine der günstigen 5 Stunden ist.
-
- Abhängig, ob dies zutrifft, wird die Ladung/Aufheizung gestartet oder beendet.
Dazu werden dann noch Nachrichten abgesetzt, die den Verlauf aufzeigen.
*7. Sind die 5 (im Beispiel) günstigsten Lade-/Aufheizstunden durchlaufen worden, wird eine finale Nachricht abgesetzt und der Zeitplan beendet.
- Abhängig, ob dies zutrifft, wird die Ladung/Aufheizung gestartet oder beendet.
Die gesamte Routine muss also wiederkehrend gestartet werden und kalkuliert immer wieder neu.
Hoffe es ist was für Euch dabei und freue mich auf Eure Rückmeldung. Gruß, Thomas
-
-
@thomkast vielen Dank Thomas. Ich habe das Skript welches du ein paar Posts weiter oben geschrieben hast bzgl. Preise holen gestartet und das neue Skript läuft jetzt auch. Hab die Anzahl der Heizstunden mal auf 1 gesetzt das meine WP nicht mehr benötigt. Ich lasse das Skript mal laufen und werde dann morgen berichten was im Log steht.
-
@peter666666 Hi Peter. Anbei das Skript mit den Änderungen, so dass die bereits vergangenen Stunden nicht mehr berücksichtigt werden und die Meldungen der nächsten Aufheiz-/Ladestunde nur einmal abgesetzt wird. Gruß, Thomas
-
Vielen Dank für deine Hilfe !
Ich kämpfe grad parallel noch etwas mit der Ansteuerung meiner Wärmepumpe, daher bin ich grad nicht so responsiv.
Sobald ich das Thema gelöst habe werde ich mich deinen Scripten widmen...Beste Grüße
-
@thomkast Vielen Dank Thomas. Werde ich testen! LG Peter
-
@Peter666666 Hi Peter, nun hat es doch etwas länger gedauert... Aber
Anbei das überarbeitete Skript. 2024-01-26_APIS_AT_EPEX-Steuerung.json
Die verwendeten Datenpunkte sind unverändert geblieben.Das Skript setzte nun den DP "WP_Freigabe" bei passender Stunde auf "true" und setzt den DP nach überschreiten der "Anzahl_Heiz-Lade-Stunden" wieder auf "false" zurück.
Beachte bitte, dass das Skript beim Start (, bzw. wenn Du es dann aufrufst) direkt auf die "aktuelle Stunde" prüft. Sollte die aktuelle Stunde eine der günstigsten Stunden sein, wird der DP direkt auf "true" gesetzt. Je nach dem wieviel Minuten bereits von der aktuellen Stunde vergangen sind, steht in dieser Stunde dann natürlich keine komplette Stunde mehr zur Verfügung...
Bsp: es ist 10:23 Uhr -> das Script wird aufgerufen
-> günstigste Stunden werden zusammengestellt
-> die erste günstige Stunde liegt von 10:00 bis 10:59
-> Es wird geprüft, ob die aktuelle eine günstige Stunde ist
-> ja aktuelle Stunde ist günstige Stunde
-> DP wird auf "true" gesetzt
-> die nächste Prüfung auf günstige Stunde erfolgt erst um 11:01
... solltest Du mit einer "Anzahl_Heiz-Lade-Stunden" = 1 arbeiten, bleibt der DP nur noch für 37 Minuten auf "true".-----------------------------------------
Eines ist noch gaaaaaanz wichtig !
Solltest Du den Skript-Teil in Deine Lösung einbinden, ist es wichtig, dass Du den CRON im Script-Teil immer stoppst. Mit jedem Aufruf wird ein CRON gesetzt. Rufst Du den Script-Teil mehrfach auf, laufen mehrfach die CRONs ab. Also immer beim Aufruf den STOP davor setzen...
Oder Du setzt den STOP direkt am Anfang des Scripts. Das wäre das Sicherste.
... habe ich jetzt nicht mehr gemacht, da ich das Script bereits exportiert hatte ...Ich hoffe dies hilft Dir weiter ;-). Gruß, Thomas
-
@thomkast Hi Thomas,
vielen Dank für Deine tolle Arbeit. Ich bin auch gerade dabei, auf dynamische Strompreise umzustellen, und werde ab 1.4.2024 auch von SmartEnergy beliefert.
Deshalb möchte ich meine großen Verbraucher (WP, WM, GS...) zu den günstigsten Stunden laufen lassen, bzw. eher zu den teuersten Stunden bei WP eine Temperatur-Absenkung machen (über Shelly Plus 1 - Kontakt). Mir ist aufgefallen, dass vor allem die teuersten Stunden bei den EPEX Tages-Preisen raus stehen - und die WP läuft ja eigentlich jede Stunde für 20-25 min, um die Raumtemperatur zu halten. Es wird also wahrscheinlich nicht reichen, diese nur an 5-6 günstigsten Stunden des Tages laufen zu lassen, und trotzdem nicht zu frieren...
Habe gerade versucht, Deine scripte in IOB zu importieren, bekomme aber diese Fehlermeldung:
"TypeError: Invalid block definition for type: pushover"Das blockly scheint aber trotzdem komplett zu sein.
Oder habe ich was übersehen? Oder was mache ich falsch?Ich brauche diese beiden scripts für mein Vorhaben:
2024-01-26_APIS_AT_EPEX-Steuerung.json
2023-01-30_TIBBER_script_BLOCKLY.json
Richtig?Sorry für meine Fragen, ich bin noch relativ neu in IObroker...
Danke für die Antworten!
Lg
Alex -
Fehler gefunden:
"TypeError: Invalid block definition for type: pushover"
Habe kein Pushover installiert, darum hab ich das jetzt mal durch Telegram Nachricht ersetzt.
Hatte auch übersehen, den DP "WP_Freigabe" anzulegen (ging irgendwie unter)
Jetzt läuft das script mal zum Testen. Hab auch schon eine "Telegram Nachricht" erhalten, dass die nächste Aufheizstunde um 23:00 Uhr beginnt - das passt! Super!
Werde die nächsten Tage mal beobachten, wie es läuft, und wie ich das ganze für meine WP-Heizungs-Steuerung gebrauchen kann. Ich denke, ich werde die "Anzahl_Heiz-Lade-Stunden" auf 20 stellen. Dann müsste er ja in den 4 teuersten Stunden ausschalten... bzw. die "WP_Freigabe" auf "false" setzten.
Mal schauen, ob das so praktikabel ist für unsere Heizung. Im ungünstigsten Fall, liegen hald die 4 teuersten Stunden am Abend alle hintereinander - dann wird's wahrscheinlich ungemütlich im Haus
Bin für Euren Input dankbar - vielleicht hat das ja schon jemand umgesetzt und kann über Erfahrungen berichten
-
@aley said in Geräte zu Stundenpreisen (EPEX) oder PV-Überschuss betreiben:
Im ungünstigsten Fall, liegen hald die 4 teuersten Stunden am Abend alle hintereinander - dann wird's wahrscheinlich ungemütlich im Haus
Genauso ist es heute die 4 teuersten Stunden sind von 17:00-21:00 Uhr...