Überprüfen, ob Script bei Var-Update o. Aktualisierung ausgeführt wurde ?

Hi!

Wie kann ich abfragen, ob ein Script auf ein Update der triggernden Variable, oder auf Veränderung derer ausgeführt wurde?

Ich habe mir dazu IPS_SetEventTrigger angesehen, bin mir aber nicht sicher ob das die Funktion ist, die ich brauche. Müsste eigentlich ein „IPS_GetEventTrigger“ sein, oder?

In $IPS_TRIGGER steht der Typ. :wink:

Danke Thomas!

Kann ich davon ausgehen, das die ausgegebenen Werte analog IPS_SetEventTrigger zu werten sind?

Du bekommst im Rückgabewert von $IPS_TRIGGER als String gleich den Typ im Klartext.

Aha.

Wäre dann die Abfrage also folgendermaßen:

if($IPS_TRIGGER == "OnChange")

bzw.

if($IPS_TRIGGER == "OnUpdate")

?

Genau so.:wink:

Funktioniert perfekt.
Danke!

Kann mir mal einer ein kurzes Beispiel schreiben wie ich das von einem Ereignes Abfrage!?

Steh gerade bissel auf dem Schlauch! ( Warscheinlich die Nachwirkungen von Gestern!!) :smiley:


	if($IPS_SENDER == "TimerEvent")
	{
      	$EreignisID = $IPS_EVENT; //ID des auslösenden Ereignis
	}


und mit array IPS_GetEvent ( integer $EreignisID ) bekommst Du weitere Infos.

Moin…

…bin nicht wirklich der PHP-Crack. Mich interessiert diese Funktion aber sehr, daher Frage ich nochmal nach. Bitte für einen PHP-HONK ( Gruß an ROADSTERHH an dieser Stelle ) erkären.

Ich möchte die Funktion $IPS_TRIGGER verwenden um zu Prüfen ob ein Script bzw. wie ein Script gestartet wurde. Das Script hat die z.B. die ID=12345.

Wenn ich das habe kann ich ja mit

Wäre dann die Abfrage also folgendermaßen:

PHP-Code:

if($IPS_TRIGGER == "OnChange")

bzw.
PHP-Code:

if($IPS_TRIGGER == "OnUpdate") 

?

weiter machen.

Ich weiß nur nicht wie ich an die Daten komme!

In der DOKU finde ich nix zu IPS_TRIGGER.

Nur mal so als Beispiel, für was ich das einsetze:

<?
/*
**************************************************************************
Verschickt eine email, wenn ein Gerät einen niedrigen Batteriestand meldet
**************************************************************************
File     : EMAIL - Batteriezustand
Trigger  : verschiedene
Interval : onupdate, onchange
*/



$varloc = IPS_GetLocation($IPS_VARIABLE);

// Batteriekapazität niedrig
	if ($IPS_VALUE)
	{
		if($IPS_TRIGGER == "OnUpdate")
		{
		$triggerwert = "Kapazität ist niedrig";
		$triggeraktion = "Batterien sollten bald erneuert werden!";

// email-Betreff
		$betreff = "! $varloc - $triggerwert !";

// email-Inhalt
		$text ="$varloc meldet $triggerwert.

";
		$text.="$triggeraktion

";

		SMTP_SendMail(26571 /*[EMAIL\E-Mail an "Administrator" senden (SMTP)]*/ , $betreff, $text);
		}
	}


// Batteriekapazität OK
	if (!$IPS_VALUE)
	{
	   if($IPS_TRIGGER == "OnChange")
		{
		$triggerwert = "Kapazität ist OK";
		$triggeraktion = "Batterien sind wieder i.O.";

// email-Betreff
		$betreff = "$varloc - $triggerwert";

// email-Inhalt
		$text ="$varloc meldet $triggerwert.

";
		$text.="$triggeraktion

";

		SMTP_SendMail(26571 /*[EMAIL\E-Mail an "Administrator" senden (SMTP)]*/ , $betreff, $text);
		}
	}
?>

Ich habe zig Trigger-Variablen ($IPS_VARIABLE) für das Script, welche den Status ($IPS_VALUE) der Batterien angeben.

Sollte eine leere Batterie (if ($IPS_VALUE)) gemeldet werden, bekomme ich immer wieder eine email (SMTP_SendMail), wenn der Status aktualisiert (if($IPS_TRIGGER == „OnUpdate“)) wurde, bis es mich nervt, die Batterie endlich getauscht habe (if (!$IPS_VALUE)) und der Wert der Variable auf sich auf OK (if($IPS_TRIGGER == „OnChange“)) ändert.

P.S. Eine Doku zu den Systemvariablen findest du hier:
http://www.ip-symcon.de/service/dokumentation/konzepte/skripte/systemvariablen/

Kann mir mal einer ein kurzes Beispiel schreiben wie ich das von einem Ereignes Abfrage!?
Steh gerade bissel auf dem Schlauch! ( Warscheinlich die Nachwirkungen von Gestern!!)

Ein wenig genauere Infos währen in Zukunft schön.
http://www.ip-symcon.de/forum/f18/announcements.html

In der DOKU finde ich nix zu IPS_TRIGGER.

Systemvariablen - IP-Symcon :: Automatisierungssoftware

Vielen Dank für die Hilfe und Geduld. Hatte mich schon aufgegeben, nun hab ich es endlich begriffen (endlich), zumindest denke ich das momentan!! :wink:

Da ergeben sich ja ne menge neuer Möglichkeiten!!! Muuuuuuaaaahhh…schön!

Danke und Grüße aus dem verschneiten Hamburg,

Peter

Hallo,

ich habe eine Frage, welche in die gleiche Richtung geht.

Kann ich „außerhalb“ eines Scriptes abfragen, wie ein „ausgelöstes“ Ereignis getriggert wird. Also ich habe verschiedene EreignisIDs und möchte wissen, wie die denn getriggert werden (onChange, onUpdate, etc.).

Gruß
Thorsten

„außerhalb“ eines Scriptes

Wo soll dann sonst eine Abfrage stehen:confused:
Wenn Du außerhalb von IPS meinst, dann z.B. über Soap.

Okay, war vielleicht unglücklich formuliert.

Ich habe ein Script mit dem ich andere Scripte und deren Ereignisse auflisten will.

Dazu habe ich eine beliebige Liste von EreignisIDs in einem Array. Ich weiß über IPS_GetEvent, dass die Ereignisse aktiv sind und nicht zyklisch, sondern getriggert.

Wie kann ich in einer Schleife für jede EreignisID weitere Trigger Details herausfinden.

Also kein IPS_SetEventTrigger, sonder ein IPS_GetEventTrigger. :o

Gruß
Thorsten

Hi Thorsten,
suchst Du sowas??

<?
	$eobj=IPS_GetEvent(31568 /*[Melder\alarm_state_update\Allgemein: Wohnungstür]*/); //id zeigt auf das Event!
	print_r($eobj);
?>

Ausgabe:

Array
(
    [CyclicDateDay] => 0
    [CyclicDateDayValue] => 0
    [CyclicDateFrom] => 0
    [CyclicDateTo] => 0
    [CyclicDateType] => 0
    [CyclicDateValue] => 0
    [CyclicTimeFrom] => 0
    [CyclicTimeTo] => 0
    [CyclicTimeType] => 1
    [CyclicTimeValue] => 0
    [EventActive] => 1
    [EventID] => 31568
    [EventLimit] => 0
    [EventScript] => 
    [EventType] => 0
    [LastRun] => 1321806266.748
    [NextRun] => 0
    [TriggerSubsequentExecution] => 1
    [TriggerType] => 1
    [TriggerValue] => 
    [TriggerVariableID] => 32542
)

Dabei ist Triggertype=1 -> „bei Variablenänderung“

vergl. auch die IPS Doku.

Falls Du nach der letzten TriggerValue über diesen Weg suchst, die habe ich so auch noch nicht gesehen.

Viele Grüße, Benjamin

Argh!

X-Stunden habe ich heute in die Doku geschaut und bin nicht drauf gekommen.
Werde wohl langsam IPS Betriebsblind :D.

Also vielen Dank Benjamin, das bringt mich weiter.

Gruß
Thorsten