Variable setzen, wenn 5 Minuten lang PV Ertrag über Schwellwert liegt

Meine (KNX)-Wetterstation hängt an der Südseite und hat einen „Sonne scheint“ Sensor für Osten, Süden, Westen. Im Sommer meldet der Sensor erst zu spät die Sonne. Jetzt versuche ich, eine Variable für „Sonne scheint Nordost oder Nordwest“ zu setzen, wenn die PV Leistung meines Norddachs für mehr als 10 Minuten 2000W übersteigt. Dies soll nur zwischen 7:00 und 9:00 und 19:00 und 21:00 Uhr passieren.

Ist der Wert unter 2000W oder ausserhalb der Zeitfensters soll der Wert auf False gesetzt werden (Zeitfenster, da tagsüber die 3 Hauptseiten der Wetterstation Sonne melden.

Wie mache ich das am besten?

Über ein Script, das die Variable setzt und durch einen 10 Minuten Timer ausgelöst wird. Und ein zweites Script, das den Timer aktiviert, wenn die 2000W überschritten werden und den Timer auf 0 Sekunden zurück auf 10 Min setzt, falls zwischendurch mal die 2000W unterschritten werden (Wolke).

Funktioniert das so? Auch wenn es etwas umständlich ist? Oder gibt es inzwischen eine einfachere Lösung über Ablauf- oder Logikpläne

Klingt logisch. Würde ich jetzt wahrscheinlich ähnlich umsetzen.

Hi,

ich würde mir eher die Zeit in einer Variablen merken wenn Wert > 2000 ist und einen Timer von X Sekunden setzen. Wenn < 2000 Timer auf 0. Wenn > 2000 aktuelle Zeit mit gespeicherten vergleichen bei > X Minuten flag setzen.

Ralf

Hi Ralf, damit ich das richtig verstehe, Du würdest also das Skript zyklisch zb alle 15 Sekunden laufen lassen. Und darin dann die Zeitdauer der Überschreitung meiner Schwelle immer selbst berechnen und prüfen. Wenn Dauer überschritten, dann wird Sonne gesetzt, sonst wird Sonne auf False gesetzt. Liegt der Wert unter 2000, setzt du die bisher verstrichene Zeit wieder auf 0 zurück.

Klingt zwar nicht unbedingt elegant, aber einfach. Und ich könnte darüber auch in der selben Logik noch eine Ausschaltverzögerung bauen, damit am Abend das Flag erst dann weggenommen wird, wenn der PV Ertrag kontinuierlich über 5 Minuten unter den 2000W liegt.

Hatte immer Respekt vor zyklischen Skripten wegen Systemlast. Aber wenn ich bei meiner Idee das Skript immer aufrufe, wenn sich der PV Ertragswert ändert, dann wird das Skript vermutlich alle 5 Sekunden ausgeführt, da sich der PV Ertrag doch ständig ändert und ich die Werte per Modbus alle 5 Sekunden bekomme

Was ist denn genau das Ziel, soll wirklich bei der ersten Wolke zurückgesetzt werden, ohne Hysterese und Verzögerung? Wird das in nachgelagerter Logik erledigt?

Ich denke eher an ein Script, das alle xx Minuten die aggregierten Archivdaten ausliest und Mittelwert oder Minimum prüft.

Es geht sogar noch eleganter:

<?php
if($_IPS['SENDER'] == "TimerEvent"){
    if (IPS_GetName($_IPS['EVENT']) == 'ScriptTimer'){
// Variable auf true setzen da 5 Minuten > 2000W
        IPS_SetScriptTimer($_IPS['SELF'], 0);
    }
}
if (isset($_IPS['EVENT'])){
    switch ($_IPS['EVENT']){
// Event > 2000        
        case 12345:
            IPS_SetScriptTimer($_IPS['SELF'], 300);
            break;
// Event < 2000        
        case 54321:
            IPS_SetScriptTimer($_IPS['SELF'], 0);
            break;
?>


Solltest aber auch über volkerm nachdenken denn wenn ich an meinen Ertrag in den letzten Wochen denke waren die Werte bergiger als die Alpen.

Ralf

Sowohl bei Ein- als auch bei Ausschalten soll es eine 5 oder 10 minütige Ein- bzw Ausschalthysterese geben.

Die Idee, über das Archiv zu gehen, ist interessant. Hatte ich noch nicht auf dem Schirm.

Lasst mich bitte mal verstehen, welche Ausführhäufigkeit mein System überlasten würde? Wenn ich statt alle 15 Sekunden nur jede Minute das Script ausführe, und dann manuell wie oben vorgeschlagen die Zeitdauer der Überschreitung meiner 2000W berechne, dann sollte das doch kaum Lastbaufs Gesamtsystem bringen?

Auf welchem System läuft dein IPS. Meines läuft auf einer 6 Jahre alten Synology im Docker und es laufen sehr viele Scripte/Instanzen mit Timer und bisher habe ich es nur durch einen Programmfehler meinerseits in die Knie zu zwingen.

Ich würde mir darüber nicht unbedingt jetzt schon gedanken machen solange Du in einem Script bleibst wenn es geht.

Ralf

Bei mir läuft IPS in einer virtuellen Maschine unter Proxmox auf einem MiniPC. Da laufen noch ein paar andere VMs (HomeAssistant, Windows für die KNX ETS). Bisher alles sehr performant.

Dann probiere ich das mit dem Skript, das ich zwischen 7 und 9 und nochmal 2 Stunden am Abend jede Minute laufen lasse.

Ich habe diese Logik diesen Sommer auf HomeAssistant laufen gehabt. War nicht ganz einfach, den richtigen YAML Code (mit Hilfe von ChatGPT) zu finden. Hat dann aber gut funktioniert. Ich denke, wie viele andere hier ja auch, immer wieder über Komplettumstieg auf HA nach. Aber noch habe ich nach Updates zu viele Probleme mit Integrationen - das letzte Update hat meine SolarEdge Integration zerschossen.

Ich löse das meistens über Ereignisse in Verbindung mit “weiteren Bedingungen”, da ich mit PHP nicht so bewandert bin. Also erst eine boolsche Variable anlegen und dann mit den Ereignissen arbeiten.

Ich nutze auch die PV Module als “Lichtsensor”.

Gruß

Marc