NEWS
Schaltwert anhand von Integral?
-
Hallo, ich versuch mal mein Anliegen zu erklären:
Ausgangssituation ist, das die WP anhand von entweder PV-Überschuss oder des günstigsten Strompreises das Warmwasser einmal täglich macht. Dazu habe ich ein Blockly gebaut welches auch sehr gut funktioniert.
Nun kann es vorkommen, das grade die Heizung gelaufen ist oder noch läuft, die Warmwasserbereitung startet. Das finde ich etwas suboptimal und würde dies gern ändern.
Bei einer Vaillant Wärmepumpe wird anhand eines Energie Integral gearbeitet, jetzt wäre es optimal wenn man die Warmwasserbereitung startet, wenn das Integral abgelaufen ist und eigentlich die Heizung starten sollte.
Das ganze mit dem Integral sieht so aus:
Immer bei den gelben Kreisen, wenn das Integral einen Wert von -100 erreicht hat, und die Vorlauf-Isttemperatur = Vorlauf-Solltemperatur fängt die WP an zu laufen.
Jetzt würde ich gern, das mein Blockly zum einschalten der Warmwasserbereitung (zur besten Zeit) entweder diese vorzieht oder wartet bis das nächstemal das Integral die -100 erreicht.
Der Wert des Energie Integrals liegt als DP vor. Das Problem was ich hab ist, wenn ich jetzt auf PV-Überschuss oder Preis prüfe und dann sage, 'und EI = -100' weiß ich ja nicht fällt das Integral grad ab, oder steigt es an.Ich hoffe ich habs einigermaßen verständlich erklärt.
Kann man das irgendwie lösen?
-
@icebear sagte in Schaltwert anhand von Integral?:
Kann man das irgendwie lösen?
Eine von wahrscheinlich hundert möglichen Lösungen wäre, mit dem Trigger "Integral <=-100" in die Datenbank zu schauen und zu prüfen, ob die Werte gerade steigen oder fallen:
from(bucket: "dein_bucket") |> range(start: -1h) // Zeitraum anpassen, falls nötig |> filter(fn: (r) => r["_measurement"] == "deine_messung") |> filter(fn: (r) => r["_field"] == "value") |> sort(columns: ["_time"], desc: true) |> limit(n: 2) |> difference() |> map(fn: (r) => ({ _time: r._time, _value: if r._value > 0 then "steigend" else "fallend" }))
-
@icebear said in Schaltwert anhand von Integral?:
Der Wert des Energie Integrals liegt als DP vor. Das Problem was ich hab ist, wenn ich jetzt auf PV-Überschuss oder Preis prüfe und dann sage, 'und EI = -100' weiß ich ja nicht fällt das Integral grad ab, oder steigt es an.
Könntest du nicht einfach den Trigger von "wurde geändert" auf "ist kleiner als letztes" ändern? Dann löst er nur aus, wenn der Wert vorher größer war, sprich wenn der Wert fällt.
Bzw. wenn das Integral gar nicht dein Trigger ist, sondern der PV-Überschuss, dann mach dir eine Hilfsvariable "integral_faellt". Und die setzt du mit dem "Integral ist kleiner als letztes" Trigger auf "true". Dann kannst du die Bedingung "integral_faellt" = true in deiner abfrage verwenden.