Generisches Skript für Trigger

Hallo Leute,

ich versuche gerade ein Beispiel- und Testskript zu bauen, das man per Trigger an verschiedene Instanzen dranhängen kann und das anhand des aufrufenden Triggers erkennt, was es tun soll.

Leider komme ich mit der Doku nicht genug zurecht, um allein drauf zu kommen, wie man den folgenden Weg zurückzuverfolgen kann:
Skript selbst -> aufrufender Trigger -> den Trigger auslösende Variable -> Objekt zu dem die Variable gehört.

(Teilweise Pseudo-)Code an dem ich bastle:


	$ScriptID = $IPS_SELF;
	$Script = IPS_GetScript($ScriptID);
	$EventId = $Script["ParentID"]; // das geht schon mal nicht...
	$Event = IPS_GetEvent($EventID);
	$VariableId = $Event["TriggerVariableID"];
	$VariableObj = IPS_GetObject($varid);
	$InstanceID = $VariableObj["ParentID"]; 

	print "Instanz $InstanceID hat die Variable $VariableID.
";
	print "Die Variable $VariableID hat den Trigger $EventID ausgelöst.
";
	print "Der Trigger $EventID hat das Skript $ScriptID gestartet.
";

Tipps wären cool. Danke!
moishe

Unter Systemvariablen - IP-Symcon :: Automatisierungssoftware kannst Du das finden, was Du suchst: $IPS_EVENT und $IPS_VARIABLE.

Danke Horst,

das macht das ganze natürlich noch viel simpler:


<?
	// Skript FS20 folgt HMS
	// wird von einer Änderung der HMS-Statusvariablen getriggert.

	// Die Statusvariable des HMS hat eine untergeordnete Variable namens
	// SlaveID in der als Integer die Objekt-ID des FS20-Empfängers steht:
	$SlaveIDVarID=IPS_GetVariableIDByName ( "SlaveID", $IPS_VARIABLE);
	$SlaveIDVar=IPS_GetVariable($SlaveIDVarID);
	$SlaveID=$SlaveIDVar[VariableValue][ValueInteger];

	// Der FS20-Empfänger wird auf den Wert der HMS-Statusvariablen gestellt:
	FS20_SwitchMode($SlaveID, $IPS_VALUE);
?>

Wenn Du es noch simpler haben willst, solltest Du GetValueInteger statt den Umweg über IPS_GetVariable benutzen. Macht dann komplett

FS20_SwitchMode(GetValueInteger(IPS_GetVariableIDByName("SlaveID", $IPS_VARIABLE)), $IPS_VALUE);

Okay, langsam - ganz langsam - steige ich auch durch was die Aufteilung der Doku angeht. Das braucht aber wohl noch ein paar Tage…

Danke für die Starthilfe, Horst!