Script mit mehreren Ereignissen Zeitabhängig

Hallo zusammen,

bin dabei meine Pool Beheizung über Symcon zu realisieren.
Es klappt so weit schon ganz gut.
Ich möchte nur Heizen mit der Wärmepumpe, wenn Stromüberschuss der PV Anlage da ist.
Die Werte habe ich alle in Symcon. Die Scripte laufen auch.

  • Ein script: pool Heizen Start. wird von einem Ereignis angetriggert, wenn der Stromüberschuss Überschreitung von 1000W hat.
  • Einzweites Script : pool Heizen Stop wird von einem Ereignis angetriggert, wenn der Strombezug Überschreitung von 200W hat.

Das klappt auch alles. Jetzt kann es aber zu kurzzeitigen Überschreitungen der Bezugsgrenze von 200W kommen, weil z.b die PV Leistung kurz sinkt, der Kaffeautomat angestellt wird oder sonstiges. Dann wird jedes mal das Pool heizen gestoppt, so wie es sein soll.
Ich möchte aber in die Ereignisauslösung des Stoppen, noch eine Verzögerung von z.b 5m einbauen. Damit nicht bei jeder kurzen Überschreiten der Heizvorgang der WP gestoppt wird.
KAnn ich das mit dem Ereignis irgendwie lösen?

Ich hoffe ihr versteht was ich meine.

Danke

lg

Rob

Moin,

Du kannst es mit einem Timer wie im „Wie kann ich…“-Bereich beschrieben lösen:

Wie kann ich...? — IP-Symcon :: Automatisierungssoftware…_ein_Ger%C3%A4t_einschalten_und_nach_60_Sekunden_wieder_aussschalten

Tach zusammen, ich würde mich hier gerne einmal mit einer Frage anhängen.
Ich hab mir auch aus „Wie kann ich“ das Beispiel für den Timer gezogen und hab da noch ein Problem.

Ich möchte eine Variable für 1h einschalten (danach aus) und diese dann alle 3 Stunden wieder ausführen.
Das erste Stück funktioniert. Wenn ich das Script ausführe läuft die Poolpumpe für eine Stunde und geht wieder aus.
Dann hab ich noch ein Event unter dem Script erstellt welches alle 3 Stunden das Script ausführen soll. Das Event führt das Script auch aus, aber es passiert rein gar nichts. Nur wenn ich das Script händisch starte funktioniert es. Why ?

<?php

if($_IPS['SENDER'] == "TimerEvent")
{
    //AUS Befehl
    HM_WriteValueBoolean (52458,"STATE", false);
    
 
    //Timer ausschalten
    IPS_SetScriptTimer($_IPS['SELF'], 0);
} else {
    //An Befehl
    HM_WriteValueBoolean (52458,"STATE", true);
 
    //Timer anschalten
    IPS_SetScriptTimer($_IPS['SELF'], 3600);
}:confused:

Wenn das Skript händisch ausgeführt wird, trifft der „else-Teil“ zu, d.h. die Pumpe wird eingeschaltet. Immer dann, wenn ein TimerEvent das Skript startet, ist die if-Bedingung erfüllt und die Pumpe wird ausgeschaltet. So hast Du es zumindest in Deinem Script geschrieben.

Hi,
Du müsstest vermutlich per $_IPS[‚EVENT‘] noch unterscheiden welches TimerEvent ausgelöst wurde.

Ralf

Habs ! Danke für den Wink :wink:

<?php

if($_IPS['SENDER'] == "TimerEvent")
{
    //AUS Befehl
    HM_WriteValueBoolean (52458,"STATE", false);
    
 
    //Timer ausschalten
    IPS_SetScriptTimer($_IPS['SELF'], 0);
} if($_IPS['EVENT'] == 50333) {
    //An Befehl
    HM_WriteValueBoolean (52458,"STATE", true);
 
    //Timer anschalten
    IPS_SetScriptTimer($_IPS['SELF'], 3600);
}