EventActivate und ausführen

Hallo

Ich möchte einen Event (Grenzüberschreitung einer Temperatur zb. 25°C) so aktivieren

IPS_SetEventActive($EreignisID, true);  // Aktivert Ereignis

das geht ja noch - aber wenn die Temperatur bei Aktivierung des Ereignisses höher ist als der eingestellte Grenzwert (zB > 25°C) wird das Ereignis nicht ausgelöst.

Kann ich das irgendwo einstellen, dass das Script trotzdem executiert wird auch wenn die Temperatur schon überschritten ist?
Oder muss ich diesen Fall im Skript abfragen?

Danke
LG
Rudolf

Beim getriggerten Ereignis kann man untere und obere Grenzwerte einstellen oder auch einen bestimmten Wert bei dem das Ereignis ausgelöst wird.

Ich würde es im Script machen…

Danke für den Hinweis - aber mein Problem liegt wo anders.

Nochmals die Problemstellung:

Gesteuert werden mehrere Raffstore.

Diese sollen zufahren wenn folgendes eintritt:

  1. abhängig von der Uhrzeit / Sonnenstand (Vormittag nur Ost und Süd Seite - Nachmittag Süd und West)
    beginnend um 07:30 Uhr - davor soll sich nichts rühren

  2. Auslösung dann bei überschreiten der eingestellten Temperatur - schließlich will man ja die gratis Energie der Sonne nutzen - aber auch keine 30° in der Wohnung

Lösungsansatz:
Event aktivieren bzw. deaktivieren je nach Uhrzeit / Sonnenstand

und ich wollte mir die Temperaturabfrage einfach sparen - ich hoffte es gibt einen Schalter oder so - wenn ich das Ereignis aktiv setze und die Temperatur schon höher ist als der eingestellte Wert - dass dann gleich auch die Auslösung dieses Events erfolgt.
Wenn nicht, muss ich diesen Fall in meinem Event Aktivierungsscript abfangen. Aber ich hoffe noch immer es gibt diesen Schalter? :rolleyes:

IPS_SetEventTriggerSubsequentExecution: IP-Symcon :: Automatisierungssoftware

Hallo,

Das Skript zum Zufahren wird über ein Ereignis gesteuert. Das Ereignis steht auf GRENZÜBERSCHREITUNG für die Variable Temperatur ( z.B. 30 ).

Genau dieses Ereignis wird durch ein zeitgesteuertes Skript AKTIV oder INAKTIV gesetzt, so wie Du es schon im ersten Post geschrieben hast.
That’s it. Ich sehe noch nicht ganz Dein Problem. Natürlich wird das o.a. Skript auch ausgeführt, wenn die Temperatur beim Aktivsetzen das Kritierium >30 erfüllt.

Gruß
Walter

Befehl kann ich nicht wiederholen - sonst versucht der Raffstore öfters zuzufahren - hört man dann an den Schaltspielen.
Die Temperatur kommt von WDE1 Sensoren und da kann es sein dass die Meldung innerhalb von ein paar Sekunden ein zweites mal kommt - das würde dann den schließvorgang beenden - Fahrbefehl zu 2x stoppt bei FS20 den Schließzyklus.

Hat bei mir so nicht funktioniert - darum auch dieser Beitrag - wenn’s funktioniert hätte dann wär ja eigentlich mein Problem gelöst - werd mal ein Testscript machen und nochmals unabhänging mit Bildschirmausgaben testen.

Danke für die Inputs.

Ein Ereignis wird nicht dadurch ausgeführt, dass du es aktivierst. Es wird ausgeführt, wenn die Variable an die du es verknüpft hast sich ändert. D.h. entweder du willst das Ereignis „scharf“ stellen, oder du solltest dein Skript so ändern, dass es direkt den if() Vergleich macht und deine Aktion ausführst.

paresy

Hast recht, sorry. Das Ereignis wird nach Aktivierung wirklich nicht ausgeführt. Hab’s eben mal getestet. Da hilft wohl wirklich nur die einmalige IF-Abfrage in dem aktivierenden Skript, wie von Parsey vorgeschlagen.

Gruß
Walter

Wenn zB. die aktuelle Temperatur bei 26°C ist - und ich aktiviere das Ereignis -bei Grenzüberschreitung von 25°C

dh. die nächste Temp. die Empfangen wird - zb. nochmals 26,0 bzw. 26,2 (weiter steigend) - würde nichts auslösen, da ja die Grenze bereits überschritten ist?:confused:

Hab ich das so richtig verstanden?
Oder würde dann was passieren?:confused:

Dafür hast du ja den Haken „Nachfolgende Ereignisse auslösen“.

paresy

Dann würde aber das Skript immer wieder ausgelöst - dh. der Raffstore würde X-male den Befehl zum Zufahren bekommen.

Müßte ich dann den HAKEN und

IPS_SetEventLimit($EreignisID, 1); 

setzen?

Würde das bedeuten, dass das „Nachfolgende Ereignis 1x ausgelöst wird?“
Wär das dann das, was ich eigentlich brauche?:wink:

Wenn du deine Aktion nur 1x ausführen willst, vergiss das Ereignis und schreibt die 2 Zeilen PHP Code. :wink:

paresy

DANKE - das war jetzt meine Herausforderung ob das wirklich geht in 2 Zeilen.

$EreignisInfo = IPS_GetEvent(E_BUERO_PSK_ZU_ID);
if ( GetTempBuero() > $EreignisInfo["TriggerValue"] ) RaffstoreZu(BUERO_PSK);

fast geschaft - ich brauchte noch zwei Includes um mir die ganzen Konstanten und Funktionen zu holen - aber prinzipiell machbar:D

Geht das nicht vielleicht sogar als Einzeiler? - Kann ich irgendwie die TriggerValue bekommen ohne vorher das Array zu speichern?
Jetzt werd ich übermütig :rolleyes:

Rudi